C语言I博客作业07
这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业属于哪个课程 | 班级的链接 |
这个作业要求在哪里 | 作业的要求 |
我在这个课程的目标是 | 继续学习string.h,自定义函数。学习指针,使用fgets |
这个作业在那个具体方面帮助我实现目标 | 学会使用while和do-while,熟练使用循环语句,学会优化自己的代码,拓宽知识面 |
参考文献 | c语言程序设计(第三版) |
学号 | 20208927 |
1.PTA实验作业 | |
![]() |
1.1 矩阵运算
题目内容描述:给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。
输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。
输出格式:在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。
1.1.1数据处理
数据表达:定义变量n(为题要求输入),定义sum为依题输出的所有元素和,定义二维数组a[10][10],且定义i为行,j为列。均为整型。
数据处理:(伪代码如下)
定义变量sum=0;
for循环输入矩阵数据,
for(i=0;i<n;i++)
for(j=0;j<n;j++)
再for循环遍历数组进行运算,除去最后一列和最后一行,
for(i=0;i<n-1;i++)
for(j=0;j<n-1;j++)
数学逻辑,在副对角线上的数满足表达式i+j=n-1
由if判断,使副对角线上的数为0,
sum=sum+a[i][j],
输出sum。
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
![]() |
35 | 正确 |
1.1.4 PTA提交列表及说明
1.编译错误:在for循环输入矩阵数据时,在内部定义i,j,而在for循环遍历数组时没有。所以第二次的i,j是没有定义的变量。以后要养成习惯,把变量放在前面,做为全局变量。
2.答案错误:数学逻辑错误。
3.部分正确:原来的代码:for(i=0;i<=n;i++) for(j=0;j<=n;j++);这样输入的是5行5列,只有测试点最小n时成立。
1.2 找最长的字符串
题目内容描述:本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。
输入格式:输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。
输出格式:在一行中用以下格式输出最长的字符串:
The longest is: 最长的字符串
如果字符串的长度相同,则输出先输入的字符串。
1.2.1 数据处理
数据表达:定义n(为输入的字符串),i(完成遍历的变量),,为整型变量。定义字符型数组a[max],b[max],max为宏定义。
数据处理:(伪代码如下)
使用string.h为头文件,
fgets标准输入a数组中的前81位字符,strcpy(b, a)
将字符串a复制给b,
for循环遍历,判断字符串的长度,
fgets(a,max,stdin);
使用strlen,返回字符串的长度进行比较
若a>b,则将a复制给b,最后输出b为最长字符串。
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
![]() |
The longest is: zhang | 好 |
1.2.4 PTA提交列表及说明 | ||
![]() |
1.答案错误:第二次的fgets,使用的是标准输出。
2.编译错误:错误代码fgets(a;max;stdin),fgets使用错误。
2.代码互评(5分)
找2份同学代码,和自己代码比较,建议互评代码尽量找代码风格差异较大。
同学代码截图
自己代码截图
对比:第一个使用的自定义函数,我觉得很好,但是我无法判断谁的用时更短。
第二个的话就比我的好,他的定义变量数,比我更少。
3.学习总结(15分)
3.1 学习进度条(5分)
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
11.30-12.4 | 24小时 | 400 | 排序,指针 | string.h |
11.23-11.26 | 22小时 | 600 | string.h | gets,puts |
11.15-11.21 | 22小时 | 500 | string.h,接触基础c++ | vs和Dev的快捷键不会使用,string |
11.10-11.14 | 26小时 | 300 | 自定义函数,二维数组,宏定义,const | 不会用复杂的宏定义和const |
11.2-11.8 | 26小时 | 600 | 循环嵌套,一维数组,二维数组 | 如何把问题简单化,灵活调用循环和函数 |
10.26-11.1 | 24小时 | 500 | 循环嵌套,选择排序,冒泡排序 | 排序很蒙,逆时针坍缩不懂 |
10.19-10.25 | 24小时 | 200 | switch-case,循环 | 无 |
3.2 累积代码行和博客字数(5分) | ||||
时间 | 博客字数 | 代码行数 | ||
---- | ---- | ---- | ||
第八周 | 1052 | 200 | ||
第九周 | 1677 | 500 | ||
第十周 | 3252 | 600 | ||
第十一周 | 5186 | 300 | ||
第十二周 | 6824 | 500 | ||
第十三周 | 8347 | 600 | ||
第十四周 | 9995 | 400 |
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
3.3.2 学习体会
第一次作业制定的规划感觉白制定了,英语落下了许多,我认为我应该合理运用暗时间,在排序和英语上花更多的时间。我觉得我的时间应该分配得更加合理些,任务按时完成的情况下完成班级事务的处理,也是一种劳逸结合。