第一次上機總結
第一次上機報告
1.
#include <stdio.h>
int main()
{
int a,b,c,d,e;
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
printf("Rank Number\n----------------\nExcellent%7d\nGood%12d\nMedium%10d\nPass%12d\nFail%12d\n----------------\nTotal%11d\n",a,b,c,d,e,a+b+c+d+e);
return 0;
}
這是更改後的程式碼 寫的時候一開始先跳過了,後面著急一時沒想到%nd,出了考場想到了。
4.#include <stdio.h>
int main()
{int y,m,c;
while(scanf("%d %d",&y,&m)!=EOF)
{
if(y%4==0&&y%100!=0&&m==2)c=29;
else if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)c=31;
else c=30;
printf("%d\n",c);
}
return 0;
}
這是考試時候的程式碼,漏看了閏年條件,一直一直找不到問題所在,沒有重看題目。
更改後
#include<stdio.h>
intmain()
{
intn;
scanf("%d",&n);
for(inti=1;i<=n;i++)
{
for(intj=i-1;j>0;j--)printf("");
for(inth=2*n-(2*i-1);h>0;h--)printf("*");
printf("\n");
}
for(inti=2;i<=n;i++)
{
for(intj=i+1;j<=n;j++)printf("");
for(inth=2*i-1;h>0;h--)printf("*");
printf("\n");
}
return0;
}其實這個程式碼還是有問題,於是我又修正了一次。
程式碼如下
#include <stdio.h>
int main()
{
int y,m,c,d;
while(scanf("%d %d",&y,&m)!=EOF)
{
if((y%4==0&&y%100!=0)||y%400==0)d=29;else d=28;
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)c=31;
else c=30;
if(m==2)printf("%d\n",d);
else printf("%d\n",c);
}
return 0;
}
5.#include <stdio.h>
int main()
{ int unsigned a,u,c;
int tag;
scanf("%d %d %d",&a,&u,&c);
scanf("%d",&tag);
if(tag<0||tag>95)printf("Error");
return 0;
}
這是考試時的程式碼,怎麼說呢,就是當時腦瓜子已經嗡嗡的了,沒多想。
修正後
#include <stdio.h>
int main()
{
unsigned int ua,ub,uc;
int tag;
scanf("%u%u%u",&ua,&ub,&uc);
scanf("%d",&tag);
if(tag<0||tag>95)printf("Error");
else {
if(tag>=64)
ua|=1<<(tag-64);
else if(tag>=32)
ub|=1<<(tag-32);
else uc|=1<<tag;
printf("ua=%u,ub=%u,uc=%u",ua,ub,uc);
}
return 0;
}
6.
#include <stdio.h>
int main()
{int n;
scanf("%d",&n);
for(int i=n;i>=1;i--)
{for(int h=i-1;h<n;h++)
printf(" ");
for(int j=2*i-1;j>=1;j--)
{
printf("*");
}
printf("\n");
}
for(int a=1;a<n;a++)
{for(int h=n;h>a;h--)
printf(" ");
for(int j=2*a+1;j>=1;j--)
{
printf("*");
}
printf("\n");
}
return 0;
}
這是考試時的程式碼,執行後的結果
可以注意到每行都多了一個空格,考試的時候不知道怎麼處理,越處理越亂。
晚上思考了一下改的程式碼如下
#include <stdio.h>
int main()
{
int n;
while(scanf("%d",&n)!=EOF){
for(int i=1;i<=n;i++)
{
for(int j=i-1;j>0;j--)printf(" ");
for(int h=2*n-(2*i-1);h>0;h--)printf("*");
printf("\n");
}
for(int i=2;i<=n;i++)
{
for(int j=i+1;j<=n;j++)printf(" ");
for(int h=2*i-1;h>0;h--)printf("*");
printf("\n");
}
}
return 0;
}
注意到
不要把問題想的太複雜,大迴圈的第一個i儘量簡單一點,往後寫小迴圈的時候才不會互相絆腳。
總結 考試時不要慌張,儘量把程式碼簡單化,遇到問題可以先重看一下題目看看是否漏了條件。不要慌!不要慌!不要慌!
放平心態,晚上補題時的心態相比考試放鬆了很多,效率和改bug能力比考試時多了n倍,放平心態最重要。