您的位置:首页 > 编程语言 > C语言/C++

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

2017-11-25 23:29 537 查看

一、PTA实验作业

题目1: 区位码输入法

1. 本题PTA提交列表



2. 设计思路

定义变量row,bit,number;
定义字符型变量r,p;
输入number
取出后两位数bit=number%100;
取出前两位数row=number/100
r=row+160;b=bit+160;
putchar(r);putchar(b);输出

3.代码截图



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

本题思路清晰,PTA提交一遍就过,并没有调试问题。

题目2:打印菱形图案

1. 本题PTA提交列表



2. 设计思路

定义变量n,i,j;
输入n;
for i=0  to    n/2
for j=1    to    n-1-2*i  输出空格  end
for j=1    to    1+2*i     输出*加空格  end
换行   end
for i=1   to    n/2
for j=1    to   2*i     输出空格   end
for j=1    to   n-2*i    输出*加空格   end
换行   end

3.代码截图



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

提交到PTA时提示格式错误,运行结果如下图,并没有发现什么问题;



根据经验,格式错误可能是空格的输出有些问题,于是把空格换成#号输出,结果如下图



发现第一列有空格,而题目是没有的,发现问题后改变相应的j起始值,消掉第一列的空格。

题目3:简单计算器

1. 本题PTA提交列表



2. 设计思路

main函数:

定义变量number1,number2,sum,字符型变量op

输入number1,并赋值给sum

while op不等于=

输入number2

if number2 == 0 && op == '/'

输出ERROR,结束程序

if op为四则运算符

如果是,调用函数operation,并赋值给number1

否则,输出ERROR,结束程序

end

输出sum

operation函数:

定义变量sum

switch(op)

op是+,
sum = number1 + number2
; break;

op是-,
sum = number1 - number2
; break;

op是*,
sum = number1 * number2
; break;

op是/,
sum = number1 / number2
; break;

返回sum的值

3.代码截图



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

提交前两次提示编译错误,随即就想到我scanf写成了scanf_s,因为那时我是用VS写这题的,不知道为什么VS提示我要用scanf_s输入;再次提交,结果如下图



于是我就一个一个调,当只输一个操作数时输出为0,于是我就把第一个操作数赋给sum,这样就解决了这个问题;分母为0时,输出ERROR后,只是通过break跳出了循环,还是会继续输出sum的值,于是把break换成return 0,直接结束循环,非法字符也是同样的问题。

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



三、本周学习总结

1.你学会了什么?

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

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

初始化:类型名 数组名 [数组长度]={初值表};初值表依次放数组的初值;初始化也可针对部分元素;静态数组如果没有初始化,系统会自动赋0。

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



数组名表示该数组所分配连续内存空间中第一个单元的地址,即首地址。

1.3 为什么用数组?

在程序中使用数组,可以让一批相同类型的变量使用同一个数组变量名,用下标来相互区分,表达简洁,可读性好,便于使用循环结构。

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

1.选择法:

定义变量i,index,k,n,temp;

输入n,定义数组a
,利用循环输入n个值,依次赋给数组a的每个元素

for k=0 to k<n-1

index=k;/存放最小值下标/

for i=k+1 to n

if a[i]小于a[index]

如果是,则index=i end

temp=a[index];a[index]=a[k],a[k]=temp最小元素与下标为k的元素互换 end

输出n个数组元素的值

2.冒泡法:

定义变量i,j,k,n

输入n,定义数组a
,利用循环输入n个值,依次赋给数组a的每个元素

for i=0 to n-1

for j=0 to n-i-1

if a[j]大于a[j+1]

互换a[j]和a[j+1]

end

输出n个数组元素的值

3.直接插入排序

定义变量i,j,k,n,temp

输入n,定义数组a
,利用循环输入n个值,依次赋给数组a的每个元素

for i=1 to n-1

for j=0 to i-1

if a[j]大于a[i] 跳出循环 end

if j不等于i-1

temp=a[i]//将比a[i]大的数据向后移

for k=j to i-1

a[k+1]=a[k] end

a[k+1]=temp//将a[i]放到正确位置上

end

输出n个数组元素的值

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

二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x.

区别:二分查找法只适用于有序的一组数,在查找时是折半查找;而顺序查找法也适用与无序的数组,把要查的的数和这一组数一个一个比较,从而查出所在位置。

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

定义:类型名 数组名 [行长度] [列长度]

初始化:类型名 数组名 [行长度] [列长度]={ {初值表0},···,{初值表k},···},也可顺序赋值;二维数组初始化也可针对部分元素

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

通过循环让矩阵的行列互换,交换a[i][j]和a[j][i];

下三角:i<=j 上三角:i>=j 对称矩阵:a[i][j]=a[j][i]

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

主要运用于表示二维表和矩阵等具有行和列的表示形式

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



这题我做的时候都看不懂到底是用来实现什么的,所以做错了,后来才发现原来是进制转换;



这题是因为太粗心大意了,都没看到C选项就选了D
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: