第二次作业
一。
作业连接 https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_4/homework/2502
二。
函数.统计个位数字:
int Count_Digit ( const int N, const int D )//接口定义
{
int n = abs(N), m = 0;//定义初始值
if(D == 0 && n == 0) return 1;//如果n=0,则输出1
while(n != 0)//当n不等于0
{
if(n % 10 == D) m++;//n对10取余为D,m=m+1
n /= 10;//n=n/10
}
return m;//输出m
}
过程描述:接口定义,定义初始值,判断n是否等于0,如果等于0则输出1,如果不等于0则进入while循环m++,n/=10.
错误提示:最后结束时要输出的是m而不是0.
改正方法:看前面定义要输出的是什么,把0改成m.
数组.1:7-4 求一组数中的最大值和次最大值
#include<stdio.h>
int main()
{
const int N=10;
int a[N];
int i;
int p,q;
int cmax,max;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
max=a[0];
cmax=a[0];
for(i=1;i<10;i++)
{
if(max<a[i])
{
max=a[i];
p=i;
}
}
for(i=1;i<10;i++)
{
if(cmax<a[i]&&i!=p)
{
cmax=a[i];
}
}
printf("max=%d,cmax=%d",max,cmax);
return 0;
}
2.解题思路
第一步:定义变量
第二步:输入数组中的数,使max=a[0];cmax=a[0];
第三步:建立for循环
第四步:在for循环中建立if判断语句条件为max<a[i]?
第五步:在for循环中建立if判断语句条件为cmax<a[i]&&i!=p?
第一次没有想到编号的用法导致一直没有满足题目要求,然后对比了其他的代码发现这点错了。
数组二:7-4 选择法排序
#include <stdio.h>
int main()
{
int i, j, min, temp, a[10];
for(i = 0; i < 10; i++)
{
scanf("%d",&a[i]);
}
for(i = 0; i < 3;i++)
{
min=i;
for(j = i+1; j <10; j++)
{
if(a[min] > a[j])
{
min=j;
}
}
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
for(i = 0; i < 10; i++)
printf("%5d",a[i]);
return 0;
}
解题思路
(1)文字描述
第一步:定义变量 i,n,读入n个数 temp 临时变量
第二步:定义1个数组a,它有10个整型元素
第三步:利用for(i = 0; i < 3;i++)进行趟数控制
第四步:利用for(j = i+1; j <10; j++)起始交换位利用temp=a[i];a[i]=a[min];a[min]=temp;进行交换;
第五步:输出最后结果;
遇到的问题是答案错误
再用Devc++进行调试时发现没有编译错误,但在输出结果上发现5和6的位置没有改变。
后来发现在for(i = 0; i <= 3;i++)这个位置上趟数的控制应该是<3,而不是<=3,
将问题纠正以后,5和6果然换了位置。
三。个人总结
这几周一直学的是数组,我觉得我自己没有学到如何灵活运用数组,出现了错误后不知道该如何改正,需要看别人的代码。
看了教材上的觉得作业不是很大,就是感觉自己总是想不出来该如何往下进行。
四。互评和学习进度
1)https://www.cnblogs.com/hanjiale/p/10151736.html#4144586 韩家勒
https://www.cnblogs.com/promise-781465023/p/10133773.html#4144593 周文豪
https://www.cnblogs.com/dnayun/p/10139147.html#4144595 赵豪
2)