C语言第三次博客作业---单层循环结构
一、PTA实验作业
题目1
1.实验代码
#include<stdio.h>
int 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<stdio.h>
#include<math.h>
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.实验代码
#include<stdio.h>
int 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.实验代码
#include<stdio.h>
int 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 big\n");}
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也会十分吃力!