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

一、PTA实验作业

题目1:数组循环左移

1. 本题PTA提交列表

2. 设计思路

  • 定义变量i,m,n,j,并为j赋上初值0;
    输入n和m,判断m和n的大小,if(m>n) m=m-n
    定义数组a[n],b[m],利用循环输入n个值,依次赋给数组a的每个元素
    for(i=0;i<m;i++) b[i]=a[i];把数组a的前面部分赋值给数组b中每个元素
    左移数字for(i=0;i<n;i++) if(i>n-1-m) a[i]=b[j]; j++;else a[i]=a[i+m];
    输出左移后的数组for(i=0;i<n;i++){//输出数组。 if(i==n-1) printf("%d",a[i]); else printf("%d ",a[i])

3.代码截图

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

  • 本题的主要问题是没有考虑的完全周祥,只判断了当m<n时的状况,所以导致提交上去是只是部分正确,然后通过看答案所给的提示,改成了正确的答案。

题目2:出生年

1. 本题PTA提交列表

2. 设计思路

  • 定义变量number[4],i,n,x,k,j,y,count=0;
    输入n和y的值,利用switch选择语句判断所输入的想要的不同位数的数字。switch(n) case 2:........ case3:........ case4:..........
    判断count的值是否为6,是否满足标准,if(count==6) x=i-y; break;
    输出满足条件的年份,并且输出与输入年数所隔的年数。

3.代码截图



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

  • 本题是我第一次出现运行超时的问题,我一直很纳闷运行超时是什么东西,然后翻阅资料发现可能是循环进入次数太多,然后没在规定时间内得到结果,所以运行超时了,然后我试着自己改正,但是改了很久,还是没发改正到完全正确,于是我换了一种思路,重新写过了,虽然比上一次的思路更繁琐,但是最终还是解出来了。

题目3:判断上三角矩阵

1. 本题PTA提交列表

2. 设计思路

  • 定义变量T,n,i,j,k,flag,输入T,判断T个矩阵是否为上三角矩阵。
    对flag赋初值0;输入n,定义二维数组,并把输入的数字,赋值给二维数组a[][]
    判断是否为上三角矩阵,if(n!=1) for(i=0;i<n;i++) for(j=0;j<i;j++) if(a[i][j]!=0) flag=1; else if(n1&&a[0][0]0) flag=0;
    如果是则输出“yes”,不是则输出“No”。

3.代码截图

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

  • 这道题我很快就打完了代码,但是一直都是错误的,而且我调试了很久一直都是答案错误,然后引用了flag,来判断是否为上三角矩阵if(flag==0) printf("YES\n"); else printf("NO\n"); 再引用了令一个变量之后,判断是否为上三角矩阵就会方便很多。

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

  • 抱歉,还有很多没写完,我一定会在一个星期之内补上的,抱歉老师!!!

三、同学代码结对互评

1.互评同学名称

  • 王洪尉

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

  • 王洪尉的代码:

  • 我的代码:

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

  • 虽然这是一道非常简单的题目,但是我们俩打出的代码的简洁程度还是不同的,首先从定义的数组上来说,我只定义了一个数组,就实现了代码的编写,但是他定义了俩个数组,
    这样就会使得代码的简洁性和可读性减弱,其次是在判断那个数字最多的时候他用了三个循环的嵌套,增加了程序的运行难度,而我就只用了俩个。我更喜欢简洁的我的代码!

四、本周学习总结

1.你学会了什么?

  • 第一,怎样定义二维字符。
  • 第二,定义字符型数组存放
  • 第三,对数组的全部元素都赋了初值,就可以省略数组长度
  • 第四,尾字符添加结束标志 line[k]=‘一个符号’,一般结束符是\0

1.1 C中如何存储字符串?

  • 可以利用一维数组和二维数组存放字符串

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

  • 结束标志一般是\0,有时也可以自己定义其它符号为结束标志。

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

  • 有scanf的方法,gets法(遇到回车输入结束)

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

  • 将输入的数字字符都放入字符型数组a[]中。
    再利用循环for(i=0;i<n;i++) 遍历数组。
    在将每个数组的数字字符减去字符0(‘0’);并将减去得到的结果放入整型数字b[]中,b[]=a[]-‘0’;
    最后b[]中将得到数字字符转成整数的一个数组。

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

  • 第一种,可以直接在输入的时候scanf(“%x”,a[i]);输出的时候printf(“%d”,a[i]);
  • 第二种,利用进制转换本身的定义,对于二进制for(i=0;i<n;i++) number=0; number=number+a[i]*pow(2,n-1);
    对于十六进制,先判断字符代表的十进制是多少,然后乘上16;

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

  • 我写的所有题目都是把所有的代码放在主函数中,没有办法去使用函数,因为只要一使用函数就会错误,然后就无从下手,不明白在调用函数的时候是直接用a[]还是a[n].

3.期中考试小结

3.1 你认为为什么没考好?

  • 第一,花的时间太少了,没有足够的时间去看书和及时的写作业,有很大一部分作业是赶出来的。
  • 第二,在作卷子的时候,不太小心,很多本来应该对的题目都错了,在考完才发现。
  • 第三,书写太差,因为怕写不完,所以并没有太注意书写的杂乱程度。
  • 第四,很多基础的知识还是不熟悉,写一些题目还是要翻书。

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

  • 只能尽量的花更多的时间去学习c语言了,并且打好我们的这门最基础的课的基础,给未来打好一个好的地基,并且会准备一个本子,上面记录了我所不会的关于c语言的一切。

posted on 2017-12-03 22:31  不是本人  阅读(339)  评论(1编辑  收藏  举报

导航