我是靠谱客的博主 舒心芝麻,这篇文章主要介绍C语言第五次作业——循环结构,现在分享给大家,希望可以做个参考。

C语言程序设计第五次作业——循环结构(1)

(一)改错题

输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉。计算公式如下:++c = 5×(f-32)/9++。
其中,c表示摄氏温度,f表示华氏温度。

  • 输入输出样例1:

     Enter lower:32
       Enter upper:35
       fahr celsius
       32 0.0
       34 1.1
      
  • 输入输出样例2:

       Enter lower:40   Enter upper:30
      fahr celsius

源程序(有错误的程序)

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h> int main(void) { int fahr , lower, upper; /* fahr表示华氏度 */ double celsius; /* celsius表示摄氏度 */ printf("Enter lower:"); scanf("%d",&lower); printf("Enter upper:"); scanf("%d",&upper); printf("fahr celsiusn"); /* 显示表头 */ /* 温度转换 */ for (fahr = lower , fahr <= upper, fahr ++) ; celsius = 5 /9 * (fahr - 32.0); printf("%3.0f %6.1fn", fahr, celsius); return 0; }

错误信息 1:
da4baaaaaaaa&bo=qanaagaaaaarb9k!&rf=viewer_4

错误原因 :
for括号中前俩个只能是分号而不是逗号

改正方法:
把括号里面的逗号改成分号,把括号外面的分号去掉。

编译正确,继续运行:
db8baaaaaaaa&bo=pasaagaaaaarabu!&rf=viewer_4

错误信息 2:
da8baaaaaaaa&bo=4qmhagaaaaarb9c!&rf=viewer_4

错误原因:
输出结果不正确,回头发现for后面缺少了俩个大括号“{}”。

错误信息 3:
da8baaaaaaaa&bo=4qmhagaaaaarb9c!&rf=viewer_4

错误原因:
加入了大括号{}还是和上一个错误一样,输出结果不正确。判断是输出的时候出现了问题。

改正方法:
把%3.0f, %6.1f改成%d和%:1f。

错误信息 4:
dhuaaaaaaaaa&bo=4qmhagaaaaarb9c!&rf=viewer_4

错误原因:
db4baaaaaaaa&bo=zweraaaaaaarb.8!&rf=viewer_4
应该把 “/9”放在后面,下面的是给出的正确的计算公式。
da8baaaaaaaa&bo=gqeraaaaaaarad4!&rf=viewer_4

改正方法:
把公式按照格式来写。daebaaaaaaaa&bo=gqepaaaaaaaralg!&rf=viewer_4

错误信息 5:
da8baaaaaaaa&bo=vgiaagaaaaarb44!&rf=viewer_4

错误原因:
输出的组距多出来了,循环应该是+2而不是+1。

改正方法:把fahr++改成fahr+=2。da4baaaaaaaa&bo=4qmhagaaaaarb9c!&rf=viewer_4

输入样例2: 40 30
dbmbaaaaaaaa&bo=4qmhagaaaaarana!&rf=viewer_4

符合结果,给出正确的源程序

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h> int main(void) { int fahr , lower, upper; /* fahr表示华氏度 */ double celsius; /* celsius表示摄氏度 */ printf("Enter lower:"); scanf("%d",&lower); printf("Enter upper:"); scanf("%d",&upper); printf("fahr celsiusn"); /* 显示表头 */ /* 温度转换 */ for (fahr = lower ; fahr <= upper; fahr +=2) { celsius = 5* (fahr - 32.0)/9; printf("%d %.1fn", fahr, celsius); } return 0; }

(二)学习总结

  • 1
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h> int main() { int i,num,odd,even; odd = 0; even = 0; for(i = 1; i <= 10;i++) { scanf("%d",&num); if(num % 2 == 0) { even++; } else { odd++; } } printf("%d %d",even,odd); return 0; }

第一步:定义变量i,num,odd,even

第二步:赋值odd = 0

第三步:赋值even = 0

第四步:定义i = 1

第五步:运行i<=10

第六步:输入num

第七步:判断是否 num % 2 == 0

第八步:运行even加1,或者odd加1

第九步:运行i++

第十步:判断是否i<=10

第十一步:输入sum

第十二步:判断是否 num % 2 == 0

第十三步:运行even加1,或者odd加1

复制代码
1
2
3
. . .

最后一步:i=11,判断i>10,然后输出even和odd的结果

功能:实现10个数的奇数偶数分类
  • 2 增量运算符

(1)

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h> int main() { int i,j; i = 2; j = 2; i++; ++j; printf("i = %dn",i); printf("j = %dn",j); return 0; }

