一、第六次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[N]<=a[j])
{
swap=a[N]
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的学习?
先端正自己的学习态度并及时完成作业,在这之前努力赶上进度,补齐之前落下的作业!