一。
作業連接 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)