第2次作业

 

 

一、作业要求链接

https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_4/homework/2502

二:

函数作业中题目:6-3数字金字塔

1、实验代码:

#include <stdio.h>

void pyramid( int n );

int main()
{    
    int n;

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

    return 0;
}

void pyramid( int n )
{
int i,j,k,m;
 
m = n;
for(i=1;i<=n;i++,m--)
{
j=m;
for(j=m-1;j>0;j--)
printf(" ");
for(k=i;k>0;k--)
printf("%d ", i);
printf("\n");
}
 
}

2、解题思路

(1)文字描述

第一步:定义i,j,k,m。

第二步:建立一个for循环,确保输出的数字和输出的格式。

第三步:输出结果。

(2)流程图

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

(1)错误提示截图

(2)设置断点单步调试

(3)问题及解决办法

是因为粗心大意没能发现多加了一个分号,设置断点单步调试之后发现了问题,去掉之后便可以成功运行了。

数组1中题目:7-1交换最小值和最大值

1:实验代码:

#include<stdio.h>
int main(){
int b,c,i,n,x,m;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
    scanf("%d",&a[i]);
b=a[0];
c=a[0];
for(i=1;i<n;i++){
    if(a[i]<c){
        c=a[i];
        x=i;
    }
}
if(x!=0){
    m=a[0];
    a[0]=a[x];
    a[x]=m;}
for(i=1;i<n;i++){
    if(a[i]>b){
        b=a[i];
        x=i;
    }
}
if(x!=n-1){
    m=a[n-1];
    a[n-1]=a[x];
    a[x]=m;
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}

2:解题思路:

(1)文字描述

第一步:定义变量及数组a[n]
第二步:利用for循环输入所有的数组值,假设第一个数组值为最小的,利用for循环将所有的数组与第一个数比较,找到数组中的最小值,进行交换,重复操作
第三步:若最大值以及最小值不是最大或最小,那再次进行循环
第四步:利用for循环输出所有的数组。

(2)流程图

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

(1)错误提示截图

 

 

 (2)设置断点单步调试

 

 

(3)问题及解决办法

没有编译错误,提示部分正确,用DevC++输入不同的数组运行结果有对有错。后来经人指点发现是x后面没加!导致的错误,加上之后运行结果就对了。

数组2作业中题目:7-3求整数序列中出现次数最多的数

1:实验代码

#include <stdio.h>
#define MAX 1000
int main(){
    int arr[MAX], count[MAX];
    int N, i, j;
    int maxCount, maxPos;
    scanf("%d", &N);
    for(i=0; i<N; i++){ 
        scanf("%d", &arr[i]);
    }
    for(i=0; i<N; i++){ 
        count[i] = 0;
    }
    for(i=0; i<N; i++){
        for(j=0; j<=i; j++){
            if(arr[j]==arr[i]){
                count[i]++;
            }
        }
    }
    for(i=0; i<N; i++){ 
        if(i==0){
            maxCount = count[0];
            maxPos = 0;
        }
        else{
            if(count[i]>maxCount){
                maxCount = count[i];
                maxPos = i;
            }
        }

2:解题思路:

(1)文字描述

第一步:定义出所需的变量及数组
第二步:利用for循环输入所有的数组值
第三步:再利用for的双层循环找出相等的数组,同时实现个数的累加
第四步:如果满足条件;就同时进行下标的转换
第五步:利用for循环排除所有的这种情况
第六步:最后输出整数序列中出现次数最多的数

(2)流程图

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

(1)错误提示截图

(2)设置断点单步调试

(3)问题及解决办法

因为粗心将MAX写成了max,导致了一堆编译错误。因为很显眼,所以马上就找到改正过来了。

三:个人总结

1、收获:这几周学习了有关数组与函数的一些基本知识和解题的必要步骤,并且巩固了循环方面的知识,代码量有显著的提升,解题的速度也更加快了。

2、难点及解决办法:如何把一个数值插入数组是我经常遇到的问题,而且经常会马虎导致编译错误甚至结果错误。我觉得还是要多加练习才会更熟练,马虎的问题还要多多注意。

四:互评和学习进度

1、互评:

初可欣同学的第2次作业

袁于纯同学的第2次作业

张学健同学的第2次作业

 

2、学习进度:

(1)表格

(2)折线图

 

posted @ 2018-12-21 18:52  闫慧欣闫慧欣xin123  阅读(229)  评论(4编辑  收藏  举报