华中科技大学计算机第四次作业,第四次作业

作业要求:https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2523

预习

1、数组视频全看了

2、学到了一维数组和二维数组,如何定义使用数组

3、数组的排序,不能熟练使用二维数组,只能初步定义

94ce5592cc4191f63b21f4da00bf81bb.png

第一题:

7-2 输出所有大于平均值的数

作业要求:

本题要求编写程序,将输入的n个整数存入数组a中,然后计算这些数的平均值,再输出所有大于平均值的数。

代码:

1 #include2 intmain(){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 inta[n];9 for(i=0;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){

16 if(a[i]>average){17 printf("%d",a[i]);18 }19 }20 for(i=0;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,则输出空行;

结束

流程图:

82728116657d6c41443e91c6a9af2eb6.png

运行过程:

1c84b51e669decff6ece428bcff8921b.png

做得很轻松一遍过

9565d87534b961c910c25f03319a3458.png

调试一下7366e0a9f0fec089be8e99dd1f24612c.png

运行成功

edb2a32c755d41daf5a05f062988645a.png

第二题:

7-3 交换最小值和最大值

作业要求:

本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。注意:题目保证最大和最小值都是唯一的。

代码:

1 #include2 intmain(){3 intn,i;4 scanf("%d\n",&n);5 inta[n];6 for(i=0;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){

19 if(max

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){

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[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

流程图:

59261a822947b22c62068ad4f8a5a9bb.png

运行过程:

写pta出现的问题

00850d8ab7d0883eab85ece054ac4110.png

首次调试

32a79392b78ee3910a5930005857dedb.png

在这是对的,注意下一波

46250c02e33039eb30a498342240b747.png

a[3]出现失误

04faa603fb21c18e19cffd1db4d1c579.png

想了很久,发现是我的for循环值会覆盖,于是我把for循环拆成两个

08c3b2a57b5e78526f1309a17a132044.png

调试一下新代码,perfect

cd6ef9c2d988871e40fe37564546eff0.png

总结:

学习了简单的数组运用,选择排序,冒泡排序,还看了指针的一些内容。

学习了数组以后,发现了解数组简单,但是在运用这方面就有点落后了,编程的代码不能如自己所想的那样,最后结果不如我所愿。我是这么去解决的,遇到了就先改,改到自己认为的极限以后,再去考虑补,打补丁来解决问题。在下一段的学习中,我会先进行简单的运算,类似于与计算机进行交流,思考好了如何编程,再去码,不想当然的去码代码。

点评:

https://www.cnblogs.com/wangxiangbo/p/10165493.html

https://www.cnblogs.com/chengxu230921/p/10170865.html

https://www.cnblogs.com/1a2B3c4D/p/10160490.html

累积代码行数和时间:

a6dabb28d50626b14babf68e31877cae.png

累积博客字数和时间:

9e73c1513f3c6e98023149409420ed28.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值