C語言經典最基礎演算法題(從小白到大神)
阿新 • • 發佈:2019-02-18
我會把我學習C語言碰到的經典的演算法題目全都歸類到這個帖子中,希望對和我一樣學習程式設計的小白有幫助!但求精簡,以最少的時間入門C語言。
1.輸入n個數,輸出其中最大的一個數。
#include <stdio.h>
int main()
{
int n,i,s=0; //s為最大的數
int a[100]; //儲存的陣列
printf("請輸入你要比較的個數:");
scanf("%d", &n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(s<a[i]) s=a[i];
}
printf("最大值是:%d\n",s);
}
2.計算多項式1-1/2+1/3-1/4+.....+1/99-1/100的值。
#include<stdio.h>
int main()
{
double a=2, b=1, sign=1;
while(a<=100)
{
sign = -sign;
b = sign/a + b;
a = a + 1;
}
printf("sum = %lf\n",b);
return 0;
}
3.輸入a,b,c三個值,輸出其中最大值。
//方法1 #include <stdio.h> int main() { int max(int x, int y); int a, b, c, d, e; scanf("%d, %d, %d", &a, &b, &c); d = max( a, b ); e = max( d, c ); printf("max = %d\n", e); } int max(int x, int y) { int z; if(x>y) z = x; else z = y; return(z); }
//方法2
#include <stdio.h>
int main()
{
int a,b,c,max;
printf("please input a,b,c:\n");
scanf("%d,%d,%d",&a,&b,&c);
max = a;
if(max<b) max = b;
if(max<c) max = c;
printf("The largest number is %d\n",max);
return 0;
}
4.有一個函式:x < 1, y = x; 1 <= x < 10 , 2x - 1; x >= 10 , 3x-11.
#include <stdio.h>
int main()
{
double x,y;
scanf("%lf",&x);
if(x<1) y=x;
else if(x>=10) y=3*x-11;
else y=2*x-1;
printf("最終的值為%lf\n",y);
return 0;
}
5.求1!+2!+3!+......+20!的值。
#include<stdio.h>
int main()
{
double s=0,t=1;
int n;
for (n=1; n<=20; n++) {
t = t*n;
s = s + t;
}
printf("1!+2!+3!+....+20!=%0.16e\n",s); //%0.16e指的是以科學計數法的形式輸出10的若干次方,非自然指數
return 0;
}
6.請輸出如下圖案:
*
***
*****
*******
*****
***
*
#include <stdio.h>
int main()
{
int i,j,k;
for (i=0;i<=3;i++)
{
for (j=0;j<=2-i;j++)
printf(" ");
for (k=0;k<=2*i;k++)
printf("*");
printf("\n");
}
for (i=0;i<=2;i++)
{
for (j=0;j<=i;j++)
printf(" ");
for (k=0;k<=4-2*i;k++)
printf("*");
printf("\n");
}
return 0;
}
7.輸入有三個字串,要求找出其中最大的字串。
#include <stdio.h>
#include <string.h>
int main()
{
char str[3][20];
char string[20];
int i;
for(i=0;i<3;i++)
gets(str[i]);
if(strcmp(str[0],str[1])>0)
strcpy(string, str[0]);
else
strcpy(string, str[1]);
if(strcmp(str[2],string)>0)
strcpy(string, str[2]);
printf("\n最大的字串是:%s\n",string);
return 0;
}
8.用遞迴方法求n!
#include<stdio.h>
int main()
{
int fac(int n);
int n,y;
printf("輸入一個整數階乘:");
scanf("%d",&n);
y = fac(n);
printf("%d!=%d\n",n,y);
return 0;
}
int fac(int n)
{
int f;
if(n<0)
printf("n<0,資料錯誤");
else if(n == 0||n == 1)
f = 1;
else f = fac(n-1)*n;
return(f);
}
9.用指標方法對10個整數按由大到小的順序排列。
#include <stdio.h>
int main()
{
void sort(int x[],int n);
int *p,a[10],i;
p=a;
printf("請輸入十個整數:\n");
for(i=0;i<10;i++)
scanf("%d",p++);
p=a;
sort(p,10);
for(p=a,i=0;i<10;i++)
{
printf("%5d",*p);
p++;
}
printf("\n");
return 0;
}
void sort(int x[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(x[j]>x[k]) k=j;
if(k!=i)
{t=x[i];x[i]=x[k];x[k]=t;}
}
}