#include
int main()
{
int t,n,i,a=0,b=0,j,p;
char s[399][4];
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=0;i1;i++)
{
for(j=0;j<4;j++)
{ scanf("%c",&s[i][j]);
if(s[i][j]=='1')
a++;
else if(s[i][j]=='2')
b++;
}
}
p=10+a-b;
printf("%d\n",p);
a=0;
b=0;
}
}
为啥运行的时候只能循环一次呀,第二次就无法输出结果
修改处见注释,供参考:
#include<stdio.h>
int main()
{
int t,n,i,a=0,b=0,j,p;
char s[399][4];
scanf("%d",&t);
while(t--)
{
printf("Input n:"); //修改
scanf("%d",&n);
for(i=0;i<n*n-1;i++)
{
for(j=0;j<4;j++)
{
scanf(" %c",&s[i][j]); //修改 scanf("%c",&s[i][j]);
if(s[i][j]=='1')
a++;
else if(s[i][j]=='2')
b++;
}
}
p=10+a-b;
printf("%d\n",p);
a=0;
b=0;
}
return 0;
}
这个代码只能循环一次是因为scanf在读入字符时会读入换行符,导致下一次读入时直接读入换行符而结束循环。解决办法是在读入字符之前调用getchar()读入换行符。
例如在scanf("%c",&s[i][j]);之前加上getchar();即可。