ホームページ >バックエンド開発 >C#.Net チュートリアル >C言語の古典的な小さなプログラム10個
【手順 1】
問題: 1、2、3、4 の数字が繰り返されずに作れる 3 桁の数字は何通りありますか?いくつだ?
1. プログラム分析: 百の位、十の位、一の位に入力できる数字はすべて 1、2、3、4 です。すべての順列を合成したら、条件を満たさない順列を削除します。
2. プログラムのソースコード:
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)が 100,000 元以下の場合、利益が高ければボーナスを 10% 増額することができます。
金額が10万元未満、20万元未満の場合、10万元未満の部分は手数料10%、10万元を超える部分は手数料となります。
手数料は7.5%、20万元から40万元の場合は手数料が5%、40万元から60万元の場合は手数料が5%となります。
40万元の部分は3%の手数料がかかり、60万元から100万元までの60万元を超える部分は1.5%の手数料がかかります。
金額が100万元を超えた場合、手数料は100万元を超えた部分に対して1%となります。その月の利益Iをキーボードから入力してください。
1. プログラム分析: 数値軸を使用して分割して配置してください。ボーナスを定義する場合は、整数として定義する必要があることに注意してください。
2. プログラムのソースコード:
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)が 100,000 元以下の場合、利益が高ければボーナスを 10% 増額することができます。
金額が10万元未満、20万元未満の場合、10万元未満の部分は手数料10%、10万元を超える部分は手数料となります。
手数料は7.5%、20万元から40万元の場合は手数料が5%、40万元から60万元の場合は手数料が5%となります。
40万元の部分は3%の手数料がかかり、60万元から100万元までの60万元を超える部分は1.5%の手数料がかかります。
金額が100万元を超えた場合、手数料は100万元を超えた部分に対して1%となります。その月の利益Iをキーボードから入力してください。
1. プログラム分析: 数値軸を使用して分割して配置してください。ボーナスを定義する場合は、整数として定義する必要があることに注意してください。
2. プログラムソースコード:
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を足すと完全平方数になります。この番号?
1. プログラム分析: 100,000 以内を決定するには、まず処方前の数値に 100 を加算し、処方後の場合は処方前の数値に 268 を加算します。
以下の条件を満たしている、それが結果です。具体的な分析をご覧ください:
2. プログラムのソースコード:
#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]
タイトル: 特定の年の特定の月の特定の日を入力し、その日が何日であるかを判断します。
1. プログラムの分析: 3 月 5 日を例に挙げると、まず過去 2 か月を合計し、次にその年の特別な日である 5 日を追加する必要があります。
閏年で入力月が3日より大きい場合は、1日追加することを検討する必要があります。
2. プログラムのソースコード:
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]
タイトル: 3つの整数x、y、zを入力し、これら3つの数値を小さい順に出力してください。
1. プログラム分析: 最初に x と y を比較し、x と y の値を交換します。
次にxとzを使って比較し、x>zの場合はxとzの値を交換してxを最小化します。
2. プログラムのソースコード:
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 のパターンを出力します。
1. プログラム分析: まず、b4e17c67ac9499e268d9626ccce8267d*b4e17c67ac9499e268d9626ccce8267d 記号を使用して文字 C を紙に書き、それを別々の行に出力します。
2. プログラムのソースコード:
#include "stdio.h" main() { printf("Hello C-world!\n"); printf(" ****\n"); printf(" *\n"); printf(" * \n"); printf(" ****\n"); }[プログラム 7]
タイトル: 特別なパターンを出力します。C 環境で実行して見てください。非常に美しいです。
1. プログラム分析: キャラクターは全部で 256 人あります。キャラクターが異なればグラフィックも異なります。
2. プログラムのソースコード:
#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の式を出力します。
1. プログラム分析: 行と列を考慮します。合計 9 行 9 列あり、i は行を制御し、j は列を制御します。
2. プログラムソースコード:
#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]
タイトル: チェスボードの出力をリクエストします。
1. プログラム分析: i で行を制御し、j で列を制御し、i+j の合計の変化に応じて黒い四角または白い四角の出力を制御します。
2. プログラムのソースコード:
#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]
タイトル: 階段を印刷し、階段の上に 2 つのスマイリーフェイスを同時に印刷します。
1. プログラム分析: i を使用して行を制御し、j を使用して列を制御し、j を使用して i の変化に従って出力される黒い四角形の数を制御します。
2. プログラムのソースコード:
#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"); } }