C语⾔作业--数据类型
⼀、PTA实验作业
题⽬1:7-4 打印菱形图案
1. 本题PTA提交列表
2. 设计思路
定义整型变量 n,i,space,m,q,其中n表⽰⾏数,space表⽰空格
输⼊⼀个奇数n
菱形上半部分
space=1
满⾜space<=(n+1)/2-i
space递增,实现循环输出空格
m=1
满⾜m<=2*i-1
m递增,实现循环输出星号后跟空格
循环结束后换⾏
菱形下半部分
space=1
满⾜space<=i-(n+1)/2
space递增,循环输出空格
q=1
满⾜q<=2*n-2*i+1
q递增,实现循环输出星号后跟空格
循环结束后换⾏
i递增,直到不满⾜i<=n
return 0;
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
主要就格式问题,明明不管怎么输都是正确的图案,提交⼀直显⽰是格式错误。。。包括换⾏,包括空格都有考虑进去,但是图案是越改越离奇。就从代码开始分析,发现利⽤if语句判断后实现循环结束换⾏完全是多余的,转换成循环体外加⼀个输出换⾏就可以实现我们想要的效果了。删掉后,提交显⽰正确。
题⽬2:7-6 掉⼊陷阱的数字
1.本题PTA提交列表
2.设计思路
函数声明int fun(int a);
int i,N0,其中N0表⽰第⼀个数
输⼊N0
int a[3000];
把N0的值赋给a数组第⼀个元素
调⽤函数计算 fun(N0),并将它赋值给a[i]
i=2;
满⾜要求a[i-1]!=a[i-2],输出⾏数i-1和a[i=1]
不满⾜条件,执⾏a[i]=fun(a[i-1]),i递增
函数int fun(int a)
定义变量ones表⽰末尾数字,sum表⽰各数字和,result表⽰计算结果
sum=0;
当a不等于0时
计算末尾数字ones=a%10;
去除末尾数字a=a/10;
各数字和sum=sum+ones;
计算结果result=sum*3+1;
返回计算结果result
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
这⼀题没遇到什么问题,主要就是利⽤了刚学的数组,不太熟悉,就写下怎么写的吧
这⼀题阅读完题⽬后发现下标很重要,⽽数组特别适合⽤来表⽰下标,于是选择了数组。另外计算result的过程有多次,选择利⽤函数,这样通过引⽤函数来进⾏计算代码⽐较清晰
题⽬3:7-10 简单计算器
1.本题PTA提交列表
2.设计思路
定义俩个整型变量 m,n;
定义整型变量 result表⽰是计算结果
定义字符型变量op
scanf("%d",&m);怎么定义二维数组c语言
result=m;
读⼊的字符不是等号时
scanf("%d",&n);
如果字符为 '+':result=m+n;跳出循环
如果字符为'-':result=m-n;跳出循环
如果字符为 '*':result=m*n;跳出循环
如果字符为 '/':
如果n不为0
计算result=m/n;
如果n为0,输出ERROR,程序结束
如果字符不是加减乘除 printf("ERROR"),程序结束
m=result
输出result
程序结束
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
问题:没有判断输⼊m后输⼊的字符是= 这种情况
解决办法:增加if语句,判断输⼊字符是=,但是运⾏发现这个问题是解决了,但是正常输⼊,结果都是ERROR,经过调试发现直接跳到default这个分⽀,输出ERROR.。可以将m赋值给result,就可以实现输出类似1=1这种情况
⼆、截图本周题⽬集的PTA最后排名
三、本周学习总结
1.你学会了什么?
1.1 ⼀维数组如何定义、初始化?
⼀维数组定义⼀般形式:类型名数组名 [数组长度] 如 int a[10]
(1)类型名指定数组中每个元素的类型
(2)数组名是数组变量的名称,是⼀个合法的标识符
(3)数组长度是⼀个整型常量表达式,设定数组⼤⼩
初始化
数组中有若⼲元素,可以在{}中给出各数组初值,各初值之间⽤逗号隔开,把{}中初值依次赋值给各元素
注意:初始化的数据个数不能超过数组元素的个数,否则出错,如 int a[4]={1,2,3,4,5}是错的
1.2 ⼀维数组在内存中结构?可画图说明。数组名表⽰什么?
数组名是⼀个地址常量,存放数组内存空间的⾸地址
1.3 为什么⽤数组?
在程序中使⽤数组,可以让⼀批相同类型的变量使⽤同⼀个数组变量名,⽤下标来相互区分。表达简洁,可读性好,便于使⽤循环结构
1.4 介绍选择法、冒泡法、直接插⼊排序如何排序?伪代码展⽰.
(1)选择法排序
定义整型变量i,index,k,n,temp,index存放最⼩值所在的下标
定义数组a[10]
输⼊n
i=0
当i<n时,输⼊数, i递增
将输⼊的数依次赋给数组a的n个元素
k=0;k<n-1,⽤index来存放最⼩值所在下标
判断数组a中元素与a[index]⼤⼩
如果a[i]<a[index],index=i,最⼩元素与下标为k的元素交换
temp=a[index];
a[index]=a[k];
a[k]=temp;
输出排好后的n 个数组元素的值
(2)冒泡法排序
定义数组a[n]
定义整型变量i,j,temp,n
i=0
满⾜i<=n-1时
输⼊数
i++
将这组数据依次赋值给a[n]
判断相邻俩个数据,如果a[j]>a[j+1]
temp=a[j]
a[j]=a[j+1]
a[j+1]=temp
像这样的过程要重复n=q-i次
循环结束后输出新数组
(3)直接插⼊法排序
定义数组a[n]
定义整型变量i,j,k,temp
i=0;
满⾜i<=n-1时
输⼊数
i=0;
temp表⽰最⼩值的⾓标
判断数据a[j]和temp的⼤⼩
如果temp<a[j],a[j]=temp
通过a[k+1]=a[k]实现插⼊位置后的数据整体往右挪
重复n -1次,输出新数组
1.5 介绍什么是⼆分查法?它和顺序查法区别?
对⼀组有序的数字中进⾏查,传递相应的数据,⽐较与元数据相同的数据,查到后返回对应数组下标
区别:顺序查的特点是从第⼀个元素开始⼀个⼀个往下查,如果和⽬标⼀致的元素,则查成功,如果到最后⼀个元素仍没有⽬标元素,则查失败。⽽⼆分查就是从表的中间查⽬标元素,如果到⼀致元素,这查成功,如果中间元素⽐⽬标元素⼩,仍⽤⼆分查表的后半部分,反之,中间元素⽐⽬标元素⼤,则查表的前半部分。
1.6 ⼆维数组如何定义、初始化?
⼆维数组定义形式:类型名数组名 [⾏长度][列长度]
初始化:
(1)分⾏赋初值
⼀般形式:类型名数组名 [⾏长度][列长度]={{初值表0},...,{{初值表k},...}
把初值表中的K中所有数据依次赋给第k⾏的元素
(2)顺序赋值法
⼀般形式:类型名数组名 [⾏长度][列长度] = {初值表}
根据数组元素在内存中的存放顺序,把初值表中的数据依次赋给元素
1.7 矩阵转置怎么实现?⽅阵中:下三⾓、上三⾓、对称矩阵的⾏标i列标j的关系?请说明。
⾏下标与列下标互换。下三⾓:i<=j 上三⾓:i>=j 对称矩阵: a[i][j]=a[j][i]
1.8 ⼆维数组⼀般应⽤在哪⾥?
(1)矩阵的转置
(2)求最⼤元素值及其⾏列号
2.本周的内容,你还不会什么?
开始接触伪代码,明⽩代码意思,但是不熟悉伪代码要如何表达,写的很混乱,尤其是像冒泡,插⼊,顺序排序这种,看上⾯的就知道是个什么状态了

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。