C语言博客作业--一二维数组
一、PTA实验作业。
题目1:7-2 求整数序列中出现次数最多的数
1.本题PTA实验结果
2.设计思路
-
(1) 定义n,N,a[1000],x,j,i,max;
-
(2)输入n
-
(3)定义b[n]
-
(4)给a[1000],b[n]赋值
-
(5)for(i=0;i<n;i++){ 执行嵌套for(j=0;j<n;j++) 如果a[i]=a[j],b[i]++;
-
(6)i=0,max赋值b[i]
-
(7)for(i=1;i<n;i++){判断b[i]是否大于max,若>max,将max赋值为b[i],x=i
-
(8)输出a[x],max。
3.代码截图
4.本题调试过程碰到问题及解决办法
-
碰到的问题:
- ![](https://images2018.cnblogs.com/blog/1232112/201712/1232112-20171203175515241-1681650549.png)![](https://images2018.cnblogs.com/blog/1232112/201712/1232112-20171203175529929-1253813310.png)每次循环a[i]均为10,没有正确赋值
-
解决办法:将a[i]正确赋值。
题目2:7-3 出生年
1.本题PTA实验结果
2.设计思路
-
(1)char a[5];int i=0;通过循环分别输入a[i]的值
-
(2)int n=1,kind;scanf(kind值);
-
(3)int age=0,sum=0;for(i=0;a[i]!=' ';i++){将字符转化为数字,变为'sum=sum*10+a[i]-'0''
-
(4)int ge,shi,bai,qian;
-
(5)while(n!=kind){执行循环n=0;
-
(6)分别计算各个位数
-
(7)如果均为同一个数,n=1;如果有2种,n=2;如果三种,n=3,如果为4种,n=4
-
(8)age++;sum++(如果不符合kind值,则算下一年);}直至不符合条件;循环结束。
-
(9)n=3;sum--;while(n!=-1){
-
(10) a[n]=sum%10+'0';sum=sum/10;n--;将数字变为字符
-
(11)输出("%d %c%c%c%c",age-1,a[0],a[1],a[2],a[3]);
3.代码截图
4.本题调试过程碰到问题及解决办法
-
碰到的问题:
- ![](https://images2018.cnblogs.com/blog/1232112/201712/1232112-20171203172402413-1336587283.png)![](https://images2018.cnblogs.com/blog/1232112/201712/1232112-20171203172415491-1452583022.png)应该不符合时输出,而本应该等于3的却变成了0; - ![](https://images2018.cnblogs.com/blog/1232112/201712/1232112-20171203173041991-1834298391.png)应该只有2种数字,却输出了3种数字。应该是n=3时的条件不足。
-
解决办法:将n=0加在while下面一行。加上条件。
题目3:7-4 简化的插入排序
1.本题PTA实验结果
2.设计思路
-
(1)定义N,i=0;输入N;
-
(2)定义a[80]=
-
(3)for(i=0;i<N;i++){输入a[i]值
-
(4)定义x,j。输入x值
-
(5)for(i=0;i<N;i++){
-
(6)如果a[0]>=x){执行循环for(j=N;j>0;j--){a[j]=a[j-1];否则a[0]=x;退出循环;
-
(7)如果a[N-1]<=x){a[N]=x;退出循环;
-
(8)如果a[i]<=x&&a[i+1]>=x执行循环for(j=N;j>i;j--){a[j]=a[j-1];否则a[i+1]=x退出循环;
-
(9)如果(N==0) a[N]=x;
-
(10)分别输出a[]的值。
3.代码截图
4.本题调试过程碰到问题及解决办法
-
碰到的问题:
- 当N=0,x=1是没有输出a【N】=1.而输出了a[N]=0.
-
解决办法:加一个N=0的判断。
二、截图本周题目集的PTA提交列表及最后排名。
1.PTA提交列表
2.PTA排名
三、同学代码结对互评(1分)
1.互评同学名称
欧阳震霆。
2.我的代码、互评同学代码截图(此处截图核心代码就好,不一定截图全部代码,图上指明是谁的代码。)
-
我的:
-
他的:
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
-
他写的比我简便,他通过判断每一个数字是否符合条件而判断年份是否符合条件,而我是用把每个条件罗列才将这些答案输出。
-
相较来说他的代码比较节约时间,这是我应该学习的地方。
四、本周学习总结
1.你学会了什么?
1.1 C中如何存储字符串?
用字符数组或用字符指针存储
1.2 字符串的结束标志是什么,为什么要结束标志?
‘\0’;让其在指定位置自动退出数组,而不用继续执行。
1.3 字符串输入有哪几种方法?
scanf(“%s”,&op)和gets(op)
1.4 数字字符怎么转整数,写个伪代码?
定义一个字符op,计算n=op-'0';
1.5 16进制、二进制字符串如何转10进制?写伪代码.
-
16进制: 定义数组a[100]储存十六进制字符串的各个字符,aum,若字符为A——Z,则‘sum=sum16+a[i]-'A'+10’.若字符为a——z,‘sum=sum16+a[i]-'a'+10’,若字符为0——9,则‘sum=sum*16+a[i]-'0'’
-
2进制:定义数组a[100]储存十六进制字符串的各个字符,aum,若字符为A——Z,则‘sum=sum2+a[i]-'A'’.若字符为a——z,‘sum=sum2+a[i]-'a'’,若字符为0——9,则‘sum=sum*2+a[i]-'0'’
2.本周的内容,你还不会什么?
什么时候用数字数组,什么时候用字符数组,特别是当一个数组有数字时,总觉得用字符数组可以,但最后却输不出正确答案;还有对二维数组的运用;什么时候加换行符,有时候在输入数组的前面或后面加了换行符,数组就发生了变化。
3.期中考试小结
3.1 你认为为什么没考好?
书上内容没有认真研读,弄懂。考试态度不端正,自己不想写就不写了。。代码阅读能力低下,时间分配不均匀。
3.2 罗列错题。
-
1.。do while的条件不同,一直以为满足括号条件就退出循环。
-
2.不能用scanf(),应该用(ch = getchar())
-
3.自定义函数那一块没看出来。
-
4n<1的条件没有说明,而且程序写的太乱,看不清。
3.3 下半学期要怎么调整C的学习?
既然有笔试的话,应该去看一看书,将书上的内容看一看,不要考到书上的自己不会。书上的代码也要去看看,这样可以学到不少东西。端正学习态度,合理把握时间,认真对待考试。提高自己阅读代码的能力。练习自己写伪代码的能力,现在我连伪代码和写步骤都分不清。