【100个经典C语言程序】一个一个自己重新写,希望能坚持下来。

【程序001】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去
      掉不满足条件的排列。

2.程序源代码:

 1 /**
 2     Description: 题目001 
 3 */ 
 4 #include<stdio.h>
 5 
 6 int main(){
 7     int i, j, k;
 8     
 9     for (i = 1; i < 5; i++){    /*以下为三重循环*/
10         for (j = 1; j < 5; j++){
11             for (k = 1; k < 5; k++){
12                 if ((i != j) && (i != k) && (j != k) ){/*确保i、j、k三位互不相同*/
13                     int num = 100*i + 10*j + k;
14                     printf("%d    ", num);
15                 }
16             }
17         }
18         printf("\n-----------------------------\n");
19     }
20     
21     return 0;
22 } 

-------------------------------------------------------------------------------------------------------------------------

【程序002】
题目:企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?

1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。

2.程序源代码:

 1 /**
 2     Description: 题目002 
 3 */ 
 4 #include<stdio.h>
 5 
 6 int main(){
 7     long int i;
 8     int bonus1, bonus2, bonus4, bonus6, bonus10, totalBonus;
 9     
10     bonus1 = 0.1*100000;            /*(0, 100 000]*/
11     bonus2 = bonus1 + 0.075*100000;    /*(100 000, 200 000]*/ 
12     bonus4 = bonus2 + 0.05*200000;    /*(200 000, 400 000]*/
13     bonus6 = bonus4 + 0.03*200000;    /*(400 000, 600 000]*/
14     bonus10 = bonus6 + 0.015*400000;/*(600 000, 1 000 000]*/
15     
16     scanf("%ld", &i);
17     if (i <= 100000){
18         totalBonus = 0.1*i;        
19     }
20     else if (i <= 200000){
21         totalBonus = bonus1 + 0.075*(i - 100000);
22     }
23     else if (i <= 400000){
24         totalBonus = bonus2 + 0.05*(i - 200000);
25     }
26     else if (i <= 600000){
27         totalBonus = bonus4 + 0.03*(i - 400000);
28     }
29     else if (i <= 1000000){
30         totalBonus = bonus6 + 0.015*(i - 600000);
31     }
32     else {
33         totalBonus = bonus10 + 0.01*(i - 1000000);
34     }
35     
36     printf("\nbonus = %d", totalBonus);
37     
38     return 0;
39 } 

 -------------------------------------------------------------------------------------------------------------------------

【程序003】
题目:一个整数(1-100000),它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后
      的结果满足如下条件,即是结果。

2.程序源代码:

 1 /**
 2     Description: 题目003
 3 */ 
 4 #include<stdio.h>
 5 
 6 int main(){
 7     
 8     long int i, x, y;
 9     for (i = 1; i < 100000; i++){
10         x = sqrt(i + 100);
11         y = sqrt(i + 268);
12         
13         if ((x*x == i + 100) && (y*y == i + 268)){
14             printf("\n%ld\n", i);
15         }
16     }
17     
18     return 0;
19 } 

-------------------------------------------------------------------------------------------------------------------------

【程序4】
题目:输入某年某月某日,判断这一天是这一年的第几天?

1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
      情况,闰年且输入月份大于3时需考虑多加一天。

2.程序源代码:

 1 /**
 2     Description: 题目004
 3 */ 
 4 #include<stdio.h>
 5 
 6 int main(){
 7     int day, month, year, sum, leap;
 8     
 9     printf("\nplease input year,month,day\n");
10     scanf("%d,%d,%d", &year, &month, &day);
11     
12     sum = day;                /*当前月份天数*/
13     int preMonth = month - 1;
14     switch(preMonth){        /*计算某月份以前月份的总天数*/
15         case 12:{
16             sum += 31;
17         }
18         case 11:{
19             sum += 30;
20         }
21         case 10:{
22             sum += 31;
23         }
24         case 9:{
25             sum += 30;
26         }
27         case 8:{
28             sum += 31;
29         }
30         case 7:{
31             sum += 31;
32         }
33         case 6:{
34             sum += 30;
35         }
36         case 5:{
37             sum += 31;
38         }
39         case 4:{
40             sum += 30;
41         }
42         case 3:{
43             sum += 31;
44         }
45         case 2:{
46             if ((year%400 == 0) || (year%4==0&&year%100 != 0)){ /*闰年判断*/
47                 sum += 29;
48             } 
49             else{
50                 sum += 28;
51             }     
52         }
53         case 1:{
54             sum += 31;
55         }
56         default:{
57             printf("data error!\n");
58         }
59     }
60     
61     printf("It is the %dth day.\n", sum); 
62     return 0;
63 } 

