c语言编程题目

发布于 2021-06-02  1,166 次阅读


内容纲要

数组求斐波那契数列前36个数

#include <stdio.h>
int main(void )
{
    int i;
    long int f[36]={1,1};
    for (i=2;i<36;i++)
        f[i]=f[i-2]+f[i-1];
    for (i=0;i<36;i++)
    {
        if (i%4==0)
            printf("\n");
        printf("%12ld",f[i]);
    }
    return 0;
}

水仙花数

法一:
#include <stdio.h>
int main(void)
{
    int i,j,k,m,n;
    for(i=1;i<=9;i++)
        for(j=0;j<=9;j++)
            for(k=0;k<=9;k++)
                {
                    m=i*100+j*10+k;
                    n=i*i*i+j*j*j+k*k*k;
                    if(m==n)
                        printf("%-5d",m);
                }
}
法二:
#include <stdio.h>
int main(void)
{
    int x,y,z,n;
    for (n=100;n<1000;n++)
    {
        x=n%10;  //个位
        y=n/10%10;  //十位
        z=n/100;    //百位
        if (n==(x*x*x+y*y*y+z*z*z))
            printf("%-4d",n);
    }
}

最大公约数与最小公倍数

#include <stdio.h>
int main(void)
{
    int x,y,n,t;
    printf("请输入x,y的值:");
    scanf("%d%d",&x,&y);
    int m;
    m=x*y;
    if (x<y){
        t=x;
        x=y;
        y=t;
    }
    n=x%y;
    while (n!=0)
    {
        x=y;
        y=n;
        n=x%y;
    }
    printf("最大公约数为:%d\n",y);
    printf("最小公倍数为:%d",m/y);
}

冒泡排序法对8个数降序排列

#include <stdio.h>
int main(void )
{
    int a[8],i,j,t;
    printf("请输入8个数据:\n");
    for (i=0;i<8;i++)
        scanf("%d",&a[i]);
    for (i=0;i<7;i++)
        for (j=0;j<7-i;j++)
            if(a[j]<a[j+1])  //大数在前
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
    printf("排序后的数据:\n");
    for (i=0;i<8;i++)
        printf("%-4d",a[i]);
}

选择升序法排列8个数

#include <stdio.h>
int main(void )
{
    int a[8],i,j,k,x;
    printf("请输入8个数据:\n");
    for (i=0;i<8;i++)
        scanf("%d",&a[i]);
    for (i=0;i<7;i++)
    {
        k=i;
        for (j=i+1;j<8;j++)
        {
            if (a[j]<a[k])
                k=j;
        }
        if (k!=i)
        {
            x=a[i];
            a[i]=a[k];
            a[k]=x;
        }
    }
    printf("排序后的数据为:\n");
    for (i=0;i<8;i++)
        printf("%-4d",a[i]);
}

递归法求阶乘

#include <stdio.h>
long fun(int n);
int main(void )
{
    int  n;
    printf("请输入一个整数:");
    scanf("%d",&n);
    printf("%d!=%ld",n,fun(n));
}
long fun(int n)
{
    long s;
    if (n<0) printf("请输入非负整数!\n");
    if (n==0||n==1) s=1;
    if (n>0)
        s= fun(n-1)*n;
    return s;
}

求三个数的最大值

#include <stdio.h>
int max(int,int,int);
int main(void )
{
    int a,b,c;
    printf("请输入三个数:");
    scanf("%d%d%d",&a,&b,&c);
    printf("三个数中的最大数为:%d", max(a,b,c));
}
int max(int m,int n,int t)
{
    int i;
    i=m>n?m:n;
    i=i>t?i:t;
    return i;
}

统计字符

//只用指针做
#include <stdio.h>
int main(void )
{
    int space=0,number=0,letter=0,other=0;
    char str[255],*p=str;
    gets(str);
    for (;*p!='\0';p++)
    {
        if (*p==' ') space++;
        else if (*p>='0'&&*p<='9') number++;
        else if ((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) letter++;
        else other++;
    }
    printf("空格个数:%-4d,数字个数:%-4d,\n字母个数:%-4d,其他字符个数:%-4d",space,number,letter,other);
}
函数和指针做
#include <stdio.h>
int count(char *p)
{
    int space=0,number=0,letter=0,other=0;
    for (;*p!='\0';p++)
    {
        if (*p==' ') space++;
        else if (*p>='0'&&*p<='9') number++;
        else if ((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) letter++;
        else other++;
    }
    printf("空格个数:%-4d,数字个数:%-4d,\n字母个数:%-4d,其他字符个数:%-4d",space,number,letter,other);
}
int main(void )
{
    char str[255];
    gets(str);
    count(str);
}

计算分段函数

#include <stdio.h>
int fun(int);
int main(void )
{
    int x;
    printf("请输入x的值:");
    scanf("%d",&x);
    printf("y=%d",fun(x));
}
int fun(int x)
{
    if(x<=1) return x;
    if(x>1&&x<10) return 2*x+1;
    if(x>=10) return 3*x-8;
}

求pai值

//利用格里高利公式求pai/4=1-1/3+1/5-1/7+······,求pai的值,直到最后一项绝对值小于1e-6为止
#include <stdio.h>
#include <math.h>
int main(void )
{
    int a=1;
    float x=1,b=1,sum=0;  //a为分子,b为分母,sum为和,x为首项
    while (fabs(x)>=1e-6)
    {
        sum+=x;
        b+=2;
        a=-a;
        x=a/b;
    }
    sum*=4;
    printf("pai=%f",sum);
}

拼接字符串

#include <stdio.h>
法一:(指针)
void main()
{
    char a[10],b[10],*p=a,*q=b;
    scanf("%s%s",a,b);
    for (;*p!=0;p++);
    for (;*q!=0;q++,p++)
        *p=*q;
    *p=0;
    printf("%s",a);
}
法二:(数组法)
void main()
{
    char a[10],b[10];
    int i,j;
    scanf("%s%s",a,b);
    for (i=0;a[i]!=0;i++);
    for (j=0;b[j]!=0;j++,i++)
        a[i]=b[j];
    a[i]=0;
    printf("%s",a);

}
  • alipay_img
  • wechat_img
届ける言葉を今は育ててる
最后更新于 2021-06-05