10個經典的C語言小程式

codeceo發表於2015-12-26

今天給大家分享10個比較基礎的C語言的小程式,希望給C語言初學者帶來一定幫助。

1、題目:有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?

程式分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去掉不滿足條件的排列。

程式原始碼:

main() 
{ 
int i,j,k; 
printf("\n"); 
for(i=1;i<5;i++)    /*以下為三重迴圈*/ 
 for(j=1;j<5;j++)  
  for (k=1;k<5;k++) 
   { 
    if (i!=k&&i!=j&&j!=k)    /*確保i、j、k三位互不相同*/ 
    printf("%d,%d,%d\n",i,j,k); 
    } 
}

2、題目:企業發放的獎金根據利潤提成。利潤(I)低於或等於10萬元時,獎金可提10%;利潤高 於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可可提 成7.5%;20萬到40萬之間時,高於20萬元的部分,可提成5%;40萬到60萬之間時高於40萬元的部分,可提成3%;60萬到100萬之間時,高於60萬元的部分,可提成1.5%,高於100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數?

程式分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。

程式原始碼:

main() 
{ 
long int i; 
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; 
scanf("%ld",&i); 
bonus1=100000*0.1;bonus2=bonus1+100000*0.75; 
bonus4=bonus2+200000*0.5; 
bonus6=bonus4+200000*0.3; 
bonus10=bonus6+400000*0.15; 
 if(i<=100000) 
  bonus=i*0.1; 
 else if(i<=200000) 
     bonus=bonus1+(i-100000)*0.075; 
    else if(i<=400000) 
        bonus=bonus2+(i-200000)*0.05; 
       else if(i<=600000) 
           bonus=bonus4+(i-400000)*0.03; 
          else if(i<=1000000) 
              bonus=bonus6+(i-600000)*0.015; 
             else 
              bonus=bonus10+(i-1000000)*0.01; 
printf("bonus=%d",bonus); 
}

3、題目:一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?

程式分析:在10萬以內判斷,先將該數加上100後再開方,再將該數加上268後再開方,如果開方後 的結果滿足如下條件,即是結果。

程式原始碼:

#include "math.h" 
main() 
{ 
long int i,x,y,z; 
for (i=1;i<100000;i++) 
 { x=sqrt(i+100);   /*x為加上100後開方後的結果*/ 
  y=sqrt(i+268);   /*y為再加上168後開方後的結果*/ 
   if(x*x==i+100&&y*y==i+268)/*如果一個數的平方根的平方等於該數,這說明此數是完全平方數*/ 
    printf("\n%ld\n",i); 
  } 
}

4、題目:輸入某年某月某日,判斷這一天是這一年的第幾天?

程式分析:以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大於3時需考慮多加一天。

程式原始碼:

main() 
{ 
int day,month,year,sum,leap; 
printf("\nplease input year,month,day\n"); 
scanf("%d,%d,%d",&year,&month,&day); 
switch(month)/*先計算某月以前月份的總天數*/ 
{ 
 case 1:sum=0;break; 
 case 2:sum=31;break; 
 case 3:sum=59;break; 
 case 4:sum=90;break; 
 case 5:sum=120;break; 
 case 6:sum=151;break; 
 case 7:sum=181;break; 
 case 8:sum=212;break; 
 case 9:sum=243;break; 
 case 10:sum=273;break; 
 case 11:sum=304;break; 
 case 12:sum=334;break; 
 defaultrintf("data error");break; 
} 
sum=sum+day;  /*再加上某天的天數*/ 
 if(year%400==0||(year%4==0&&year%100!=0))/*判斷是不是閏年*/ 
  leap=1; 
 else 
  leap=0; 
if(leap==1&&month>2)/*如果是閏年且月份大於2,總天數應該加一天*/ 
sum++; 
printf("It is the %dth day.",sum); }

5、題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。

程式分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,然後再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。

程式原始碼:

main() 
{ 
int x,y,z,t; 
scanf("%d%d%d",&x,&y,&z); 
if (x>y) 
/*交換x,y的值*/ 
if(x>z) 
/*交換x,z的值*/ 
if(y>z) 
/*交換z,y的值*/ 
printf("small to big: %d %d %d\n",x,y,z); 
}

6、題目:用*號輸出字母C的圖案。

程式分析:可先用<|>*<|>號在紙上寫出字母C,再分行輸出。

程式原始碼:

#include "stdio.h" 
main() 
{ 
printf("Hello C-world!\n"); 
printf(" ****\n"); 
printf(" *\n"); 
printf(" * \n"); 
printf(" ****\n"); 
}

7、題目:輸出特殊圖案,請在c環境中執行,看一看,Very Beautiful!

程式分析:字元共有256個。不同字元,圖形不一樣。

程式原始碼:

#include "stdio.h" 
main() 
{ 
char a=176,b=219; 
printf("%c%c%c%c%c\n",b,a,a,a,b); 
printf("%c%c%c%c%c\n",a,b,a,b,a); 
printf("%c%c%c%c%c\n",a,a,b,a,a); 
printf("%c%c%c%c%c\n",a,b,a,b,a); 
printf("%c%c%c%c%c\n",b,a,a,a,b); }

8、題目:輸出9*9口訣。

程式分析:分行與列考慮,共9行9列,i控制行,j控制列。

程式原始碼:

#include "stdio.h" 
main() 
{ 
 int i,j,result; 
 printf("\n"); 
 for (i=1;i<10;i++) 
  { for(j=1;j<10;j++) 
    { 
     result=i*j; 
     printf("%d*%d=%-3d",i,j,result);/*-3d表示左對齊,佔3位*/ 
     } 
   printf("\n");/*每一行後換行*/ 
   } 
}

9、題目:要求輸出國際象棋棋盤。

程式分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。

程式原始碼:

#include "stdio.h" 
main() 
{ 
int i,j; 
for(i=0;i<8;i++) 
 { 
  for(j=0;j<8;j++) 
   if((i+j)%2==0) 
    printf("%c%c",219,219); 
   else 
    printf(" "); 
   printf("\n"); 
  } 
}

10、題目:列印樓梯,同時在樓梯上方列印兩個笑臉。

程式分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數。

程式原始碼:

#include "stdio.h" 
main() 
{ 
int i,j; 
printf("\n");/*輸出兩個笑臉*/ 
for(i=1;i<11;i++) 
 { 
 for(j=1;j<=i;j++) 
   printf("%c%c",219,219); 
 printf("\n"); 
  } 
}

如果你也有基礎的C語言小程式,歡迎和我們一起分享。

相關文章