一、PTA实验作业
题目1
1.实验代码
int n,i;
double h; //h储存身高,n储存输入次数,i储存循环变量
char sex; //sex储存性别
scanf("%d",&n);
for(i=1;i<=n;i++){ //循环输入
scanf("\n%c%lf",&sex,&h);
if(sex=='M'){ //性别判断
h=h/1.09;
printf("%.2f\n",h);
}
else{
h=h*1.09;
printf("%.2f\n",h);
2 设计思路
- 1.定义整型变量n储存输入次数,浮型变量h储存身高,字符型变量sex储存性别
- 2 输入输入次数
- 3 输入性别和身高,i=1
- 4 判断性别,若为M,h=h/1.09,输出身高保留两位小数
- 5 i=i+1
- 6 重复步骤3,直到i大于n
3.本题调试过程碰到问题及解决办法
- 1.编译错误
![1232019-20171101145337248-1738036273.png](https://i-blog.csdnimg.cn/blog_migrate/ddf0b15e33e6e39629f4c221692ffbf3.png)
本来是想定义一个hi的变量来保存不同输入的输出身高,后面发现没有必要,在c语言中也是不可行的。 - 2.答案错误
![1232019-20171101145838576-1043594987.png](https://i-blog.csdnimg.cn/blog_migrate/4ef36508be8dc853e7bd2211f814d33c.png)
不小心将printf语句放在for循环中,导致错误,经过调试后发现printf语句多次运行,改正错误。
4.本题PTA提交列表
![1232019-20171031230642420-495806158.png](https://i-blog.csdnimg.cn/blog_migrate/30ab33a9898351301fd5f81826a2c467.png)
题目2
1.实验代码
int a,i,n,sum;
scanf("%d%d",&a,&n);
sum=0;
for(i=1;i<=n;i++){
sum=a*i*pow(10,n-i)+sum; //循环加a串数列每一位的和来得出结果
}
printf("s = %d",sum);
2 设计思路
- 1.定义整形变量a储存正整数,i储存循环变量,n储存a的最大个数,sum储存字符串之和.
- 2.输入a,和最大位数n,sum=0,i=1
- 3.sum=aipow(10,n-i)+sum;
- 4.i=i+1
- 5.重复步骤3直到i大于n
- 6.输出sum
3.本题调试过程碰到问题及解决办法
4.本题PTA提交列表
![1232019-20171101151136513-1011560854.png](https://i-blog.csdnimg.cn/blog_migrate/fff0ee7d8194640b6bb0200b225f97c2.png)
题目3
1.实验代码
int number1,number2,n,i,min; //number1,number2存放输入数,min存放最小值
scanf("%d",&n);
scanf("%d",&number1);
min=number1;
for(i=1;i<n;i++){
scanf("%d",&number2);
if(number2<number1&&number2<=min){ //比较number1,number2,min的关系,使min等于三数的最小值
min=number2;
}
else if(number2>=number1&&number1<=min){
min=number1;
}
number1=number2; //将number2的数存放number1,以便让number2存下个数
}
printf("min = %d\n",min);
2 设计思路
- 1.定义整形变量number1,number2存放输入数,min存放最小值,n存放输入个数
- 2.输入n和number1
- 3.min=number1;,i=1
- 4.输入number2,若number2<number1且number2<=min,min=number2;否则如果number2>=number1且number1<=min,min=number1;
- 5.number1=number2
- 6.i++
- 7.重复步骤4直到i大于n
3.本题调试过程碰到问题及解决办法
- 答案错误,通过变量监测找出问题
![1232019-20171101230048216-674129232.png](https://i-blog.csdnimg.cn/blog_migrate/754f4eab1c1ae4310f8465f449c1552d.png)
![1232019-20171101230058248-1203649421.png](https://i-blog.csdnimg.cn/blog_migrate/66c6e6bb1f03514b219733b28e4ac71e.png)
![1232019-20171101230108857-1495130521.png](https://i-blog.csdnimg.cn/blog_migrate/b28438ccfde23dc6afeea476824ac2c5.png)
![1232019-20171101230113138-1509675711.png](https://i-blog.csdnimg.cn/blog_migrate/cb340c7ab268c044681ae087bfbd1545.png)
![1232019-20171101230118951-1409090125.png](https://i-blog.csdnimg.cn/blog_migrate/55bc4ea0b78386c6c7bae5806843c824.png)
至此发现问题,由于number1,number2没有和min比较产生问题
4.本题PTA提交列表
![1232019-20171101230348701-477625888.png](https://i-blog.csdnimg.cn/blog_migrate/c66939e9b27b13403cdfc4fe6efca3ed.png)
题目4
1.实验代码
int your,mine,right,times,n,i; //your存放猜的数,mine存放随机数,right存放正确次数,time存放猜的次数
scanf("%d%d",&mine,&n);
times=right=0; ///变量初始化
for(i=1;i<=n;i++){
scanf("%d",&your);
if(your<0){
printf("Game Over\n");
return 0;
}
else if(your>mine){
printf("Too big\n");
times++;
}
else if(your<mine){
printf("Too small\n");
times++;
}
else{
times++;
right++;
break;
}
}
if(times==1&&right==1){ //判断time和right的关系并输出相应语句
printf("Bingo!\n");
}
else if(times<=3&&right==1){
printf("Lucky You!\n");
}
else if(right==0){
printf("Game Over");
}
else{
printf("Good Guess!");
}
2 设计思路
- 1.定义整形变量your存放猜的数,mine存放随机数,right存放正确次数,time存放猜的次数
- 2.输入随机数your和可猜的次数n
- 3.输入猜的数mine
- 4.若mine<0结束程序,若your>mine,输出Too big,time++,若mine>your,time++,输出Too small,否则time++,right++,跳出循环
- 5.i++
- 6重复步骤3直到i>n
- 7.若times==1且right==1,输出Bingo!若times<=3且right==1,输出Lucky You!,若right==0,输出Game Over,否则输出Good Guess!
3.本题调试过程碰到问题及解决办法
- 1
没有想到用time和right储存输入次数和正确次数,导致思路很乱,后来看了书上例题才知道
4.本题PTA提交列表
![1232019-20171101155412060-1428898362.png](https://i-blog.csdnimg.cn/blog_migrate/775b98be8d9099a39d4a1004e8d35022.png)
二、截图本周题目集的PTA最后排名
![1232019-20171101230542498-1843712869.png](https://i-blog.csdnimg.cn/blog_migrate/392c1f8463df12828cfa27bd8ec1297b.png)
三、本周学习总结
1.你学会了什么?
- 1.学会了while语句,for语句,do while语句,主要区别是当循环次数为0时,do while执行一次,其他语句不执行
- 2.还学会了嵌套循环,外循环执行一次内循环执行一轮
- 3.还懂得了用printf语句来调试程序
2.本周的内容,你还不会什么?
- 嵌套循环很难,掌握不容易,每道题都要想很久,还需要多加练习
- 对于三种循环语句,只熟悉for语句,对其他两个语句不够熟练
- 用监测变量的方法来调试程序不够熟
3.分支结构上机考试总结
- 忘记了fabs与abs的区别导致第一题做错,从这次考试中我知道我对书本内容不够熟悉,有空应该多回归课本,不应该忽略课本的知识,以后更应该多调试程序,增加熟练度,对自己的成绩不是很满意吧,下次努力吧