第二次作业
作业要求链接https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_3/homework/2503
PTA作业:
函数6-1
统计个位数字
int Count_Digit ( const int N, const int D ){ int i,count = 0; int s = N; if(N<0){ s = -N; } if(s == 0){ if(D==0){ count = 1; }else { count = 0; } } while(s%10>0||s/10!=0){ if(s%10 == D){ count ++; } s = s /10; } return count; }
解题思路
(1)文字描述
输入需要的数;
判断所需数出现的次数;
返回主函数;
(2)流程图
(3)本题调试过程碰到问题及解决办法
问题:格式与题目不符
数组1
#include <stdio.h> int main() { int N,i,a[10],c,d,min,max,j; scanf("%d",&N); for(i=0;i<N;i++) { scanf("%d",&a[i]); } min=max=a[0]; for(i=0;i<N;i++) { if(a[i]<=min) { min=a[i]; j=i; } } c=a[0]; a[0]=min; a[j]=c; for(i=0;i<N;i++) { if(a[i]>=max) { max=a[i]; j=i; } } d=max; a[j]=a[N-1]; a[N-1]=d; for(i=0;i<N;i++) printf("%d ",a[i]); }
(1)文字描述
输入N,i,c,d,min,max,j;
让min=max=a[0];
判断min,max,使min,max分别为数组中最小和最大的数;
让min,max分别调至第一个数和第二个数;
输出数组;
(2)流程图
(3)本题调试过程碰到问题及解决办法
没有中间量使min和max变成最小和最大值;
数组2
选择法排序
#include<stdio.h> int main(void) { int a[10]; int x,i,j,t; for(i=0;i<10;i++) { scanf("%d",&a[i]); } for(j=0;j<3;j++) { x=j; for(i=j+1;i<10;i++) { if(a[i]<a[x]) { x=i; } } t=a[x];a[x]=a[j];a[j]=t; } for(i=0;i<10;i++) printf(" %d",a[i]); return 0; }
(1)文字描述
输入数组a【n】
让数组a【n】在for语句中得到最小的三个数
根据题目要求输出新得到的数组a【n】
(2)流程图
(3)本题调试过程碰到问题及解决办法
i=1时当得到最小值后不会再往后排
要求三
个人总结
(1)总结这几周你学习哪些内容(不限于课上)?你有哪些收获?
这几周学习了函数和数组,数组下标是从0开始,二维数组a【i】【j】,学会二维数组的行和列的交换;
(2)总结这几周所学内容中你觉得哪些地方是难点?对此你做了哪些措施去克服这些困难?
将数组排序时交换时是难点,询问助教,同学;
要求四
互评和学习进度
1点评孙凯的博客
2点评佟雨轩的博客