if()
{
;
break;
}
do{
scanf("%d",&a);
}while(getchar()!='\n');//遇到回车符结束;就是scanf函数不输入任何数,按回车直接结束循环;
for(int i=0;getchar()!='\n';i++)//这也是以回车符结束输入;
scanf('%d",&a[i]);
while(getchar()!='\n')//同上;
scanf('%d",&a[k++]);这个不一定的,scanf接收的很容易误解为直接就是用户的当前输入,
其实是键盘缓冲区的内容。
你如果担心的话,可以在scanf前加上fflush(stdin);来强制清空键盘缓冲区中的内容不能,你输入的两个数之间必须间隔,要么用空格间隔,要么用回车表示这个数字已输入。
如果用空格,你前面输入的数没有送入内存,系统无法判断,当前程序执行语句仍为你之前的输入语句!
如果用回车表示这个数字已输入,那你就应经换行了!
例如:
#include<stdioh>
int main()
{
int a[3][3],i,j,n;
scanf("%d",&n):
for(i=0;i<n;i++0
{for(j=0;j<n;j++)
scanf("%d",&a[i][j];
printf("\n");
}
printf("the a array has been inputed");
return 0;
}
你如果每输入一个数,就用空格间隔,则你在输入所有的数组后,最后的那个输出语句是在输入数字下面好几行;
如果把那个printf语句删去,则那个输出语句会在输入数据的下一行;
你如果输入一行的数据后按回车,则会换两行(printf("\n");语句没删去),如果删去printf("\n");,就在下一行了。
所以是没有办法达到你的要求的!
求给分!!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)