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的学习?

既然有笔试的话,应该去看一看书,将书上的内容看一看,不要考到书上的自己不会。书上的代码也要去看看,这样可以学到不少东西。端正学习态度,合理把握时间,认真对待考试。提高自己阅读代码的能力。练习自己写伪代码的能力,现在我连伪代码和写步骤都分不清。

posted @ 2017-12-03 18:40  烦呢,还要起名字  阅读(279)  评论(2编辑  收藏  举报