3道c语言问题 求过程(最好详细点,谢谢)
第一道for(i=1;i++<4;);后,变量i的值是答案是5我怎么算都得4第二道以下程序输出结果是main(){inti;for(i='A';i<'I';i++,i++...
第一道
for(i=1;i++<4;); 后,变量i的值是 答案是5 我怎么算都得4
第二道
以下程序输出结果是
main( )
{int i;
for(i='A';i<'I';i++,i++)printf("%c",i+=32);
printf("\n");}
这题答案是aceg 可是我算到ace就结束了 第二个printf里边就一个回车不知道怎么用啊
第三道
以下程序输出结果是
main()
{int i,s=1;
for(i=1;i<50;i++)
if(!(i%5)&&!(i%3)) s+=i;
printf("%d\n",s); }
答案是91 这个不会啊 求详细过程 展开
for(i=1;i++<4;); 后,变量i的值是 答案是5 我怎么算都得4
第二道
以下程序输出结果是
main( )
{int i;
for(i='A';i<'I';i++,i++)printf("%c",i+=32);
printf("\n");}
这题答案是aceg 可是我算到ace就结束了 第二个printf里边就一个回车不知道怎么用啊
第三道
以下程序输出结果是
main()
{int i,s=1;
for(i=1;i<50;i++)
if(!(i%5)&&!(i%3)) s+=i;
printf("%d\n",s); }
答案是91 这个不会啊 求详细过程 展开
5个回答
展开全部
第一道: i=1时,判断i++<4就相当于i<4,i=i+1.中间省略,当i=4的时候,判断i++<4相当于i<4,i=i+1,因为条件不成立,所以退出循环,但是i已经执行自加了,所以i=5,所以要注意的是i=i+1并不是必须i<4这个条件成立的时候才执行的
第二道:i='A',判断i<'I',成立执行第一个printf,但因为没有加括号,for的作用域只有一行,所以第二个printf不会被执行,所以输出a;第二次循环,第三次,直到每四次,i++,i++过后,i='I',所以不执行了,所以最后输出的是一个换行,楼主可以在这段程序代码后面加一句printf("...");如果接在aceg后面,那就是我说错了.反之则是对的
第三道:这个程序的实质是这样的,求所有50以内的5和3的最小公倍数的和.也就是15,30,45,加起来等于90,再加上s本身等于1,所以等于91,因为只有等于5和3的倍数的时候,条件!(i%5)&&!(i%3)才会成立.也就是说i%5==0并且i%3==0的时候条件才成立
第二道:i='A',判断i<'I',成立执行第一个printf,但因为没有加括号,for的作用域只有一行,所以第二个printf不会被执行,所以输出a;第二次循环,第三次,直到每四次,i++,i++过后,i='I',所以不执行了,所以最后输出的是一个换行,楼主可以在这段程序代码后面加一句printf("...");如果接在aceg后面,那就是我说错了.反之则是对的
第三道:这个程序的实质是这样的,求所有50以内的5和3的最小公倍数的和.也就是15,30,45,加起来等于90,再加上s本身等于1,所以等于91,因为只有等于5和3的倍数的时候,条件!(i%5)&&!(i%3)才会成立.也就是说i%5==0并且i%3==0的时候条件才成立
展开全部
1、 结果是5。 当 i=4 时,i++<4 为假循环结束。但 i 这时又加了一,所以 i = 5。
2、答案是 aceg 。当 i='G' 时循环条件 i<'I' 为真,执行循环体,输出 g;之后 i 加了2 变成 'I' ,循环条件为假结束循环。第二个printf输出了一个换行符,意思是在输出aceg后再输出一个换行使光标移动到下一行开头。
3、程序是在求 s 加上 1到50所有能同时被3和5整除的数的和。1+15+30+45=91。
!(i%5)&&!(i%3) 为真 -> !(i%5)为真同时!(i%3)为真 -> (i%5)为假同时(i%3)为假 -> i%5==0且i%3==0 -> i能同时被 3 和 5 整除
2、答案是 aceg 。当 i='G' 时循环条件 i<'I' 为真,执行循环体,输出 g;之后 i 加了2 变成 'I' ,循环条件为假结束循环。第二个printf输出了一个换行符,意思是在输出aceg后再输出一个换行使光标移动到下一行开头。
3、程序是在求 s 加上 1到50所有能同时被3和5整除的数的和。1+15+30+45=91。
!(i%5)&&!(i%3) 为真 -> !(i%5)为真同时!(i%3)为真 -> (i%5)为假同时(i%3)为假 -> i%5==0且i%3==0 -> i能同时被 3 和 5 整除
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第1题:
你必须注意到判定条件为i++<4。++放在表达式后面时,将在整行执行完毕后再执行累加操作。因此最后一次循环时i=4,退出循环,之后i再累加,因此等于5。
第2题:
在A到I之间依次有ABCDEFGHI,间隔1个的队列为ACEGI,其中I是退出条件,因此符合条件的i值为A、C、E、G。又因为打印输出时加了32(输出其小写),因此输出为aceg。第二个printf就是输出一个回车,没别的意思。
第3题:
这是求1到49之间的能被5、3整除的数之和。另外需要注意s的初值为1。
1+15+30+45=91。
你必须注意到判定条件为i++<4。++放在表达式后面时,将在整行执行完毕后再执行累加操作。因此最后一次循环时i=4,退出循环,之后i再累加,因此等于5。
第2题:
在A到I之间依次有ABCDEFGHI,间隔1个的队列为ACEGI,其中I是退出条件,因此符合条件的i值为A、C、E、G。又因为打印输出时加了32(输出其小写),因此输出为aceg。第二个printf就是输出一个回车,没别的意思。
第3题:
这是求1到49之间的能被5、3整除的数之和。另外需要注意s的初值为1。
1+15+30+45=91。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一道:
for(i=1;++i<4;);//多看书啊,要明白i++和++i的不同,一个是先运算后加,一个是先加后运算的
第二道:
以你发出来的程序只会输出a,ceg不不会输出的,你是想大些转小写吧。
i+=32,等号也太多余了吧,计算后i等于97,已经大于'I'了,给你个正确的:
#include <stdio.h>
main( )
{
int i;
for(i='A';i<'I';i++,i++)printf("%c",i+32);
printf("\n");
}
最后一个换行符 这个是你调试的时候用来换行一下,让 ”请按任意键继续. . .“ 到下一行去,方便查看
第三题:
你想问题不明确,你是相求和还是数量啊,为什么S初始值是1
if(!(i%5)&&!(i%3)) 能够被3整除同时也能被5整除的数 15、30、45、和等于90在加S等于91
for(i=1;++i<4;);//多看书啊,要明白i++和++i的不同,一个是先运算后加,一个是先加后运算的
第二道:
以你发出来的程序只会输出a,ceg不不会输出的,你是想大些转小写吧。
i+=32,等号也太多余了吧,计算后i等于97,已经大于'I'了,给你个正确的:
#include <stdio.h>
main( )
{
int i;
for(i='A';i<'I';i++,i++)printf("%c",i+32);
printf("\n");
}
最后一个换行符 这个是你调试的时候用来换行一下,让 ”请按任意键继续. . .“ 到下一行去,方便查看
第三题:
你想问题不明确,你是相求和还是数量啊,为什么S初始值是1
if(!(i%5)&&!(i%3)) 能够被3整除同时也能被5整除的数 15、30、45、和等于90在加S等于91
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第1个答案是5,因为当i=4就不满足i<4跳出了,这个时候再++ 自然是5
第2个不同的编译器结果不一样的
最后一个是把50以内的所有既被5整除又被3整除的数求和,应该是15 + 30 + 45 =90,但是s还有初始值是1 ,所以是91
第2个不同的编译器结果不一样的
最后一个是把50以内的所有既被5整除又被3整除的数求和,应该是15 + 30 + 45 =90,但是s还有初始值是1 ,所以是91
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询