PTA实验作业
题目1
1.实验代码
int i,N; //定义N存放输入整数的个数//
double height1,height2; //定义height1存放输出的身高,height2存放输入的身高//
char ch1,ch2; //定义ch1、ch2存放输入的字符//
scanf("%d",&N); //输入正整数N//
for(i=1;i<=N;i++)
{
ch1=getchar();
ch2=getchar();
scanf("%lf",&height2);
switch(ch2)
{
case 'F':
height1=height2*1.09;
printf("%.2f\n",height1); //保留两位小数输出男方的最佳身高//
break;
case 'M':
height1=height2/1.09;
printf("%.2f\n",height1); //保留两位小数输出女方的最佳身高//
break; }
2.设计思路
- 第一步:定义两个整数变量i和N,其中N存放用户数。定义两个双精度浮点变量height1和height2,两者均存放用户的体重。定义两个字符型变量ch1和ch2。
- 第二步:i=1
- 第三步:输入height2,对字符型变量ch2使用switch语法,当ch2为‘F’时,height1=height2*1.09,然后跳出switch语法;当ch2=‘M’时,height1=height2/1.09,然后跳出switch语法
- 第四步:i=i+1,重复第二步,直到i>N跳出循环
- 第五步:保留两位小数输出height1
3.本题调试过程碰到问题及解决办法
- 遇到的问题:
只定义了一个字符型变量ch,每次能输入的字符只有一个,与题意的两个不符合,导致答案错误 - 解决方法:
多添加一个字符型变量就可以输出与题意相符的两个字符型变量了
4.本题PTA提交列表
题目2
1.实验代码
int i,a,n,s; //定义a存放输入的数,n存放a的个数,s存放所有a代数式的和//
s=0; //初始化s=0//
scanf("%d%d",&a,&n); //输入a,n//
for(i=1;i<=n;i++)
{
s=10*s+a*i; //计算所有a的代数和s//
}
printf("s = %d",s); //输出s//
2.实验思路
- 第一步:定义四个整数变量i,a,n,s,其中a存放输入的数,n存放a的个数,s存放所有a的总和
- 第二步:初始化a=0
- 第三步:输入a和n
- 第四步:i=1,
- 第五步:s=10s+ai
- 第六步:i=i+1,重复第四步,直到不满足条件跳出循环
- 第七步:输出s
3.本题调试过程碰到问题及解决办法
- 遇到的问题:本题没有碰到什么疑难点
- 解决方法:
4.本题提交列表
题目3
1.实验代码
int integer,n,i,min; //定义integer存放输入的整数,n存放输入整数的个数,min存放输入整数的最小值//
int a=5000; //初始化a=5000//
scanf("%d",&n); //输入n//
for(i=1;i<=n;i++)
{
scanf("%d",&integer); //输入integer//
if(a>=integer&&n!=1) //判断a和integer的大小与n的值//
{
a=integer;
min=integer;
}
}
if(n==1)
{
min=integer;
}
printf("min = %d",min); //输出min的值//
2.设计思路
- 第一步:定义四个整数变量i,n,integer,min,其中integer存放输入的整数,n存放输入的整数的个数,min存放输入的数的最小值
- 第二步:初始化a=5000
- 第三步:输入n
- 第四步:i=1
- 第五步:输入integer
- 第六步:判断if(a>=integer&&n!=1)是否成立,若成立,a=integer,min=integer;再判断if(n==1)是否成立,若成立,min=integer
- 第七步: i=i+1,重复第四步,直到i>n跳出循环
- 第八步:输出min
3.本题调试过程碰到问题及解决办法
-
遇到的问题:第十六行输出时格式错误,应该sum = %d,被我写成了%d,导致格式错误
-
解决方法:![](http://images2017.cnblogs.com/blog/1232094/201710/1232094-20171029103337570-957047277.png)
4.本题提交列表
题目4
1.实验代码
int time,i,number,random,N;
scanf("%d%d",&random,&N); //输入随机数random和个数//
for(i=1;i<=N+2;i++)
{
scanf("%d",&number); //输入我们猜的数number//
if(number<0) //判断number的值//
{
printf("Game Over\n");
break; //如果number小于0,跳出循环//
}
else if(number==random)
{
time++;
break; //如果number等于random,跳出循环//
}
else if(number<random)
{
time++;
printf("Too small\n");
}
else
{
time++;
printf("Too big\n");
}
}
if(time==1&&number>0)
{
printf("Bingo!\n");
}
else if(time<=3&&number>0)
{
printf("Lucky You!\n");
}
else if(time>=3&&time==N&&number>0) //如果time大于等于3且等于N和number大于0的条件成立,输出Good Guess!//
{
printf("Good Guess!\n");
}
else if(time>N)
{
printf("Game Over\n");
}
2.设计思路
- 第一步:定义五个整数变量time存放猜的次数,i,number存放输入猜的数,random存放一开始输入的随机数,N存放猜的最大次数
- 第二步:输入random,N
- 第三步:i=1
- 第四步:输入number,判断number的值,若number<0,输出Game Over\n;若number==random,输出time++,break;若number<random,time++,输出Too small\n;否则,time++,输出Too big\n
- 第五步:i=i+1,重复第三步,当i>N+2时跳出循环
- 第六步:判断time的值,若time&&number>0,输出Bingo!\n;若time<=3&&number>0,输出Lucky You!\n;若time>=3&&timeN&&number>0,输出Good Guess!\n;若time>N,输出Game over\n
3.本题调试过程碰到问题及解决办法
-
遇到的问题:输出的数据没有换行导致全部答案错误
-
解决方法:![]
(http://images2017.cnblogs.com/blog/1232094/201710/1232094-20171029115644695-1280198316.png)在全部输出后面加一个\n就好了
4.本题提交列表
二、截图本周题目集的PTA最后排名
三、本周学习总结
1.你学会了什么?
- 1.我学会了循环结构的语法,如for、while、do while语法,还学会了如何调试程序改正自己的错误
- 2.对字符型变量有了更清晰的认识,如输入要%c,输入字符要加单引号
2.你还不会什么?
- 嵌套循环的知识没有掌握好,pta上的嵌套循环题目大多都不会做
3.分支结构上机考试总结
- 1.错的方面都是小细节,字符型变量用scanf输入要%c我写成了%d导致编译错误,一直找不出错误点
- 2.后来脑子灵光一闪突然想到定义字符型变量是用char,不是int、double之类的
- 3.不满意,我希望下次能在时限内完成,再下次能够提前走出考场。主要还是细心的问题,本次上机考试题目调试了将近一个小时,浪费了许多时间也没把问题解决,希望以后能将这个问题逐渐解决