一、PTA实验作业
题目一:7-5 数组循环左移
1.本题提交列表
2.设计思路
定义四个整形变量n,m,j,k
输入n,m的值
if(m==0){
定义一个数组c[n];
按顺序给该数组赋值;
按顺序输出数组c;
程序结束。
}
if(m>n){
定义一个数组c[n]
依次输入该数组中的数;
if(m%n==0){
按顺序输出数组c中的数;
程序结束。
}
else{
定义一个数组d[n]
for(i=0;i<n;i++) d[i]=c[(i+m%n)%n];
按顺序输出数组d中的数;
程序结束。
}
}
定义两个数组a【n】,b【m-n】;
按顺序输入数组a【n】中的n个数;
按顺序输入数组b【m-n】中的m-n个数;
按顺序输出数组b中的各个数;
按顺序输出数组a中的各个数
程序结束。
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
如图所示,问题考虑不全面,导致失分。
将条件补齐后完成。
题目二:7-8 加法口诀表
1.本题提交列表
2.设计思路
定义五个变量repeat,n,j,m,i,k;
输入repeat的值;
for(k=1;k<=repeat;k++){
输入n的值;
定义一个数组number【n】;
输出‘+’;
for(i=0;i<n;i++){
将i+1的值赋给number【i】;
如果i=n-1,跳出循环;
输出number【i】的值;
}输出number【n-1】的值;
for(i=0;i<n;i++){
输出number【i】的值;
for(j=0;j<=i;j++){
把number[i]+number[j]的值赋给m;
当j=i时,跳出循环;
输出m的值;
}输出m的值;
}
}
程序结束。
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
忘记了repeat的用处以及之前没有明白输出格式,加上一个repeat条件的循环然后把n的输出放到循环中,在对中间的代码进行一些小改动就完成了,输出格式是问的同学。
题目三:7-9 判断上三角矩阵
1.本题提交列表
2.设计思路
定义七个变量repeat,n,i,j,k,count,m;
输入repeat的值;
for(i=1;i<=repeat;i++){
输入n的值;
定义一个矩阵a【n】【n】;
按顺序输入矩阵中的各个数;
当矩阵下三角(不包括对角线)中的所有数均为0时,输出YES;
否,则输出NO;
}
程序结束。
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
每次输出要占一行,所以每个输出后加上换行符;
在这里第一次接触段错误,是矩阵定义出了问题,应该把a【n-1】【n-1】改为a【n】【n】。
二、截图本周题目集的PTA最后排名
三、同学代码结对互评
题目:7-5 数组循环左移
我的代码:
吴军霖的代码:
互评:他的代码用了函数,极为简便,但是有点难懂,可能是他的学习进度比我快出太多,运用了一些我不知道的表示方法,相较而言我的代码有点复杂而且冗长,
但是我还是比较喜欢我的代码。
四、本周学习总结
1.你学会了什么?
1.1C中如何存储字符串?
定义一个字符数组,用循环来输入该字符数组的各个字符
如:char str[10]
for(i=0;i<10;i++) scanf("%c",&str[i]);
1.2字符串的结束标志是什么,为什么要结束标志?
' ';因为‘ ’可以用来控制字符数组的输入与输出,控制循环。
1.3字符串输入有哪几种方法?
三种:
1.使用gets()直接输入整个字符串;
2.定义数组和循环变量,用循环结构for(i=0;i<n;i++) str[i]=getchar()即可;
3.while((str[i]=getchar())!=‘ ’);
1.4数字字符怎么转整数,写个伪代码?
定义整型变量number存放输入的数,i为循环变量
定义字符数组str[10]存放字符串
i=0
while((str[i]=getchar())!=‘ ’)
每次循环完i的值加一
number=0
for(i=0;str[i]!=‘ ’;i++)
if(str[i]>=‘0’&&str[i]<=‘9’)
number=number*10+str[i]-'0'
输出number
1.5 16进制、二进制字符串如何转10进制?写伪代码?
16进制:
定义整型循环变量i,k
定义字符数组hexad[80],str[80]
定义长整型变量number存放十进制数
i=0
while((str[i]=getchar())!=‘ ’)
每次循环结束后i的值加一
遍历数组hexad[i]
k=0
for(i=0;str[i]!=‘ ’;i++)
字符数组str[i]输入的字符存在十六进制的字符
数组hexad[k]存放str[i]的字符
遍历hexad数组
number=0
for(i=0;hexad[i]!=‘ ’;i++)
如果数组hexad存放0~9的字符
number=number*16+hexad[i]-‘0’
如果数组hexad存放A~F的字符
number=number*16+hexad[i]-'A'+10
如果数组hexad[i]存放a~f的字符
numbe=number*16+hexad[i]-‘a’+10
输出十进制的值number
二进制:
二进制数组a[n]
for(i=0;a[i]不为‘ ’;i加一)
n=n*2+a[i]-'0'
输出n
2.本周的内容,你还不会什么?
不会的内容很多,具体就说不出来了,实在太多了,感觉现在学习很吃力。。
3.期中考试小结
3.1你认为为什么没考好?
(1)基础差;
(2)考试前没有做充足的准备,复习不到位;
(3)考试时时间分配不合理,在分数少的选择题耗费了太多时间。
3.2 罗列错题。
3.3下半学期要怎么调整C的学习?
- 预习作业要认真及时完成;
- PTA上的题目争取全部完成,不懂的全部弄懂;
- 课本要仔细认真的看,静下心来,总能看得进的;
- 上机考试前认真复习,考试后认真总结;
- 一定要花更多更多的时间在C语言上,时间不够就挤,总会有的。