这个C语言题目怎么做

程序1
#include <stdio.h>
main()
{ int j,k,s1,s2;
s1=s2=0;
for(j=0;j<=5;j++){
s1++;
for(k=1;k<=j;k++)
s2++;
}
printf("%d %d",s1,s2);
}
程序2
#include <stdio.h>
main()
{ int j,k,s1,s2;
s1=0;
for(j=1;j<=5;j++){
s1++;
for(k=1,s2=0;k<=j;k++)
s2++;
}
printf("%d %d",s1,s2);
}
程序3
#include <stdio.h>
main()
{ int j,k,s1,s2;
s1=0;
for(j=1;j<=5;j++){
s1++;
for(k=1;k<=j;k++,s2=0)
s2++;
}
printf("%d %d",s1,s2);
}
程序4
#include <stdio.h>
main()
{ int j,k,s1,s2;
s1=s2=0;
for(j=1;j<=5;j++,s1=0){
s1++;
for(k=1;k<=j;k++)
s2++;
}
printf("%d %d",s1,s2);
}
(13)程序1运行时。输出 (13) 。答案:D
A、0 15 B、5 0
C、5 5 D、5 15
(14)程序2运行时。输出 (14) 。答案:C
A、0 15 B、5 0
C、5 5 D、5 15
(15)程序3运行时。输出 (15) 。答案:B
A、0 15 B、5 0
C、5 5 D、5 15
(16)程序4运行时。输出 (16) 。答案:A
A、0 15 B、5 0
C、5 5 D、5 15
试题5(第小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中挑选一个正确答案。
【程序】
程序1
#include <stdio.h>
main()
{ int i,m=15,y=-1;
for(i=2;i<=m/2;i++)
if(m%i==0)y=0;
else y=1;
printf("%d",y);
}
程序2
#include <stdio.h>
main()
{ int i,m=15,y=-1;
for(i=2;i<=m/2;i++)
if(m%i==0){y=0;break;}
printf("%d",y);
}
程序3
#include <stdio.h>
main()
{ int i,m=15,y=-1;
for(i=2;i<=m/2;i++)
if(m%i==0)break;
if(i>m/2)y=1;
else y=0;
printf("%d",y);
}
程序4
#include <stdio.h>
main()
{ int i,m=15,y=-1;
for(i=2;i<=m/2;i++)
if(m%i==0){break;y=0;}

printf("%d",y);
}
(17)程序1运行时。输出 (17) 。答案:A
A、1 B、0
C、15 D、-1
(18)程序1运行时。输出 (18) 。答案:B
A、1 B、0
C、15 D、-1
(19)程序1运行时。输出 (19) 。答案:B
A、1 B、0
C、15 D、-1
(20)程序1运行时。输出 (20) 。答案:D
A、1 B、0
C、15 D、-1

麻烦在每个句子后面写下这个句子的意思,第二大题的后两个不会做,里面的else和break搞不清怎么弄。第一题的S1++是什么意思,是S1=S1+1的意思吗?都搞不清。

程序1
#include <stdio.h>
main()
{ int j,k,s1,s2;//定义整型变量 j 、k、s1和s2
s1=s2=0;//令s1等于s2等于0 ,此句相当于 s2=0; s1=s2 执行完后s1 和s2都等于0
for(j=0;j<=5;j++){ //从j等于0开始循环,一共循环到j=5(共6次) ,每循环一次J的值加一
s1++;// s1 自增1 相当于 s1=s1+1
for(k=1;k<=j;k++) 从k等于1开始循环,一直到k等于J为止,每循环一次k加1
s2++;//s2自增1 相当于s2=s2+1
}
printf("%d %d",s1,s2); 打印s1和s2的值
}
程序分析:程序执行后,先初始化S1 和s2等于0
进入第一个循环后s1每循环一次加1 一共循环了6次,因此s1=s1+6=6
在第一个循环里,嵌套了第二个子循环,s2的变化如下:
J=0时:因为K<=j条件不满足,所以子循环没有进入到循环内部,s2值保持0不变
J=1时:满足条件一次(当K=J=1时),因此S2=S2+1 ,S2的值变为1
J=2时:满足条件两次(当K=1和K=2时) 故s2做了两次自增1操作,所以S2=s2+1+1=3
J=3时:满足条件三次(当K=1和K=2机K=3时) 故s2做了两次自增1操作,所以S2=s2+1+1+1=6
J=4时:满足条件四次 故s2做了两次自增1操作,所以S2=s2+1+1+1+1=6+4=10
J=5时:满足条件五次 故s2做了两次自增1操作,所以S2=10+5=15
J=6时:满足条件六次 故s2做了两次自增1操作,所以S2=15+6=21

最终输出的结果应该是6,21 你那个答案是5,15 可能是程序代码写错了吧,应该不是J<=5而是J<5才对。
下面的就不说了,累死了追问

第一题看你的看懂了,第二题的这句:if(m%i==0){break;y=0;}
尤其是后面的break的那里不懂,那个大括号是什么意思,再说下。我懂了,分就给你了

追答

程序2
#include
main()
{ int i,m=15,y=-1;//定义变量i、m 和y,并且令m等于15 ,y等于-1
for(i=2;i<=m/2;i++)//将i的值初始化为2,并且在i小于m除2(m=15 15除以2等于7.5,
//因为m是整形所以舍去0.7,即i要小于或等于7)的情况下继续循环,
//每循环一次i的值加一
if(m%i==0){y=0;break;}//如果m除i的余数等于0,则令y等于0,并跳出循环。
printf("%d",y);//打印y的值
}
当i=2时,i<7成立,进入循环内部,判断m%i(值为15对2取余 余数为1 不等于0,跳过if后面括号里的语句,继续执行)
当i=3时,i<7成立,进入循环内部,判断m%i(值为15对3取余 余数为0满足if条件,执行if后面括号里的语句,即则令y等于0,并跳出循环)
跳出循环后打印y的值(为0)

break就是跳出循环的意思,也就是循环到这里就不再继续做了。
大括号内的语句块可以看成一条语句。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-18
s1++,就是s1=s1+1,else是如果不满足if语句中的条件,就执行else语句下面的语句,break,是跳出循环,就像你的题目中就是满足条件后直接跳出for循环,我用的手机,不能一句一句解释,请谅解,只有针对你问得几点回答了
第2个回答  2011-04-18
这个不好解释啊,主要就是循环,选择,自增以及输出,else就是如果条件不满足则执行其后面的语句,break是跳出循环
第3个回答  2011-04-18
1
#include <stdio.h>
main()
{ int j,k,s1,s2;
s1=s2=0;
for(j=0;j<=5;j++){//循环六次
s1++;//s1 = s1+1;
for(k=1;k<=j;k++)//
s2++;//s2 = s2+1;
}
printf("%d %d",s1,s2);
}
2
#include <stdio.h>
main()
{ int j,k,s1,s2;
s1=0;
for(j=1;j<=5;j++){
s1++;
for(k=1,s2=0;k<=j;k++)//每次s2从0算起
s2++;
}
printf("%d %d",s1,s2);
}
3
#include <stdio.h>
main()
{ int j,k,s1,s2;
s1=0;
for(j=1;j<=5;j++){
s1++;
for(k=1;k<=j;k++,s2=0)//每次s2加1后,又把它赋值为0了
s2++;
}
printf("%d %d",s1,s2);
}
4
#include <stdio.h>
main()
{ int j,k,s1,s2;
s1=s2=0;
for(j=1;j<=5;j++,s1=0){//每次执行{}内的内容后又把s1赋值为0
s1++;
for(k=1;k<=j;k++)
s2++;
}
printf("%d %d",s1,s2);
}
1
#include <stdio.h>
main()
{ int i,m=15,y=-1;
for(i=2;i<=m/2;i++)//从2到7循环6次
if(m%i==0)y=0;//如果 15除以i的余数为0,则y为0,否则为1
else y=1;
printf("%d",y);//其实就是输出15%7时候为0
}
2看上题注释
3
第4个回答  2011-04-18
#include <stdio.h>
main()
{ int j,k,s1,s2;//定义变量
s1=s2=0;//变量赋值
for(j=0;j<=5;j++){ //循环 j=0,当j<=5的时候j=j+1。注:j++就是在运行的时候每次都让j自己加一。
s1++; //每次s1都加一
for(k=1;k<=j;k++) //循环
s2++; //加一
}
printf("%d %d",s1,s2); //打印最后的s1,s2的值
}
这是上面的第一大题,因为都差不多就把第一个小程序给注释了,如果还有不会的再问我吧

第二大题
程序3
#include <stdio.h>
main()
{ int i,m=15,y=-1; //赋值m=15,y=-1
for(i=2;i<=m/2;i++) //循环 i=2,当i<=m/2时,i=i+1;然后执行下面循环的内容,执行完毕返回这里继续比较,如果还是不够的话,i继续加一,当i>m/2时就跳出循环
if(m%i==0)break; //m%i时m除以i取余数,当有余数,也就是不被i整除就跳出循环,否则继续在for循环中。
if(i>m/2)y=1; //当i>m/2时给y赋值为1
else y=0; //否则y=0
printf("%d",y); //打印y
}
这个题在for循环中判断的是i<=m,然后加一也就是i的 最大值应该是m/2+1=8(i为int型整数)而当m%i=0时i最大应该是和m/2相等不会大于,所以最后给y=0
相似回答