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

时间:2024-07-13 21:05:20

一、PTA实验作业

题目1:7-1 将数组中的数逆序存放

1. 本题PTA提交列表

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

2. 设计思路

定义三个整型变量n用来存放整数个数i,j是循环数

scanf(“%d”,&n)

定义一个整型数组a[10]

当i=0时执行循环

输入数组

i++

让j=n-1

当j大于0时输出数组

每次j--

当j等于0时去空格输出a[0]

3.代码截图

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

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

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

如图,本题遇到主要问题是数组最后一位数输出时没有去空格,通过printf语句调试解决。

题目2:7-7 找鞍点

1. 本题PTA提交列表

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

2. 设计思路

定义整型变量n,x=0,y=0,i,j,p=0,flag=1;

定义二位数组a[6][6]

输入n

当i=0;i<n;i++

j=0;j<n;j++

输入数组

如果n==1

只有一个点时,一定是鞍点 输入0,0

n不为1 是执行循环

for(i=0;i<n;i++){

y=i;

for(p=0;p<n;p++){// 找行最大值

if(a[i][x]<=a[i][p]){// 数组元素之间比较,若比a[i][x]大,则将数组列标赋给x

x=p;

}

for(j=0;j<n;j++){//判断是否为列最小值

if(a[y][x]>a[j][x]){

y=j;//若此行最大值不是列所在最小值,把小的行标赋给y

并且结束循环

if(i==y){//行最大且列最小,判断条件行标不改变

flag=0;

break;

}

如果flag=1

则输出i和x

3.代码截图

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

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

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

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

本题主要问题是对题意理解不清以及行下标与列下标交换混乱从而导致答案错误,通过调试解决。

题目3:7-10 杨辉三角

1. 本题PTA提交列表

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

2. 设计思路

定义三个整型变量i,j,n

定义二维数组a[10][10]

输入要打印的杨辉三角行数

当i=0;i<n;i++

a[i][0]=1输入第一列

a[i][i]=1

当i=2;i<n;i++

j=1;j<i;j++

a[i][j]=a[i-1][j-1]+a[i-1][j]给每一位数赋值

输出数组

3.代码截图

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

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

本题遇到的主要问题是没有把握好输出时的数据长度而导致的格式错误,经过同学纠正后改正。

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

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

三、同学代码结对互评

1.互评同学名称

朱杰伟

2.我的代码、互评同学代码截图

同学代码:

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

我的代码:

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

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题

本题杰伟同学的思路清晰,注释也很到位,代码可读性很强而我没有注释,以后要多注意多注释,但是杰伟同学用了两个数组来实现杨辉三角我觉得没有必要,可以用一个数组进行多次循环来实现。(个人看法)

四、本周学习总结

1.你学会了什么?

1.1 C中如何存储字符串?

有两种方法,一种是字符数组,一种是字符指针

如:

const char *str = "hello"; //使用字符串指针

const char str[] = "hello"; //使用字符数组

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

字符串是以'\0'为结束标志,在C语言中没有专门的字符串变量,有了'\0'标志后,就不必再用字符数组的长度来判断字符串的长度了。

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

scanf("%s",in_buff);

gets(in_buff);

fgets(in_buff,BUFFER_SIZE + 1,stdin);

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

定义字符变量a用来存放转化之前的数,定义整型变量b用来存放转化后的数

输入一个数字字符存于a中

b=a-‘0’

输出b

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

十六进制

十六进制数组a[n]

for(i=0;a[i]不为‘\0’;i加一)

若字符为数字

n=n16+a[i]-'0'

若字符为小写字母

n=n
16+a[i]-‘a’+10

若字符为大写字母

n=n16+a[i]-‘A’+10

输出n

二进制

二进制数组a[n]

for(i=0;a[i]不为‘\0’;i加一)

n=n
2+a[i]-'0'

输出n

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

对于字符串的输出方法只掌握了一种,还不太熟练,对字符数据的进制转换也还不是太熟练。

3.期中考试小结

3.1 你认为为什么没考好?

平时用来打代码的时间太少了,而且上完课之后没有复习课本内容,学习C语言就只限于写pta以及课堂听讲,太单一了。

3.2 罗列错题

选择题

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

这一题是对字符运算符理解不到位才错的

分析程序

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

这题没有注意它的printf("sum=%d\n",num)只输出了Total。

阅读程序填空

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

这题没想到在输入前要给C赋值为0 而且第二空应该是return c;而不是return 0;

改错

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

编程题

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

是由于不太适应手写代码和不能调试的原因吧,还有写代码的时候没有注释。

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

平时要多复习书上的内容,不能上完课就把书本放下,而且平时也要多写代码,多做编程题,尽量先在纸上写一遍再放在编译器上运行调试。