C语言博客作业--一二维数组
一、PTA实验作业
题目1:7-2 求整数序列中出现次数最多的数
1.本题PTA提交列表
2.设计思路
定义n存放数的个数,most存放出现次数最多的数,time存放最多次数
输入n
定义a[n]存放数字,aa[n]存放各数出现次数
将数字存入数组
for i=1 to i>n
for j=n-i to j>n
若a[i]=a[j] aa[i]]+1
end
end
先令time=aa[1];most=a[1]
for i=1 to i>n
若aa[i]>time time=aa[i];most=a[i];
输出most和time
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
- 部分错误:误将每个数字出现次数都初始化为0,后来发现这样做不正确,会让出现次数少一
题目2:7-3 出生年
1.本题PTA提交列表
2.设计思路
定义year存放年份,diff存放要求不同数字个数,count存放实际不同数位=4,born存放出生年,year1也存放年份
定义a[4]存放年份各个位数
输入year,diff,born=year,
for year to...
year1=year
for i=1 to i=5
a[i]=year1%10;
year1/=10
end
for i=1 to i=5
for j=i+1 to j=5
如果a[i]=a[j] count-- 跳出当前循环 end end
如果count=diff跳出循环
count=4 end
输出年份和相差年份
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
- 本题无误
题目3:7-10 杨辉三角
1.本题PTA提交列表
2.设计思路
定义n存放三角的行数
输入n
定义a[n][n]
for i=1 to i>n
for j=1 to j>n
如果i=j或j=1 a[i][j]=1
否则 a[i][j]=a[i-1][j-1]+a[i-1][j]
如果 j>i 跳出循环 end end
for i=1 to i>n
for j=1 to j>i
输出a[i][j]
end
换行
end
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
- 格式错误:将%-md和%md作用混淆导致输出空格在右格式错误
二、截图本周题目集的PTA最后排名。
三、同学代码结对互评
陈文杰代码: 我的代码:
评价:我的代码比他的简洁的多,但是他采用函数封装了各个功能,让他的代码结构更清晰,他的代码通篇无注释,让人不好理解,而且他对于小于10的年份输出采用了000%d,其实只要用%04d就能实现这个功能,还有他计算不同位数使用的方法太
复杂了,可能是思路不清晰的结果,我更喜欢我的代码
四、本周学习总结
1.你学会了什么?
1.1 C中如何存储字符串?
c中采用字符型数组存储字符串
1.2 字符串的结束标志是什么,为什么要结束标志?
结束标志:\0
原因:如果没有\0,那么在使用系统函数处理字符串的时候,函数就不能准确判断字符串在哪里结束,从而可能导致数组越界
1.3 字符串输入有哪几种方法?
三种
- 1.使用循环结构和scanf("%c", )语句输入
- 2.scanf("%s", )这种输入方法遇到空格就会中止
- 3.gets()这种方法只有遇回车会终止,比上一种好
1.4 数字字符怎么转整数,写个伪代码?
定义字符ch存放数字字符
输出ch-'0'
1.5 16进制、二进制字符串如何转10进制?写伪代码?
####16进制:
定义字符数组a[100]存储16进制字符串,result储存转化后结果
输入a[]
for 第一位to最后一位
若a[]为字符0到9,result=result*16+a[k]-'0';
若a[]为a到f或A到F,result=result*16+a[k]-'a'或'A'+10;
end
输出结果
####2进制
定义字符数组a[100]存储16进制字符串,result储存转化后结果
输入a[]
for 第一位to最后一位
若a[]为字符0或1,result=result*2+a[k]-'0';
end
输出结果
2.本周的内容,你还不会什么?
这题第一个空是要判断对角线两侧是否相同,然后根据fond变量判断是否对称矩阵,一开始没有看懂程序,导致思路混乱才错误
pta的题目有几题会出现段错误,百度后知道是数组越界的问题
3.期中考试小结
3.1 你认为为什么没考好?
- 对时间把握的不够好,导致后面编程题和改错题时间不足,但这也看出我对基础知识掌握的不够好,所以做题较慢
- 在纸面上写代码很不适应,过度依赖编译器
- 考前没有做好复习工作
3.2 罗列错题。
选择题第六题我的问题问题主要是b,c两项现在知道逻辑运算符可以这么用,c选项少个分号,我以为考试应该不会考这种错误。。。。
填空题第九空忘记了要乘1.0才能使结果变为小数
编程题第三大题阶乘没写出来很不应该,因为写到最后,没有时间,太慌乱了,结果没做出来
3.3 下半学期要怎么调整C的学习?
- 不应该只做pta的题目,多在纸上写代码,多看别人的代码,作业认真完成