实验题目:pta第三四次作业
设计思路:主要运用while,for,if等语句加上一些嵌套,较为简单。
实现方法:利用好手中武器,与各种知识,进行代码编译。
一.在编译方面(思路)
常常会漏掉一些符号,例如& ;(要注意哪些语句要分号哪些不要)像do {}while();中while()后面就得带分号,同时还会忘记\n的好习惯,这对代码的呈现十分致命。而且有时还会将printf打成pritnf,这简直是蠢,可怕的是我还打了好几次,这可要注意啊,这个问题是压根不能犯的。
二.在格式方面(问题)
我觉得在格式方面需要经验的积累吧,慢慢习惯给格式的错误后,也就犯的可能性小很多。
但格式问题也很致命,打错一个格式整题就是错了,他人部分正确都比你分高。所以一定要检查一遍。
实验截取:
就如这题空格没打整题没分。
实验题目:
思路:在定义一些数值(最重要定义个sum=0),设计一个for循环,使得sum累加,从而求得sum。
这两题很典型(读题错误),他要求的是前n项和,而不是求到n为底的那一项,所以第二题的循环是 for(int i=1;i<=2*N;i+=2)
三.代码思路方面
代码最后运行要在脑子里过上一遍,经常就是循环没搞好,弄个死循环出来,要么出现一堆答案要么一个答案都输出不了,在未来的写算法这方面,肯定是不行的,思路要清晰。
错误题:
在第四次作业稍有一点难度了,有用到了各语句的嵌套
实验题目:
这题我定义的较多的变量,这时就需要变量的英文来定义更好看,毕竟能让越多人看得懂的代码才是好代码,这题利用fabs()时记得加好头文件哦~
思路:
问题:
一.是公斤数的转换,题目所给的单位并不是统一的单位,这里要十分注意。
二.是对身材的判断,看好题目对身材标定的范围。
for(i=0;i<N;i++)
{
scanf("%d%d",&H,&w);
W=w/2.0;
a=(H-100)*0.9;
b=W-a;
if(fabs(b)<a*0.1)
{
printf("You are wan mei!\n");
}
else if(b<=(-1)*a*0.1)
{
printf("You are tai shou le!\n");
}
else
{
printf("You are tai pang le!\n");
}
}
思路:利用好数组
装睡我认为是这几次作业最难的一题,本来用数组就好了,结果用数组没解成功,一下用了个刚学的结构
刚开始打得代码:
#include<stdio.h>struct student{
char name [10];
int hu;
int xin;
};
int main()
{
int N,i;
char *j[100];
struct student students[50];
scanf("%d",&N);
for( i=0;i<N;i++)
{
scanf("%s%d%d",&students[i].name,&students[i].hu,&students[i].xin);
}
for(i=0;i<N;i++)
{
if((students[i].hu>20||students[i].hu<15)||(students[i].xin>70||students[i].xin<50))
printf("%s\n",students[i].name);
}
return 0;
}
我觉得我也是自找麻烦。其实也就是将名字存下,也用不了那么麻烦吧。
思路:定义字符数组来储存名字,输入多组数据,在对呼吸和脉搏进行判断,将不合格的列出。
问题:一开始想的太复杂,要如何输入,如何储存,其实冷静下来想想,会更好。
简单版:
char s[5]; //储存名字的数组
int a,b,n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s%d%d",s,&a,&b);
if(a<15||a>20||(b<50||b>70))//核心判断
printf("%s\n",s);
} 明明很简单好吗!!!
总结:
经过这两次的训练队for循环,嵌套语句,以及数组的用法有了,更深的了解,对于这些题目不能掉以轻心。
还不会啥:对字符数组的各种输入还不够了解。
困难:逻辑还是不够清晰,不能想到各种关键的部位让自己一次通过,还需要多多练习,多写题目,把数学逻辑与编程能力结合,达到更好的解题。