C作业--数据类型
一、PTA实验作业
题目1:7-4 打印菱形图案
-
本题PTA提交列表
-
设计思路
声明一个输出函数
int n;
输入n的值
调用函数
定义函数
{
int i,j;
先打印上半部分
for i=1 to (n+1)/2
{
for j=0 to (n+1)/2-i 输出两个空格,j自增
for j=1 to 2i-1 输出一个星号一个空格,j自增
换行
i自增
}
再打印下半部分
for i=(n+1)/2 to i=0
{
for j=0 to (n+1)/2-i 输出两个空格,j自增
for j=1 to 2i-1 输出一个星号一个空格,j自增
换行
i自减
}
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
刚开始我先用单个空格去和行数i找关系,死活找不到,后来就把两个空格放在一起,就发现了与i的函数关系,就好输出了
题目2:7-6 掉入陷阱的数字
-
本题PTA提交列表
-
设计思路
声明输出函数
int N
输入N
调用函数
定义函数
{
int i=1,x=-1,sun x存上一个自然数,sum放各个位数和
while x不等于n进入循环
{
x=n;sum=0
while n不等于0进入循环
{
sum=sum+n%10;
n=n/10;
}算出的sum为各个位数之和
n=sum*3+1算出新自然数
输出i,n的值
i自增
}
}
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
本题基本没什么问题
题目3:7-9 切分表达式——写个tokenizer吧
-
本题PTA提交列表
-
设计思路
int n,flag=0,flag用来判断是否为首位
char c f1 放前一位f2放再前一位
do{
输入c的值
if c是回车,跳出循环
f2=c
if c是数字
{
输出c
do{
输入c,若c是数字或者小数点,输出c
}while c是数字或者小数点
换行
flag自增
}
if(是负数或者首位数带正负号)flag自增,输出c
else 输出c,换行
f1=c
while c不为回车
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
第一次我把字符型数字转换成整型输出
后来发现小数输不出来,然后就换了一种思路,直接一个一个输,然后判断换不换行,最后一个就是首个数字带正负号的问题,我用flag来判断是否为首位数字,然后判断换不换行
三、本周学习总结
1.你学会了什么?
1.1 一维数组如何定义、初始化?
类型名 数组名 [数组长度]={初值表}
1.2 一维数组在内存中结构?可画图说明。数组名表示什么?
数组名是一个地址常量,存放数组内存空间的首地址
1.3 为什么用数组?
表达简洁可读性好,便于使用循环结构
1.4 介绍选择法、冒泡法、直接插入排序如何排序?伪代码展示.
1.5 介绍什么是二分查找法?它和顺序查找法区别?
在有序数列中,二分法的效率要高于顺序查找
1.6 二维数组如何定义、初始化?
类型名 数组名 [行长度] [列长度] = {{初值表0},…,{初值表k}…}
1.7 矩阵转置怎么实现?方阵中:下三角、上三角、对称矩阵的行标i列标j的关系?请说明。
1.8 二维数组一般应用在哪里?
如果这些元素有一定的位置逻辑,如矩阵,就用二维数组
2.本周的内容,你还不会什么?
对于矩阵的转置了解还是不是很透彻还有位运算符号的运用还搞不懂,像 ^ ,还有他们的优先级还弄不懂