第二次作业

作业要求:https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_4/homework/2502

一、函数作业 数字金字塔

1.实验代码

 1 void pyramid( int n )
 2 {
 3     int i,j,k,m;
 4  
 5     m = n;
 6     for(i=1;i<=n;i++,m--)
 7     {
 8         j=m;
 9         for(j=m-1;j>0;j--)
10             printf(" ");
11         for(k=i;k>0;k--)
12             printf("%d ", i);
13         printf("\n");
14     }
15  
16 }
数字金字塔

2.解题思路

  

(1)主要描述题目算法

  1.数字加前面的空格数为行数

  2.数字后面都有空格

  第一步:输入行数

  第二步:输出对应行数的空格和带空格的数字

(2)流程图

3.本题调试过程碰到问题及解决办法

 

问题:前面多了一个空格

解决办法:

 将j=m改为j=m-1

 

 二、数组1作业 7-1 交换最小值和最大值

 

1.实验代码

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a[10];
 5     int i,n,c,b,e;
 6     scanf("%d\n",&n);
 7     
 8     for(i=0;i<n;i++)
 9     {
10         scanf("%d",&a[i]);
11      } 
12      
13      int min=a[n-1];
14      int max=0;
15      
16      int imin=n-1;
17      int imax=0;
18      for(i=0;i<n;i++)
19      {
20          if(max<a[i])
21          {
22              imax=i;
23          //    printf("%d\n",imax);
24              max=a[imax];
25          //    printf("%d\n",a[imax]);
26          }
27          if(min>a[i])
28          {
29              imin=i;
30              min=a[imin];
31          }
32      }
33     if(n==2)
34     {
35         if(a[0]>a[1])
36         {
37             printf("%d %d ",a[1],a[0]);
38         }        
39         else
40         {
41               printf("%d %d ",a[0],a[1]);
42         }
43     }
44     else if(imin==n-1)
45     {
46          
47      b=a[0];a[0]=min;a[imin]=b;    
48      c=a[n-1];a[n-1]=max;a[imax]=c;
49       for(i=0;i<n;i++)
50      {
51          printf("%d ",a[i]);
52      }
53  
54     }
55     
56     
57     
58     
59       else
60       {
61        c=a[n-1];a[n-1]=max;a[imax]=c;
62   
63      b=a[0];a[0]=min;a[imin]=b;
64       for(i=0;i<n;i++)
65      {
66          printf("%d ",a[i]);
67      }
68       }  
69       return 0;
70 }
交换最小值和最大值

2.解题思路

(1)主要描述题目算法

第一步:输入行数和一行数

第二步:选出最大值和最小值

第三步:将最小值和第一个调换,将最大值与最后一个调换

第四步:输出

(2)流程图

 

 

 

3.本题调试过程碰到问题及解决办法

 

 原先以为调换出错,发现写的程序只是其中一种情况。考虑了最小值在最前和不是的情况。发现将最大值与最小值调换的两个语句的顺序对调试有一定的促进作用,将两者互补之后发现仍缺少考虑输入为两个数的情况。

尝试将这种情况放入if语句的中间结果发现调换情况仍不对,使用数据测试后认为应该将两个数的情况优先考虑,再次调试即为正确答案。

 

三、数组2作业   7-2 查找整数 

1.实验代码

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int N,M;
 6     scanf("%d %d",&N,&M);
 7     int as[N],b;
 8     int a;
 9     int x=0; 
10     for(a=0;a<N;a++)
11     {
12         scanf("%d",&as[a]);
13         
14     }
15     for(b=0;b<N;b++)
16     {
17         if(M==as[b])
18         {
19             x=1;
20             printf("%d",b);
21             break;
22         }
23     }
24     if(x==0)
25     {
26     printf("Not Found");
27     }
28     return 0;
29 } 
查找整数

2.解题思路

(1)主要描述题目算法

第一步:输入数据

第二步:在数据中依次查找X

第三步:输出其在数组内的位置或者not found

 

(2)流程图

 

3.本题调试过程碰到问题及解决办法

 

 

 

 Not Found的格式错误,写成了NotFound

解决办法:添加空格

 

 

要求三(共10经验值)

个人总结

(1)总结这几周你学习哪些内容(不限于课上)?你有哪些收获?

数组的应用,自定义函数,选择法排序与冒泡排序的区别,vector数组

(2)总结这几周所学内容中你觉得哪些地方是难点?对此你做了哪些措施去克服这些困难?(5经验值)

比较的顺序和各种情况的先后大小问题 

措施:利用测试点进行调试

 

 

 

要求四(共10经验值)

互评和学习进度

1、点评3个同学的本周作业(在作业中给出被点评同学博客的链接),并邀请3名同学点评你的作业,无点评作业(你的作业未被3人点评)/或者没有回复同学或老师的点评都倒扣该题分数。(5经验值)。

点评:1)闫慧欣同学

   2)李靖同学

    3)初可欣同学

邀请:李锐 初可欣 闫慧欣

2、请用表格和折线图呈现你这几周(11/10 12:00~12/10 12:00)的累积代码行数和时间、累积博客字数和时间(5经验值),表格和折线图请参考https://www.cnblogs.com/ranh941/p/7594640.html

请注意,折线图体现的是累积代码行数和累积博客字数,例如:1周代码行数为100、博客字数1000,第2周代码行数为200、博客字数为500,则对应的折线图中应该有两个点,折线图横坐标为时间(第1周、第2周),纵坐标为累积代码行数和博客字数(100300或者10001500)。允许两个折线图,当然双y轴折线图更好。

 

周数 此周代码行数/行 码代码所用时长/h 所写博客字数/字 写博客所用时长/h 所涉及的知识点
第13周 2000 6 0 函数和内存
第14周 2500 8 0 数组和函数
第15周 2100 6 500 2 数组
第16周 3100 11 1000 3 数组和内存

 

 

 

 

posted on 2018-12-21 19:57  铭鸠  阅读(203)  评论(15编辑  收藏  举报