C语言博客作业--一二维数组

一、PTA实验作业

题目1:出生年

1. 本题PTA提交列表

2. 设计思路

int y,n,count,i,a,b,c,d;//a为千位,b为百位,c为十位,d为个位 ,y为出生年,count表示几位数不同
输入y,n
for(i=y;i<9999;i++)
a=i/1000;得出千位
b=i/100%10;得出百位
c=i/10%10;得出十位
d=i%10;得出个位
if(ab&&ac&&ad) count=1;
else if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d) count=4;
else if((a
b&&ac&&a!=d)||(bc&&bd&&a!=b)||(ab&&ad&&a!=c)||(ac&&ad&&a!=b)) count=2;
else count=3;
判断有几个不同的数,count来存放,
当count
n时,跳出循环
并输出i-y和i。

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

本题总是说我没补0;可是我明明用了%04d,调试出来也是有前导0,就是不让过。

题目2:加法口诀表

1. 本题PTA提交列表

2. 设计思路

int repeat,n,i,j,k;//repeat为可运行次数,n为几阶加法
输入repeat
for(i=1;i<repeat;i++){
输入n
有n+1个阶层;即将n=n+1
int a[n][n];
有前导+号,需要先输出printf("%-4c",'+');
第一行和第一排都是按1到n-1排列;
即if(i0){for(j=0;j<n-1;j++){
a[i][j]=j+1;
if(j
n-2){//当j=n-2时,为第一排最后一位数,后面不要跟空格
printf("%d",a[i][j]);
}
else
printf("%-4d",a[i][j]);
}putchar('\n')换行
}//第一行结束
else {
for(j=0;j<n;j++){
if(j0){a[i][j]=i;printf("%-4d",a[i][j]);//第一列由1到n-1排列
else{ f(j<=i){
if(j
i){//每一行最后一位数不需要空格
printf("%d",a[i][0]+a[0][j-1]);
}
else{
printf("%-4d",a[i][0]+a[0][j-1]);
}
if(j==i){//由于他只表示一个下三角,当j=i时换行
putchar('\n');
}
}

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

本题中一直忘记最后一位数不能跟空格,所以出现了多次的错误。我用#号来代替空格才知道到底哪里错了

题目3:杨辉三角

1. 本题PTA提交列表

2. 设计思路

int n,i,j;//n为几阶
输入n ,int a[n][n]
由杨辉三角的规则可以知道每行第一个数字和最后一个数字均为1,及规定a[0][0]=1;
for(i=1;i<n;i++){
	for(j=0;j<=i;j++){
if(j==0){//每一行第一个数为0
a[i][j]=1;printf("%4d",a[i][j]);}
else if(j==i){//每行最后一位数
	a[i][j]=1;printf("%4d",a[i][j]);}
else {
		a[i][j]=a[i-1][j-1]+a[i-1][j];
		printf("%4d",a[i][j]);}}
每行完需要换行putchar('\n')

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

本题较为顺利,在思考后没有出现什么较大的错误。

二、截图本周题目集的PTA最后排名。

三、同学代码结对互评

林艺薇同学


林艺薇同学的代码,它运用了数组的方式来解决这一题,而我在这一题时看下去,就没想过用数组的方式来做,她的注释很详细,我使用了a,b,c,d的方式,显得有点低俗。
它使用数组可读性很高,而我的方式胜在于刚好遇到这种题,代码打的比较简便。

四、本周学习总结

1.你学会了什么?

1.1 C中如何存储字符串?

使用数组的方式来储存,例如a[10]="hello";

1.2 字符串的结束标志是什么,为什么要结束标志?

结束的标志是'\0',要是没有结束的话,后面的字符将会出现随机字符

1.3 字符串输入有哪几种方法?

ch=getchar(); gets(); scanf("%s",a[n]);

1.4 数字字符怎么转整数,写个伪代码?

例如将‘2’转化为2 number='2'-'0';

1.5 16进制、二进制字符串如何转10进制?写伪代码?

16进制:
定义数组a[n],数number,sum=0
判断a[n]中的数是否合法;
for(i=0;a[n]!='\0';i++)
if(a[i]>='0'&&a[i]<='9') sum=sum16+a[i]-'0';
if(a[i]>='a'&&a[i]<='f') sum=sum16+a[i]-'a'+10;
if(a[i]>='A'&&a[i]<='F') sum=sum16+a[i]-'A'+10;
输出sum
2进制:
定义num,输入num,定义sum,shu
while(num!=0){
shu=num%2;
sum=sum
2+shu;
num/=2;}

2.本周的内容,你还不会什么?

PTA 7-6 图书馆 复杂的各种排序插入,感觉有很多的地方都不懂。

3.期中考试小结

3.1 你认为为什么没考好?

基础不扎实,在看完书后,其实记忆并不牢靠,平时的积累不够,还有读程序的能力不行,在读那个打印菱形的题目时,还是看不懂,以后再上课的时候一定要记下重点,并在课后及时复习和锻炼相应的习题。

3.2 罗列错题。

选择题:
第12题 这一题其实错的很不应该,主要是判断 if(a) if(!a) if(a==0) if(a!=0) 其实这三个很容易找出第三个与其他的不同;当初应该是模模糊糊的写了下去。
填空题:
第7空:(ch=getchar()) 这一个是输入一个字符,我当时真的是不懂,基础确实很烂,现在理解了他的意思。
改错题:
第二题:int n;-->int n=1;忘记要初始化了,这种事典型的错误。
term = -termxx/(n+1)(n+2);//改为 term = -termxx/((n+1)(n+2)); 分母要看清。
n++//改为 n = n + 2;
程序题:
第二题:忘记用a来分情况,我没有照顾到当a=0,a=0&&b=0时的情况,这真的是一个很大的错误,疏忽不得。

3.3 下半学期要怎么调整C的学习?

1.基础的东西要去记忆,很多地方都是从基础上来的。
2.上课要集中注意力听讲,课后要及时巩固并做一些相关的练习。
3.要提高学习效率,真的是感觉有时候真的心力憔悴。
4.锻炼手写代码,这一次考试的程序题做的一塌涂地。

posted on 2017-12-03 22:07  ifcan  阅读(238)  评论(4编辑  收藏  举报

导航