首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

for循环中加入scanf跟printf出错,能帮忙看看不

2013-11-18 
for循环中加入scanf和printf出错,能帮忙看看不#includestdio.h#includestdlib.h#define N 100#define

for循环中加入scanf和printf出错,能帮忙看看不
#include<stdio.h>
#include<stdlib.h>
#define N 100
#define M 10
void main()
{
int a[M][N],i,p,q,n,m,j,b[M];
 printf("请输入存入数组的行数");
 scanf("%d",&n);
 
 printf("请输入存入数组的列数");
 scanf("%d",&m);

 for(i=0;i<n;i++)
 {
 printf("请输入第%d的系数",i);
 for(j=0;j<m;i++)
 {
 printf("请输入第%d的系数",i+1);
 scanf("%d",&a[i][j]);
 }
 printf("请输入第%d的B系数",i);
scanf("%d",&b[i]);
 }
 for(i=0;i<n;i++)
 {
 for(j=0;j<m;i++)
 {
 printf("请输入%d",a[i][j]);
 }
 printf("%d\n",b[i]);
 }
}

[解决办法]
使用scanf函数的时候注意I/O流中对于回车的处理,尤其在循环中
[解决办法]

引用:
谢谢大家的回复和帮忙,这个我是想在往两个数组中存放数据但是出现问题,谢谢你们的忙!
一楼“使用scanf函数的时候注意I/O流中对于回车的处理,尤其在循环中”这个问题怎么避免?
我那个按照四楼的说法改了下,但是输出是数据没放到数组中出错啦这是怎么回事
 请输入存入数组的行数2
请输入存入数组的列数3
请输入第1的列系数1
22
21
请输入第1的B系数322
请输入第2的列系数1
2
2
请输入第2的B系数21
1  1  -858993460  -858993460  -858993460  -858993460  -858993460  -858993460  -8
58993460  -858993460  -858993460  0  0  0  798  438759246  6619235  6422627  668
4772  6226030  3473462  7340137  7471221  6684769  0  7274596  6881367  3407921
 7798830  20  7864435  7536732  0  6881397  88  26  50  7536735  50  6357070  68
81396  50  7143535  108  0  0  7798895  0  0  0  0  0  0  0  0  请按任意键继续.
. .

 getchar函数调用一次,吃掉每次输入时多余的一个回车符!
[解决办法]
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。

在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。

热点排行