deqaaaaaaaaa&bo=aaomaqaaaaarajm!&rf=viewer_4
运行结果:
db4baaaaaaaa&bo=0gp.aqaaaaarabk!&rf=viewer_4

dbqbaaaaaaaa&bo=egpfaqaaaaaraio!&rf=viewer_4
运行结果:
daebaaaaaaaa&bo=4qmhagaaaaarana!&rf=viewer_4

增量运算符在单独使用时没有影响。

(2)

复制代码
1
2
3
4
5
6
7
8
9
10
#include <stdio.h> int main() { int i,j; i = 2; j = 2; printf("%dn",i++); printf("%dn",++j); return 0; }

运行结果:
dhuaaaaaaaaa&bo=4qmhagaaaaarb9c!&rf=photolist

最后的结果是:i=2,j=3。i++为后缀的形式,先执行的是输出i=2,然后再执行i ++,所以输出的是i=2;++j为前缀,先执行j=2,j+1,然后再执行输出,所以输出的结果是j=3。这说明前缀和后缀在语句里面的时候所表达的含义是不同的,当它们单独使用时没有区别,所以在我们用的时候我们要注意是在语句里面还是在语句外面。
  • 3 循环语句后面有{}是否有影响?
复制代码
1
2
3
4
5
6
7
8
9
#include <stdio.h> int main() { int i; for(i = 1;i <= 5;i++) printf("*"); printf("n"); return 0; }

运行结果:
dhuaaaaaaaaa&bo=0wp.aqaaaaarabg!&rf=viewer_4

复制代码
1
2
3
4
5
6
7
8
9
#include <stdio.h> int main() { int i; for(i = 1;i <= 5;i++) printf("*"); printf("n"); return 0; }

运行结果:
dleaaaaaaaaa&bo=0gp6aqaaaaarab0!&rf=viewer_4

复制代码
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h> int main() { int i; for(i = 1;i <= 5;i++) { printf("*"); printf("n"); } return 0; }

运行结果:
dbabaaaaaaaa&bo=3glaaqaaaaarada!&rf=viewer_4

复制代码
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h> int main() { int i; for(i = 1;i <= 5;i++) { printf("*"); } printf("n"); return 0; }

运行结果:
dbebaaaaaaaa&bo=uqp3aqaaaaarahs!&rf=viewer_4

1,2,4输出的一行5,而3输出的是一列5,但是1,2属于一类for后面没有{},3,4属于一类for后面有{}。
为什么会有不同的结果,这是因为跟{}有关,3输出一列的5 是因为在大括号里面有循环,并且输出换行在括号里面,所以每输入一次就换一次行;而4则与3不同的地方就是输出换行在括号外面,所以每次输入就存在了里面,最后直接输出的是一行5
1和2在缩格上面不同,但是输出的结果一样;1和4都输出了5 *,则证明循环体的判定与缩格没有关系,而与大括号{}有关系。3和4是正确的缩进格式。
所以在我们判断的时候我们要看for后面有没有大括号在进行运行。
  • 4 其他总结:
复制代码
1
1.在进行逗号运算的时候要从左往右一次运算。
复制代码
1
2
3
4
2.循环语句的控制条件是break和continue;break只能终止并跳出最近一层的结构。 break只能用于循环语句和switch语句中。 在循环语句中,break语句一般都是与if语句一起使用。 continue语句只结束本次循环,而不是终止整个循环的执行。
复制代码
1
3.无限循环中,通过在循环体中加break语句对循环进行控制。

(三)实验总结

(1)题目

7-1求奇数分之一序列前N项和:

(2)流程图

deiaaaaaaaaa&bo=nwkaagaaaaaracg!&rf=viewer_4

(3)源代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h> int main() { int denominator, i, N; double item, sum; while (scanf("%d", &N) != EOF) { denominator = 1; sum = 0; for (i = 1; i <= N; i++) { item = 1.0/denominator; sum = sum+item; denominator = denominator+2; } printf("sum = %fn", sum); } return 0; }
(4)实验分析

问题1:输出的结果不相等。

da4baaaaaaaa&bo=4wb5aaaaaaarb6o!&rf=viewer_4

原因:item为浮点型,而这样输出的整型所以不相等。
deiaaaaaaaaa&bo=oqe6aqaaaaarakw!&rf=viewer_4

解决办法:把1改成1.0,或者在denominator前面加double()。

(5)本题PTA提交列表

dbabaaaaaaaa&bo=caqfaqaaaaaraf0!&rf=viewer_4

(1)题目

7-3奇偶分家

(2)流程图

dbqbaaaaaaaa&bo=iakaagaaaaarcdc!&rf=viewer_4

