第四次作业
作业要求:【https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2522】
要求一:
1、你观看了几个视频?给出观看列表截图。
2、通过观看视频你学习到哪些知识点或者编程题目?
我对数组各加的了解,以及对函数应用了解的更多了,另外还了解了一些二维数组。
3、对于所学知识点还有哪些疑问?有哪些知识点没有学会?
对于上周所学的知识点,函数的部分还有一点不熟练,我要再练习一下pta中的题,争取更加好的掌握这些知识点。
要求二:
第13次作业(数组)7-2 输出所有大于平均值的数 (15 分)
本题要求编写程序,将输入的n个整数存入数组a中,然后计算这些数的平均值,再输出所有大于平均值的数。
输入格式:输入在第1行中给出一个正整数n(1≤n≤10),第2行输入n个整数,其间以空格分隔。题目保证数据不超过长整型整数的范围。
输出格式:输出在第1行给出平均值,保留2位小数。在第2行输出所有大于平均值的数,每个数的后面有一个空格;如果没有满足条件的数,则输出空行。
如果输入的n不在有效范围内,则在一行中输出"Invalid."。
输入样例1:
10
55 23 8 11 22 89 0 -1 78 186
输出样例1:
47.10
55 89 78 186
输入样例2:0
输出样例2:Invalid.
一.实验代码
#include<stdio.h> #define N 10 int main() { int i,num; double average,sum; sum=0; int a[N]; scanf("%d",&num); sum=0; if(num>=1&&num<=10){ for(i=0;i<num;i++){ scanf("%d",&a[i]); sum=sum+a[i]; } average=sum/num; printf("%.2f\n",average); for(i=0;i<num;i++){ if(a[i]>average) printf("%d ",a[i]); } } else{ printf("Invalid."); } printf("\n"); return 0; }
二.解题思路
1.步骤
1).先定义整形变量num表示输入数的个数和i,再定义双精度变量average表示平均数,sum表示总和,同时定义数组a[num]。
2).先输入数的个数,然后用if语句在for循环中输入数组中的数,求出总和sum。
3).求average,并输出到小数点后两位。
4).在for循环中用if语句找出大于平均值的数,有则输出,没有则输出Invalid.。
运行的结果:
2.流程图
三.调试过程碰到的问题及解决办法
在编译成功后,开始运行时出现了能运行但是没有结果的情况。
后来找到是了是第19行代码应该输出的是a[i]不是a[num]
还有一个问题就是测试点1的n=1一直是格式错误,后来知道应该在最后加上printf("\n");测试点通过了。
调试过程,输入数组内数的个数和10个数的数据
求平均值
进入循环,找出比平均值大的数并输出,程序结束
7-4 数字加密
输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。例如输入1257,经过加9取余后得到新数字0146,再经过两次换位后得到4601。
输入格式:输入在一行中给出一个四位的整数x,即要求被加密的数。
输出格式:在一行中按照格式“The encrypted number is V”输出加密后得到的新数V。
输入样例:1257
输出样例:The encrypted number is 4601
一.实验代码
#include<stdio.h> int main() { int a[4]; int i=3,x,b; scanf("%d",&x); while(i!=-1){ a[i]=x%10; x=x/10; i--; } for(i=0;i<4;i++){ a[i]=a[i]+9; } for(i=0;i<4;i++){ a[i]=a[i]%10; } for(i=0;i<2;i++){ b=a[i]; a[i]=a[i+2]; a[i+2]=b; } printf("The encrypted number is "); for(i=0;i<4;i++){ printf("%d",a[i]); } return 0; }
二.解题思路
1.步骤
1).先定义整形变量i、x、b,再定义数组a[4],输入四位整数x。
2).用while循环语句将四位整数的每一位输入进数组a[4]中。
3).用for循环将数组的每一个数加9。
4).用for循环将数组的每一个数除以10取余。
5).调整下标使千位和十位上的数字互换,百位和个位上的数字互换。
运行的结果:
2.流程图
三.调试过程碰到的问题及解决办法
这道题我只是在如何换位上思考了一下其他的步骤都很明确
调试过程
输入x=1257
进入while循环并将每一个数输入进数组a[4]中
经过前两个for循环将数组的每一个数先加9再除以10取余
进入第三个for循环使千位和十位上的数字互换,百位和个位上的数字互换,最后输出a[i]的每一个数
个人总结:本周学习了数组,感觉自己接受的还行,另外还有两个排序方法,冒泡法和选择排序法,选择排序法运用的还算熟练,冒泡法还需要加强,要在多看看书上的内容。
作业点评:
1.https://www.cnblogs.com/chumengGTRlhz/p/10116012.html