C语言博客作业--一二维数组
一、PTA实验作业
题目1:7-4 简化的插入排序
-
本题PTA提交列表
-
设计思路
int a[10],赋初值为0
int n,x,i,t
输入n的值
输入数组a
输入x的值
a[n]=x 将要插入的数放在最后
for 0 to n-1
若这个数a[n]小于其中一个数,就交换他们的值
打印排序结果
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
这题没什么大问题,只要思路有了,就好做了,刚开始我没有把这个要插入的数放进数组,所以实现不了多次交换,后面把它放进去了就好做了
题目2:7-6 阅览室
- 本题PTA提交列表
- 设计思路
int n
int i,j,booknum,flag[1001]赋初值为0,t[1001],time=0计借阅时间,count=0,y放小时,x放分钟
char ch,space
for 0 to n-1
time=0
count=0
while(恒真)
{
输入书号,键号,时间
if书号为0,结束工作跳出循环
if键号为S,t[booknum-1]=y60+x;flag[booknum-1]=1,flag为1,表示为借阅状态
else
{ if flag[booknum-1]为1 flag[booknum-1]=0 ; flag重新为0,表示归还,为下一次输入准备 ; count自增 ; time=time+y60+x-t[booknum-1]算出总时间
}
if count 为0 输出0,0
else 输出借书次数count和平均阅读时间
}
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
开始不懂怎么计算借阅时间,请教了一下同学,就是把起点设在0点,然后把所有时间化成分钟相减就是借阅时间
还有一个郁闷的地方,就是键值的大小写,开始我打的是小写,找了半天没发现,后来仔细阅读了一下才看见
题目3:7-9 判断上三角矩阵
-
本题PTA提交列表
-
设计思路
int T,n,i,j,k,a[11][11],flag=0flag判断是否为上三角矩阵
输入T的值
for 1 to T
{
flag=0,每次循环将flag初始化为0
输入矩阵a
i for 0 to n-1
{ j for 0 to i
if a[i][j] 不等于0,flag=1,跳出循环
}
if flag等于0 输出YES
else 输出NO
}
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
这题主要问题是没有在每次循环开始时将flag重新变为0,导致后面循环出错,经过调试,发现后面flag值不变才意识到问题
二、截图本周题目集的PTA最后排名。
三、同学代码结对互评
1.互评同学名称:钟文杰
2.我的代码、互评同学代码截图
我的代码
钟文杰的代码
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?
首先,他的代码比我精简,总体设计的思路差不多,但我考虑的比他多一点,想到了首个数字的判定,而他就没有,不过他也有简练的地方,比如我多用了一个max来放出现最大次数,其实可以不用
四、本周学习总结
1.你学会了什么?
1.1 C中如何存储字符串?
使用字符数组存
1.2 字符串的结束标志是什么,为什么要结束标志?
\0 方便给定循环条件
1.3 字符串输入有哪几种方法?
scanf("%s",a);
gets(a)
for(i=0;i<10;i++)
scanf("%c",&a[i]);
while((a[i]=getchar())!='\n')i++;
1.4 数字字符怎么转整数,写个伪代码?
char c;
int n;
输入字符数字c
n = c-48
输出整型数字
1.5 16进制、二进制字符串如何转10进制?写伪代码?
char hexad[80]
int number
number=0
i for 0 to hexad[i]不等于\0
{ if hexad[i]是数字 number=number16+hexad[i]-48
else if hexad[i]是大写字母 number=number16+hexad[i]-65+10
else if hexad[i]是小写字母 number=number*16+hexad[i]-97+10
char two[80]
i for 0 to two[i]不等于\0
n=7
if n>=0
{
term=(two[i]-'0')*pow(2,n);
sum=sum+term;
}
n自减
2.本周的内容,你还不会什么?
pta上查验身份证那题有一个检查点不知道什么意思
还有删除字符串中的子串那题
附上代码
3.期中考试小结
3.1 你认为为什么没考好?
第一次 书面考试,有点不适应,还有慨念的东西背不熟,代码写得不熟练
3.2 罗列错题。
1.
审题没认真
2.
漏了一个等号,对界点的条件没搞清楚
3.改错题最后一个没改出来,n++要改为n=n+2,平常n++写习惯了,就把他略过去了
4.
复数怎么计算不会
delta=bb-4ac; re=-(double)b/(2a);
im=sqrt(fabs(delta))/(2*a); if (delta<0){
printf(" 有 两 个 不 同 复 根 x1=%.6lf+%.6lfi ,x2=%.6lf-%.6lfi \n",re,im,re,im);
3.3 下半学期要怎么调整C的学习?
磨刀不误砍柴功 ,我觉得要先把知识吃透,不然题目做起来很没有效率