第二次作业
作业要求【https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_3/homework/2503】
函数-1<统计个位数字>
1,实验代码
1 int Count_Digit ( const int N, const int D ) 2 { 3 int n,a,cnt=0; 4 if(N!=0) 5 { 6 7 a=N; 8 while(a!=0) 9 { 10 n=a%10; 11 if(n<0) 12 { 13 n=-n; 14 } 15 if(n==D) 16 { 17 cnt++; 18 } 19 a=a/10; 20 } 21 } 22 else 23 { 24 if(D==0) 25 { 26 cnt=1; 27 } 28 } 29 return cnt; 30 }
2,实验思路
第一步:根据不同情况,判断D在N中出现的次数
第二步:返回主函数
3,流程图
4,试题编译过程中遇到的问题及解决方法
设置断点
遇到的问题:
忽略N=0的情况;忽略N<0的情况。
解决办法:
加入语句,对情况N=0时进行特殊处理。
数组一-1<交换最小值最大值>
1,实验代码
1 #include<stdio.h> 2 int main() 3 { 4 int N; 5 scanf("%d",&N); 6 int a[N]; 7 int i; 8 if(N==1) 9 { 10 scanf("%d",&a[1]); 11 printf("%d ",a[1]); 12 }else 13 { 14 for(i=1;i<=N;i++) 15 { 16 scanf("%d",&a[i]); 17 } 18 int x,y; 19 x=a[1]; 20 for(i=2;i<=N;i++) 21 { 22 if(x>a[i]) 23 { 24 x=a[i]; 25 y=i; 26 } 27 } 28 a[y]=a[1]; 29 a[1]=x; 30 x=a[2]; 31 for(i=3;i<=N;i++) 32 { 33 if(x<a[i]) 34 { 35 x=a[i]; 36 y=i; 37 } 38 } 39 a[y]=a[N]; 40 a[N]=x; 41 for(i=1;i<=N;i++) 42 { 43 printf("%d ",a[i]); 44 } 45 } 46 return 0; 47 }
2,解题思路
第一步:输入N。
第二步:如果N为1,输入一个整数,并将它输出,程序结束。
如果N不为1;输入N个整数。
第三步:找到数组中的最大数,使之与最后一项交换数值;找到数组中的最小数,使之与第一项交换数值。
第四步:输出结果。
3,程序流程图
4,遇到的问题及解决办法
设置断点:
遇到的问题:
忽略了N等于一的情况,测试点“最小N”不能通过。
解决办法:
加上了N等于一时的处理方法。
if(N==1) { scanf("%d",&a[1]); printf("%d ",a[1]); }
数组二-1<简化的插入排序>
1,实验函数:
1 #include<stdio.h> 2 int main() 3 { 4 int N; 5 scanf("%d",&N); 6 int i,a[N+1]; 7 for(i=0;i<N+1;i++) 8 { 9 a[i]=0; 10 } 11 for(i=0;i<N;i++) 12 { 13 scanf("%d",&a[i]); 14 } 15 int x; 16 int f,j; 17 scanf("%d",&x); 18 if(x>a[N-1]) 19 { 20 a[N]=x; 21 }else 22 { 23 24 for(i=0;i<N+1;i++) 25 { 26 if(x<a[i]) 27 { 28 for(j=N;j>i;j--) 29 { 30 a[j]=a[j-1]; 31 } 32 a[i]=x; 33 break; 34 } 35
36 } 37 } 38 39 for(i=0;i<N+1;i++) 40 { 41 printf("%d ",a[i]); 42 } 43 44 }
2,解题思路
第一步:输入N,继而输入N个整数
第二步:输入x
第三步:将x插入数组中
第三步:输出插入x后的数组
3,流程图
4,遇到的问题及解决办法
插入断点
遇到的问题:
“break”放置错误
解决方法:
将“break”放入if语句中,实现判断判断语句中内容与“break”同步实现。
个人总结:
(1),最近这段时间学习了数组的有关知识,对两种排序方法冒泡排序法、选择排序法有了一定的了解掌握,对二维数组也有了一些了解
收获:两种排序方法,数组知识及其他一些C语言知识。
(2),困难:对两种排序方法思路不够清晰,时长把两种排序方法思路记混
通过上网查资料,向同学请教和看老师发的代码解决了问题。
互评和学习进度:
(1)
(2)