C语言博客作业--一二维数组
一、PTA实验作业
题目1:7-8 加法口诀表
1. 本题PTA提交列表
2. 设计思路
- 1.定义repeat表示运算次数,n为限度,其他循环变量
- 2.输入repeat,在repeat循环内输入n,输出加号
- 3.for(i=1;i<=n;i++){
if(i!=n)
printf("%-4d",i);
else
printf("%d",i);
}输出横向的递增数 - 4.for(i=0;i<n;i++){
for(j=0;j<=i;j++){
a[i][j]=k;
printf("%-4d",a[i][j]);
k=k+1;
}
printf("%d\n",k);
if(i==0)k=2;
else
k=a[i][1];
}
k=1;
} 输出口诀表 - 5.返回0;
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
- 第一遍的时候没有控制循环,输出的是个长方形的口诀表。
- 第二遍改变循环的条件就可以按题意格式输出,但是计算出错。
- 第三遍改变了k的值,使得它的输出结果可以递增,但是第二行依然出错,同样是因为k的值赋错
- 第四遍当repeat为1的时候输出正确,为2以上就又出错,因为每次repeat循环没有将k重新赋初值0;
题目1:7-9 判断上三角矩阵
1. 本题PTA提交列表
2. 设计思路
- 1.定义正整数T,i,j,k循环变量 ,还有flag
- 2.输入T,n
- 3.for(k=1;k<=T;k++){
for(i=0;i<n;i++)
for(j=0;j<n;j++){
scanf("%d ",&a[i][j]);
if(j<i){
if(a[i][j]==0)flag++;
}
} 输入矩阵的同时统计下三角0的个数 - 4.if(flag==n*(n-1)/2)printf("YES\n");
else
printf("NO\n");
flag=0;
} 判断是否上三角矩阵 - 5.返回0;
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
- 这道题在PTA上打的时候一直出现一个问题,就是我的输出判断是正确的,但是一定要先打任意一个阿拉伯数字才会输出答案,这令我非常疑惑,后来问了学长才知道,这是因为我的scanf语句中引号内加了空格才导致的。
- 第二个问题是当我要判断多个数组时,第二个以上的数组输出错误,仔细检查发现是因为scanf("%d",&n);语句写在了循环外。
题目1:7-3 出生年
1. 本题PTA提交列表
2. 设计思路
- 1.定义y是出生年,n,i,j,k,l,flag=0用于循环 ,int year存放年数, int a[4]数组
- 2.令year的初值为出生年
- 3.for(i=0;i>=0;i++){
for(j=0;j<4;j++){
a[j]=y%10;y=y/10;
} 第一个循环将出生年的各位数字存放在数组中
for(k=0;k<n;k++)
for(l=k+1;l<n;l++){
if(a[k]a[l]){
flag+=1;break; 遇到数字相同说明不符条件,flag++
}
if(flag!=0)break;
}
if(flag0)break;跳出循环的条件,也是满足题意时的年份
else {
y=year;y=y+1;year=y;flag=0;
}
} - 7.输出年龄,年份。
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
- 1.这道题打代码的过程中,我对自己想打的思路清楚,多种错误中拿不到的分数是因为当要求年份不同数字为3时,我的代码遇到四个不同数字的年份就输出了。这个问题我还没解决。
二、截图本周题目集的PTA最后排名
三、同学代码结对互评
1.互评同学名称
何君霞
2.我的代码、互评同学代码截图
君霞的代码
我的代码
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题
- 1.我和她的第一个不同是我的代码定义的是二维数组,而她的代码是一维数组,
- 2.我们的思路是一样的,都用的是for循环,但是在最后输出的环节中,她的代码明显比我简洁,因为她定义了一个k赋值为b[i]的值,然后输出++k,而我的代码则杂糅的多,我是输出 j<=i 中的 a[i][j],同时控制还需要一堆条件限制。所以我更喜欢她的代码。
四、本周学习总结
1.你学会了什么?
1.1 C中如何存储字符串?
存放在一堆字符数组中
static char s [6]={'h','a','p','p','y','\0'}
1.2 字符串的结束标志是什么,为什么要结束标志?
结束标志是‘\0’,判断是否结束字符串的操作
1.3 字符串输入有哪几种方法?
gets(a)
scanf("%s",a)
1.4 数字字符怎么转整数,写个伪代码?
char c;
int n;
c = getchar();
n = c;
printf(%d,n);
3.期中考试小结
3.1 你认为为什么没考好?
我对基础知识记忆不牢,而且我还不太会进制转换之类,当然最重要的是我能力不够,我的编程题写的一塌糊涂。经常是写到某一步了发现前面有些东西忘写了。我现在有些跟不上进度,常常老师讲的本周的内容,我在赶上周的作业,这影响到了我的学习。
3.2 罗列错题。
选择题
第7题,
错在计算是失误
填空题
第三个空不该填x
改错题
主函数不需要return语句
编程题
复数不会算
3.3 下半学期要怎么调整C的学习
首先要赶上进度,然后保持好节奏,有时间去博客看看别人写的代码,学习更多的思路。