一、PTA实验作业

题目1:7-2 区位码输入法(10 分)

1. 本题PTA提交列表

2. 设计思路

1.定义n做为区位码,b c分别为区位码的前两位和后两位
2.输入n的区位码
3.计算b=a/100+160;c=a%100+160;
4.用 putchar(b);putchar(c);输出所定义的字符

3.代码截图

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

刚开始我以为可以输入两个数,是这样的 ↑ ,后来发现是输入一个数 才正确做出答案

题目2:7-4 掉入陷阱的数字(15 分)

1. 本题PTA提交列表

2. 设计思路

1.定义n做为输入的数,a在循环中保存n的值
2.进入循环 for(i=1;;i++) {a=n; bit=0;// a用来存放原始n的值
进入嵌套while循环{
bit+=n%10; //计算各位数的和
n/=10;

3.n=bit*3+1;printf("%d:%d\n",i,n);计算n的值
4. 如果n==a则 end for }

3.代码截图

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

做这道题时我觉得要先计算出输入的n的位数再做内循环,后来试了一下,我突然发现可以使用
while(n!=0)然后再在循环里n/=10;这样变相的计算出了n的位数,而且如果在外面计算n的位数需要写一个循环,这样的话浪费了很多时间,我这样的话我的代码看起来也更加的简洁,以后遇到这样的问题可以采取这样的方法!!

题目3:C作业--数据类型

1. 本题PTA提交列表

2. 设计思路

  1. 定义repeat,ch,i,flag,count=0; //repeat做为执行的次数 ch是输入的字符
  2. 输入reapeat的值
  3. 进入for i=1 to repeat {
  4. 进入嵌套循环while(1){//输入所有的字符
    
  5. ch=getchar(); 用count++记录输入的字符
  6. 判断ch等于‘=’的话退出while循环否则继续判断
  7. if(count1)若是的话则判断if(ch'_'||'A'<=ch&&ch<='Z'||'a'<=ch&&ch<='z')continue; flag=0;continue;
  8. 否则继续判断接下的字符 if(ch=='_'||'A'<=ch&&ch<='Z'||'a'<=ch&&ch<='z')continue; flag=0;continue;
  9. 否则的话 flag=0;continue flag代表输入了错误的字符;
  10. 做判断如果if(flag==1)输出YES 否则输出NO end for

3.代码截图

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

1.首先我在做的时候总是不知道怎么输入多个字符,后来使用循环结构输入多个字符,再后来我知道舍友用gets()才知道这种方法的好处
第二是我在判断空格的时候是用 if slse if 的方式,先判断第一个的字符在判断接下来的字符,和空格都是放在一个外循环里面的,但是要是遇到
头尾多个空格的情况时就出错,所以我后来在询问了舍友的代码后知道了应该区别分析,才成功输出答案。

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

三、本周学习总结(3分)

1.你学会了什么?

1.1 一维数组如何定义、初始化?

1.定义格式为 类型名 数组名 [数组长度]; 初始化格式为类型名 数组名 [数组长度] = {初值表};
2.初始化时要使用={},依次输入数组内得值,如果为定义则自动赋值为0,且在输入数组时要用嵌套循环。

1.2 一维数组在内存中结构?可画图说明。数组名表示什么?

数组名是一个地址常量,表示一个数组内存空间的首地址,且数组存放的地址以数组名为首,再根据数组的类型依次增加。

1.3 为什么用数组?

运用数组可以i存放一大堆类型相同的值,不用一个一个的定义数组只需要用数组就可以表示,相当于用一个变量储存多个值。

1.4 介绍选择法、冒泡法、直接插入排序如何排序?伪代码展示.

  • 选择法:
    进入循环for j=0 to n-2{
    设a[j]=min;
    . 进入循环for i=0 to n-1 {
    判断 a[i]<min若是 a[i]变为min end for

    min的值附给a[j],并返回执行1}

  • 冒泡法:
    进入循环for j=0 to n-3 {
    进入内层循环 for i=0 to n-2 {
    判断 a[i]>a[i+1] 若是交换a[i]和 a[i+1]的值 end for

    否则执行1 知道i=n-1 end for

  • 插入法:
    先把第一个数默认为初始值。
    进入循环for j=i-1 to i=0 j-- {
    判断数组的大小如果比前一个数小,交换到前一个位置 a[j+1]=a[j]
    继续执行第二步,直到这个数组的数最大
    一直执行1~4,直到输出所有的数均为比前面的大时 end for}

1.5 介绍什么是二分查找法?它和顺序查找法区别?

二分法就是先判断数组的中心位置,取出中心位置的数组的下标值做为参考值,如果比要找的值大就往又边二分
小的话就往左边二分,直到找出所找的值 或者 二分时的最小界限大于最大界限时没有找到值,结束判断。

1.6 二维数组如何定义、初始化?

定义 数组类型 数组名[数组行长度][数组列长度]
初始化 类型名 数组名 [行长度][列长度] = { {a, ... ,b, ...} 或者也可以用嵌套循环来输入二维数组

1.7 矩阵转置怎么实现?方阵中:下三角、上三角、对称矩阵的行标i列标j的关系?请说明。

b作为a的矩阵转置

int i,j, a[10][10], int b[10][10];
for(i = 0; i <M; i ++){
for(j = 0; j < N; j ++){
b[j][i] = a[i][j]}
};

做为上三角矩阵:数组的下标a[i[[j] i<=j;
上三角矩阵:数组的下标a[i[[j]: i>=j;
做为对称矩阵: a[i][j]的下标 ij相对掉 a[j][i]

1.8 二维数组一般应用在哪里?

运用在数据中有行列的地方,例如学生的学号及成绩或者月份和日期。
而且也可以表示在例如坐标的地方等等或矩阵的运用。

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

在这周举行了期中考,本来在做pta 时感觉虽然困难但是还是可以顺利的做出题目,所以总是觉
得所学内容已经基本掌握,但是在这次期中考中明明已经做过已经居然理解的地方偏偏不能得分,
还是是基础没有扎实,没有足够的了解知识点,不像在电脑上你有错误,电脑会给你指出但是在
考试中你只能凭借你的知识储备来找出错误,而我就是在这次的学习中过分的依赖电脑导致成绩
不理想,我真的很难过,与我的预期不一致,所以我决定在之后的学习中首先先做好课堂派的预
习作业,因为这些都是基础,打好地基,其次在PTA的作业中遇到问题不是只是想着怎么做对怎
么做出答案,而是找出自己的缺陷在哪,自己的知识点缺陷在哪,做好每次作业,希望下次的考
试我可以取得好成绩。!!

 posted on 2017-11-26 09:57  陈张鑫  阅读(268)  评论(7编辑  收藏  举报