一、PTA实验作业
1.
1.代码
int num, i;
double hight ,perfect;
char sex; /*hight为用户的身高,num为要测试用户的数量,perfect为测试用户的情侣最佳身高,sex为用户性别*/
i=1;
scanf("%d",&num);
getchar();
while(i<=num){
scanf("%c%lf",&sex,&hight);
getchar();
if(sex=='M'){
perfect=hight/1.09;
printf("%.2f\n",perfect);}
else{
perfect=hight*1.09;
printf("%.2f\n",perfect);
}
i++;
}
2.设计思路
- (1)定义用户数量为num,每一个用户身高为hight,用户情侣最佳身高为perfect,用户性别为sex,第某个用户为i
- (2)输入num,并输入一个字符以确保满足题意输入要求。
- (3)输入某个用户性别和身高并输入一个字符以确保输入不受影响。
- (4)如果sex=M则perfect=hight/1.09并输出perfect。
- (5)如果sex=F则perfect=hight*1.09并输出perfect。
- (6)i=i+1,控制循环。
- (7)当i<=num,重复步骤3.
3.调试问题
这个程序的问题就时F无法进入自己的分支反而去了M的分支,而sex[N]好像变成了一个定值,目前还未解决希望到数组那边可以解决。
4.PTA提交列表
2.
1.代码
int a,n,i=1,s=0,c;/*a为1个a,2个a...n个a的值,n为要求n个a的和的宽度,s为累加和*/
scanf("%d%d",&a,&n);
c=a;
for(i=1;i<=n;i++){
s= a+s;
a=a+c*pow(10,i);
}
printf("s = %d",s);
return 0;
2.设计思路
- (1)根据题目要求定义n和a和累加和为s并赋予s初值为s=0,定义c保存a的数值。
- (2)输入a和n。
- (3)将a的值赋予c。i=1。
- (4)s=a+s进行s的累加累加。
- (5)改变a的值即将原本的a加上c(储存a的初始值)的i次方得到新的值,并i++控制循环。
- (6)当i<=n时重复步骤4。
- (7)根据题目要求输出累加结果。
3.调试问题
无错误
4.PTA提交列表
3.
1.代码
int n,i=1;
double min=0,s;
scanf("%d",&n);/*n为n个数量的数据,min为n个数据中的最小值,s为每一个数据。*/
getchar();
scanf("%lf",&s);
getchar();
min=s ;
for(i=1;i<n;i++){
if(min>s){
min=s;}
scanf("%lf",&s);
getchar();
}
printf("min = %.0f",min);
2.设计思路
- (1)定义输入的数字个数为n最小值为min并赋予初值为0,每一个数值为s,和控制循环变量为i
- (2)输入n,getchar()在这里可有可无,输入一个量,并另min=s,i=1
- (3)当min>s时,将s的值赋予min.
- (4)输入一个s同样后面的getchar()可以省略,i++控制循环。
- (5)当i<n时重复步骤3
- (6)根据题目要求输出。
3.调试问题
我已经将s赋值了第一个-2可s 的值还是0
4.PTA提交列表
4.
1.代码
int N,yournumber,i=1,number;/*N为可以猜测的次数,yournumber为你所猜的数,number为所要猜的数*/
scanf("%d%d",&number,&N);
getchar();
while(N>=i){
scanf("%d",&yournumber);
getchar();
if(yournumber>number){
printf("Too big\n");
}
else if(yournumber==number){
if(i==1){
printf("Bingo!\n"); break;}
else if(i>=4){
printf("Good Guess!\n");break; }
else {
printf("Lucky You!\n");break
;}
}
else if (yournumber<=0){
printf("Game Over\n");break;
}
else {printf("Too small\n");}
i++;
}
if(yournumber>=0&&yournumber!=number)printf("Game Over\n");
2.设计思路
- (1)定义可输入的次数为N,你猜的数字为yournumber,循环控制变量为i并赋初值为1,要猜的数字为number。
- (2)输入要猜的数字为number,能猜的次数。getchar可省略
- (3)输入一个你猜的数字。getchar可省略。当所猜的数字为负数时,输出Game over直接跳出程序.
- (4)当yournumber>mynumber时,输出Too big并转行
- (5)当yournumber等于mynumber时进入次分支,当i等于1时输出Bingo!并转行,同时跳出程序,当i>=4时输出Good Guess!并转行,同时跳出程序,当4>i>=1时输出Lucky You!并转行,同时跳出程序。
- (6)当yournumber<mynumber时,输出Too smal并转行。
- (7)i++,控制循环。
- (8)当N>=i时重复步骤3.
- (9)当yournumber>=0同时yournumber不等于mynumber时输出Game over。
3.调试问题
提示时显示直接跳出错误自己在Dev上尝试会有两个Game over 后来发现在if中添加一个条件可以避免这种情况。这题我并未调试。
4.PTA提交列表
二、截图本周题目集的PTA提交列表及最后排名。
PTA排名
三、本周学习总结
1.你学会了什么?
学习到了循环语句的使用和循环语句的嵌套使用也学会了调试,这对我程序的错误的纠正非常有意义,而且本周也把if-else语句的使用进行了牢固总结,是一个重大突破。
现在对getchar的理解是当有字符型数据的时候进行考虑没有的时候可以不用使用。
2.本周的内容,你还不会什么?
大部分会就不太懂getchar()的使用要在什么时候,还有就是后面所学的数组也是很迷糊,希望在未来能够在学习到数组时可以改正。