码迷,mamicode.com
首页 > 编程语言 > 详细

C语言博客作业--一二维数组

时间:2017-12-03 21:44:36      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:语言   不同   重复   16进制   gets   是什么   内容   思考   simple   

一、PTA实验作业

题目1:7-2 求整数序列中出现次数最多的数

1. 本题PTA提交列表

技术分享图片

2. 设计思路

定义变量n,i,j用于循环,count1,count2用于数的重复个数,number表示做为重复次数最多的数
输入n的值并定义a[n]
for i=0 to i<n  输入a[i] end
for i=0 to i<n i=i+2
         for k=0 to k<n
         若a[i]=a[k]
           count1++
        若a[i+1]=a[k]
           count2++
end
          若count1>=count2且count1>=sum
           sum=count1;number=a[i]
         若count1<count2&&count2>=sum
              sum=count2;number=a[i+1]
           count1=count2=0
end
输出number和sum的值

3.代码截图

技术分享图片

4.本题调试过程碰到问题及PTA提交列表情况说明

技术分享图片
技术分享图片

最初的编辑运行结果认为可以,交上后部分正确

技术分享图片

调试发现值与理想的不符

技术分享图片
技术分享图片

位置不同结果有正确与错误的区别,思考后加上与sum的比较后答案正确

题目2:7-3 出生年

1. 本题PTA提交列表

技术分享图片
技术分享图片

2. 设计思路

定义变量year,number,i,k=0,j=0,用于循环x用于存放每次的年份simple用于个位flag=0,sum,count=0;
定义数组 a[4];
输入year,number的值
    i=year
  while当i<pow(10,number满足时
     x=i;
    for j=0 to j<number
       simple=x%10;
       x=x/10;
       a[j]=simple;
  end
    sum=j;
    for j=0 to j<=sum
        for k=j+1 to k<=sum
          若a[k]=a[j]
            break;
           若k=sum
           count++
    end
     end 
    若count=sum
      break;
    i++;count=0;
 while end
输出i-year,i的值

3.代码截图

技术分享图片

4.本题调试过程碰到问题及PTA提交列表情况说明

技术分享图片
技术分享图片
技术分享图片

一开始编辑时输出不对,调试发现count不一样,没想象中的结果,改正后pta部分正确

技术分享图片

自己在调试的时候感觉a[j]值奇怪,自己用printf让其输出

技术分享图片

调整循环后感觉输出正确,但pta显示不正确

技术分享图片

题目3:7-7 找鞍点

1. 本题PTA提交列表

技术分享图片

2. 设计思路

定义变量n变量i,j,k用于循环,flag,count用于判断
输入n的值,并定义数组a[n][n]
定义下标变量row=0,col=0
for i=0 to i<n
       for j=0 to j<n 
            输入a[i][j]
end
end
for i=0 to i<n 
  row=i;flag=0
     for j=0 to j<n
        若a[i][j]>=a[row][col]
       col=j;
       若j=(n-1))
        for k=0 to k<n
            若a[row][col]>a[k][col]
               flag=1;break
             若k=n-1
              count++;
              输出row与col的值
         end
       
end
end
   若flag=1且count=0
   输出NONE

3.代码截图

技术分享图片

4.本题调试过程碰到问题及PTA提交列表情况说明

自己一开始输出不正确,读自己代码时发现输出应该是row与col而不是i与j,会变化

技术分享图片

改正后输出没有预想的效果,调试之后发现自己的条件设定问题,在count前加了k=n-1的条件

技术分享图片
技术分享图片

感觉输出可以,pta部分正确

技术分享图片
技术分享图片

思考后在一个判断条件上加了等号

二、截图本周题目集的PTA最后排名

技术分享图片

三、同学代码结对互评

1.互评同学名称

2.我的代码、互评同学代码截图

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题

四、本周学习总结

1.你学会了什么?

1.1 C中如何存储字符串?

可以定义字符数组实现,数组长度上限取80,以‘\n‘作为输入结束符

1.2 字符串的结束标志是什么,为什么要结束标志?

字符串的结束标志是‘\0’,‘\0’可以用来控制字符数组的输入与输出,控制循环

1.3 字符串输入有哪几种方法?

  • 使用gets()吸收整个字符串遇到回车结束
  • 使用scanf语句输入(注意没有&)遇到空格与回车结束
  • 使用循环如while(link[k]=getchar()!=‘\n‘)结尾记得加link[k]=‘\0‘

1.4 数字字符怎么转整数,写个伪代码?

  • 定义数字字符number
  • 输入数字字符number的值
  • number=number-‘0’
  • 输出number的值

1.5 16进制、二进制字符串如何转10进制?写伪代码?

  • 16进制

    定义数组si[60]存放字符串,number存放结果,i用于下标递增
         输入字符串
         如果是0~9的数字字符
         number=number *16+si[i]-‘\0’
         如果是A~F的大写字母
         number=number*16+si[i] - ‘A‘+10
         如果是a~f的小写字母
         number=number*16+si[i] - ‘a‘+10
  • 10进制

定义数组str[80]用于存放2进制数,定义number存放转换为十进制的结果,i用于递增
    输入字符串
number=number* 2+str[i]-‘0‘
输出number的值

2.本周的内容,你还不会什么?

技术分享图片

自己在回答这道题的时候基础不够扎实,i++,所以其判断是从第二个字符开始的,而且scanf输出时遇空格停止,所以空格后不用考虑

技术分享图片

自己在改错题查找方面还要加强

3.期中考试小结

3.1 你认为为什么没考好?

  • 对于课本的知识没有很好的消化吸收,课堂派的错题也没有好好理解,对待预习作业不够认真
  • 选择题得分不好,自己在一些赋值,运算符的计算顺序上不够扎实
  • 自己手写代码的失误较多,平常有Dev-c++的帮助找错,在自己手写时,就出现许多问题
  • 自己读代码的能力不够,一些题目的要求没有很好的理解
  • 在代码改错方面也应加强,平常要注意小细节

    3.2 罗列错题。

3.3 下半学期要怎么调整C的学习?

  • 自己要合理安排复习时间,多回归课本,不局限于打代码
  • 多理解,查看自己的错题,减少自身的失误
  • 多读读别人的代码,提高自己的读代码能力
  • 减少对Dev-c++的依赖,自己草稿找错验证

C语言博客作业--一二维数组

标签:语言   不同   重复   16进制   gets   是什么   内容   思考   simple   

原文地址:http://www.cnblogs.com/linxiaolu/p/7953688.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!