C语言第三次博客作业---单层循环结构
一、PTA实验作业
题目1:最佳情侣身高差
1.实验代码
#include <stdio.h>
int main()
{
double high,High;//high为用户身高,High为情侣身高
int i,num;//num为用户数
char ch;
i=1;
scanf("%d",&num);
for(i=1;i<=num;i++){
ch=getchar();
ch=getchar();
scanf("%lf",&high);
switch(ch){
case 'M':High=high/1.09;
printf("%.2f\n",High);
break;
case 'F':High=high*1.09;
printf("%.2f\n",High);
break;
}
}
return 0;
}
2 设计思路
- 第一步:定义浮点型变量high为用户身高,High为情侣身高,整型变量i,num为输入用户数,定义字符型变量
- 第二步:输入用户数num
- 第三步:使用字符型变量ch=getchar,输入选择M或F
- 第四步:若输入M,High=high/1.09
- 第五步:若输入F,High=high*1.09
- 第六步:输出结果
3.本题调试过程碰到问题及解决办法
(1):一开始以为是像题目那样可以一次性输两个数据,后面感觉很奇怪,所以就先把自己的代码提交了,发现是正确的。
4.本题PTA提交列表
题目2: 特殊a串数列求和
1.实验代码
#include <stdio.h>
int main()
{
int a,n,i,s,x;//a为输入运算数字,n为输入数字的最大位数,s为和,x为a的初始数字
scanf("%d%d",&a,&n);
s=0;
x=a;
if(a<=9&&n<=9){
for(i=1;i<=n;i++){
s=s+a;
a=a*10+x;
}
}
printf("s = %d",s);
return 0;
}
2 设计思路
- 第一步:定义整型变量a,n,i,s,x
- 第二步:输入变量a,n
- 第三步:将s初始化为0,x初始化为a
- 第四步:for(i=1;i<=n;i++)
s=s+a
a=a*10+x - 第五步:输出s
3.本题调试过程碰到问题及解决办法
一开始看例子所给的a为2,随后一直将a=a*pow10+2带入,虽然根据所给的例子是对的,但对于其他情况却都是错的了
4.本题PTA提交列表
题目3: 找出最小值
1.实验代码
include <stdio.h>
int main()
{
int n,num,i,min;//n为数字个数,min为最小值,num为输入数字
scanf("%d",&n);
scanf("%d",&num);
min=num;
for(i=1;i<=n-1;i++){
scanf("%d",&num);
if(min<num){
min=min;
}
else{
min=num;
}
}
printf("min = %d",min);
return 0;
}
2 设计思路
- 第一步:定义整型变量n为给出正整数,num为给出整数,i,min为最小值
- 第二步:输入n和第一个整数num,将min初始化为num
- 第三步:scanf("%d",&num)
- 第四步:if(min<num),min=min;
- 第五步:else,min=num;
- 第六步:i=1;i++,当;i<=n-1返回第三步
- 第七步:输出min
3.本题调试过程碰到问题及解决办法
在调试中没有发现具体哪里错误了,因为根据例子的情况都是正确的,后面经过舍友提醒找出了要先输出一个num给min初始化
4.本题PTA提交列表
题目4: 猜数字游戏
#include<stdio.h>
int main()
{
int number,i,N,yours//number为被猜数字,N为最多猜数次数,yours为用户输入数字
scanf("%d%d",&number,&N);
for(i=1;i<=N;i++){
scanf("%d",&yours);
if(yours<0) {printf("Game Over");
break;
}
else if(yours>number) printf("Too big\n");
else if(yours<number) printf("Too small\n");
else if(yours==number&&i==1) {printf("Bingo!");
break;
}
else if(yours==number&&i>1&&i<=3) {printf("Lucky You!");
break;
}
else if(yours==number&&i>3) {printf("Good Guess!");
break;
}
}
if(yours!=number&&i>N) printf("Game Over");
return 0;
}
2 设计思路
- 第一步:定义整型变量number为被猜数字,N为猜数次数最大限制,yours为用户猜数
- 第二步:输入number和N
- 第三步:输入用户猜数
- 第四步:scanf("%d",&yours)
if(yours<0) {printf("Game Over");
break;
}
else if(yours>number) printf("Too big\n");
else if(yours<number) printf("Too small\n");
else if(yoursnumber&&i1) {printf("Bingo!");
break; - 第五步:else if(yours==number&&i>1&&i<=3) {printf("Lucky You!")
- 第六步:else if(yours==number&&i>3) {printf("Good Guess!")
- 第七步:if(yours!=number&&i>N) printf("Game Over");
3.本题调试过程碰到问题及解决办法
对待本题,还是觉得很迷惑,在问舍友时才发现自己的设计并不完美,而且没有换行
4.本题PTA提交列表
二、截图本周题目集的PTA最后排名
三、本周学习总结
1.你学会了什么?
在本周我学会了熟练地使用字符型变量和switch语句,还学习了while个do-while语句,二者的不同点在于do-while是先直接进行一个循环体,而while需要判断条件才可以进行循环体,当条件满足时对于二者是相同的,只有当第一个条件就不满足时,do-while将会先做一个循环体,而while就没有了。
2.本周的内容,你还不会什么?
在本周中嵌套循环让我感觉有点慌,在一周周的学习中感觉学习难度越来越大,我需要花更多的时间去多编程,多学习。
3.分支结构上机考试总结。
虽然这次上机考试我是满分,但是在做最后一题是由于字符型变量的用法不太熟悉,我在那边花了许多的时间去想,这让我认识到我的不足,我需要花更多时间来多打代码,争取在下一次上机考试做的更好。