码迷,mamicode.com
首页 > 其他好文 > 详细

第三四次pta实验报告

时间:2017-10-22 22:19:44      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:char s   最小   技术   mil   变量   结果   amp   内存   一个   

  在写这些作业之前,我都已经事先预习过,提交pta时不能一次过关,实在不应该,以后要认真检查代码,力争一次做对,不然这对以后的上机考试和参加竞赛都是大大的不利。

在写这些这些程序方面,目前写的都是比较短的代码,基本用几条语句,几个循环就能出来,但以后代码一次就不一样了,一个代码要分成好几段来写,同时在定义变量方面尽量用他们的英文到时会更好理解。

一.在编译方面

  常常会漏掉一些符号,例如& ;(要注意哪些语句要分号哪些不要)像do {}while();while()后面就得带分号,同时还会忘记\n的好习惯,这对代码的呈现十分致命。而且有时还会将printf打成pritnf,这简直是蠢,可怕的是我还打了好几次,这可要注意啊,这个问题是压根不能犯的。

二.在格式方面

  我觉得在格式方面需要经验的积累吧,慢慢习惯给格式的错误后,也就犯的可能性小很多。

  但格式问题也很致命,打错一个格式整题就是错了,他人部分正确都比你分高。所以一定要检查一遍。

 技术分享就如这题空格没打整题没分。

技术分享技术分享

这两题很典型(读题错误),他要求的是前n项和,而不是求到n为底的那一项,所以第二题的循环是 for(int i=1;i<=2*N;i+=2)

三.代码思路方面

  代码最后运行要在脑子里过上一遍,经常就是循环没搞好,弄个死循环出来,要么出现一堆答案要么一个答案都输出不了,在未来的写算法这方面,肯定是不行的,思路要清晰。

 

四.在部分正确方面

  心里无数mmp,明明是正确的代码,就因为一些极端值,边界测试之类的,就会弄得人蒙圈,每趟都要回去再找代码的错误,找不到就心很烦,所以还是在提交之前,用devc++测试一下奇奇怪怪的值,要沉下心来,想想极端值,相信会对以后的成长相当有利。一般极大值极小值和0等都要考虑。

就如当初的时间错位和边界测试,

五.在代码精简方面

  这个就是要多用脑子了,或许现在运行的代码是对的,但有时代码太繁琐,计算机的负荷太大,对时间方面和占用内存方面十分不利,要尽量减少计算过程与量(现在用的比较少,但大数溢出的问题很麻烦,这几次实验未涉及,就不过多叙述),这经常是要用到自己在纸上想想如何精简。

unsigned   int   0~4294967295   

  int   2147483648~2147483647 (-2^31~2^31-1)
  unsigned long 0~4294967295
  long   2147483648~2147483647  
  long long的最大值:9223372036854775807 
  long long的最小值:-9223372036854775808
  unsigned long long的最大值:1844674407370955161  

  char:-128~127  (因为还有个0,所以右边少一个)   short:-32768~32767 

  __int64的最大值:9223372036854775807
  __int64的最小值:-9223372036854775808
  unsigned __int64的最大值:18446744073709551615

超出这些范围数就会算不了,所以要定义好,所需答案的范围。

错误题:

在第四次作业稍有一点难度了,有用到了各语句的嵌套

技术分享这题我定义的较多的变量,这时就需要变量的英文来定义更好看,毕竟能让越多人看得懂的代码才是好代码,这题利用fabs()时记得加好头文件哦~

 技术分享哈哈,无敌装睡睡,是这几次作业最难的一题,本来用数组就好了,结果用数组没解成功,一下用了个刚学的结构

#include<stdio.h>struct student{

char name [10];
int hu;
int xin;
};
int main()
{
int N;
int i;
int p;
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;
}

emmmmmm我觉得我也是自找麻烦,哈哈。其实也就是将名字存下,也用不了那么麻烦吧。

 

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);
}   明明很简单好吗!!!

 

第三四次pta实验报告

标签:char s   最小   技术   mil   变量   结果   amp   内存   一个   

原文地址:http://www.cnblogs.com/guangguangge/p/7709823.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!