精华内容
下载资源
问答
  • 新人提问:如何将输出时每行最后一个空格删除
    2021-05-25 03:25:49

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    如何将每行最后一个空格删除,使矩阵只有数字间有空格,没有多余空格?

    #include

    #include

    int main()

    {

    int i,j,k,m,n,x,h,y;

    int a[15][15]={0};

    while(scanf("%d",&i))

    {

    k=1;

    for(n=1;n<=i;n++)

    {

    if(n%2==1)

    {

    y=n-1;

    x=0;

    for(;y>=0;)

    a[y--][x++]=k++;

    }

    if(n%2==0)

    {

    x=n-1;

    y=0;

    for(;x>=0;)

    a[y++][x--]=k++;

    }

    }

    k=(n-1)*(n-1);

    for(n=2*i-1;n>=i;n--)

    {

    if(n%2==0)

    {

    x=i-1;

    y=i-(2*i-1-n);

    for(;y<=i-1;)

    a[y++][x--]=k--;

    }

    if(n%2==1)

    {

    y=i-1;

    x=i-(2*i-1-n);

    for(;x<=i-1;)

    a[y--][x++]=k--;

    }

    }

    for (h=0;h

    {

    for (j=0;j

    printf("%d ",a[h][n-j]); //d后面有空格

    printf("\n");

    }

    }

    return 0;

    }

    更多相关内容
  • c语言删除末尾空格及制表符

    千次阅读 2014-09-02 16:57:00
    k&r中的问题,原题还有删除完全空格的行这个要求,没想到好办法。一个办法是上面的main函数中再加个循环,检测完全空格的行;另一个办法是在my_getline中添加一个全局的状态位,若换行符之前出现了非空格,则标记之...
    可能不是最好的,如下:
    #include<stdio.h>
    #define MAXLINE 1000
    
    int my_getline(char line[], int maxline);
    
    main()
    {
        int len;
        int i;
        char line[MAXLINE];
    
        while((len=my_getline(line,MAXLINE)) > 0){
            for(i=len-2;i>0;i--){
                if(line[i]==' ' || line[i]=='\t'){
                    line[i]='\n';
                    line[i+1]='\0';
                    continue;
                }else{
                    break;
                }
            }
        printf("%s",line);
        }
    
        return 0;
    }
    
    int my_getline(char s[], int lim)
    {
    	int c, i;
    
    	for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n';
    	     ++i)
    		s[i] = c;
    	if (c == '\n') {
    		s[i] = c;
    		++i;
    	}
    	s[i] = '\0';
    	return i;
    }



    k&r中的问题,原题还有删除完全空格的行这个要求,没想到好办法。一个办法是上面的main函数中再加个循环,检测完全空格的行;另一个办法是在my_getline中添加一个全局的状态位,若换行符之前出现了非空格,则标记之,之后在main的输出中使用这个状态位。

    转载于:https://my.oschina.net/sukai/blog/309270

    展开全文
  • Trim()函数功能除去字符串开头和末尾空格或其他字符,函数执行成功时返回删除了字符串首部和尾部空格的字符串。char *trim(char *str)C语言标准库中并没有trim()函数,比较遗憾,那么我们就来实现一个,哈哈。一、...

    Trim()函数功能除去字符串开头和末尾的空格或其他字符,函数执行成功时返回删除了字符串首部和尾部空格的字符串。

    char *trim(char *str)

    C语言标准库中并没有trim()函数,比较遗憾,那么我们就来实现一个,哈哈。

    一、 具体实现代码

    #include

    #include

    #include

    // delete the front whitespace

    char *left_trim(char *str)

    {

    char *beginp = str;

    char *tmp = str;

    while(isspace(*beginp)) beginp++;

    while((*tmp++ = *beginp++));

    return str;

    }

    // delete the back whitespace

    char *right_trim(char *str)

    {

    char *endp;

    size_t len = strlen(str);

    if(len == 0) return str;

    endp = str + strlen(str) - 1;

    while(isspace(*endp)) endp--;

    *(endp + 1) = '\0';

    return str;

    }

    char *trim(char *str)

    {

    str = left_trim(str);

    str = right_trim(str);

    return str;

    }

    int main(void)

    {

    char *src[] =

    {

    " hello world ",

    " hello world",

    "hello world ",

    "hello world",

    "",

    NULL

    };

    char result[1024];

    for(int index = 0; src[index] != NULL; index++)

    {

    strcpy(result, src[index]);

    printf("[%s] -> [%s]\n", src[index], trim(result));

    }

    return 0;

    }

    二、 运行结果

    [ycxie@fedora Workspace]$ gcc string_trim.c -o string_trim -Wall

    [ycxie@fedora Workspace]$ ./string_trim

    [ hello world ] -> [hello world]

    [ hello world] -> [hello world]

    [hello world ] -> [hello world]

    [hello world] -> [hello world]

    [] -> []

    展开全文
  • 懒得截图了。题目是输出某一范围内的素数,按每行10个输出,代码没有问题,问题是输出要求每两个数之间有一个空格键,开头没有空格末尾没有空格,该怎么写printf?
  • 面对计算机二级C语言的程序操作题是不是无从下手啊?大家不要慌,我们在这里给大家准备了满满的干货。相信DUT们在家里看完一定会收获满满的,面对C语言也将充满了信心!计算机二级c语言考试由单项选择题 40 分(含...

    8027ef5089ee6f256b715a8b458b4cee.gif

    各位DUTer们,全国计算机等级考试不久将至,不知各位同学复习得怎么样了?面对计算机二级C语言的程序操作题是不是无从下手啊?大家不要慌,我们在这里给大家准备了满满的干货。相信DUT们在家里看完一定会收获满满的,面对C语言也将充满了信心!

    9b779d56e500b68a52c48cc5f643f220.png

    计算机二级c语言考试由单项选择题 40 分(含公共基础知识部分 10 分)。操作题 60 分(包括程序填空题、程序修改题及程序设计题)构成,以下是操作题重点汇总,希望能对大家有所帮助。

    6c26c76fb2d8e02c967fe2a8eeb16b83.png

    程序修改题重点

    做改错题时先看出错的地方,分析语法错误,如果能用C语言的语法判断出错误,改之即可,以下是错误类型分析。

    54e7f1a348ffe20ffc4ccca636d75650.gif

    if或while语句
    若错误行是if或者while语句,则要注意以下点:
    1)首先判断是否正确书写if或while关键字;
    2)然后看有没有用小括号把整个表达式括起来,若没有则加上小括号;
    3)若条件表达式中有指针变量而且没有指针运算符时,则加上指针运算符;
    4)若if条件表达式中只有一个等于号即数学等号(=),则要改写成两个等于号即逻辑等号(= =):

    5)若if条件表达式为其他的比较运算符,则一般是进行逆转或加一个等于号:for语句
    若错误行是for语句,则要注意以下几点:
    1)首先判断for有没有书写正确;
    2)然后看for中的表达式是不是用分号(;)隔开,若不是则改为分号。

    记住是分号(;),不是逗号(,)!
    3)再者,分析for中的三个表达式,是否符合题意:
    第一个表达式表示起始条件,
    第二个表达式表示终止条件,
    第三个表达式表示循环变量的变化。return语句
    若错误行为return语句,则要注意以下几点:
    1)首先看是不是正确书写return关键字;
    2)然后看是不是缺少分号,若是则加上分号即可;
    3)再者判断return后的变量或表达式是否正确;
    这种错误需要根据题意来分析,分析返回变量或表达式的值和类型。

    赋值语句

    若错误行是赋值语句,则要看赋值是否正确,然后看赋值运算符是否写正确。定义语句
    若错误行是定义语句,则要注意:
    1)首先分析变量类型名是否写对;
    2)然后分析给变量赋初值是否正确;
    3)若以上均不是,则看是不是少定义了某个变量或少了花括号:

    表达式错误问题:
    若错误行中有整数1除以某个表达式或变量时,必须把整数1改为1.0;若变量或表达式是整型时,则只能进行强制类型转换。

    字符串类问题
    若错误行中有字符串结束符,则特别要要注意结束符有没有写错。但是要区分清楚字符'o°和数字'0'指针类问题

    若错误行中有指针变量,并且该变量名之前没有指针运算符,则一般都是加上指针运算符;

    函数首部类问题 :
    若错误行是函数首部,则要注意:
    1)首先看该行最后有没有分号,若有则删掉分号;若中间有分号则要改为逗号:
    2)形参和实参类型不一致问题
    ①若实参是个地址或数组名或指针变量名,则对应的形参肯定是指针或数组;
    ②若实参是二维数组名,则对应的形参应该是指针数组或是二维数组:
    ③若后面用到某形参的时候有指针运算符,则该形参比为指针类型;
    ④若形参是二维数组或指向M个元素的指针变量,则该二维的长度必须与main中对于数组的第的长度相同。
    3)函数类型不一致问题
    ①若函数中没有return语句,则函数类型为void;

    ②若函数中有return语句,则函数的类型必须与rerun后的变量类型一致;
    记住:调用函数的类型与main中的该函数的类型一致!

    语法错误问题:
    1)语句缺少分号。若错误号中语句没有以分号结束则加上分号;
    2)变量名不一致。C语言是区分大小写的,若错误行中有大写字母般都改为小写字母:逻辑错误问题:
    这种题型主要是表达式错误,占的题量比较多而且我们没有统一的做题方法, 需要我们具体问题具体分析。书写错误问题:
    特别注意我们的注释部分,注释是以/*开始,以*/结尾,不能有多余的。有也只能在/*和/里面。注意,比如/***注释部分****/*/" 是错误的!

    程序填空题、程序设计题重点

    程序填空题和程序设计题是计算机等级考试中的重难点,做这部分题时注意掌握答题技巧。以下是将两部分结合在一起

    54e7f1a348ffe20ffc4ccca636d75650.gif

    数学题目

    1.量赋初值,如果以后用到的是加减运算,则赋初值0或者为是0.0;如果以后用到的是乘除运算,则赋初值为1或者是1.0;

    2.循环条件的填空,分析表达式的规律,看表达式中的最后一项的值是否到了第m项或者是第n项,如果到了第m或者第n项,则在循环中的第二个表达式中用到的是i<>或者是i<>

    3.循环条件中如果用的是while 语句,则循环变量的初值应该在while 的外面定义和赋初值,在循环语句中必须给变量自加或者是自减。如果没有则一般填的是i++;

    字符串题目

    1、循环的条件是判断该字符是否和结束符\0相等,如果相等,说明该字符串结束,否则说明没有结束,继续循环。While(s[i]!=’\0’)

    2、把一个数字字符转变成对应的数值的格式是:ch=’1’-‘0’;把大写字母转变为小写字母

    的格式:c h=c h+32 ;把小写字母转变为大写字母的格式为:ch=ch-32 ;

    3、区分好字符数组中的指针和指针所指的值的关系。在循环语句中,当指针往后走一个位置的时候,用的是指针的自加,而不是指针所指的值的自加。int * a

    4、掌握字符数组中的函数的使用的格式。即:strlen(a)、strcmp(a,b)、strcpy(a,b)、sizeof 、strcat 的使用格式。注意里面的格式中使用的都是指针。

    5、字符数组结束时都有一个结束符:‘\0’;在字符数组中的题目中的结束后要加上一个结束符。

    结构体题目 

    1、看清题目的意思。

    2、定义结构体变量时的格式。struct student *stu1 stu1->name

    3、结构体中成员的调用格式。结构体中的成员分为多种类型,调用结构体重的成员,使用的是“.”或者是“—>”运算符。得到结构体中学生分数,a—>score[i]。

    4、如果返回的是结构体的话,函数的返回类型必须是结构体类型。调用函数的格式中,调用的若是结构体数组,则只用写结构体数组名。

    函数题目

    函数题目 return a; int * max()

    1、看函数的返回类型,函数的返回类型必须和return语句返回的表达式的类型一致。

    2、函数的调用的情况,函数调用时只用写函数的名称,以及函数的参数。如:题中的第二和第三空的内容就是调用函数,填写时只用填写函数的名称和参数,故填f1(x)和f2(x,y);

    3、函数指针的调用格式,类型名(*f)();

    4、函数参数的传递时的调用的格式,如果函数传递的是二维数组,则在函数的传递过程中形式参数必须使用的是由m个元素组成一行的指针变量。

    链表题目 

    链表题目的步骤:

    1、首先看清楚题目要求和意思。看清楚链表有没有带头结点,如果带有头结点,第一空填的内容是p=h—>next;如果是不带有头结点,则第一个空填写的是p=h;

    2、如果第二个空是在循环语句while 的括号中的时候里面的内容填写的是p或者是q,以最近出现的为主;如果是在循环体的里面的时候,填写的是q=p—>next; while(p)

    3、如果是排序的时候,从小到大的时候是大于号,从大到小的时候是小于号。如果出现了r的地方,则在后面的空中填的是r。

    文件类型的填空 

    1、文件类型的题目,看清楚题目意思,定义一个文件的指针,第一个位置出现fp的时候要填FILE*;并且是大写!

    2、掌握文件中fopen、fprintf、fscanf、fputs 、fputc、fgets 、fgetc 、fseek、fwrite、fread、rewind 函数的使用的格式。

    3、文件打开之后要注意关闭文件,关闭文件的函数fclose (文件指针);

    4、在循环语句中如果使用到的是while (!feof())空格中填写的文件指针,表明判断的是文件指针是否已经指到了文件的末尾。备注:如果文件指针指到了文件的末尾,则feof 返回的是非零值,如果没有指在文件的末尾,返回的是0值。

    数组题目

    数组分为一维数组和二维数组。

    一维数组中存在这样一些类型:

    1、求一个数值数组中的所有值的平均值和把大于或者小于平均值的数放到另外一个数组中。在计算平均值时,首先定义一个变量来存放平均值,平均值一般用avg变量来代替,如果avg 已经定义但是没有赋初值,那么这个空填写的内容的为:avg =0;

    2、求平均值时有两种方法,第一种是算出总的分数,最后再除以总的个数即可,;第二种方法是用每一个数除以6再把所有的和加起来。

    3、在后面的一个空的填写的时候要注意变量的使用情况,如果变量使用了j和i,那么这一个空的填写的内容为:j++;

    4、如果一维数组中求的是把大于或者是小于平均值的数移动到数组的首部的时候,这种题目的解答时这样的,第一个空一般填写的内容为:j++;第二个空填写的内容是-1;

    5、对数组进行排序时:如果是从大到小的排序的时候,用的是小于符号,如果是从小到大排序时使用的是大于符号。

    二维数组中的题目类型以及解决的技巧:

    1、二维数组的题目,填空的时候一般是填在函数调用,函数在调用时候写的应该是二维数组的名字;在定义函数的时候使用的是函数的类型和由m各元素组成一行的指针变量,假设二维数组的名字是ss ,那么填写的内容是:(*ss )[M];如果调用的是普通变量则填写的内容为:int n;

    2、二维数组遍历时,使用的是两个循环,使用的是循环的嵌套使用,第二个循环的使用的时候填写的内容为:j=0;(特殊的特殊处理)

    3、交换两个变量的值的使用的格式为:t=a;a=b;b=t; t=*p; *p=*q; *q=t;

    记住交换变量的格式和顺序。

    4、如果二维数组是字符串的题目的时候,要记住字符串中函数的使用的格式;

    e872b918cd1b329f57c287ced093962d.png

    以上是为大家总结的关于计算机二级c语言考试的考点,希望大家能够对症下药,查缺补漏,在考试中取得满意的成绩!

    来源 | 商学院、知识产权学院团委宣传部

    文字 | 商学院、知识产权学院团委办公室

            商学院、知识产权学院团委科创部

    图片 | 商学院、知识产权学院团委办公室

            商学院、知识产权学院团委科创部 

    编辑 | 张薇

    审核 | 杨嘉怡 肖启

     

    我想带你看大工最美的景

    也想带你走进最好的商院

    c7bc7b2b2e5b1b9e938a906a5ad0ecdc.png
    展开全文
  • C语言缓冲区(缓存)详解缓冲区(Buffer)又称为缓存(Cache),是内存空间的一部分。也就是说,在内存中预留了一定的存储空间,用来暂时保存输入或输出的数据,这部分预留的空间就叫做缓冲区。 缓冲区根据其对应的...
  • 今天介绍三个最简答的C语言程序。例1:要求在屏幕上输出以下一行信息:This is a C program.解题思路:在主函数中用printf函数原样输出以上文字编写程序:#include<stdio.h> int main() { printf("This is a ...
  • 文章末尾有惊喜哦!1. 利用define来定义 数值宏常量 #define 宏定义是个演技非常高超的替身演员,但也会经常耍大牌的,所以我们用它要慎之又慎。它可以出现在代码的任何地方,从本行宏定义开始,以后的代码就都认识...
  • 删除多余空格,将字符串中连续的多个空格替换成一个空格
  • 按照要求补完程序,使用指针法,删除字符串的所有尾部空格。 要求:在begin 和 end 之间填写程序,其他不得改动。 如: 【输入】c language &lt;回车&gt; 【输出】 the length of input string is 14 ...
  • 题目:编写一个程序,删除每个输入行末尾空格及制表符,并删除完全是空的行 #include <stdio.h> #define MAXLINE 1000 int get_line(char s[], int lim) { int c, i, j; j = 0; for(i = 0; (c = getchar...
  • C语言中字符串的存储方式记录 一直以来,对于C中的字符串存储的形式模模糊糊的,所以经常会有越界的错误发生, 这几天静下心来,看了看基本C的参考书,现在记录一下对于字符串的存储,方便自己以后回顾。 例: … ...
  • c语言实现字符串空格的替换--详细

    千次阅读 2022-04-23 21:05:48
    题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如,输入“We are happy.”, 则输出“We%20are%20happy.”。 前期分析: 在拿到题之后 首先是与字符串肯定要与数组或者指针有关系,如果要把字符串...
  • //定义函数,倒着给字符数组插入空格 void insertspace(char str[]) { int i; for(i=strlen(str)-1;i>0;i--)//从倒数第二个字符开始插入空格 { str[2*i]=str[i]; str[2*i-1]=' '; } }...
  • 分析:其实就是要看遇到一个空格,接下来的是不是空格直到结尾,从这个空格开始删除, 那么怎么判断完后面假如是直到末尾的话返回到这个空格的位置呢,我觉得可以定义一个 字符串,然后当你遇到这个空格就调用函数来...
  • 删掉字符串所有的空格
  • 编写一个程序,删除每个输入行末尾空格及制表符,并删除完全是空格的行。 #include <stdio.h> #include <string.h> #define MAX_LINE 1000 int getline(char line[], int maxline); void trimedRight...
  • C语言之scanf和gets在字符串输入时遇到空格

    千次阅读 多人点赞 2021-01-22 18:33:59
    当你输入带空格的一段字符串时,比如:“I love you”。如果你用scanf输入,语句应该是这样的: char str[100]; scanf("%s",str); 而你得到的结果却是 I 由此,我们可以断定,scanf遇到空格就停止读入了。 那么...
  • c语言输入字符串有空格怎么办

    千次阅读 2020-05-14 14:07:08
    采用fgets输入可以识别空格,如输入hello world,输出hello world 若采用scanf,空格就相当于一个结束符,识别不了 如输入hello world,只能输出hello 只不过用fgets输入的话,结尾会多一个‘\0’,如hello world字符...
  • 机智的末位无空格

    2015-11-12 18:19:31
    #include #include #include using namespace std; int f(int x)  {int y=1;...} //机智的末尾空格 d=1; cout;c++;}    } if(c) cout;  cout;}  return 0; }

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,826
精华内容 10,330
关键字:

c语言删除末尾空格