(3)源代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h> int main(void) { int N,i,n,a = 0,b = 0; scanf("%d",&n); for(i = 0;i < n;i++) { scanf("%d",&N); if(N % 2 == 0) { a++; } else { b++; } } printf("%d %d",b,a); return 0; }
(4)实验分析

问题1:在写流程图的时候碰到输入0的时候就直接退出。
db4baaaaaaaa&bo=xgoaagaaaaarcoa!&rf=viewer_4

原因:赋值为"n"和"N",但是它俩代表的是同一个值,所以输入0的时候不能判断是赋给谁,最后就按照第一个来输出。

解决办法:第二个变量赋值成别的字母就可以了。

(5)本题PTA提交列表

dbabaaaaaaaa&bo=catzaaaaaaarala!&rf=viewer_4

(1)题目

7-5 统计字符

(2)流程图

dleaaaaaaaaa&bo=lwn8agaaaaarb9o!&rf=viewer_4dpkaaaaaaaaa&bo=nqpxaqaaaaarb14!&rf=viewer_4

(3)源代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<stdio.h> int main() { char str[10]; int i=0,letter=0,blank=0,digit=0,other=0; while(i<10) { str[i++]=getchar(); } for(i=0;i<10;i++) { if(str[i]==' ') { blank++; } else if(str[i]=='n') { blank++; } else if(str[i]>='0'&&str[i]<='9') { digit++; } else if(str[i]>='A'&&str[i]<='Z') { letter++; } else if(str[i]>='a'&&str[i]<='z') { letter++; } else { other++; } } printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other); return 0; }
(4)实验分析

在统计字符的时候我们要用到循环里面的镶嵌,我们既可以用字母来表示也可以用asllc码来表示但是建议用字母来表示这样好记。在实验过程中遇到问题就是多注意注意细节,比如:' '英文半角单引号。

(5)本题PTA提交列表

deiaaaaaaaaa&bo=datzaaaaaaaralq!&rf=viewer_4

(1)题目

7-7 求交错序列前N项和

(2)流程图

dbsbaaaaaaaa&bo=vaoaagaaaaarcai!&rf=viewer_4dleaaaaaaaaa&bo=iqq9agaaaaarbyo!&rf=viewer_4

(3)源代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h> int main(void) { int n; while(scanf("%d",&n)!=EOF) { int i; double j,k; /*j分母,i分子*/ double sum=1; /*sum表示总和*/ j=1; for(i=2;i<=n;i++) { if(i%2==0) { j+=2; k=-i/j; } else { j+=2; k=i/j; } sum+=k; } printf("%.3fn",sum); } return 0; }
(4)实验分析

在我们求交错序列前N项和的时候,我们要注意一正一负,所以要在循环的时候用(-1)的n-1次幂来求比较好。例如:

复制代码
1
k=(-1)^(n-1)/j
(5)本题PTA提交列表

da4baaaaaaaa&bo=cgt3aaaaaaaraly!&rf=viewer_4

(四)博客互评

(1) 针对陈魔的博客园:
复制代码
1
2
(1).首先打开界面是比较醒眼的,因为文字比较大还有截图,这样可以看的很 清楚,但是我觉得如果截图都弄那么大整体看就不整齐了。
复制代码
1
(2).建议你源代码用Markdowwn的形式来写,这样看起来就比较好看而且知道缩格的形式,也能够练习一下写程序注意的点。
复制代码
1
(3).总体内容完整,值得我么学习,希望我们能够一起交流。
(2)针对孤寂一粒沙的博客园:
复制代码
1
2
(1).建议你在循环是否和{}有影响的那道题,写完源程序然后配上结果图这样更明了。 在增量运算符那道题应该把输出的结果截图下来,你这样输入俩个数容易被别人看的时候漏掉。
复制代码
1
2
(2).流程图比较模糊。 实验分析的时候应该把部分正确详细的写出来,别人不知道你哪儿不正确,应该写出来大家一起交流。
复制代码
1
(3).博客互评应该写出你评论了谁,只给一个链接不知道是谁。总体挺好但是需要改善。
(3)针对曲儿说的博客园:
复制代码
1
2
(1).整体看起来不错,格式整齐,内容完整,值得我们学习。 但是,有些格式需要改正,就像运行结果1和后面附一张图片需要空一行,这样就会汉字在图片上方,这样看起来就整齐了。
复制代码
1
(2).学习总结这一块总结的很好,值得我学习,尤其是如何运算的步骤写的很详细希望我们能够一起交流学习。

^ - ^欢迎大家来评论我的博客园!

转载于:https://www.cnblogs.com/8426224ll/p/7813670.html

最后

以上就是舒心芝麻最近收集整理的关于C语言第五次作业——循环结构的全部内容,更多相关C语言第五次作业——循环结构内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部