一、PTA实验作业
题目1
1.实验代码
#includeint main(void){ int i,n; double man,women; char sex; scanf("%d\n",&n); for(i=1;i<=n;i++){ scanf("%c",&sex); if(sex=='M'){ scanf("%lf\n",&man); women=man/1.09; printf("%.2f\n",women); } if(sex=='F'){ scanf("%lf\n",&women); man=women*1.09; printf("%.2f\n",man); } } return 0;}
2 .设计思路
- 第一步:定义两个整型变量i,n;定义两个双精度浮点型变量woman,man;定义字符型变量sex。
- 第二步:进入循环结构,赋初值i=1,循环条件i<=N。
- 第三步:输入性别。进行条件判断。
- 第四步:如果输入性别为男,则woman=man/1.09;如果输入性别为女,则man=woman*1.09;并分别输出。
- 第五步:如果满足i<=N重复第三步。直到不满足循环条件,程序结束。
3.本题调试过程碰到问题及解决办法
问题1:定义woman与man为整型变量,造成结果错误。
改成双精度浮点型后正确。 问题2:if后面的语句没有用{}括起来,造成结果错误。 把if后所有语句用{}整合在一起。4.本题PTA提交列表
题目2
1.实验代码
#include#include int main(void){ int a,n,i,item,sum; scanf("%d %d",&a,&n); sum=0; item=0; for(i=1;i<=n;i++){ item=item*10+a; sum=sum+item; } printf("s = %d",sum); return 0;}
2 .设计思路
- 第一步:定义4个整型变量a,n,i,item,sum;
- 第二步:输入a,n;并对sum,item初赋值。
- 第三步:进入循环i赋值为1,循环条件为i小于等于n,且i每次循环递增一。
- 第四步:循环内容为item=item*10+a,并赋值sun=sum+item;
- 第五步:如果满足i<=n重复第四步。直到不满足循环条件,程序结束。
3.本题调试过程碰到问题及解决办法
问题:题目理解错误,把22弄成aa。 后面找出算式规律,利用item10+a=22,把代码打正确。
4.本题PTA提交列表
题目3
1.实验代码
#includeint main(void){ int n,i,number,a,b; scanf("%d",&n); scanf("%d",&number); for(i=1;i<=n;i++){ a=number; scanf("%d",&number); if(a<=number){ b=a; number=a;} else b=n; continue; } printf("min = %d",b); return 0;}
2 .设计思路
- 第一步:定义五个整型变量n,i,number,a,b;
- 第二步:输入数据个数n和第一个数据number。
- 第三步:进入循环i赋初值1,循环条件i小于等于n,i每次循环递增一。将第一个数据number赋值给a。
- 第四步:继续输入number,如果a小于此时的number,将a赋值于b,number。
- 第五步:若num等于n,即为最后一次循环,则再次利用if语句判断min与最后一个数的大小。
- 第六步:否则继续读入下一个数据。并利用if语句判断min,number的大小关系
- 第七步:若min大于等于number,赋值min等于number.
- 第八步:否则,min值不变继续读入下一个数据。
- 第九步:重复第四五六七步骤。直到num大于n时结束循环。
第十步:输出最小值。
3.本题调试过程碰到问题及解决办法
问题1:
无法编译 解决方法:
不断调试,找到了错误。
4.本题PTA提交列表
题目4
1.实验代码
#includeint main(void){ int count=0,a,b,number; scanf("%d %d",&a,&b); do{ count++; scanf("%d\n",&number); if(number<0){ break;} else if(a number){ printf("Too small\n");} else break;} while(number>0); if(number>=0){ switch(count){ case 1 : printf("Bingo!"); break; case 2 : case 3 : printf("Lucky You!"); break; } } if(count>3&&count<=b){ printf("Good Guess");} else if(count>b){ printf("Game Over");} else if(number<0){ printf("Game Over"); } return 0;}
2 .设计思路
- 第一步:定义4个整型变量a,b,count,number。
- 第二步:输入随机数与规定次数。
- 第三步:利用do while循环,每次输入次数count累加一,if语句判断每次a与number的大小关系。
- 第四步:重复第三步,直至用户猜数小于0.结束循环。
- 第五步:利用if语句以及switch语句判断当用户猜数大于等于0时,输入次数分别为1,2,3时分别输出的语句。
- 第六步:利用if语句判断当输入次数大于3时的特殊情况。
3.本题调试过程碰到问题及解决办法
问题:
我每次输入一个值,就会输出一个答案 解决方法:它用的是do-while,因为次数未知,是系统自己规定。判断结果,直接输出。问题2:
4.本题PTA提交列表
二、截图本周题目集的PTA最后排名
三、本周学习总结
1.你学会了什么?
- 一、循环语句 1.while语句 ①功能:实现当型循环结构。 ②形式:while(表达式){ 循环体 } ③特点:先判断后执行。 ④举例:(累加和问题)编程计算整数1~100的和。 2.do-while语句 ①功能:实现直到型循环结构。 ②形式:do{ 循环体} while(表达式); //注意最后的分号 ③特点:先执行后判断 3.for语句 ①功能:实现当型循环结构。 ②形式:for(表达式1;表达式2;表达式3){ 循环体} ③特点:先判断后执行;使用频率最高
- 二、break和continue语句 1.break语句强制结束循环,可与if语句和switch语句配套使用。 2.continue语句是跳过后面的语句继续循环,它只能用于循环语句。
2.本周的内容你还不会什么?
- 1.循环嵌套并不熟练,不会运用。
- 2.不会运用调试找到问题,碰见代码错误,应对方法几乎没有。
- 3.不会灵活运用continue和break语句。
3.你碰到什么困难,打算如何解决?
感觉很多知识都是学会了,但是不会运用。学了循环忘了分支结构。很多题目做错了不会运用调试找到问题,所以题目错了就是错了。不过相对于上周起码会调试了,只是不知道运用调试找到代码错误,下周会在这方面下功夫。
四、上机考试总结
上机考试之所以没有时间写完,除了平时练习量不够,最重要的是态度问题。没有把该记下来的东西记住。就是因为第一题记不住公式,脑子一直在回忆绝对值与log的数学函数怎么用C语言表达,直到老师提醒才写完第一题。而其他题目能够独立完成。但是最后一题还没写完代码,时间就不够了。回去写了一下最后一题,发现没有想象的简单,每次都是编译成功,但是结果都是错的,自己调试能力又很薄弱,一直找不到问题所在。后面记着老师在上机考试时提醒过空格也是字符,才知道越来空格把自己定义的字符替代了,所以结果一直都是错的。 通过这次上机考试,认识到自己的不足,以及与其他同学的差距。自己也在反思,都是一起学习C语言,起跑线也一样,之所以被拉开差距是因为自己对于C语言的重视程度不够。如果一开始基础都没学好,那学习java也会十分吃力!