第四次作业

独自空忆成欢 提交于 2020-11-30 01:26:09

作业要求:【https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2522

要求一:

1、你观看了几个视频?给出观看列表截图。

 

2、通过观看视频你学习到哪些知识点或者编程题目?

我对数组各加的了解,以及对函数应用了解的更多了,另外还了解了一些二维数组。

3、对于所学知识点还有哪些疑问?有哪些知识点没有学会?

 对于上周所学的知识点,函数的部分还有一点不熟练,我要再练习一下pta中的题,争取更加好的掌握这些知识点。

要求二:

第13次作业(数组)7-2 输出所有大于平均值的数 (15 分)

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

输入格式:输入在第1行中给出一个正整数n(1n10),第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

2.https://www.cnblogs.com/nansu/p/10134717.html

3.https://www.cnblogs.com/0224ming/p/10164004.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!