葉无惜 发表于 2011-6-12 20:01:00

求解!

哪位前辈给点注解,这题杂做啊?最好给点注释
main()
{ long int m9=9,sum=9;
int zi,n1=1,c9=1;
scanf("%d",&zi);
while(n1!=0)
{ if(!(sum%zi))
n1=0;
else
{m9=m9*10;
sum=sum+m9;
c9++;
}
}
printf("%ld,can be divided by %d \"9\"",sum,c9);
}

苦力长江二号 发表于 2011-6-12 20:10:54

哇靠 这是C语言题吧

Linkin Park 发表于 2011-6-12 21:24:58

学过的,很快就忘了。。

葉无惜 发表于 2011-6-12 21:26:04

晕啊啊啊啊啊

葉无惜 发表于 2011-6-12 21:26:30

苦力长江二号 发表于 2011-6-12 20:10 static/image/common/back.gif
哇靠 这是C语言题吧

是啊,你会吗?

苦力长江二号 发表于 2011-6-12 21:34:31

smile 发表于 2011-6-12 21:26 static/image/common/back.gif
是啊,你会吗?

不会 我能看出来就很高兴了

葉无惜 发表于 2011-6-12 21:41:43

苦力长江二号 发表于 2011-6-12 21:34 static/image/common/back.gif
不会 我能看出来就很高兴了

呵呵,我也不会啊 ,头疼啊

撒旦 发表于 2011-6-13 02:37:32

本帖最后由 撒旦 于 2011-6-13 03:35 编辑

其实这个程序是判断一个素数能被几个9整除 我下面举例说要输入的哪个数字不对 哈哈 只是一个思路供你参考

撒旦 发表于 2011-6-13 02:41:32

本帖最后由 撒旦 于 2011-6-13 03:31 编辑

main()
{ long int m9=9,sum=9;   “定语长整型m9=9 sum=9”
int zi,n1=1,c9=1;               “定语zi,n1=1,c9=1“
scanf("%d",&zi);               "输入zi数值 需要手动输入"
while(n1!=0)                      while语句 只要n1不等于0就执行下面语句 否则跳出循环
{ if(!(sum%zi))                   sum除于zi余数取反为真 就是说sum除于zi余数为0则执行下条n1=0;
n1=0;
else                                 否则(sum除于zi余数不为0),则执行下面的语句
{m9=m9*10;               m9=m9*10
sum=sum+m9;         sum=sum+m9
c9++;                           c9累加1,再循环
}
}
printf("%ld,can be divided by %d \"9\"",sum,c9);       显示sum,c9最后得数
}

在这个while语句里总条件是n1不等于0,就可以继续执行下面的语句,但是下面语句在执行中造成n1等于0就结束
所以可以这么理解这个语句
手动输入zi数值 假设我输入2
n1=1,所以继续执行下面的,
sum除于zi=9/2余数为7不等于0
所以不执行n1=0语句
而是跳入执行m9=m9*10=9*10=90
sum=sum+m9=9+90=99
c9++累加1为2
此时结束一个循环 再从if语句进行验证
sum除于zi=99/2余数为1不等于0
所以不执行n1=0语句
而是跳入执行m9=m9*10=90*10=900
sum=sum+m9=99+900=999
c9++累加1为3
以此类推
直到最后执行sum除于zi余数为0是则执行n1=0语句,这样满足while语句条件跳出while循环
最后的语句是显示通过循环后得到的sum,c9数字 其实c9实际就是循环的次数

撒旦 发表于 2011-6-13 03:41:33

本帖最后由 撒旦 于 2011-6-13 03:47 编辑

,,,,,,,,,,,,,,,,,,,
页: [1] 2 3 4
查看完整版本: 求解!