-------------------------------------------------------------------------------------------------------------------------

【程序5】
题目:输入三个整数x,y,z,请把这三个数由小到大输出。

1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,
      然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。

2.程序源代码:

 1 /**
 2     Description: 题目005
 3 */ 
 4 #include<stdio.h>
 5 
 6 int main(){
 7     int x, y, z, t;
 8     
 9     scanf("%d%d%d", &x, &y, &z);
10     if (x > y){
11         t = x;
12         x = y;
13         y = t;
14     }
15     if (x > z){
16         t = x;
17         x = z;
18         z = t;
19     }
20     if (y > z){
21         t = y;
22         y = z;
23         z = t;
24     }
25     
26     printf("small to big: %d -- %d -- %d\n", x, y, z);
27     return 0;
28 } 

-------------------------------------------------------------------------------------------------------------------------

【程序6】
题目:用*号输出字母C的图案。

1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。

2.程序源代码:

 1 /**
 2     Description: 题目006 
 3 */ 
 4 #include<stdio.h>
 5 
 6 int main(){
 7     printf("Hello C-world!\n");
 8     printf("****\n");
 9     printf("*\n");
10     printf("*\n");
11     printf("****\n");
12     
13     return 0;
14 } 

-------------------------------------------------------------------------------------------------------------------------

【程序7】
题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!

1.程序分析:字符共有256个。不同字符,图形不一样。      

2.程序源代码:

 1 /**
 2     Description: 题目007 
 3 */ 
 4 #include<stdio.h>
 5 
 6 int main(){
 7     //C-Free 下面是乱码 
 8     char a=176, b=219; 
 9     printf("%c%c%c%c%c\n", b, a, a, a, b); 
10     printf("%c%c%c%c%c\n", a, b, a, b, a); 
11     printf("%c%c%c%c%c\n", a, a, b, a, a); 
12     printf("%c%c%c%c%c\n", a, b, a, b, a); 
13     printf("%c%c%c%c%c\n", b, a, a, a, b);
14     return 0;
15 } 

 -------------------------------------------------------------------------------------------------------------------------

【程序8】
题目:输出9*9口诀。

1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

2.程序源代码:

 1 /**
 2     Description: 题目008 
 3 */ 
 4 #include<stdio.h>
 5 
 6 int main(){
 7     int i, j;
 8     for (i = 1; i < 10; i++){
 9         for (j = 1; j <= i; j++){
10             printf("%dx%d=%-3d  ", i, j, i*j);/*-3d表示左对齐,占3位*/ 
11         }
12         printf("\n");
13     } 
14     return 0;
15 } 

-------------------------------------------------------------------------------------------------------------------------

【程序9】
题目:要求输出国际象棋棋盘。

1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。

2.程序源代码:

 1 /**
 2     Description: 题目009 
 3 */ 
 4 #include<stdio.h>
 5 
 6 int main(){
 7     //C-Free 下面是乱码 
 8     int i, j;
 9     for (i = 0; i < 8; i++){
10         for (j = 0; j < 8; j++){
11             if ((i + j)%2 == 0){
12                 printf("%c%c", 219, 219);
13             }
14             else {
15                 printf("  ");
16             }
17         }
18         printf("\n");
19     }
20     return 0;
21 } 

-------------------------------------------------------------------------------------------------------------------------

【程序10】
题目:打印楼梯,同时在楼梯上方打印两个笑脸。

1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。

2.程序源代码:

 1 /**
 2     Description: 题目010 
 3 */ 
 4 #include<stdio.h>
 5 
 6 int main(){
 7     //C-Free 下面是乱码 
 8     int i, j;
 9     printf("\1\1\n"); /*输出两个笑脸*/
10     for (i = 1; i < 11; i++){
11         for (j = 1; j < i; j++){
12             printf("%c%c", 219, 219);
13         }
14         printf("\n");
15     }
16     return 0;
17 } 

-------------------------------------------------------------------------------------------------------------------------

 

posted @ 2012-07-31 17:32  Clin  阅读(425)  评论(0编辑  收藏  举报