C语言博客作业--数据类型
一、PTA实验作业
题目1:题目名称7-2 区位码输入法
1. 本题PTA提交列表
2. 设计思路
- 1.定义number作为输入的数字,number1,number2,number3,number4分别表示每一位,number6表示区码,number5表示位码
- 2.输入number
- 3.分别计算出每一位:number4=number%10;number3=number/10%10;number2=number/100%10;number1=number/1000;
- 4.计算区码:number5=number3*10+number4+160;
- 5.计算位码:number6=number1*10+number2+160;
- 6.输出区码
- 7.输出位码
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 1.忘记在scanf语句中加入&导致devc一直停止运行,无法调试,答案错误
- 2.如下图。换了一种计算区码和位码的方法后,明明在devc调试出来的值都是自己想要的,但是结果还是不对,现在还没弄懂,尝试中
number1和number2的值都正确,输出就是不对,,,
题目2:7-4 打印菱形图案
1. 本题PTA提交列表
2. 设计思路
- 1.定义整型变量n表示菱形高度,i,j,k为循环变量
- 2.输入高度n
- 3.for(i=1;i<=n;i+=2),3-6步输出上半部分
- 4.for(j=1;j<=n-i时输出一个空格,j++(输出每行之前的空格)
- 5.for(k=1;k<=i时,每次输出一个,k++,(输出每行需要的)
- 6.每完成一行后换行
- 7.for(i=1;i<=n/2;i++)以下循环输出下半部分
- 8.for(j=1;j<=2*n时输出一个空格,j++(输出每行之前的空格)
- 9.for(k=1;k<=n-2i时,每次输出一个,k++,(输出每行需要的*)
- 10.每完成一行后换行
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
-
1.
i+=2才能使每循环一次i值加2;
循环语句不执行,直接跳到了return;通过尝试着调试解决问题 -
2.
循环条件设置错误,导致菱形的下半部分出错,后计算改正
题目三:7-7 发红包
1. 本题PTA提交列表
2. 设计思路
- 1.定义整型变量money表示输入的钱数,_100,_50,_20,_10,_5,_2,_1分别表示各种面额钞票所需要的数量
- 2.输入money
- 3.利用取余和取整计算各种面额钞票所需要的数量: _100=money/100;_50=money%100/50;_20=money%100%50/20;_10=money%100%50%20/10;_5=money%100%50%20%10/5; _2=money%100%50%20%10%5/2;_1=money%100%50%20%10%5%2;
-
- 输出:printf("100元:%3d张\n",_100);printf(" 50元:%3d张\n",_50);printf(" 20元:%3d张\n",_20);printf(" 10元:%3d张\n",_10);printf(" 5元:%3d张\n",_5); printf(" 2元:%3d张\n",_2);printf(" 1元:%3d张\n",_1);
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 1.开始变量名定义错误,c中标识符只能用字母数字或者下划线,而标识符的开头只能用字母或者下划线
- 2.忘记scanf语句了,没有输入,系统似乎自动赋值0,就一个监测点正确得一分
- 3.在取整和取余是计算上的失误和符号错误,后观察分析改正
二、截图本周题目集的PTA最后排名
三、本周学习总结
1.你学会了什么?
1.1 一维数组如何定义、初始化?
- 1.明确数组变量名,数组元素类型和数组大小
- 2.一般形式:类型名 数组名 [数组长度]
- 3.类似简单变量的初始化:类型名 数组名 [数组长度] = {初值表};
- 4.若静态数组没初始化,系统自动给所有数组元素赋值为零,但动态数组里的元素没初始化将被系统随机赋值
1.2 一维数组在内存中结构?可画图说明。数组名表示什么?
- 数组名是一个地址常量,存放数组内存空间的首地址
1.3 为什么用数组?
- 1.可以让一批相同类型的的变量使用同一个数组变量名,表达简洁
- 2.它可以存放数字,便于使用循环结构
1.4 介绍选择法、冒泡法、直接插入排序如何排序?伪代码展示.
- 选择法:
定义变量
输入n
for(i=0;i小于n;每循环一次i加一)
输入数据依次赋值给数组的n个元素
定义存放最小值的下标
在未排序的n个数中找到最小值,将它与上一步变量交换
存放最小值变量下标加一
不断重复上述三步
-
冒泡排序:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 -
直接插入排序:每步将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当位置,直到全部记录插入完毕为止。
1.5 介绍什么是二分查找法?它和顺序查找法区别?
- 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
- 顺序查找法是没有顺序进行排序,二分查找法是从顺序中不断比较,分割,舍弃。
1.6 二维数组如何定义、初始化?
- 1.类型名 数组名 [行长度] [列长度]
- 2.:分行赋初值:类型名 数组名 行长度 列长度 = { {初值表0},...{初值表k}...};
- 3.:顺序赋初值:类型名 数组名 行长度 列长度 =
1.7 矩阵转置怎么实现?方阵中:下三角、上三角、对称矩阵的行标i列标j的关系?请说明。
- 1.设置遍历上三角阵的循环,再定义一个变量,将a[i][j]的值赋给那个变量,再将a[j][i]的值赋给a[i][j],再将变量的值赋给a[j][i]即可
- 2.下三角:i>=j;上三角:i<=j;对称矩阵:
1.8 二维数组一般应用在哪里?
- 二维数组主要用于表示二维表和矩阵
2.本周的内容,你还不会什么?
- 1.伪代码不知道该怎么写,要不写出来感觉就是文字叙述,要不然就像粘贴了代码再做注释
- 2.对称矩阵?
- 3.看到题目之后经常很茫然,对题目的分析总是不够到位,很多思路不会表达,也经常没有想法,多多努力吧
- 4.各种排序和选择的方法还不是很清楚,用起来也不熟练