我正在尝试用和不使用数组来解决这个问题。
问题:
如果一周内晴天的天数严格大于雨天的天数,则Chefland的天气报告为Good。
样本输入:
4
1 0 1 0 1 1 1
0 1 0 0 0 0 1
1 1 1 1 1 1 1
0 0 0 1 0 0 0
其输出:
YES
NO
YES
NO
当我使用一个数组来存储所有的值时,它可以工作。但是当我使用单个变量时,它会抛出sigsegv错误。
使用数组的代码
#include <stdio.h>
#define max 7
int main(void) {
int T,Arr[max];
scanf("%d",&T);
while(T--)
{
int sun=0, rn=0;
for(int i=0;i<max;++i)
{
scanf("%d",&Arr[i]);
Arr[i]==0 ? ++rn : ++sun;
}
sun>rn?printf("Yesn") : printf("Non");
}
return 0;
}
使用导致sigsegv:
的变量的代码#include <stdio.h>
#define max 7
int main(void) {
int T,a;
scanf("%d",&T);
while(T--)
{
int sun=0, rn=0;
for(int i=0;i<max;++i)
{
scanf("%d",a);
a==0 ? ++rn : ++sun;
}
sun>rn?printf("Yesn") : printf("Non");
}
return 0;
}
这是我的理解,因为'a'是一个整数变量,每次我执行扫描它应该存储新的值,然后执行下一个操作,这样我就不必通过使用数组来浪费更多的内存。但它抛出了sigsegv。不知道为什么。
第二个代码段的scanf用法是错误的。
scanf("%d",a);
应该是
scanf("%d",&a);