大家帮忙解决一下这个c问题

来源:百度知道 编辑:UC知道 时间:2024/05/06 00:03:24
#include "stdio.h"
#include "conio.h"

main()
{
int i,n=0;
for(i=2;i<5;i++)
{
do
{if(i%3) continue;// 这里的if是怎么判断的?
n++;

} while(!i);//这里的while 是怎么判断的
n++ ;

}

printf("n=%d\n",n);
getch();
}
#include "stdio.h"
#include "conio.h"
void sum(int *a)
{
a[0]=a[1];

}
main()
{
int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
for(i=2;i>=0;i--) sum(&aa[i]);

printf("%d\n",aa[0]);
getch();
}

再加上一道 大家解释一下这段程序 没看明白

if(i%3) continue;
0 为假,非 0 为 真。
i%3 不能被3 整除 时 执行 continue,就是结束本次循环,跳到下一循环的开始

while(!i); "非i" 为真做 循环,也就是 i=0 做循环.

int aa[10]={1,2,3,4,5,6,7,8,9,10},
for(i=2;i>=0;i--) sum(&aa[i]);
i=2 时 &aa[i] 指向 aa[2],数值 3,
函数里的 a[0] 就是 aa[2],a[1] 就是 aa[3]
a[0] = a[1]; 就是执行 aa[2] = aa[3];
aa[] 变 1,2,4,4...

i=1 时 &aa[i] 指向 aa[1],数值 2,
函数里的 a[0] 就是 aa[1],a[1] 就是 aa[2]
a[0] = a[1]; 就是执行 aa[1] = aa[2];
aa[] 变 1,4,4,4...

i=0 时 &aa[i] 指向 aa[0],数值 1,
函数里的 a[0] 就是 aa[0],a[1] 就是 aa[1]
a[0] = a[1]; 就是执行 aa[0] = aa[1];
aa[] 变 4,4,4,4...

最后 打印a[0] 是 4

两个程序不是一样吗?

1、C里条件表达式的值有
成立——1
不成立——0
两种。另外,1又可以是“非0”。所以int型的值也可以作为判断条件,只要表达式的值不为0就表示成立,否则表示失败。

2、if(i%3) continue;// 这里的if是怎么判断的?
就是i%3不为0时成立。i%3就是i除以3取余数。
也就是i不可以被3整除则条件成立,跳出本次循环。

3、while(!i);//这里的while 是怎么判断的
就是!i成立的时候条件成立,即:i==0时条件成立,i不为0时,条件不成立。

#incl