C语言博客作业

时间:2022-08-12 21:58:55

一、PTA实验作业

题目1:7-3 倒顺数字串

1. 本题PTA提交列表

C语言博客作业

2. 设计思路

定义整型变量n存放输入的数字,i、j用于循环
输入一个数值n
for i=1
  输出i的值,i=i+1
  如果n!=1,输出空格
  当i>n时,结束循环
for j=n-1
  输出j的值,j=j-1
  如果j!=n-1,输出空格
  当j<=0时,结束循环

3.代码截图

C语言博客作业

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

最开始忽略了空格的问题,输出最后一个数的时候,它的后面还有一个空格,与题目要求不符合

题目2:7-6 掉入陷阱的数字

1. 本题PTA提交列表

C语言博客作业

2. 设计思路

定义整型变量n存放输入的自然数,n2存放新产生的自然数,sum=0(sum存放各位数字相加之和),count=0(count存放n掉入陷阱的步数),a存放n的值
输入n的值
do
  如果count!=0,将n2的值赋值给n
  将n的值赋值给a
  do
   求sum的值
   n=n/10
  当n==0时,结束循环
  步数count=count+1
  求出新的自然数n2
  输出count和n2的值
  如果上一个数a跟n2不相等,输出\n
  sum=0为下一次循环做准备
当a==n2时,结束循环

3.代码截图

C语言博客作业

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

刚开始写完代码,运行的时候发现程序进入了死循环出不来,不能在4的时候就结束程序C语言博客作业,用dev c调试时,发现自己的条件用错了C语言博客作业,这里的n应该要改成a,因为n的值在前面改变了,等于0,所以永远也不会等于n2的值

题目3:7-10 简单计算器

1. 本题PTA提交列表

C语言博客作业

2. 设计思路

定义整型变量n1,n2,result=0,flag=0(flag=0说明除法分母为0或有非法运算符),count=0
定义字符型变量op
输入第一个操作数n1和第一个字符op
当op!='='时,
 如果count!=0,n的值赋值给result,输入另一个op
switch(op)
 输入n2
 根据不同的op,做出相应的运算,flag=1,count=count+1。如果op为‘/’,并且n2为0时,flag=0
如果op=='='并且count==0时,
result=n1的值,flag=1
如果flag==1
输出result的值
否则输出ERROR

3.代码截图

C语言博客作业

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

C语言博客作业
C语言博客作业
输出最后结果时的判断条件错误,导致出现了第二个图的情况,输出ERROR的情况应该是存在非法字符和除法时n2为0时的时候,而不是n2等于0的时候都输出ERROR

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

C语言博客作业

三、本周学习总结

1.你学会了什么?

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

定义

一维数组定义的一般形式:
类型名 数组名 [数组长度];

   int a[10]
初始化

1.在定义数组时,可以对数组元素赋初值

   int a[10]={1,2,3,4,5,6,7,8,9,10};

2.也可以只针对部分元素

  int a[10]={1,2,3,}

3.如果对全部元素都赋了初值,就可以省略数组长度。如果只对部分元素初始化,数组长度是不能省略的。

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

C语言博客作业
数组名表示该数组所分配连续内存空间中第一个单元的地址,即首地址。数组名是一个地址常量,不允许修改

1.3 为什么用数组?

可以让同一批相同类型的变量使用同一个数组变量名,表达简洁,可读性好,便于使用循环结构
使用数组会让程序变的简单,而且避免了定义多个变量的麻烦。

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

选择法:

  • 定义整型变量i,index,k,n,temp
  • 定义数组a[10]
  • 输入n的值,输入这n个数
  • for i=0
  •   将输入的数依次赋值给数组a的元素
  • i>n时结束循环
  • for k=0
  •   最小值的小标index=k
  •  for i=k+1
  •   如果a[i]<a[index],index=i;i=i+1
  •  当i>=n时,结束循环
  •  最小元素与下标为k的元素交换,k=k+1
  • 当k>=n-1时,结束循环
  • for i=0
  • 输出经过排序后的数字a[i],i=i+1
  • 当i>=n时,结束循环

冒泡法:

-定义整型变量i,k
-定义数组

  • 输入n的值,输入这n个数
  • for i=0
  •   将输入的数依次赋值给数组a的元素
  • i>n时结束循环
  • for i=n-1
  •  for k=0
  •   如果a[k]>a[k+1],将两个的数值交换
  •   k=k+1
  •  当k>n时,结束循环
  • i=i-1
  • 当i<0时,结束循环
  • for i=0
  •  输出经过排序后的数字a[i],
  •  i=i+1
  • 当i>=n时,结束循环

直接插入法:

  • 输入n个数
  • for i=1,i<n,i++
  • a[i]跟前面的数比较大小,如果小于前面的数,继续往前比较,直到找到一个比它小的数,插在这个数后面
  • 重复上面的步骤,直到i大于等于n

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

    一组数据按顺序排列,先算出它的中间数,跟所要查找的数比较一下大小,看是在中间数的左边还是右边,进入相应的区间,重复以上的步骤
    区别:当数据多时,二分查找法效率高,顺序查找法效率低
    二分查找法要求数据是有序的,而顺序查找法则没有这个要求

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

    定义

    二维数组的定义形式为:
    类型名 数组名 [行长度] [列长度]

     int a [3] [2];
    初始化

    1.全部赋值

     int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};

    2.部分赋值

      static int  b[4][3]={{1,2,3},{},{4,5};

    等价于

      static int b[4][3]={1,2,3,0,0,0,4,5};

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

    a[i][j]中的下标i、j互换一下成a[j][i]就可以实现转置
    下三角:i>=j
    上三角:i<=j
    对称矩阵:i==j

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

    主要用于表示二维表和矩阵

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

    数组该如何定义还不是很熟练,在还不知道数组长度的时候就定义数组
    对于各种符号的优先级还没记好,做题时需要翻书看,特别是^符号,老是会忘记这个符号是干嘛
    自己阅读程序的能力挺差的,考试的时候好几题错了