모든 예시들은 실전C프로그래밍(21세기사, 나중채_김도년_김영갑_박천수_박태순_양효식_임필옥_장문정_장 윤_한동일 공저)에 수록되어 있는 것들입니다.
[문제 1] 하나의 양의 정수 N을 입력 받아, 1부터 N까지의 합을 출력하는 프로그램을 작성하시오.
int add(int x, int y);
int main(){
int N,sum=0,i,j;
scanf("%d",&N);
if(N%2==0)
for(i=1,j=N;i<=N/2;i++,j--)sum+=add(i,j);
else
for(i=0,j=N;i<=N/2;i++,j--)sum+=add(i,j);
printf("%d",sum);
return 0;
}
int add(int x, int y){
int sum=x+y;
return sum;
}
[문제 2] 두 개의 양의 정수 A와 B를 입력 받아, A부터 B까지의 합을 계산하는 프로그램을 작성하시오.
int sum(int n);
int main(){
int a,b;
scanf("%d %d",&a,&b);
printf("%d",sum(b)-sum(a-1));
return 0;
}
int sum(int n){
int sum;
return sum=n*(n+1)/2;
}
[문제 3] 하나의 양의 정수 X를 입력 받아 다음 수식의 결롸를 출력하는 프로그램을 작성하시오
1 + (1+2) + (1+2+3)....+(1+2+...+X)
int sum(int n);
int main(){
int X,sum=0;
scanf("%d",&X);
for(int i=1;i<=X;i++)sum=sum+sum(i);
printf("%d",sum);
return 0;
}
int sum(int n){
int sum;
return sum=n*(n+1)/2;
}
[문제 4] 2~9 사이의 정수 N을 입력 받아, 예시와 같이 숫자 N으로 사각형을 출력하는 프로그램을 작성하시오.
void print_row1(int x){
for(int i=0;i<x;i++)printf("%d",x);
}
void print_row2(int x){
for(int i=1;i<=x;i++){
if(i==1||i==x) printf("%d",x);
else printf(" ");
}
}
int main(){
int N;
scanf("%d",&N);
for(int i=1;i<=N;i++){
if(i==1||i==N)print_row1(N);
else print_row2(N);
printf("\n");
}
return 0;
}
[문제 5] 양의 정수를 반복해서 입력 받아(종료 조건 시까지), 예시와 같이 트리 모양을 출력하는 프로그램을 작성하시오.
void print_triangle(int x){
for(int i=0;i<x;i++){
printf("*");
}
printf("\n");
}
int main(){
int N;
do{
scanf("%d",&N);
print_triangle(N);
}
while(N!=0||N<0);
return 0;
}
[문제 6] 하나의 정수 x를 입력 받아 다음 함수의 결과를 출력하는 프로그램을 작성하시오.
f(x) = 2x^2 -5x+1
int func1(int x){
int ans;
return ans=2*x*x-5*x+1;
}
int main(){
int x;
scanf("%d",&x);
printf("%d",func1(x));
return 0;
}
[문제 7] 하나의 정수 x와 2차 함수 f(x)의 계수를 나타내는 3개의 정수를 입력 받아, 예시와 같이 함수 값을 계산하는 프로그램을 작성하시오.
int func2(int x, int a, int b, int c){
int ans;
return ans=a*x*x+b*x+c;
}
int main(){
int x,a,b,c;
scanf("%d",&x);
getchar();
scanf("%d %d %d",&a,&b,&c);
printf("%d",func2(x,a,b,c));
return 0;
}
[문제 8] 하나의 정수 x와 2차 함수 f(x)와 g(x)의 계수를 나타내는 6개의 정수를 입력 받아, 합성함수 g(f(x))를 계산하는 프로그램을 작성하시오.
int func2(int x, int a, int b, int c){
int ans;
return ans=a*x*x+b*x+c;
}
int main(){
int x,a,b,c,i,j,k;
scanf("%d",&x);
getchar();
scanf("%d %d %d",&a,&b,&c);
getchar();
scanf("%d %d %d",&i,&j,&k);
printf("%d",func2(func2(x,a,b,c),i,j,k));
return 0;
}
[문제 9] 정수를 반복해서 입력 받아(종료 조건 시까지) 가장 큰 값과 두 번쨰로 큰 값을 출력하는 프로그램을 작성하시오.
int max1, max2;
void update_max(int x){
if (x == max1) max2 = x;
if (x > max1) max2 = max1, max1 = x;
if (max1 > x&&x > max2) max2 = x;
}
int main(){
int N;
scanf("%d",&N);
max1=N;
scanf("%d",&N);
max2=N;
update_max(N);
while(N!=0){
scanf("%d",&N);
update_max(N);
}
printf("%d %d",max1,max2);
return 0;
}
[문제 10] 3~18 사이의 정수 N을 입력 받아 3개 주사위의 총 합이 N이 되는 모든 경우를 출력하는 프로그램을 작성하시오.
void die1(int x){
die2(N,x);
}
void die2(int x,int y){
for(int i=1;i<=N;i++) {
die3(x,y,i);
}
}
void die3(int x,int y, int z){
for(int i=1;i<=N;i++) {
if(N==y+z+i){
printf("%d %d %d\n",y,z,i);
}
}
}
int main(){
scanf("%d",&N);
for(int i=1;i<=N;i++) die1(i);
return 0;
}
[문제 11] 야구 게임
int a,b,c;
int count_strike(int x,int y,int z){
int ans=0;
if(x==a)ans++;
if(y==b)ans++;
if(z==c)ans++;
return ans;
}
int count_ball(int x,int y,int z){
int ans=0;
if(x==b)ans++;
if(x==c)ans++;
if(y==c)ans++;
if(z==a)ans++;
return ans;
}
int main(){
int x,y,z;
scanf("%d %d %d",&a,&b,&c);
while(1){
scanf("%d %d %d",&x,&y,&z);
printf("%dS%dB\n",count_strike(x,y,z),count_ball(x,y,z));
if(x==a&&y==b&&z==c) break;
}
return 0;
}
[문제 12] 양의 정수 N을 입력 받아, 아래 예시와 같이 높이가 N인 삼각형을 출력하는 프로그램을 작성하시오.
void print_line(int x,int y,int z){
for(int i=0;i<x;i++)printf(" ");
for(int j=0;j<y;j++)printf("*");
for(int k=0;k<z;k++)printf(" ");
printf("\n");
}
int main(){
int N;
scanf("%d",&N);
for(int i=1;i<= N;i++){
print_line((2*(N+1-i)-1)/2,2*i-1,(2*(N+1-i)-1)/2);
}
return 0;
}
[문제 13] 하나의 양의 정수 N을 입력 받아, 1부터 N까지의 정수에서 숫자 3이 총 몇 번 나타나는지를 출력하는 프로그램을 작성하시오.
int count_3(int x){
int i=0,j,ans=0;
while(i<=x){
for(j=i;j!=0;j=j/10)
if(j%10==3) ans++;
i++;
}
return ans;
}
int main(){
int N;
scanf("%d",&N);
printf("%d",count_3(N));
return 0;
}
[문제 14] 두 양의 정수 N와 M을 입력 받아, N보다 큰 소수를 작은 것부터 차례로 M개 출력하는 프로그램을 작성하시오.
is_prime(int x){
int num=0,tmp;
tmp=x;
for(int i=1;i<=x;i++){
if(x%i==0) num++;
}
if(num==2) return 1;
else return 0;
}
int next_prime(int x){
int i,j=0;
i=x+1;
while(j<5){
if(is_prime(i)==1) {
j++;
return i;
}
i++;
}
}
int main(){
int N,M,tmp;
scanf("%d %d",&N,&M);
tmp=N;
for(int i=0;i<M;i++){
printf(" %d",next_prime(tmp));
tmp=next_prime(tmp);
}
return 0;
}
'프로그래밍 공부 > C' 카테고리의 다른 글
[C언어] 정수를 문자열로 변환하기 (0) | 2020.11.07 |
---|---|
[C언어] 야구 게임 (0) | 2020.11.04 |
[C언어] 버블 정렬(가장 작은 수부터 큰 수까지 오름차순으로 정렬) (0) | 2020.11.04 |
2020.01.06 7장 배열 (0) | 2020.11.04 |
2020.01.05 6장 반복문 (0) | 2020.11.04 |