精华内容
下载资源
问答
  • 数字间以空格分隔。 (2)输出说明:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。 (3)测试用例:![图片说明]...
  • 输入一个整数n,接下来n行每一行输入两个一个空格分隔的字符。 对每一对字符,比较其大小关系并输出比较的结果:1、0、-1. 解决的代码如下: #include<stdio.h> int main() { int N,i; char c1...

    题目

    输入一个整数n,接下来n行每一行输入两个用一个空格分隔的字符。

    对每一对字符,比较其大小关系并输出比较的结果:1、0、-1.

    解决的代码如下:

    #include<stdio.h>
    
    int main()
    {
        int N,i;
        char c1=' ',c2=' ';
        scanf("%d",&N);
        getchar();
        for(i=0;i<N;i++)
        {
            scanf("%c %c",&c1,&c2);
            getchar();
            if(c1>c2) printf("1\n");
            else if(c1<c2) printf("-1\n");
            else printf("0\n");
        }
        return 0;
    }

    这个地方最需要注意的是char变量其实在输入时读取的是键盘缓冲区的内容。上面的写法只是一个变通的写法,安全的写法是清空键盘缓冲区的内容。

     

    参见:http://bbs.bccn.net/thread-248420-1-1.html

     

    清空键盘缓冲区的一种好方法!

    用  rewind(stdin);  语句可以达到很好的清空键盘缓冲区的作用。不用考虑太多其他因素。这是我在一本名为《软件开发:编程与设计(C语言版)》中所了解到的,作者是USA的David Conger。
        以前也了解到其他的清空键盘缓冲区的方法,如:用getchar();fflush(stdin);等。但感觉很麻烦,不好用,也不容易理解。而rewind(stdin)简单好用,而且是一种可移植的方法。

    举个例子:

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     int i;
     6     char aString[3];
     7 
     8     printf("Please enter some characters:");   /*先向键盘缓冲区里输入无用字符*/
     9 
    10     getchar();
    11 
    12     rewind(stdin);                             /*清空键盘缓冲区里的无用字符*/
    13 
    14     printf("Please enter 'OK': ");             /*输入字符串“OK”*/
    15     
    16     for(i=0;i<2;i++)                           /*字符串aString接受字符串“OK”*/
    17     {
    18         aString[i]=getchar();
    19     }
    20     aString[i]='\0';
    21 
    22     puts(aString);                             /*输出字符串aString*/
    23 
    24     return(0);
    25 }
    View Code

    Microsof Visual C++下调试结果:

    输入:abcdefghijk回车OK回车
    输出:OK

    之前缓冲区里的abcdefghijk垃圾字符都被清空了。

    下面向新手解释一下rewind(stdin);的工作原理。

    C语言把键盘,显示器等设备当做文件来处理,也就是说从键盘输入相当于从一个文件中读入,向显示器输出相当于向一个文件写出。
    而stdin是C标准库定义的标准文件之一,它与键盘相关联。我一般把它理解为指向键盘这个“文件”的指针。
    而rewind()函数的作用是把文件的当前位置指针指向文件头。
    两者结合,rewind(stdin);的作用也就是把“指向键盘(一个文件)的指针从当前位置挪到键盘(一个文件)开头”,相当于抛弃了当前键盘缓冲区中的数据,重新开始输入。
    虽然并不是真正的把缓冲区里的数据全部清掉,但却起到了清空键盘缓冲区的作用。

     

     

     

    也可参考:http://blog.sina.com.cn/s/blog_63c66eb60100sc0o.html

     

     

    空键盘缓冲区很多种方法,如用fflush(stdin); rewind(stdin);setbuf(stdin, NULL);前两者仅对windows有用,最后一个则对Linux系统也适用。那么为什么需要清空键盘缓冲区呢?

    以下几个实例:

    Sample one

     1 #include <stdio.h>  
     2 int main()
     3 {
     4     char ch1;
     5     char ch2;
     6     ch1 = getchar();
     7     ch2 = getchar();
     8     printf("%d  %d", ch1, ch2);
     9     return 0;
    10 }

     

     

         程序的本意很简单,就是从键盘读入两个字符,然后打印出这两个字符的ASCII码值。可是执行程序后会发现出了问题:当从键盘输入一个字 符后,就打印出了结果,根本就没有输入第二个字符程序就结束了。例如用户输入字符’a', 打印结果是97,10。这是为什么呢?

    【分析】:

         scanf()和getchar()函数是从输入流缓冲区中读取值的,而并非从键盘(也就是终端)缓冲区读取。而读取时遇到回车(n)而 结束的,这个n会一起读入输入流缓冲区的,所以第一次接受输入时取走字符后会留下字符n,这样第二次的读入函数直接从缓冲区中把n取走了,显然读取成功 了,所以不会再从终端读取!其实这里的10恰好是回车符!这就是为什么这个程序只执行了一次输入操作就结束的原因!

    【解决办法】:

         清空缓冲区的残留数据。

         使用 fflush(stdin); 或 rewind(stdin); 均可起到清空键盘缓冲区的作用,这两个函数均包含在stdio.h这个头文件中

    修正后的写法:
    Sample two

     1 #include <stdio.h>
     2 int main()
     3 {
     4     char ch1;
     5     char ch2;
     6     scanf("%c", &ch1);
     7     printf("ch1 = %d", ch1);
     8     fflush(stdin);  
     9     scanf("%c", &ch2);
    10     printf("ch2 = %d", ch2);
    11     return 0;
    12 }

     

     

         上面的实例只适用于Windows系统,在Linux环境下上面两种写法都是不起作用的,所以还要换个函数。

    Sample three

     1 #include <stdio.h>
     2 int main()
     3 {
     4     char ch1;
     5     char ch2;
     6     scanf("%c",&ch1);
     7     printf("ch1=%d",ch1);
     8     setbuf(stdin,NULL); 
     9     scanf("%c",&ch2);
    10     printf("ch2=%d",ch2);
    11     return 0;
    12 }

    (资料来源:http://www.ludou.org/c-clear-buffer-area.html

     
     
    参考:http://www.ludou.org/c-clear-buffer-area.html

    转载于:https://www.cnblogs.com/huashanqingzhu/p/4132110.html

    展开全文
  • 用c语言程序实现对素数的判断

    万次阅读 多人点赞 2018-07-30 13:40:15
    为了便于观察结果,在控制台里每一行输出5个数,并且这5个数之间以空格作为分隔 思路: 首先要知道什么是素数以及如何判断一个数是不是素数,素数就是除了1和它自身外,没法被其他自然数整除的数;知道怎样判断...

    题目:

    输出1-N之间的所有素数

    要求:

    为了便于观察结果,在控制台里每一行输出5个数,并且这5个数之间以空格作为分隔

    思路:

    首先要知道什么是素数以及如何判断一个数是不是素数,素数就是除了1和它自身外,没法被其他自然数整除的数;知道怎样判断素数之后就可以尝试用C语言实现判断了。

    过程:

    • 第一次写出来的代码运行出来之后,有很多的乱码,最后还是请教了学长才改过来的
    • 然后我又运行了一次,emmmmm没有很顺利,我发现运行的结果里面少了一个2,直接从3开始了,下面就是运行结果没有2的样子,顺便附上代码
    #include "stdio.h"
    int main()
    {
    	int i, j, n, t = 0;
    	printf("请输入n:");
    	scanf("%d", &n);
    	for (i = 2; i <= n; i++)
    	{
    		for (j = 2; j * j <= i; j++)
    		{
    			if (i % j == 0)
    				break;
    		}
    		if (i % j != 0)
    		{
    			++t;
    			printf("%d\t ", i);
    			if (t % 5 == 0)
    			{
    				printf("\n");
    			}
    		}
    	}
    	return 0;
    }

    我自己改了很多遍,但是没有什么用,甚至越改越不对哈哈哈,然后我就又去请教了学长和同学,他们给我指出了上面代码存在的问题:2%2==0,就直接跳出循环,不会输出。解决方法就是:直接先输出一个2,在进行后面的循环。于是我的代码变成了这个样子:

    • #include "stdio.h"
      int main()
      {
      	int i, j, n, t = 0;
      	printf("请输入n:");
      	scanf_s("%d", &n);
      	printf("%d\t ", 2);
      	t++;
      	for (i = 2; i <= n; i++)
      	{
      		for (j = 2; j * j <= i; j++)
      		{
      			if (i % j == 0)
      				break;
      		}
      		if (i % j != 0)
      		{
      			++t;
      			printf("%d\t ", i);
      			if (t % 5 == 0)
      			{
      				printf("\n");
      			}
      		}
      	}
      	return 0;
      }

      这个代码运行出来的结果就是正确的了,就像下图这样:

      哈哈哈哈大功告成!

    • 写代码其实也是一件需要锻炼的事情,自己写出的代码运行成功的那一刻真的挺开心的。嗯!这只是一个开始,以后要更努力一点!感谢各位帮助我的同学和学长哈哈哈哈哈笔芯~

    展开全文
  • C语言 矩阵乘法

    2021-05-06 23:53:15
    你需要矩阵 AA 与矩阵 BB 相乘,并且将 mm 行 mm 列的乘积结果输出。 输入格式 第一行输入 2 个整数,分别对应题目描述中的 m 和 n(1≤m,n≤10),两个整数之间一个空格分隔。 接下来 m 行,每行包含 n个整数...

    矩阵乘法

    给定一个 mm 行、nn 列的矩阵 AA 和一个 nn 行、mm 列的矩阵 BB。你需要用矩阵 AA 与矩阵 BB 相乘,并且将 mm 行 mm 列的乘积结果输出。

    在这里插入图片描述
    输入格式
    第一行输入 2 个整数,分别对应题目描述中的 m 和 n(1≤m,n≤10),两个整数之间用一个空格分隔。

    接下来 m 行,每行包含 n个整数,每两个整数之间用一个空格分隔。对应 m 行 n 列的矩阵 A。

    再接下来 n 行,每行包含 m 个整数,每两个整数之间用一个空格分隔。对应 n 行 m 列的矩阵 B。

    注:矩阵中的整数均大于等于 −100,小于等于 100。

    输出格式
    输出包括 m 行,每行包含 n 个整数,对应矩阵 A 乘矩阵 B 的结果。每两个整数之间一个空格,每行最后一个整数后面没有空格。
    在这里插入图片描述
    下面展示一些 内联代码片

    #include <stdio.h>
    int main() {
        int matrix_a[10][10];
        int matrix_b[10][10];
        int m;
        int n;
        scanf("%d %d\n",&m,&n);
        for(int a=0;a<m;a++){
            for(int b=0;b<n;b++){
                scanf("%d ",&matrix_a[a][b]);
            }scanf("\n");
        }
        for(int c=0;c<n;c++){
            for(int d=0;d<m;d++){
                scanf("%d ",&matrix_b[c][d]);
            }scanf("\n");
        }
    int product(int matrix_a[10][10],int matrix_b[10][10]){
        int result;
        for(int e=0;e<m;e++){
            for(int g=0;g<m;g++){
                for(int f=0;f<n;f++){
                    result=matrix_a[e][f]*matrix_b[f][g]+result;
            }
                printf("%d",result);
                g!=(m-1) && printf(" ");
                result=0;
            }
            printf("\n");
        }
    }
    product(matrix_a,matrix_b);
        return 0;
    }
    
    展开全文
  • c语言实现堆排序

    2012-02-28 23:30:52
    用函数实现堆排序,并输出每趟排序的结果 ...第二行:输入n个待排序关键字,用空格分隔数据 Output 第一行:初始建堆后的结果 其后各行输出交换堆顶元素并调整堆的结果,数据之间用一个空格分隔
  • 输入格式说明: 输入在一行内给出不超过30个字符的前缀表达式,只包含+、-、*、\以及运算数,不同对象(运算数、运算符号)之间以空格分隔输出格式说明: 输出前缀表达式的运算结果,精确到小数点后1位,或错误...
  • 简单选择排序 c语言

    2019-03-25 21:12:11
    8643 简单选择排序时间限制:1000MS 内存限制:1000K 提交次数:2235 通过次数:1301...第二行:输入n个待排序关键字,用空格分隔数据 输出格式每行输出每趟排序的结果,数据之间用一个空格分隔 输入样例 10 5 4 8 0 9...

    8643 简单选择排序时间限制:1000MS 内存限制:1000K
    提交次数:2235 通过次数:1301题型: 编程题 语言: G++;GCC
    Description用函数实现简单选择排序,并输出每趟排序的结果

    输入格式第一行:键盘输入待排序关键的个数n
    第二行:输入n个待排序关键字,用空格分隔数据
    输出格式每行输出每趟排序的结果,数据之间用一个空格分隔

    输入样例
    10
    5 4 8 0 9 3 2 6 7 1
    输出样例
    0 4 8 5 9 3 2 6 7 1
    0 1 8 5 9 3 2 6 7 4
    0 1 2 5 9 3 8 6 7 4
    0 1 2 3 9 5 8 6 7 4
    0 1 2 3 4 5 8 6 7 9
    0 1 2 3 4 5 8 6 7 9
    0 1 2 3 4 5 6 8 7 9
    0 1 2 3 4 5 6 7 8 9
    0 1 2 3 4 5 6 7 8 9
    source–
    #include<stdio.h>
    int main()
    {
    int n;
    scanf("%d",&n);
    int a[10000],i,j,k;
    for(i=1; i<=n; i++)
    {
    scanf("%d",&a[i]);
    }
    int t,x;
    for(i=1; i<n; i++)
    {
    t=i;
    for(j=i+1; j<=n; j++)
    {
    if(a[j]<a[t])
    t=j;
    }
    x=a[i];
    a[i]=a[t];
    a[t]=x;
    for(k=1; k<=n; k++)
    printf("%d “,a[k]);
    printf(”\n");
    }
    }

    展开全文
  • #include<stdio.h> #include<math.h> //需要用到一个sqrt()函数,该函数... printf("请分别输出方程式的系数,中间以空格分隔\n"); scanf("%f %f %f",&a,&b,&c); if(b*b-4*a*c>0)//判断
  • C语言日记3

    千次阅读 2019-03-29 21:06:25
    输出共两行,第一行为三个整数(一个空格分隔),依次为这组数中正数的个数,0的个数和负数的个数(不统计最后的-1)。 第二行为一个空格分隔的两个整数,依次为这组数中所有正数的和及所有负数的和(不包括...
  • 输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操作数的数据类型为整型,且保证除法和求余的分母非零。 输出格式: 当运算符为+、-、*、/、%时,在一行输出相应的运算结果。若输入是非法符号...
  • C语言 电子汪

    2020-11-02 20:22:04
    题目: 据说汪星人的智商能达到人类 4 岁儿童的水平,更有些...输入在一行中给出两个 [1, 9] 区间内的正整数 A 和 B,用空格分隔输出格式: 在一行中输出 A + B 个Wang!。 输入样例: 2 1 输出样例: Wang!Wang!Wan
  •  程序的功能是从键盘输入一个数x,求x的正弦值,然后输出结果。在main()之前的两行称为预处理命令(详见后面)。预处理命令还有其它几种,这里的include 称为文件包含命令,其意义是把尖括号""或引号内指定的文件包含...
  • C语言 A除以B

    千次阅读 2020-09-29 22:40:36
    输入在第一行给出两个整数A和B(−100≤A,B≤100),数字间以空格分隔。 输出格式: 在一行中输出结果:如果分母是正数,则输出“A/B=商”;如果分母是负数,则要括号把分母括起来输出;如果分母为零,则输出的商...
  • PTA乙级1032 C语言实现

    2020-12-15 11:20:48
    随后 N 行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从 1 开始连续编号)、及其比赛成绩(百分制),中间以空格分隔输出格式: 在一行中给出总得分最高的学校的编号、及其总分,中间以空格...
  • 回形取数蓝桥杯C语言

    2021-01-24 14:58:00
    回形取数 蓝桥杯 C语言 Description 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向...数之间一个空格分隔,行末不要有多余的空格。 输出样例: 1 4 7 8 9 6
  • 8642 快速排序时间限制:1000MS 内存限制:1000K 提交次数:2105 通过次数:1352题型:...第二行:输入n个待排序关键字,用空格分隔数据 输出格式每行输出每趟排序的结果,数据之间用一个空格分隔 输入样例 10 5 4 8 0 9 ...
  • 8644 堆排序时间限制:1000MS 内存限制:1000K ...第二行:输入n个待排序关键字,用空格分隔数据 输出格式第一行:初始建堆后的结果 其后各行输出交换堆顶元素并调整堆的结果,数据之间用一个空格分隔 输入...
  • 在一行中顺序输出皮球第n次落地时在空中经过的距离、以及第n次反弹的高度,其间以一个空格分隔,保留一位小数。题目保证计算结果不超过双精度范围。 输入样例: 33 5 输出样例: 94.9 1.0 **/
  • 文章目录一、问题描述二、解题思路...从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。 输出描述: 输出m行n列,为矩阵转置后的结果。每个数后面有一个空格 二
  • 随后 N 行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从 1 开始连续编号)、及其比赛成绩(百分制),中间以空格分隔输出格式: 在一行中给出总得分最高的学校的编号、及其总分,中间以空格...
  • 文章目录一、题目描述二、问题解决三、...对于每组测试数据,输出结果单独占一行,按从大到小的顺序输出各人名,人名间用空格分隔。 二、问题解决 代码如下: #include<stdio.h> #include<string.h> int
  • c语言 回形取数

    千次阅读 2019-06-02 12:50:46
    回形取数 问题描述  回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。...数之间一个空格分隔,行末不要有多余的空格。 样例输入 3 3 1 2 3 4 ...
  • C语言 回形取数

    2020-08-08 14:02:16
    问题描述  回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转...数之间一个空格分隔,行末不要有多余的空格。 #include<stdio.h> int main(){ int n,m,count; scanf("%d%d",&n,&
  • c语言文件chess.c

    2020-04-14 11:18:58
    每行输入19个数字,各数字之间以一个空格分隔,每行最后一个数字后没有空格;共输入19行表示棋盘状态的数字。 【输出形式】 若有人即将获胜,则先输出即将获胜人的棋子颜色(1表示白色棋子,2表示黑色棋子),然后...
  • 问题描述  回形取数就是沿矩阵的边取数,若当前方向上无数可取或...数之间一个空格分隔,行末不要有多余的空格。 样例输入 3 3 1 2 3 4 5 6 7 8 9 样例输出 1 4 7 8 9 6 3 2 5 样例输入 3 2 1 2 3 4 5 6 样例输出 1
  • 51Nod1046 A^B Mod C(C语言

    千次阅读 2017-08-13 22:03:53
    给出3个正整数A B C,求A^B Mod C。 ...3个正整数A B C,中间用空格分隔。(1  Output 输出计算结果 Input示例 3 5 8 Output示例 3 C语言AC代码 #include int PowerMod(long long a,
  • PTA乙级 1048 C语言实现

    2020-12-26 12:50:21
    PTA乙级 1048 题目 本题要求实现一种数字加密方法。首先固定一个加密正整数 A,...输入在一行中依次给出 A 和 B,均为不超过 100 位的正整数,其间以空格分隔输出格式: 在一行中输出加密后的结果。 输入样例: 1
  • 蓝桥杯 回形取数–C语言算法 问题描述  回形取数就是沿矩阵的边取数,若当前方向上...数之间一个空格分隔,行末不要有多余的空格。 样例输入 3 3 1 2 3 4 5 6 7 8 9 样例输出 1 4 7 8 9 6 3 2 5 样例输入 3 2 1 2
  • A+B+C问题(C语言

    2018-05-19 20:28:16
    这是一个非常简单的题目,意在...输入为一行,包括了用空格分隔的三个整数 AAA、BBB、CCC(数据范围均在−40-40−40 ~ 404040 之间)。输出为一行,为“A+B+CA+B+CA+B+C”的计算结果。 样例输入 22 1 3 样例输出 26
  • C语言编程100题-5.3

    千次阅读 2019-05-05 01:13:47
    5.3 编写冒泡排序函数,函数原型:void bubblesort(int a[],int n);对n个整数升序排序。 编写选择排序函数,函数原型:void selectsort...(输入输出数据间一个空格分隔) 测试样例: 如输入: 5 2 8 9 10 1 3 4 7...

空空如也

空空如也

1 2 3 4 5 6
收藏数 115
精华内容 46
关键字:

c语言输出结果用空格分隔

c语言 订阅