|
发表于 2022-12-8 22:37:11
|
显示全部楼层
本帖最后由 铭凡 于 2022-12-8 22:45 编辑
同问!
我的分析如下,理论输出5,但是输出的是15
#include "stdio.h"
#include<stdlib.h>
int main()
{
int n, a[20];
int i, j, flag, std, sum = 0;
scanf("%d", &n); //第一次输入4,此时n==4;
for (i = 0; i < n; i++) //循环4次;
{
scanf("%d", &a[i]); //输入2 3 4 5,数组a[4]={2, 3, 4, 5} ;
} //该语句执行之后,i的值是4;
scanf("%d", &std); //输入4 ,std==4;
for (i = 0; i < n; i++)//i=0和1的时候,下面if语句不成立,i=2进入if语句; 这时候i=3了;
{
if (a[i] >= std) //判断2 3 4 5中哪个数大于等于std==4,i=2进入if语句;
{
flag = 1; //对flag进行初始化,此时i==2;此时i==3
for (j = 2; j < a[i]; j++) //a[i==2]==4;a[i == 3] == 5;
{
if (a[i] % j == 0) //4 % 2 ==0, 跳出for循环 (注意是最里层的for循环);5%2 != 0,不执行
{
flag = 0;
break;
}
if (flag) //;执行这个;
{
sum += a[i]; //;第二次的5%2!=0,所以跑到这里来了, 此时sum == 5
}
}
}
}
printf("%d", sum); //按照这个道理,输出的sum行该是5啊emm
system("pause");
return 0;
}
|
|