第四次作业
作业要求:https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2523
预习
1、数组视频全看了
2、学到了一维数组和二维数组,如何定义使用数组
3、数组的排序,不能熟练使用二维数组,只能初步定义
第一题:
7-2 输出所有大于平均值的数
作业要求:
本题要求编写程序,将输入的n个整数存入数组a中,然后计算这些数的平均值,再输出所有大于平均值的数。
代码:
1 #include<stdio.h> 2 int main(){ 3 int n,sum=0; 4 int i,judge=0; 5 double average=0; 6 scanf("%d",&n); 7 if(n>=1&&n<=10){ 8 int a[n]; 9 for(i=0;i<n;i++){ 10 scanf("%d",&a[i]); 11 sum=sum+a[i]; 12 } 13 average=1.0*sum/n; 14 printf("%.2f\n",average); 15 for(i=0;i<n;i++){ 16 if(a[i]>average){ 17 printf("%d ",a[i]); 18 } 19 } 20 for(i=0;i<n;i++){ 21 if(a[i]!=average) 22 judge=1; 23 } 24 if(judge==0){ 25 printf("\n"); 26 27 } 28 } 29 else{ 30 printf("Invalid."); 31 } 32 return 0; 33 }
思路:
第一:定义变量,输入n;
第二:根据题目要求,n若不在1≤n≤10内,则输出Invalid.;
第三:n若在1≤n≤10内,则执行循环输入a[i],sum+=a[i];
第四:求平均数average=1.0*sum/n;
第五:循环判断a[i]是否大于average,若大于则输出a[i];
第六:定义变量judge=1,假设数组中有数等于average;
第七:循环判断a[i]是否不等于average,若是则令judge=0;
第八:如果judge=0,则输出空行;
结束
流程图:
运行过程:
做得很轻松一遍过
调试一下
运行成功
第二题:
7-3 交换最小值和最大值
作业要求:
本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。注意:题目保证最大和最小值都是唯一的。
代码:
1 #include<stdio.h> 2 int main(){ 3 int n,i; 4 scanf("%d\n",&n); 5 int a[n]; 6 for(i=0;i<n;i++){ 7 scanf("%d",&a[i]); 8 } 9 if(n==2){ 10 if(a[0]>a[1]) 11 printf("%d %d ",a[1],a[0]); 12 else 13 printf("%d %d ",a[0],a[1]); 14 } 15 else{ 16 int max=a[0],index1=0; 17 int min=a[0],index2=0; 18 for(i=0;i<n;i++){ 19 if(max<a[i]){ 20 max=a[i]; 21 index1=i; 22 } 23 } 24 a[index1]=a[n-1]; 25 a[n-1]=max; 26 for(i=0;i<n;i++){ 27 if(min>a[i]){ 28 min=a[i]; 29 index2=i; 30 } 31 } 32 a[index2]=a[0]; 33 a[0]=min; 34 for(i=0;i<n;i++){ 35 printf("%d ",a[i]); 36 } 37 } 38 39 return 0; 40 }
思路:
第一:定义变量,输入n;
第二:循环输入a[i];
第三:如果n=2,进入条件语句(第四,第五);
第四:如果a[0]>a[1],输出a[1],a[0];
第五:如果a[0]<=a[1],输出a[0],a[1];
第六:如果n!=2,定义变量max=min=a[0],index1=index2=0;
第七:i从0到n-1如果max<a[i]则max=a[i],index1=i;
第八:a[index1]=a[n-1],a[n-1]=max;
第九:i从0到n-1如果min>a[i]则min=a[i],index2=i;
第十:a[index2]=a[n-1],a[n-1]=min;
最后:循环输出数组a
流程图:
运行过程:
写pta出现的问题
首次调试
在这是对的,注意下一波
a[3]出现失误
想了很久,发现是我的for循环值会覆盖,于是我把for循环拆成两个
调试一下新代码,perfect
总结:
学习了简单的数组运用,选择排序,冒泡排序,还看了指针的一些内容。
学习了数组以后,发现了解数组简单,但是在运用这方面就有点落后了,编程的代码不能如自己所想的那样,最后结果不如我所愿。我是这么去解决的,遇到了就先改,改到自己认为的极限以后,再去考虑补,打补丁来解决问题。在下一段的学习中,我会先进行简单的运算,类似于与计算机进行交流,思考好了如何编程,再去码,不想当然的去码代码。
点评:
https://www.cnblogs.com/wangxiangbo/p/10165493.html
https://www.cnblogs.com/chengxu230921/p/10170865.html
https://www.cnblogs.com/1a2B3c4D/p/10160490.html
累积代码行数和时间:
累积博客字数和时间: