C语言博客作业--数据类型

一、PTA实验作业

题目1:倒顺数字串

1. 本题PTA提交列表

2. 设计思路

  • 定义变量n,i,j
  • 输入n
  • i的值 for 1 to n,输出i,如果i<n,再输出空格,i自增
  • j的值for n-1 to 1,输出空格,再输出j,j自减
  • 返回0

3.代码截图

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


发现输出了两个6

因为j的初值取到n,所以还会重复输出一个6

题目2: 打印菱形图案

1. 本题PTA提交列表

2. 设计思路

  • 定义变量。。。。
  • 输入一个值存入n
  • 第一个循环打印1~(n+1)/2行的图案
  • a=n+1-2i,b=2i-1
  • j的值for 1 to a 输出空格
  • k的值for 1 to b 输出*和空格
  • 换行 end
    -第二次循环打印(n+3)/2~n行图案
  • c=2i-n-1,d=2(n-i)+1
  • l的值for 1 to c输出空格
  • m的值for 1 to d输出*和空格
  • 换行 end

3.代码截图

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


运行发现跟PTA的图案一模一样,但是提交却出现了格式错误,认真看下题目发现每个*后面都要空格,太惯性思维了
然后改了代码还是有格式错误,输入3发现

第二次循环的图案打印出现问题
用3调试第二次的循环

发现c的值为负数。。。。。。 在草稿上把输入的7当为特例写代码导致不具有普遍性,应该改正c的赋值

题目3:掉入陷阱的数字

1. 本题PTA提交列表

2. 设计思路

  • 定义变量
  • 输入一个数存入N
  • i的值for 1 to 某个数(当N=N1时退出循环)
  • 把N赋值给M和number
  • 只要number!=0,number=number/10,n自增,循环结束得出N的位数n
  • j的值for 1 to n, a=M%10, M=M/10,sum=sum+a,j自增 先得出sum的值
  • N1=sum*3+1,得出新的数N1
  • 输出 i:N1
  • 如果N=N1直接退出循环,否则 把N1赋值给N,把sum赋值0,换行 end

3.代码截图

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


第一次就进入死循环而且还没有换行,而且把计算N的位数n的循环放在外面,所以n的值不变了,我修改

改正后格式正确但是从第二个数开始就不正确了

发现第一次循环后sum的值不是0,会继续加上去,在大循环后面重新给sum'赋值为0

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

三、本周学习总结

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

  • 1.定义一个数组需要明确数组的变量名,数组元素的类型和数组的大小,一般类型为 类型名 数组名[数组长度].

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

  • 数组名是一个地址常量,存放数组内存空间的首地址

1.3 为什么用数组?

  • 在程序运行期间其值可以改变的量。其实理解得简单一点,变量就是一块小内存的名字,这块内存的大小由这个变量的类型决定,同时也决定了这块内存能存放数据的大小范围

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

选择法:

  • for 0 to n-1 控制外循环个数
  • 令k=i for i+1 to n 找下一个数到最后一个数中寻找最大值
  • 若后面有比最大值更大 则k=j
  • 否则用temp=a【k】,a【k】=a【i】,a【i】=temp 交换位置

冒泡法

  • for 0 to n 控制循坏次数
  • for 0 to n-j 内循环个数
    -if 这个数大于下个数,则用temp=a【i】,a【i】=a【i+1】,a【i+1】=temp 进行交换位置

插入法

  • i的值for 1 to n 控制外循环次数
  • j的值for i-1 to n
  • temp=a[i],a[j+1]=a[j],a[j+1]=temp 进行插入

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

  • 假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找; 若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。
  • 相对于循序法效率更高

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

  • 类型名 数组名 [行长度] [列长度] = {{初值表0},…,{初值表k}…}

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

  • 下三角 i>=j;上三角i<=j;对称矩阵i=j

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

应用于某些有一定的位置逻辑的元素,如矩阵

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

  • 多种的排序法掌握并不精,虽然算法逻辑可以想出来,但是一旦用代码敲出来又是另一番光景
posted @ 2017-11-26 22:41  Soyam  阅读(207)  评论(3编辑  收藏  举报