一、PTA实验作业
题目1
专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)×1.09 =(男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。
下面就请你写个程序,为任意一位用户计算他/她的情侣的最佳身高。
1.实验代码
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.设计思路
1.定义两个整型变量i,n,两个双精度浮点型变量man,women,一个字符型变量sex,输入n;
2.当i<n时,执行循环:输入sex,当sex=M时,输入男性身高,women=man/1.09,输出女性身高;当sex=F时,输入女性身高,man=women*1.09,输出男性身高;
3.当i>=n,结束循环。
3.本题调试过程碰到问题及解决办法
刚刚开始for的条件里用的逗号,改为分号后就没什么问题了。。
4.本题PTA提交列表
题目2
给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。
1.实验代码
int a,t,n,i,sum;
scanf("%d%d",&a,&n);
sum=0,t=0;
for(i=1;i<=n;i++){
t=t*10+a;
sum=sum+t;
}
printf("s = %d",sum);
2.实验思路
1.定义五个整形变量a,t,n,i,sum,将0赋给sum、t,输入a,n;
2.当i<=n时,执行循环:t=t*10+a,sum=sum+t;
3.当i>n时,结束循环,输出sum。
3.本题调试过程碰到问题及解决办法
本来用的a=a10+a来表示aaa...的,但是发现输出的数字不对,调试后发现了问题,于是采用了t=t10+a来代替a=a*10+a,问题得到解决。
4.本题提交列表
题目3
本题要求编写程序,找出给定一系列整数中的最小值
1.实验代码
int n,i,number,min;
scanf("%d%d",&n,&number);
min=number;
for(i=1;i<=n;i++){
scanf("%d",&number);
if(min>number)
min=number;
}
printf("min = %d\n",min);
2.实验思路
1.定义四个整型变量i,n,number,min,输入n,number的值,min=number;
2.当i<=n,执行循环:输入一个数值,当min>number,min=number;
3.当i>n,结束循环,输出min。
3.本题调试过程碰到问题及解决办法
刚刚看到题目没什么思路,不知道怎么确定最小值,想了很久用了将更小值赋给min的方法,问题解决。
4.本题提交列表
题目4
猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。
1.实验代码
int N,count,mynumber,yournumber;
scanf("%d%d",&mynumber,&N);
count=0;
do {
count++;
scanf("%d",&yournumber);
if(yournumber<0){
break;
}
else if(yournumber<mynumber){
printf("Too small\n");
}
else if(yournumber>mynumber){
printf("Too big\n");
}
else
break;
}
while(yournumber>=0);
if(yournumber>=0){
switch(count){
case 1:
printf("Bingo!");
break;
case 2:
case 3:
printf("Lucky You!");
break;
}
}
if (count>3&&count<=N){
printf("Good Guess!");
}
else if(count>N){
printf("Game Over");
} else if(yournumber<0){
printf("Game Over");
}
2.实验思路
1.定义四个整型变量N,count,mynumber,yournumber,输入N和mynumber的值;
2.用do while语句,每输入一次count加一,用if语句判断并输出所猜数与随机数的比较结果;
3.重复第三步,直至用户猜数小于0.结束循环;
4.用switch、case语句输出当count分别等于1,2,3是的判断结果;
5.当count>3且count<=N时,输出Good Guess!;
6.当输入次数大于3小于等于N时,输出Good Guess!
7.当输入次数大于N时,输出Game Over;
8.当用户猜数小于0时,输出Game Over。
3.本题调试过程碰到问题及解决办法
开始觉得跟书上的猜数游戏有点像,可是研究了很久还是没思路,最后求助同学了。。。
4.本题提交列表
二、截图本周题目集的PTA最后排名
1.PTA提交列表
2.PTA排名
三、本周学习总结
1.你学会了什么?
学会了for循环语句,学会了break跟continue的不同,还学会了while语句和do while语句,以及两者的差别,还学会了如何通过调试程序寻出错误。
2.你还不会什么?
多个数值的输入输出还只能一个一个来,不懂得怎么一次输入并判断然后输出多个数值。
很多题目看了都没有思路,脑子一团乱,思维不够灵活。。
3.分支结构上机考试总结
对于绝对值对数等函数记得不清晰;第三题的情况考虑的不够清楚,将十二点归于上午了。