题目1:7-4 打印菱形图案
1. 本题PTA提交列表
2. 设计思路
1.定义变量i,j,k,n;且声明i为要打印的行数,j是控制输出打印空格和星星,n是菱形为菱形的高
2.输入n
3.i=1,j=1
4.先打印上半部分,第一行到n/2+1行,输出空格个数为n-2i+1,输出的个数为2i-1换行,i++
5.i=n/2,i--
6.打印下半部分,第n/2+2行到第n行,输出的空格个数为n+1-2i,输出的个数为2i-1换行,j++
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
刚开始的时候没有想到说可以分析菱形的上下部分来控制输出,所以写出了以下的代码
发现输出的空格都没有实现,后来改用老师的方法,先输出上半部分,再输出 下半部分
前面的空格公式错误,导致输出错误,后来重新推导出正确的公式后,输出正确
题目2:7-7 发红包
1. 本题PTA提交列表
2. 设计思路
1.定义数组 a[7]={100,50,20,10,5,2,1}存放纸币类型
2.定义数组b[7]={0}存放各类型纸币的张数
3.定义整型变量 i,n;
4.scanf("%d",&n);
5.for(i=0;i<7;i++){//i从0开始,循环七次
b[i]=n/a[i];//张数等于总金额除以纸币大小
n=n-a[i]*b[i];
6.printf("%3d元:%3d张
",a[i],b[i]);
7.结束算法
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
刚开始的时候以为这题和以前做得换硬币的题目相似,故写了以下代码
输不出结果,并且过程太过繁琐,所以想到调用数组
发现可以输出,但是没有右对齐,后来在网上查了资料,-%d表示左对齐,%d表示右对齐,但是提交后还是编译错误,仔细阅读题目后发现是要求个位数对齐,于是改为%3d,输出正确
题目三:
1. 本题PTA提交列表
2. 设计思路
定义函数 arithmetic( int value )
.主函数部分:1.定义第一个操作数 value1
2.输入这个操作数
3.调用函数求表达式的解
函数部分:1./定义第二个操作数value2,flag=1/flag用于判断是否为非法标识符以及除数为0的情况,
2.定义字符变量op
3.输入第二个操作数,字符
4.判断输入的字符是否为合法标识符
5.若输入的字符为=,则结束算法
6.若字符为+,则value1=value1+value2
7.若字符为-,则value1=value1-value2
8.若字符为,则value1=value1value2
9.若字符为/,且value2不等于0,则value1=value1/value2;若value2等于0,则flag=0
10.重复步骤3-9.直到不满足条件
11.判断flag的值,若flag=0,输出ERROR,否则输出value1
12.返回value1
13.结束算法
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
想的太过简单,思路还停留在题目四则运算的阶段,而题目要求的是先输入一个表达式
后来问了同学,可以调用函数来解决,可是提交后还是错误,后来发现在判断字符时忘了加“=”,
改过之后提交却还是部分正确,
二、截图本周题目集的PTA最后排名。
三、本周学习总结(3分)
1.你学会了什么?
1.1 一维数组如何定义、初始化?
一维数组定义的一般形式为:
类型名 数组名 [数组长度];
一维数组的初始化和简单变量的初始化一样,在定义数组时,也可以对数组元素赋初值,其一般形式为:
类型名 数组名 [数组长度] = {初值表},初值表中依次放着数组元素的初值
1.2 一维数组在内存中结构?可画图说明。数组名表示什么?
在定义数组之后,系统根据数组中元素的类型及个数在内存中分配了一段连续的存储单元用于存放数组中的各个元素,并对这些单元进行连续编号,即下标,以区分不同的单元,每个单元所需的字节数有数组定义时给定的类型来确定;数组名表示该数组中第一个单元的地址,即首地址
1.3 为什么用数组?
在程序中使用数组,可以让一批相同类型的变量使用同一个数组变量名,用下标来相互区分。它的优点是表达简洁,可读性好,便于使用循环
1.4 介绍选择法、冒泡法、直接插入排序如何排序?伪代码展示.
1.5 介绍什么是二分查找法?它和顺序查找法区别?
二分查找(又称为折半查找)是在有序序列中查找比较多的查找算法,基本思路:设有一个从小到大的序列,取中间的元素m进行比较,如果等于需要查找的元素x则返回元素m的下标,若x大于m则再从右边的区间查找,若x小于m则再从左边的区间查找,这样每次减少一半的查找范围。时间复杂度为O(lgn),查找速度相对顺序查找要快很多,但是查找的数据序列必须是有序序列(即数据是从小到大或从大到小排序的)。
区别:二分法是折半查找,而顺序查找则是历便数组的查找,对于数据较多时,二分法查找的效率更高
1.6 二维数组如何定义、初始化?
二维数组的定义形式为:
类型名 数组名 [行长度] [列长度]
二维数组的初始化方法有两种:
1.分行赋初值
类型名 数组名 [行长度] [列长度] = { {初值表0},...,{初值表k},...};把初值表k中的数据依次赋值给第k行的元素
1.7 矩阵转置怎么实现?方阵中:下三角、上三角、对称矩阵的行标i列标j的关系?请说明。
行列互换;方阵中下三角:i>=j
上三角:i<=j
对称矩阵:i=j
1.8 二维数组一般应用在哪里?
用来表示一个二维表中按行,列组织在一起的信息。为了唯一确定二维表中的一个元素,必须给出两个下标。按照习惯,第一个下标确定的是元素所在的行号,第二个列标确定元素所在的列号
2.本周的内容,你还不会什么?
对于数组的使用还不是很熟悉,还有二维数组还不是很理解,各个进制之间的转化还不是灵活的运用;
对于冒泡排序,选择排序还不是很理解
课堂派上的题目