注册 登录
编程论坛 C语言论坛

scanf如何用空格连续输入数据

fishxiaoyun 发布于 2020-09-29 22:11, 2773 次点击
下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出。

#include <stdio.h>
main()
{  int  a[4][4],b[4][4],i,j;       /*a存放原始数组数据,b存放旋转后数组数据*/
   printf("input 16 numbers: ");
/*输入一组数据存放到数组a中,然后旋转存放到b数组中*/
   for(i=0;i<4;i++)
       for(j=0;j<4;j++)
       {  scanf("%d",&a[i][j]);
          b[3-j][i]=a[i][j];
        }
   printf("array b:\n");
   for(i=0;i<4;i++)
      {  for(j=0;j<4;j++)
         printf("%6d",b[i][j]);
         printf("\n");
       }
}

问题描述:输入数据的时候必须按回车才能识别输入一个数结束,如何实现按空格就表示一个数输入结束了。谢谢。
5 回复
#2
风过无痕19892020-09-30 00:41
回复 楼主 fishxiaoyun
#include <stdio.h>
main()
{  int  a[4][4],b[4][4],i,j;       /*a存放原始数组数据,b存放旋转后数组数据*/
   char ch;
   printf("input 16 numbers: ");
/*输入一组数据存放到数组a中,然后旋转存放到b数组中*/
   for(i=0;i<4;i++)
       for(j=0;j<4;j++)
       {  scanf("%d",&ch);
          if(ch != ' ')
          {
              a[i][j] = ch;
              b[3-j][i]=a[i][j];
          }
        }
   printf("array b:\n");
   for(i=0;i<4;i++)
      {  for(j=0;j<4;j++)
         printf("%6d",b[i][j]);
         printf("\n");
       }
}
#3
李少iii2020-09-30 08:14
回复 楼主 fishxiaoyun
//你写的这个程序,你直接输数字,每输完一个数字,然后空格,直至最后一个数字在回车,也能实现的,不需要每输一个数字然后回车
#4
fishxiaoyun2020-10-01 20:55
回复 3楼 李少iii
收到,谢谢。
我输入数字按空格,输入到最后一个字按回车确实可以。
但是要数着输入了几个数了,还差几个数,挺麻烦。
就想输入数字按空格,然后输入最后一个数字按空格后自动结束输入。
#5
fishxiaoyun2020-10-01 20:57
回复 2楼 风过无痕1989
谢谢,好主意。我试试。
#6
size_t2020-10-09 14:13
还可以用while循环
程序代码:
while(count<=10)
        {
            scanf("%d",&number[k]);
            k++;
            count++;
        }
1