第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、学习进度:
(1)表格
(2)折线图