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

一、计算机18秋-函数    

6-3 数字金字塔 (15 分)

本题要求实现函数输出n行数字金字塔。

函数接口定义:

void pyramid( int n );

其中n是用户传入的参数,为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n行数字金字塔。注

意每个数字后面跟一个空格。

裁判测试程序样例:

#include <stdio.h>

void pyramid( int n );

int main()
{    
    int n;

    scanf("%d", &n);
    pyramid(n);

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

5

输出样例:

    1 
   2 2 
  3 3 3 
 4 4 4 4 
5 5 5 5 5 

1、实验代码

 1 void pyramid( int n )
 2 {
 3   int i,j;
 4   for(i=1;i<=n;i++){
 5     for(j=1;j<=n-i;j++){
 6       printf(" ");
 7     }
 8     for(j=1;j<=i;j++){
 9       printf("%d ",i);
10     }
11     putchar('\n');
12   }
13 }

2、解题思路

(1)文字描述

第一步:设置所需变量:i,j,n;

第二步:若i=1时,在数字之前需要n-1个空格;若i=2时,在数字之前需要n-2个空格;以此类推,可知:若数字为i时,需要n-i个空格;

第三步:当i=1时,需要输出一个1;当i=2时,需要输出两个2;以此类推,可知:若数字为i时,需要输出i个i;

第四步:每一行之后需要输入一个“\n”用于分行。

(2)流程图


 

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

(1)问题

在输出时忘记分行,如图:

(2)解决办法

在循环过程最后添加“\n”用于分行。

 

二、计算机18秋-数组1

7-2 输出数组元素 (15 分)

本题要求编写程序,对顺序读入的n个整数,顺次计算后项减前项之差,并按每行三个元素的格式输出结果。

输入格式:

输入的第一行给出正整数n(1<n10)。随后一行给出n个整数,其间以空格分隔。

输出格式:

顺次计算后项减前项之差,并按每行三个元素的格式输出结果。数字间空一格,行末不得有多余空格。

输入样例:

10
5 1 7 14 6 36 4 28 50 100

输出样例:

-4 6 7
-8 30 -32
24 22 50

1、实验代码

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a[10];
 5     int i,j,n,count=0;
 6     scanf("%d", &n);
 7     for(i=0;i<n;i++)
 8     {
 9         scanf("%d",&a[i]);
10     }
11     for(j=0;j<n-1;j++)
12     {
13         a[j]=a[count+1]-a[count];
14         count++;
15     }
16     count=0;
17     for(j=0;j<n-1;j++)
18     {
19         if(j==0)
20         {
21             printf("%d",a[0]);
22         }
23         else if(count==3)
24         {
25             printf("\n");
26             printf("%d",a[j]);
27             count=0;
28         }
29         else{
30             printf(" %d",a[j]);    
31         }
32         count++;
33     }
34 }

2、解题思路

(1)文字描述

第一步:设置变量:i,j,n,count以及一串数组a[10];

第二步:输入十个量,放入数组a[i]中,并且重新定义一组数组a[j],a[j]为a[i]-a[i-1]所得,共九个数;

第三步:在循环变量中设置count=0,当count=3时,先输出“\n”分行,然后输出数值,再将count赋值为0;

第四步:若j=0,则直接输出数值,其余的先输出一个空格,在输出数值。

(2)流程图 


 

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

(1)问题

a、PTA显示格式错误,因输出时格式出错,如图:

b、当n为最小时以及次小时,答案出现错误,如图:

(2)解决办法

a、将(i+1)%3=0时,输出数值改为输出“%d\n”用于分行;

b、另设量count,用于计算输出次数,且另设j,用于输出数组。

 

 三、计算机18秋-数组2

 

7-2 查找整数 (10 分)

 

本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”。

输入格式:

输入在第一行中给出两个正整数N(≤20)和X,第二行给出N个整数。数字均不超过长整型,其间以空格分隔。

输出格式:

在一行中输出X的位置,或者“Not Found”。

输入样例1:

5 7
3 5 7 1 9

输出样例1:

2

输入样例2:

5 7
3 5 8 1 9

输出样例2:

Not Found

 

 1、实验代码

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int n, m;                       
 6     scanf("%d %d", &n, &m);
 7     
 8     int a[n], i, k = 1;         
 9     for(i = 0; i < n; i++) {
10         scanf("%d", &a[i]);
11         if(a[i] == m) {
12             printf("%d", i);      
13             k = 0;
14         }
15     }
16     if(k == 1) {                 
17         printf("Not Found");
18     }
19     
20     return 0;
21 }

2、解题思路

(1)文字描述

第一步:设置变量:i,k,n,m,设置一串数组:a[n];

第二步:输入所需要的数置于数组a[n]中,以及想要查询的数值;

第三步:运用循环语句,从a[n]中寻找与m相等的数,并设一变量k;若能找到与m想等的数,则k=0,反之,k=1;

第四步:若k=0,输出与m数相等的a[n]中的n,若k=1,输出Not Found。

(2)流程图

 

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

(1)问题

a、运行出错,仅小部分正确,如图:

b、出现无论能否查到,皆输出Not  Found,且出现循环多次,如图:

(2)解决办法

a、if语句出错,条件中改为a[i]==m;

b、将Not Found 放入for语句之外,并另设变量k,用来辨别是否查询得到m,如图:

 

 四、个人总结

(1)这几周主要学习了有关函数、数组的相关内容,了解了有关局部变量和全局变量的相关概念及含义。也学习了有关html的相关内容,使我了解到了计算机编程的用途。

(2)通过这几周的学习内容来看,有关数组的知识比较困难,涉及到循环的算法思路不太明白,通过看书上的例题以及网课的讲解,稍微明白了一点。

五、互评和学习进度

1、互评

(1)王天奇:https://www.cnblogs.com/z-x-c2429657075-/p/10111309.html

(2)王恩临:https://www.cnblogs.com/wangtiezhu666/p/10127789.html

(3)杨仕奇:https://www.cnblogs.com/ysq1n/p/10139936.html

2、学习进度

(1)表格


(2)折线图

 

 posted on 2018-12-21 16:34  VanR  阅读(931)  评论(6编辑  收藏  举报