一、PTA实验作业
题目1.
1.实验代码
int N,i;//定义N为查询的用户数,i为循环变量
float height,height1;//定义height为输入身高,height1为其情侣身高
char sex;//定义sex表示性别
scanf("%d",&N);
for(i=1;i<=N;i++){ //循环执行N次
scanf(" %c%f",&sex,&height);
switch(sex){
case 'F':height1 = 1.09*height;//F表示女性
break;
case 'M':height1 = height/1.09;//M表示男性
break;
}
printf("%.2f\n",height1);//输出其情侣身高并保留两位小数
}
2.设计思路
- (1)定义变量N为查询的用户数,i为循环变量,height为输入身高,height1为其情侣身高,sex为性别
- (2)输入数据N
- (3)i=1
- (4)输入数据sex,height
- (5)如果sex=‘F’,执行height1 = 1.09*height
- (6)如果sex=‘M’,执行height1 = height/1.09
- (7)i=i+1
- (8)重复步骤4,5,6,7,直到i>N
- (9)输出其情侣身高并保留两位小数
3.本题调试过程碰到问题及解决办法
-
(1)问题:
①i赋值错误
②输入中未考虑上输入符号前还有一个回车
-
(2)解决方法:
①经过调试监视变量,发现i不应该赋值为0,应该使i=1;
②参考同学的代码,发现输入时应在%c之前加一个空格,存放回车
4.本题PTA提交列表
题目2.
1.实验代码
int a,n,s,i,item;//定义整型变量a存放正整数,n存放a的个数,s存放累加和,item存放第i项的值
s=0;
item=0;
scanf("%d%d",&a,&n);//输入a,n
for(i=1;i<=n;i++){
item=a+item*10;//计算第i项的值
s=s+item;//累加每一项
}
printf("s = %d",s);
2.设计思路
- (1)定义整型变量a存放正整数,n存放a的个数,s存放累加和,item存放第i项的值
- (2)赋初值s=0,item=0
- (3)输入a,n
- (4)i=1
- (5)item=a+item*10;
s=s+item; - (6)重复步骤5,直到i>n
- (7)输出s 的值
3.本题调试过程碰到问题及解决办法
- (1)问题: 本题未遇见问题(以下展示利用调试工具监视变量的截图过程)
4.本题PTA提交列表
题目3
1.实验代码
int i,n,number,min;//定义变量n为整数个数,number为输入值,min为最小值
scanf("%d",&n);
scanf("%d",&number);
min=number;//假设第一个成绩为最小值
for(i=1;i<=n-1;i++){
scanf("%d",&number);
if(min>number)//如果输入的整数比最小值小
min=number;//再假设该成绩为最小值
}
printf("min = %d",min);//输出最小值
2.设计思路
- (1)定义变量n为整数个数,number为输入值,min为最小值
- (2)输入数据n,number
- (3)假设第一个成绩为最小值 ,即min=number
- (4)i=i+1
- (5)再次输入成绩number
- (6)如果min>number,则再假设该成绩为最小值,即赋值min=number
- (7)重复步骤5,6,直到i>n-1
- (8)按照“min = 最小值”的格式输出n个整数中的最小值。
3.本题调试过程碰到问题及解决办法
-
(1)问题:
①第一次,假设第一个成绩为最小值 ,却没有输入第一个成绩的值,导致错误
②第一次输入代码显示“n=1时,最小值为正”这一项错误,于是添加了一个if语句,发现依旧是错的
③未考虑到先输入过一个值,因此循环中的i应该是满足i<=n-1
-
(2)解决方法:
①经过检测变量,第一次赋值min=33是错的,因此发现是因为没有先输入一个number赋值给min,于是在赋值前加了输入number语句,且把i条件改为i<=n-1
4.本题PTA提交列表
题目4
1.实验代码
int mynumber,yournumber,count,N,i;//定义变量mynumber存放随机数,yournumber存放猜测的数,count存放猜测数次,N存放猜测的最大次数
count=0;//给count赋初值为0
scanf("%d%d",&mynumber,&N);//输入随机数和猜测的最大次数
for(i=1;i<=N;i++){
scanf("%d",&yournumber);//输入猜测的数
count++; //累加猜测次数
if(yournumber<0){//如果猜测的数小于0
printf("Game Over\n");
return 0;
}
else {//如果猜测的数大等于0时
if(yournumber==mynumber){
if(count==1)//如果猜测次数为1次
printf("Bingo!");
if(count>1&&count<=3)//如果猜测次数小于3
printf("Lucky You!");
if(count>3&&count<=N)//如果猜测次数大于3小等于N
printf("Good Guess!");break;
}
if(yournumber>mynumber){
printf("Too big\n");
}
if(yournumber<mynumber){
printf("Too small\n");
}
}
}
if(yournumber!=mynumber)
printf("Game Over");
2.设计思路
- (1)定义变量mynumber存放随机数,yournumber存放猜测的数,count存放猜测数次,N存放猜测的最大次数
- (2)给count赋初值为0
- (3)输入mynumber,N
- (4)i=1
- (5)重复步骤6~16,直到i>N
- (6)输入yournumber
- (7)count++累加猜测次数
- (8)如果yournumber<0,直接退出,输出Game Over
- (9)如果yournumber>mynumber,输出Too big
- (10)如果yournumber<mynumber,输出Too small
- (11)如果yournumber==mynumber时
- (12)如果count==1,输出Bingo!
- (13)如果count>1&&count<=3,输出Lucky You!
- (14)如果count>3&&count<=N,输出Good Guess!
- (15)如果yournumber!=mynumber&&count>N,输出Game Over
- (16)i=i+1
3.本题调试过程碰到问题及解决办法
-
(1)问题:
①判断count时写成count=1,最后输出结果为Bingo!
②题目未看清,count为4时也应该输出Good Guess!
③测评时系统提示“直接退出”一项错误,调式时发现输出两组Game Over。
-
(2)解决方法:
①count=1改成count==1
②重新审题,把count>1&&count<3改为count>1&&count<=3
③经同学提示,for循环语句中使用break只能做到退出该循环,不能满足题意,应该把break改成return 0才能满足题意直接退出程序。
4.本题PTA提交列表
二、截图本周题目集的PTA最后排名。
PTA提交列表
PTA排名
三、本周学习总结
1.你学会了什么?
- 三种循环语句(for,while,do-while)
①循环次数已知时,使用for语句
②循环条件未知,且循环条件在进入循环时明确,使用while语句
③循环条件未知,且循环条件需要在循环体中明确,使用do-while语句(直到型循环)- while语句和do-while语句中,如果循环条件一开始就满足,两者结果一样;如果一开始不一样,do-while先执行一次
- for循环中一旦执行break语句,循环提前结束,不再执行循环体中位于其后的其他语句
- break结束循环,continue跳过后面语句继续循环,continue只能用于循环
- 求阶乘的函数为fact( ),例如:i的阶乘调用fact(i)
- 在做PTA作业时每一题都用到调试工具,多次使用对如何调试找出错误更熟悉
2.本周的内容,你还不会什么?
- 对新的知识点了解不够透彻,用起来磕磕碰碰。对于while语句和do-while语句用法不熟,PTA中用到的都是for循环,且for循环也用的不到位,导致本次PTA作业做起来很吃力。
- 循环结构的算法不太会写
- 对于较复杂的题目会不确定哪些为需要循环的部分,导致程序写不下去
- 嵌套循环不会使用
3.分支结构上机考试总结。
(1)哪些地方错了,为什么?
- 分段函数:绝对值调用的函数记错,耽误时间
- 12-24小时制:题目较复杂,没有先写算法,每次都会漏掉一两个条件没有考虑
- 计算油费:在用到字符型变量时,纠结要不要用到getchar()和putchar()
(2)后续要怎么找程序错误?
- 使用调试工具监测变量找错误
- 在编程过程中加上注释,使程序更直观,容易找出错误点
(3)对自己成绩满意么?不满意的话要怎么改进?
- 不满意。把做过的题目抽时间再复习一遍重新打一遍代码,每周翻看前几周的博客,寻找以前犯过的错误,以防再次犯错,并再次复习巩固博客中的小结与问题。做题目时使用调试工具监测变量寻找错误点,减少耽误在找问题上的时间。