C 언어 고전 알고리즘 (1)
1. 분수 서열의 전 n항과 결과를 구하고 그 결과는 네 자리의 소수를 보류한다.
```c
#include
int main()
{
int i=0,n;
float sun=2,mum=1,sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
sum+=sun/mum;
sun=sun+mum;
mum=mum+1;
}
printf("%0.4lf
",sum);
}
## 2. n, ( , ( ) , ):
```c
```c
#include
void main()
{
int sum=0,i,n;
printf(" n:");
scanf("%d",&n);
for(i=1;i
## 3. n, n ,:
```c
#include
#define M 20
void main()
{
int i,j,n;
scanf("%d",&n);
int a[M][M];
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
if(i==j||j==1)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
printf("%5d",a[i][j]);
printf("
");
}
}
4. n권의 이름, 단가, 저자와 출판사를 입력하여 제목에 따라 순서대로 출력하고 구조체를 사용한다.
#include
#include
#define M 30
struct book
{
char name[20];
double price;
char writer[20];
char publisher[20];
};
void main()
{
struct book bk[M],temp;
int i,j,n;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s %lf %s %s",bk[i].name,&bk[i].price,bk[i].writer,bk[i].publisher);
}
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(strcmp(bk[j].name,bk[j+1].name)>0)
temp=bk[j];
bk[j]=bk[j+1];
bk[j+1]=temp;
}
}
for(i=0;i<n;i++)
{
printf("%s %lf %s %s ",bk[i].name,bk[i].price,bk[i].writer,bk[i].publisher);
printf("
");
}
}
5. 11에서 n 사이의 소수이자 회문수의 정수 개수를 입력한다. (이런 종류의 숫자가 있는데 그들이 보는 것과 거꾸로 보는 것은 같은 숫자이다. 예를 들어 1216562332 등이다. 이런 숫자를 회문숫자라고 한다.)
#include
#include
int sushu(int i)
{
int j;
for(j=2;j<=sqrt(i);j++)
if(i%j==0)
break;
if(j>sqrt(i))
return 1;
else //
return 0;
}
int huiwen(int i)
{
int t,m=0;
t=i;
do
{
m=m*10+t%10;
t=t/10;
}while(t!=0);
if(m==i)
return 1;
else //
return 0;
}
void main()
{
int n,i,sum=0;
scanf("%d",&n);
for(i=11;i<=n;i++)
{
if(sushu(i)&&huiwen(i))
{ sum++;
printf("%5d",i);
}
}
printf("
");
printf("%d
",sum);
}
2018
1. Sn=a+aa+aa+...+aa...a n개 a의 값을 구한다
#include
void main()
{
int i,a,n,sum=0,t=0;
printf("input a and n:");
scanf("%d%d",&a,&n); //
for(i=1;i<=n;i++)
{
t=t*10+a; // i
sum=sum+t;
}
printf("sum=%d
",sum);
}
2. 년 모월 모일을 입력하여 이 날이 이 해의 며칠째라고 판단한다.
#include
int main()
{
int i, days = 0;
int year, month, day;
int day_tab[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
printf(" 、 、 , :");
scanf("%d%d%d", &year, &month, &day);
for (i=1; i<month; i++)
{
days += day_tab[i];
}
days += day;
if ((year%4==0 && year%100!=0 || year%400==0) && month>=3)
days+=1;
printf("%d %d %d %d !
", year, month, day, days);
return 0;
}
3. 101-200 사이에 몇 개의 소수가 있는지 판단하고 모든 소수를 출력한다
#include
#include
int main()
{
int n,i,count=0;
printf("101~200 :
");
for(n=101;n<=200;n++)
{
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
break;
if(i>sqrt(n))
{
count++;
printf("%d ",n);
if(count%5==0)
printf("
");
}
}
printf("
");
printf(" %d
",count);
return 0;
}
4. insert 함수를 사용하여 작은 배열에서 큰 배열까지의 배열에 정수를 삽입하고 원래 순서대로 출력합니다.
#include
#define N 10
void order(int a[],int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
int insert(int a[],int n,int x)
{
int i;
i=n-1;
while(i>=0&&a[i]>x)
{
a[i+1]=a[i];
i--;
}
a[i+1]=x;
n++;
return n;
}
void main()
{
int i,n,x,a[N],k;
printf("input n:");
scanf("%d",&n);
printf("input teams:");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("input move number x:");
scanf("%d",&x);
order(a,n);
k=insert(a,n,x);
for(i=0;i<k;i++)
printf("%3d",a[i]);
}
5. 키보드에서 10개의 수를 입력하여 최대치, 최소치와 평균치를 구한다
#include
#define N 10
void main()
{
int a[10],t,i,min,max;
double avg,s=0;
printf("input numbers:");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N;i++)
{
s=s+a[i];
if(i==0)
{
min=a[i];
max=a[i];
}
else
{
if(a[i]<min) // ,
{
t=min;
min=a[i];
a[i]=t;
}
if(a[i]>max) // ,
{
t=max;
max=a[i];
a[i]=t;
}
}
}
avg=s/10;
printf("max=%d,min=%d,avg=%lf
",max,min,avg);
}
2017
6. 키보드에서 큰 키에서 작은 키로 10개 입력
#include
void main()
{
int i,j,a[10],t;
printf(" : ");
for (i = 0; i < 10; i++)
scanf("%d",&a[i]);
for (i = 0; i < 10; i++)
{
for (j = i + 1; j < 10;j++) //
if (a[i] < a[j]){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
printf(" :
");
for (i = 0; i < 10; i++)
printf("%d
", a[i]);
}
:
#include
#define N 10
void sort(int a[],int n)
{
int i,j,t;
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
void main()
{
int i,a[N];
printf("input numbers:");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
sort(a,N);
for(i=0;i<N;i++)
printf("%3d",a[i]);
}
7.linemax를 작성하여 M행 N열 2차원 배열에서 최대값을 찾아 아래 첨자를 기록한다
#include
#define M 3
#define N 4
void main()
{
int a[M][N],i,j,max,maxi,maxj;
printf("please enter elements: ");
for(i=0;i<M;i++){
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
}
max=a[0][0];
for(i=0;i<M;i++){
for(j=0;j<N;j++){
if(a[i][j]>max)
{
max=a[i][j];
maxi=i;
maxj=j;
}
}
}
printf("max=a[%d][%d]=%d
",maxi,maxj,max);
}
2016
1차원 배열의 최대 요소와 그 아래 첨자를 구합니다.
#include
void findmax(int s[],int t,int *k)
{
int p;
for(p=0,*k=p;p<t;p++)
if(s[*k]<s[p])
*k=p;
}
void main()
{
int b[10],i,*k=&i;
for(i=0;i<10;i++)
scanf("%d",&b[i]);
findmax(b,i,k);
printf("%d
%d
",*k,b[*k]);
}
2.
#include
#define N 5
int myf(int *p,int n)
{
int i,maxi;
maxi=0;
for(i=0;i<n;i++)
if(p[maxi]<p[i])
maxi=i;
return maxi;
}
int main()
{
int a[N],t,i;
printf("input numbers:
");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
t=myf(a,N);
printf("The MAX is a[%d] = %d,max index is %d
",t,a[t],t);
return 0;
}
3. 100~300칸 소수 인쇄:
#include
#include
void main()
{
int i,j,k=0,flag,m;
for(i=101;i<300;i+=2)
{
flag=1;j=2;
m=sqrt(i);
while(j<=m&&flag)
if(i%j==0)
flag=0;
else
j++;
if(j>m)
{
printf("%5d",i);
k+=1;
if(k%5==0)
printf("
");
}
}
}
:
#include
#include
void main()
{
int i,j,sum=0;
for(i=100;i<=300;i++)
{
for(j=2;j<=sqrt(i);j++) // for {}
if(i%j==0)
break;
if(j>sqrt(i))
{
printf("%d ",i);
sum++;
}
}
printf("sum=%d
",sum);
}
4. 설계 함수 완성 화식 계산sum=1-1/2-1/3+1/4-1/5-1/6...(n항목 입력, 1정 2음):
#include
#define n 10
void main()
{
int i,flag=-1;
double a=1,b,sum=0; //
for(i=1;i<=n;i++)
{
if(i%3==1||i%3==2)
flag=-flag;
b=i;
sum=a/b*flag+sum;
}
printf("sum=%lf
",sum);
}
5. 라이브러리 함수를 사용하지 않고 문자열 연결을 완료합니다.
#include
void main()
{ char s1[80],s2[40];
int i=0,j=0;
scanf("%s
%s",s1,s2);
while (s1[i]!='\0')
i++;
while(s2[j]!='\0')
s1[i++]=s2[j++];
s1[i]='\0';
printf("%s
",s1);
}
:
#include
#define N 100
void main()
{
int i=0,j=0;
char s1[N],s2[N];
printf("input two strings:
");
gets(s1);
gets(s2);
while(s1[i]!='\0')
i++;
while(s2[j]!='\0')
s1[i++]=s2[j++];
s1[i++]='\0';
printf("%s
",s1);
}
2015
1. 윤년을 수출하고 세 개씩 줄을 바꾼다.
#include
void main()
{
int i,sum=0;
for(i=1900;i<=2000;i++)
if(i%4==0&&i%100!=0||i%400==0)
{
printf("%d ",i);
sum++;
if(sum%5==0)
printf("
");
}
printf("sum=%d
",sum);
}
2014
1. 1000 이내의 질량을 출력한다.
#include
#include
int sushu(int i)
{
int j;
for(j=2;j<=sqrt(i);j++)
if(i%j==0)
break;
if(j>sqrt(i))
return 1;
else
return 0;
}
void main()
{
int i,sum=0;
for(i=2;i<=1000;i++)
if(sushu(i))
{
sum++;
printf("%d\t",i);
if(sum%5==0)
printf("
");
}
printf("sum=%d
",sum);
}
:
#include
#include
void main()
{
int i,j,sum=0;
for(i=2;i<=1000;i++)
{
for(j=2;j<=sqrt(i);j++)
if(i%j==0)
break;
if(j>sqrt(i))
{
printf("%d\t",i);
sum++;
if(sum%5==0)
printf("
");
}
}
printf("sum=%d
",sum);
}
2. 16진수를 10진수로 변환
#include
#include
#include
int main( )
{
char a[10];
void convert(char a[]);
printf(" :");
gets(a); //
convert(a);
return 0;
}
void convert(char a[])
{
int n,i,num=0;
n=strlen(a);
for(i=n-1;i>=0;i--)
{
if(a[i]>='0'&&a[i]<='9')
num+=(a[i]-'0')*pow(16,n-1-i);
else if(a[i]>='A'&&a[i]<='Z')
num+=(10+(a[i]-'A'))*pow(16,n-1-i);
else if(a[i]>='a'&&a[i]<='z')
num+=(10+(a[i]-'a'))*pow(16,n-1-i);
}
printf(" :");
printf("%d",num);
}
3. 여러 진수 변환: 임의의 진수 변환 10진수:
#include
int main()
{
int x,p; //x p
scanf("%d",&x);
scanf("%d",&p);
int y=0,product=1;
while(x!=0){
y=y+(x%10)*product;
x=x/10;
product=product*p;
}
printf("%d
",y);
return 0;
}
:
#include
int main(){
int x,p; //x ,p
scanf("%d",&x);
scanf("%d",&p);
int a[100]; //
int count=0;
do{
a[count++]=x%p;
x=x/p;
}while(x!=0);// 0
for(int i=count-1;i>=0;i--){
printf("%d",a[i]);
}
}
4. 년도와 일수를 입력하고 해당 년, 월, 일을 출력합니다.
#include
void month_day(int year,int yearday,int *pmonth,int *pday)
{
int k,leap;
int tab[2][13]={
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31},
};//
leap=(year%4==0&&year%100!=0)||year%400==0; //
for(k=1;yearday>tab[leap][k];k++)
yearday-=tab[leap][k];
*pmonth=k;
*pday=yearday;
}
int main()
{
int day,month,yearday,year; // 、 、
printf("input year and yearday:");
scanf("%d%d",&year,&yearday);
month_day(year,yearday,&month,&day);
printf("%d-%d-%d
",year,month,day);
return 0;
}
:
#include
int f(int year)
{
if(year%4==0&&year%100!=0||year%400==0)
return 1;
else
return 0;
}
void fun(int year,int days,int *month,int *day)
{
int k,leap;
int tab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}};
leap=f(year);
for(k=1;days>tab[leap][k];k++)
days=days-tab[leap][k];
*month=k;
*day=days;
}
void main()
{
int year,days,month,day;
printf("input year and days:
");
scanf("%d%d",&year,&days);
fun(year,days,&month,&day);
printf("%d %d %d
",year,month,day);
}
2013
1. 키보드 10개 입력, 거품 정렬,
#include
#define N 10
void sort(int a[],int k) // k n,
{
int i,j,t;
for(i=0;i<k-1;i++)
for(j=0;j<k-i-1;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
void main()
{
int i,a[N];
printf("input some numbers:
");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
sort(a,N);
for(i=0;i<N;i++)
printf("%d\t",a[i]);
}
1. 바늘을 가리키는 바늘로 10개의 문자열을 정렬하고 출력한다
#include
#include
#include
void sort(char *str[],int size)
{
int i,j;
char *temp;
for(i=0;i<size-1;i++)
{
for(j=i+1;j<size;j++)
{
if(strcmp(str[i],str[j])>0) //
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
}
}
}
int main()
{
char *p[200],str[200][20];
int i,n;
printf(" : ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",str[i]);
p[i]=str[i];
}
sort(p,n);
printf(" :
");
for(i=0;i<n;i++)
printf("%s
",p[i]);
return 0;
}
2.C 언어 원숭이 복숭아 먹기 문제 귀속법
#include
int fun(int day)
{
if(day==20)
return 1;
else
return (fun(day+1)+1)*2;
}
void main()
{
int sum;
sum=fun(1);
printf("sum=%d
",sum);
}
2011
1. 귀속 방법으로 학생의 나이를 계산한다. 이미 알고 있는 첫 번째 직원의 나이는 20세이고 나머지 직원은 한 사람보다 3살 많으며 일곱 번째 학생의 나이를 구한다.
#include
#define N 20
int age(int x)
{
if(x==1) return N;
return age(x-1)+3;
}
void main()
{
printf("%d
",age(7));
}
2. 정렬 하위 함수를 작성하여 10개의 수를 작은 것에서 큰 것으로 정렬하고 주 함수에서 호출합니다.
#include
void sort(int *a, int n)
{
int i,j;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - i - 1; j++)
{
if (a[j]< a[j + 1])
{
int t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
void main()
{
int a[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);
for (i = 0; i < 10; i++)
printf("%d ", a[i]);
printf("
");
}
2010
1. 두 함수를 써서 두 정수의 최대 공약수와 최소 공배수를 구하고 주함수로 이 두 함수를 호출하여 결과를 출력한다.두 개의 정수는 키보드에서 입력한다.
#include
// ( )
int cy(int x, int y)
{
if(y==0)
return x;
else
return cy(y,x%y);
}
//
int cb(int x, int y)
{
return (x*y)/cy(x, y);
}
void main()
{
int a, b; //
scanf("%d %d", &a, &b);
printf("cy=%d, cb=%d
", cy(a, b), cb(a, b)); //
}
2. 정수 10개를 입력하고 그 중 가장 작은 수를 첫 번째 수와 대조하고 가장 큰 수를 마지막 수와 대조한다.세 가지 함수 쓰기;① 10개 숫자 입력하기;② 처리하기;③ 10개를 출력한다.
#include
void fun(int a[],int n)
{
int i,min,b=0,max,temp;
min=a[0];
max=a[0];
for(i=0;i<n;i++)
if(min>a[i])
{
min=a[i];
b=i;
}
temp=a[0];a[0]=a[b];a[b]=temp;
for(i=0;i<n;i++)
if(max<a[i])
{
max=a[i];
b=i;
}
temp=a[9];a[9]=a[b];a[b]=temp;}
void shuchu(int a[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
void main()
{
int n=10,i,a[10];
for(i=0;i<n;i++)
scanf("%d",&a[i]);
fun(a,n);
shuchu(a,n);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.