您的位置:首页 > 编程语言 > C语言/C++

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

2017-12-14 19:52 232 查看

一、第六次PTA作业

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

1.本题PTA提交列表



2.设计思路

定义整型变量n,i,j
定义数组a[1000],b[1000]={0}
输入n
for(i=0;i<n;i++)
输入数组a[i]
end i
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(a[i]==a[j])
数组b[i]+1
end j
end i
定义出现次数t=0
for(i=0;i<n;i++)
if(b[i]>t)
{
t=b[i]
j=i
}
end i
输出a[j],t

3.代码截图



4.本题调试碰到问题及解决办法

一开始两个数相等时定义了一个变量来计算次数,到后面代码量越来越多把自己弄得也乱了,就试着用数组来储存数就解决了

题目2.7-3 出生年

1.本题PTA提交列表



2.设计思路

定义整型变量year,n,i,j,sum
定义整型Y为最后输出的年份
定义数组a[4]
输入year,n
for(i=year;i<=9999;i++)
定义数组b[10]={0,0,0,0,0,0,0,0,0,0}并每次循环初始化
初始化sum
将年份四个数分别储存进a[0],a[1],a[2],a[3]
for(j=0;j<4;j++)
b[a[j]]++
end j
for(j=0;j<10;j++)
if(b[j])
sum++
end j
if(sum==n)
{
Y=i
break
}
end i
输出经过的年份和最后年份

3.代码截图



4.本题调试碰到问题及解决办法

看题目的时候一直不知道怎么比较年份中是否有数字相同,用了数组a来存放4个数字后尝试对数组a中数字直接比较代码量太多越绕越乱,之后想到用1到10十个数代表10个格子定义了数组b,然后直接数格子就变得非常简单了

中间忘记要让年份递增导致了错误



题目3.7-4 简化的插入排序

1.本题PTA提交列表



2.设计思路

定义整型变量N,i,j,k
定义swap来储存插入数
定义数组a[N+1]
输入N
for(i=0;i<N+1;i++)
输入数组a[i]
end i
for(j=0;j<N;j++)
if(a
<=a[j])
{
swap=a

for(k=N;k>j;k--)
a[k]=a[k-1]数组往后移动一格
end k
插入数
break
}
end j
for(i=0;i<N+1;i++)
输出数组a[i]
end i

3.代码截图



4.本题调试碰到问题及解决办法

对scanf中空格与回车有点疑问查了资料



疑问解决后发现可以直接在数组中输入插入的数,这样就不用再多设置一个数组了

但是最后不管怎么改都有两个测试点段错误



二、同学代码结对互评

1.互评同学名称 :农献清

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





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

不同:她的方法就是我一开始的思路,直接遍历数组计算出每个数出现的次数,可是我这样算的时候越绕越晕,思路很乱,我是改用另一个数组来计算次数,这样思路就清晰很多也快很多

各自优势:说不出哪种比较好,这类题目我会先想出她的方法的思路,发现是死路后才会想别的方法,可能这也是我代码量不够的缘故,不管什么题目都只从头开始做,没有那种得心应手的感觉

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



四、本周学习总结

1.你学会了什么

1.1C中如何存储字符串?

1,使用字符数组存

2,使用字符指针存储字符串

3,,可以把字符串a赋值给字符串b,注意字符串都是以\0结尾的

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

字符串都是以\0结尾的

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

scanf("%s",i)

gets(i)

fgets(i,,)

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

定义整数变量integer,i,字符数组ch[10]
scanf("%s", ch)输入数字字符
integer=0
for(i=0; ch[i]; i++)
if(ch[i]>=0&&ch[i]<=9)
integer=integer*10+(a[i]-'0')
end i
输出integer

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

十六进制:

char a[10]
int i,number=0
gets(a)输入字符串
for i=0 to a[i]!='0'遍历数组
if a[i]为数字字符
number=number*16+a[i]-'0'
else if a[i]为a到f的十六进制数
number=number*16+a[i]-'a'+10
else if a[i]为A到F的十六进制数
number=number*16+a[i]-'A'+10

二进制:

char a[10]
int i,number=0
gets(a)输入字符串
for i=0 to a[i]!='0'遍历数组
number=number*2+a[i]-'0'

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

代码量缺乏,对学习与作业热情下降,正努力改正

3.期中考试小结

3.1你认为为什么没考好?

对C语言局限在电脑上的敲代码而缺少纸上的做题训练,对一些基础知识的掌握不够严谨

3.2罗列错题

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

先端正自己的学习态度并及时完成作业,在这之前努力赶上进度,补齐之前落下的作业!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: