C语言经典最基础算法题(从小白到大神)

我会把我学习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;}
    }
}

    原文作者:常用算法
    原文地址: https://blog.csdn.net/u013047859/article/details/51143810
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