一个变量把我搞得郁闷。。求大家解释啊。。
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a,b,c,d;
int score[100] = {0};
int n;
int flag;
char s[4];
flag = 0;
scanf("%d",&n);
while(n>0)
{
getchar();
scanf("%s",s);
a = s[0] - 48;
b = s[1] - 48;
c = s[2] - 48;
d = s[3] - 48;
if((a==b+1 && a==c+2 && a== d+3) || (a==b-1 && a==c-2 && a==d-3))
score[flag] += 5;
if(a==b && a==c)
score[flag] += 3;
if(b==c && b==d)
score[flag] += 3;
if(a==b && c==d)
score[flag] += 1;
if(a==c && b==d)
score[flag] += 1;
if(a==6 || a==8 || a==9)
score[flag] += 1;
if(b==6 || b==8 || b==9)
score[flag] += 1;
if(c==6 || c==8 || c==9)
score[flag] += 1;
if(d==6 || d==8 || d==9)
score[flag] += 1;
n--;
flag++;
}
printf("%d",flag);
system("pause");
}
当输入
3
0211
2345
8888
后flag输出是1;
后来调试的时候发现当执行到scanf("%s",s);时,flag就又变成0了;我找不到原因。。
[解决办法]
在scanf("%s",s)的时候
你输入4位数 其实是读了5位 最后一位是'\0'
而你s只申请了4个 而s[4]的地址是flag 所以flag = s[4] = 0;