一、PTA实验作业
题目1:7-3 出生年
1. 本题PTA提交列表
2. 设计思路
- 1、声明一个函数different()用来计算一个年份的不同数字个数
- 2、定义y(y是来计算符合要求的年份的量),n(n为题目要求的不同数字个数),x(x用来存放起始年份),flag(flag是用来表示每个y值中的不同数字个数的量)
- 3、输入起始年份y和题目要求的n
- 4、x=y(存放起始年份)
- 5、do {flag计算y中不同数字个数;如果flag=n,符合题意,输出相应结果,并结束循环;如果不符合,y自增一}while(1)
- 6、对函数different(y)定义:
- 首先定义一个数组a[4]和不同数字个数count等于4;
- a[4]存放y的每一位;
- for(int i=0;i<4;i++) {for(int j=i+1;j<4;j++)如果a[i]=a[j,count减一,结束j的循环;
函数结果返回count
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
2. 设计思路
- 1、定义二维数组a[6][6]和n
- 2、输入n
- 3、 for(i=0; i<n; i++) for(j=0; j<n; j++) { scanf("%d",&a[i][j]); } 输入二维数组
- 3、定义k=0,q=0,p=0(k,q,p都是下面循环要使用的),flag=1(flag是来判断鞍点存不存在的)
-4、for(i=0; i<n; i++) { q=i(下面需要用来判断此行最大值是不是列所在最小值); 。。。。。。}
- 5、 for(p=0; p<n; p++) { if(a[i][k]<=a[i][p]) //数组元素之间比较,若比a[i][k]大,则将数组列标赋给k k=p; } } 这里找出行最大值,并将该最大值所在列的值赋给k,以便进行下一步行最小值的查找
- 6、for(j=0; j
- 7、找到后只需比较i和j是否相等,相等则说明此行最大值是列所在最小值,让flag等于0,结束循环
- 8、if(flag==0) 输出结果 else 输出none
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
2. 设计思路
- 1、定义数组a[10][10].i,j,n
- 2、输入n
- 3、for(i=0;i<10;i++) 将行头及对角线中存入1(a[i][i]=a[i][0]=1)
- 4、for(i=2;i<n;i++){for(j=1;j<i;j++){}a[i][j]=a[i-1][j-1]+a[i-1][j];//将第三行起的数存入 } }存入第三行起除对角线外的所有数
5、输出数组
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 1、我一开始j用的是小于等于i,结果把对角线上的数改变了
2、第一次做的时候忘了换行,输出结果错误
二、截图本周题目集的PTA最后排名。
三、同学代码结对互评
1.互评同学名称
李于程
2.我的代码、互评同学代码截图
我的代码
于程同学代码
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
1.你学会了什么?
1.1 C中如何存储字符串?
1.5 16进制、二进制字符串如何转10进制?写伪代码?
第一题我题目意思理解错误,我以为他问的是C语言可以输出的数的进制位= =
- 2、填空题:
第七空为ch=getchar(),我只写了ch,这是我没把上课内容充分理解的原因,以后上完课我应该进行复习
- 3、改错题:
改错比较尴尬,因为我知道它错了,错在哪,却不知道怎么改,我认为这是因为我阅读程序能力不够的原因,以后我要多读程序,学会看程序
- 4、编程题:
编程题其他两题我做得不错,这一题我也知道怎么做,但是可能考试比较紧张了,我忘了怎么求x的值了= =,考试时时间比较紧迫,就没仔细去想,希望下次做题能够保持头脑清晰,不要着急
3.3 下半学期要怎么调整C的学习?
- 1、基础知识要先掌握好,即课本的内容先精通,再来谈更进一步的深奥内容
- 2、通过期中,我明白了c的学习不只是pta上做编程题而已,一些基础的理论的简单知识也要明白
- 3、下半学期,要在搞好基础知识的情况下,将这些知识运用于编程中