C语言博客作业--数据类型
一、PTA实验作业
题目1.掉入陷阱的数字
1.本题PTA提交列表
2.设计思路
1.定义整形变量n,result,i
2.输入数据n
3.进入循环,没有结束条件
4.把函数返回的值赋值给result
5.按照格式输出i和result
6.判断如果n==result,跳出循环
7.把result的值赋值给n,开始下一次循环
8.函数中,定义sum=0
9.取n各位上的数,相加
10.返回sum*3+1
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
刚开始选择把所有代码放在一起写,然后发现错误一堆,最后重新写了一遍。用函数的话条理清晰,一次就过了。
题目2.判断合法标识符
1.本题PTA提交列表
2.设计思路
1.定义整形变量repeat,flag,字符变量op
2.输入循环次数repeat
3.当repeat为真时进入循环
4.输入字符op
5.当第一个字符在a-z,A-Z或者_时进入判断语句
6.flag=1表示是合法变量
7.当op不读入回车时进入循环
8.如果为合法字符,继续循环,不然则让flag=0
9.如果flag==1,输出yes,不然输出No
10.继第5步,如果不进入判断语句,则直接输出No
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
之前提交的时候发现运行超时,无法结束
后来发现没有让repeat起到作用,于是让repeat--来解决
题目3.简单计算器
1.本题PTA提交列表
2.设计思路
1.定义x,y,res,字符变量op
2.输入第一个操作数x,并让x赋值给res
3.输入字符表示运算符
4.如果op不得到=,则进入循环
5.输入操作数y
6.如果分母为0或者是非法运算符,则输出ERROR并直接清空内存
7.如果op得到+,则让x+y赋值给res
8.如果op得到-,则让x-y赋值给res
9.如果op得到/,则让x/y赋值给res
10.如果op得到,则让xy赋值给res
11.让res赋值给x,输入下一个运算符,并进行下一次循环
12.输出res
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
提交PTA的时候,总是有一个得分点没有拿到就是那个最小表达式,后来发现如果就一个操作数,没有运算符的话,就一直=0只需要加上一个res=x在进入循环前就行了
二、截图本周题目集的PTA最后排名。
三、本周学习总结
1.你学会了什么
1.1一维数组如何定义、初始化?
定义:数组类型 数组名[数组长度];数组长度是一个常量
初始化:类型名 数组名 [数组长度]={初值表},例如inta a[10]={1,2,3,4,5,6,7,8,9,10};特别的,静态存储的数组如果没有初始化,系统自动给所有的数组元素赋0
1.2一维数组在内存中结构?可画图说明。数组名表示什么?
线性结构,数组名表示一个变量,单独用的话表示该数组的首位地址
1.3为什么用数组?
简单整洁,可以循环利用,可以把各个数组都存储起来
1.4介绍选择法、冒泡法、直接插入排序如何排序?伪代码展示.
选择法:
1.int a[n];//先给数组赋值,数组长度为n
2.for(k=0;k<n-1;k++) index=k;最小值下标为k循环第三步
3.for(i=k++;i<n;i++)循环第四步
4.如果a[i]小于最小值,则最小值与下标为k的值交换
5.输出数组
冒泡法:两两比较待排序的数,发现两个次序相反即进行交换,直到没有反序为止。
1.定义变量int a[10],i,j,k
2.for(i=0;i<10;i++) 依次输入数据存入数组
3.for(i=0;i<9;i++) 循环第四步
4.for(j=0;j<10-i;j++)循环
5.if(a[j]>a[j+1]) 则交换这两个数即k=a[j];a[j]=a[j+1];a[j+1]=k;
6.for(i=0;i<10;i++) 依次输出a[10]中每个数
直接插入法:
1.先给数组赋值,n为数组长度
2.for(k=0;k<n-1;k++) index=k;最小值下标为k循环第三步
3.for(i=k++;i<n;i++)循环第四步
4.如果a[i]小于最小值,则最小值与下标为k的值交换
5.输出数组
1.5介绍什么是二分查找法?它和顺序查找法区别?
二分法:
1.确定该区间的中点位置
2.将待查的K值与a[mid]比较
3.若相等,则查找成功
4.若a[mid]>K,则新的查找区间是a[1-(mid-1)]
5.若a[mid]<K,则新的查找区间是a[(mid+1)-n]
顺序查找:从表的一端开始,顺序扫描线性表,依次将扫描到的结点关键宇和给定值K相比较。若当前扫描到的结点关键字与K相等,则查找成功;若扫描结束后,仍未找到关键字等于K的结点,则查找失败。
区别:当查找数列是有序的话,使用二分查找法可以极大的减少搜索时间,提高效率;顺序查找法可以查找无规律的数列,但是需要耗费大量的时间和内存逐个搜索关键词。
1.6二维数组如何定义、初始化?
二维数组的定义:类型名 数组名[行长度][列长度];
初始化:类型名 数组名[行长度][列长度]={{初值表0},...,{初值表k},...};
二维数组的初始化也可以只针对部分元素;
顺序赋初值:根据数组元素在内存中的存放顺序,把初值表中的数据依次赋给元素,如果只对部分元素赋初值,要注意初值表中数据的书写顺序;
二维数组初始化时,如果对全部元素都赋了初值,或分行赋初值时,在初值表中列出了全部行,就可以省略行长度
1.7矩阵转置怎么实现?方阵中:下三角、上三角、对称矩阵的行标i列标j的关系?请说明。
矩阵转置:定义数组a[i][j],那么数组b[j][i]就是数组a[i][j]的转置矩阵;
下三角:i>=j
上三角:i<=j
对称矩阵:i=j
1.8二维数组一般应用在哪里?
二维表和矩阵
2.本周的内容,你还不会什么
对于二维数则的了解还不是很透彻,以及对数组的定义有多种形式有点不了解,要多去学习