집 >백엔드 개발 >C#.Net 튜토리얼 >C 언어로 된 10가지 고전적인 작은 프로그램
[순서 1]
질문: 1, 2, 3, 4개의 숫자가 있는데, 반복되지 않는 세 자리 숫자는 몇 개나 만들 수 있나요? 몇 개입니까?
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% 늘릴 수 있습니다.
금액이 100,000위안 미만, 200,000위안 미만인 경우 100,000위안 미만 부분은 10% 수수료가 부과됩니다. 100,000위안 초과 부분은 수수료가 부과될 수 있습니다.
7.5%; 200,000~400,000위안 사이인 경우 200,000위안 초과 부분에 대해 5% 수수료가 부과됩니다. 400,000~600,000위안 사이인 경우 수수료는 5%입니다.
40만 위안 부분은 3%, 60만~100만 위안 부분은 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%의 수수료가 부과됩니다.
7.5%; 200,000~400,000위안 사이인 경우 200,000위안 초과 부분에 대해 5% 수수료가 부과됩니다. 400,000~600,000위안 사이인 경우 수수료는 5%입니다.
40만 위안 부분은 3%, 60만~100만 위안 부분은 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일을 예로 들면, 이전 두 달을 먼저 합산한 다음, 그 해의 특별일인 5일을 더해야 합니다.
윤년이고 입력 월이 3보다 큰 경우 하루를 추가하는 것을 고려해야 합니다.
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]
제목: 세 개의 정수 x, y, z를 입력하세요. 출력되는 세 숫자의 순위를 지정하세요. .
1. 프로그램 분석: x에 가장 작은 숫자를 넣는 방법을 찾아 먼저 x와 y를 비교하고 x>y이면 x와 y의 값을 교환합니다.
그런 다음 x와 z를 사용하여 비교합니다. x>z이면 x가 최소화될 수 있도록 x와 z의 값을 교환합니다.
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]
제목 : 계단을 프린트하고 계단 위에 웃는 얼굴 두 개를 동시에 프린트해보세요.
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"); } }