一、實驗內容
1.有一個四位正整數,組成這個四位數的四個數字各不相同,如果把它們的首尾互換,第二位與第三位互換,組成一個新的四位數。原四位數為新四位數的4倍,請找出一個這樣的四位數。
#include <stdio.h> int main() { int a,b,c,d,num,sum; printf("輸入一個四位整數\n"); for(num=1000;num<=9999;num++) { a=num/1000; b=num/100%10; c=num/10%10; d=num%10; sum=1000*d+100*c+10*b+a; if(num==4*sum&&a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d) { printf(" %4d",num);
}
} return 0;
}
2.輸入任意一個多位的數字,求各位數字之和。如果在【1,12】之內,則輸出與和數字對應的月份的英文名稱,否則輸出***。 樣例: 輸入123, 輸出 6 June 輸入12345,輸出 15 ***
#include <stdio.h> int main() { int a,b,sum=0; printf("輸入一個多位數\n"); scanf("%d",&a); while(a>0) { b=a%10; a=a/10; sum=sum+b; } if(sum==1) { printf("january\n"); } else if(sum==2) { printf("february\n"); } else if(sum==3) { printf("march\n"); } else if(sum==4) { printf("april\n"); } else if(sum==5) { printf("may\n"); } else if(sum==6) { printf("june\n"); } else if(sum==7) { printf("july\n"); } else if(sum==8) { printf("august\n"); } else if(sum==9) { printf("september\n"); } else if(sum==10) { printf("octomber\n"); } else if(sum==11) { printf("november\n"); } else if(sum==12) { printf("december\n"); } else { printf("***"); } return 0; }
3.給定不超過6的正整數A,考慮從A開始的連續4個數字。請輸出所有由它們組成的無重復數字的3位數。 輸入格式:輸入在一行中給出A。 輸出格式:輸出滿足條件的的3位數,要求從小到大,每行6個整數。整數間以空格分隔,但行末不能有多余空格。 輸入樣例:2 輸出樣例:234 235 243 245 253 254 324 325 342 345 352 354 423 425 432 435 452 453 523 524 532 534 542 543
#include <stdio.h> #include <stdlib.h> int main() { int A,i,x,y,z,n=0,num; printf("輸入一個不超過6的整數\n"); scanf("%d",&A); i=A+4; for(x=A;x<i;x++) for(y=A;y<i;y++) for(z=A;z<i;z++) { if(x!=y&&x!=z&&y!=z) { num=100*x+10*y+z; printf(" %d",num); n++; if(n%6==0) { printf("\n"); } } } return 0; }
4.萬年歷
#include<stdio.h> int main() { int year,month,day,i,a,days=0,date; scanf("%d%d",&year,&month); a=1900,i=0; while(a<year) { if((a%4==0&&a%100!=0)||(a%400==0)) i+=1; a++; } if((year%4==0&&year%100!=0)||(year%400==0)) { switch(month) { case 1:day=31;break; case 2:days=31;day=29;break; case 3:days=31+29;day=31;break; case 4:days=31+29+31;day=30;break; case 5:days=31+29+31+30;day=31;break; case 6:days=31+29+31+30+31;day=30;break; case 7:days=31+29+31+30+31+30;day=31;break; case 8:days=31+29+31+30+31+30+31;day=31;break; case 9:days=31+29+31+30+31+30+31+31;day=30;break; case 10:days=31+29+31+30+31+30+31+31+30;day=31;break; case 11:days=31+29+31+30+31+30+31+31+30+31;day=30;break; case 12:days=31+29+31+30+31+30+31+31+30+31+30;day=31;break; } } else { switch(month) { case 1:day=31;break; case 2:days=31;day=28;break; case 3:days=31+28;day=31;break; case 4:days=31+28+31;day=30;break; case 5:days=31+28+31+30;day=31;break; case 6:days=31+28+31+30+31;day=30;break; case 7:days=31+28+31+30+31+30;day=31;break; case 8:days=31+28+31+30+31+30+31;day=31;break; case 9:days=31+28+31+30+31+30+31+31;day=30;break; case 10:days=31+28+31+30+31+30+31+31+30;day=31;break; case 11:days=31+28+31+30+31+30+31+31+30+31;day=30;break; case 12:days=31+28+31+30+31+30+31+31+30+31+30;day=31;break; } } days=(year-1900-i)*365+i*366+days; date=(days+1)%7; printf("%d\n",date); printf("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\n"); for(i=0;i<date;i++) { printf("\t"); } for(i=1;i<=day;i++) { printf("%d\t",i); if((i+date)%7==0) { printf("\n"); } } return 0; }
二.實驗總結: 1.順序結構 (1)標識符由字母,數字,下划線組成 (2)“=”與“==”的區別 (3)變量先聲明后使用 2.選擇結構 (1)if else語句 (2)數學函數#include <math.h> 包括:絕對值函數和平方根函數分別用double fabs和double sqrt (3)在if和else后面總要用到{} 3.循環結構 (1)for語句 while語句 do~while語句 (2)一行語句中一個變量只出現增,減運算符 (3)無限循環中,通過在循環體中加break語句對循環控制
三.作業總結 對於第二題應該想好是對誰取余,誰除10,還有先后問題
萬年歷的題日期能計算出來但是表格輸不出來