37道C语言基础题,包含水仙花数、计算BMI、菱形三角形打印、温度转换、回文、闰年、英文大小写转换

还有两道题没做出来,后面再加上




1.输入3个数判断是否能构成三角形;若可以请计算面积


    #include <stdio.h>
    float area(float x,float y,float z);
    int main(){
        float a,b,c;
        printf("请输入三个数(以空格分隔):");
        scanf("%f %f %f",&a,&b,&c);
        if(a+b>c&&a+c>b&&b+c>a){
            printf("%.1f %.1f %.1f三边可以构成三角形。",a,b,c);
            printf("\n面积为%.2f",area(a,b,c));}
        else
            printf("%.1f %.1f %.1f三边不可以构成三角形!");
    }
    
    float area(float x,float y,float  z){
        float p,s;
        /**使用海伦公式计算面积**/
        p=(x+y+z)/2;
        s=p*(p-x)*(p-y)*(p-z);
        return s;
    }


2.求圆的面积、周长


    #include <stdio.h>
    #define Pi 3.14
    float area(float a);
    float cirum(float a);
    
    int main(){
        float r;
        printf("请输入圆的半径(单位:m):");
        scanf("%f",&r);
        printf("\n这个圆的面积为:%.2fm^2",area(r));
        printf("\n这个圆的半径为:%.2fm",cirum(r));
        return 0;
    }
    
    float area(float a){
        float s;
        s=Pi*a*a;
        return s;
    }
    
    float cirum(float a){
        float c;
        c=2*Pi*a;
        return c;
    
    }


3.求立方体的体积

    #include <stdio.h>
    float v(float a,float b,float c);
    
    int main(){
        float L,W,H;
        printf("请输入立方体的长、宽、高(中间用空格隔开):");
        scanf("%f %f %f",&L,&W,&H);
        if(L= =0||W= =0||H==0)
            printf("输入值为非法数值,请重新输入!");
        else
            printf("这个立方体的体积为%.2fm^3",v(L,W,H));
            return 0;
    }
    
    float v(float a,float b,float c){
        float v=a*b*c;
        return v;
    }


4.华氏温度与摄氏温度相互转换

    #include <stdio.h>
    float Dc(float a);
    float Fd(float b);
    
    int main(){
        int selec = 1;
        float temp;
        printf("1:华氏度->摄氏度");
        printf("\n2:摄氏度->华氏度");
        printf("\n请选择模式(1 or 2):");
        scanf("%d",&selec);
        printf("\n请输入温度:");
        scanf("%f",&temp);
        if(selec==1)//华氏度->摄氏度
            printf("%.2f转换为摄氏度为%.2f",temp,Dc(temp));
        else
            printf("%.2f转换为华氏度为%.2f",temp,Fd(temp));
    
        return 0;
        }
    
    float Dc(float a){
         float C;
         C=(a-32)/1.8;
         return C;
        }
    
    float Fd(float b){
        float F;
        F=b*1.8+32;
        return F;
    }


5.水仙花数

    #include <stdio.h>
    
    int Prod(int num);
    
    int main(){
        int num;
        printf("请输入一个三位数:");
        scanf("%d",&num );
        if(num>999||num<100)
            printf("输入不合法!请输入100~999之间的数!");
        else
            if(num==Prod(num))
                printf("%d是水仙花数。",num );
            else
                printf("%d不是水仙花数!",num);
        return 0;
    }
    
    int Prod(int num){
        int a,b,c,after_num;
        a=num/100;
        b=num/10%10;
        c=num%10;
        after_num=a*a*a+b*b*b+c*c*c;
        return after_num;
    }


6.打印各种三角形

直角三角形

    #include <stdio.h>
    
    int main(void){
        int i,j;
        for(i=0;i<6;i++){
            for(j=6;j>i;j--){//空格逐行-1,*逐行加1
                printf("");}
            for(j=0;j<=i;j++){
                printf("*");
                }
            printf("\n");
        }
    }

等腰三角形

    #include <stdio.h>
    
    int main(void){
        int i,j;
        for(i=0;i<6;i++){
            for(j=6;j>i;j--){
                printf(" ");
            }
            for(j=0;j<2*i+1;j++){
                printf("*");
            }
            printf("\n");
        }
}

倒立等腰三角形

    #include <stdio.h>
    
    int main(void){
        int i,j;
        for(i=0;i<6;i++){
            for(j=0;j<i;j++){
                printf(" ");
                }
                for(j=0;j<=11-2*i;j++){
                        printf("*");
                }
                printf("\n");
            }
    }


7.用*打印菱形

    int i,j,k;
    
    for(i=1;i<=5;i++){
    
        for(j=6;j>i;j--){
    
            printf(" ");
    
        }
    
        for(k=1;k<=2*i-1;k++){
    
            printf("*");
    
        }
    
        printf("\n");
    
    }
    
    for(i=1;i<=6;i++){
    
            for(j=1;j<=i-1;j++){
    
                printf(" ");
    
            }
    
            for(k=1;k<=13-2*i;k++){
    
                printf("*");
    
            }
    
            printf("\n");
    
        }


8.输入一级数据,逆序存放

    /*输入一级数据,逆序存放*/
    #include <stdio.h>
    
    int main(void){
        int a[5],i;
        printf("请输入一串数据:");
        for(i=4;i>=0;i--)
            scanf("%d",&a[i]);
    
        printf("逆序存放顺序为:");
        for(i=0;i<5;i++)
            printf("%d",a[i]);
        return 0;
    }


9.输入字符串,逆序输出

    #include <stdio.h>
    #define N 4
    int main(){
        char a[N];
        int i;
    
        printf("请输入一串字符串:");
        for(i=0;i<N;i++)
            scanf("%c",&a[i]);
    
        printf("\n原字符串为:");
        for(i=0;i<N;i++)
            printf("%c",a[i]);
    
        printf("\n逆序输出结果为:");
        for(i=N-1;i>=0;i--)
            printf("%c",a[i]);
            printf(" ");
    
    }


10.判断是否为回文

    #include <stdio.h>
    #include <string.h>
    
    int main(){
        char a[10];
        int i,j,len,result;
        printf("这是一个判断输入是否为回文的小程序");
        printf("\n请输入一段文字:");
        gets(a);
        len=strlen(a);
        if(len%2==0){//长度为偶数时
            for(i=0;i<=(len/2-1);i++){
                for(j=len-1;j>=len/2;j--){
                        if(a[i]==a[j])
                            result+=1;
                        else
                            result+=0;}
                       }
            }
        else{//长度为奇数时
            for(i=0;i<=len/2;i++){
                for(j=len-1;j>=len/2;j--){
                        if(a[i]==a[j])
                            result+=1;
                        else
                            result+=0;}
                        }
            }
        if(len%2= =0){
            if(result%(len/2)==0)
                printf("\n%s是回文!",a);
            else
                printf("\n%s不是回文!",a);}
        else {
            if(result%(len/2+1)==0)
                printf("\n%s是回文!",a);
            else
                printf("\n%s不是回文!",a);}
    }


11.判断是否是闰年

    #include <stdio.h>
    void judge(int year);
    
    int main(void){
        int year;
        printf("这是一个闰年的小程序");
        printf("请输入:");
        scanf("%d",&year);
        judge(year);
        return 0;
    }
    
    void judge(int year){
        if(year<=0)
            printf("输入不合法!请重新输入!");
        else if((year%4= =0&&year%100!=0)||(year%400==0))
            printf("%d是闰年。",year);
        else
            printf("%d不是闰年!",year);
    }


12.输出某一范围的所有闰年

    #include <stdio.h>
    void print(int x,int y);
    
    int main(){
        int i,a,year;
    
        printf("请输入范围(中间用空格隔开):");
        scanf("%d %d",&a,&year);
        print(a,year);
        return 0;
    }
    
    void print(int x,int y){
        int i;
        printf("\n%d~%d之间闰年有:\n",x,y);
        if(x<0||y<0||(x<0&&y<0))
            printf("输入有误!请重新输入!");
        else{
            if(x<y){//前一个输入值小于后一个时
                for(i=x;i<y;i=i+4){//闰年每四年一次
                    if(((i%4= =0)&&(i%100!=100))||(i%400== 0))
                        printf("%d年",i);
                        printf("  ");}
                        }
            else if(x>y){//前一个输入值大于后一个时
                for(i=x;i>y;i=i-4){
                    if(((i%4= =0)&&(i%100!=100))||(i%400==0))
                        printf("%d年",i);
                        printf("  ");}
                        }
            }
    }


13.判断奇偶性

    #include <stdio.h>
    
    int main(){
        int num;
    
        printf("这是一个判断输入数值奇偶性的小程序");
        printf("\n\n请输入:");
        scanf("%d",&num );
        judge(num);
    }
    
    void judge(int a){
        if(a%2==0)
            printf("\n%d是偶数。",a );
        else//奇数情况下
            printf("\n%d是奇数。",a);
    }


14.计算BMI

    /**BMI=体重/身高^2**/
    #include <stdio.h>
    float BMI_Cout(float a,float b);
    
    int main(){
        float hight,wight;
        printf("请输入您的身高(m)和体重(kg)(中间请用空格隔开):");
        scanf("%f %f",&hight,&wight);
        printf("您的BMI值为:%.2f",BMI_Cout(wight,hight));
    }
    
    float BMI_Cout(float a,float b){
        float BMI;
        BMI=a/(b*b);
        return BMI;
    }


15.计算阶乘

    #include <stdio.h>
    double factotial(int a);
    
    int main(void){
        int num;
    
        printf("这是一个计算阶乘的程序");
        printf("\n请输入:");
        scanf("%d",&num );
        printf("\n%d的阶乘是%.2lf",num,factotial(num));
    
        return 0;
    }
    
    double factotial(int a){
        int i;
        double product=1;
        for(i=1;i<=a;i++)
            product*=i;
        return product;
    }


16.打印乘法口诀表

    #include <stdio.h>
    void multip(void);
    
    int main(void){
        printf("这是一个打印乘法口诀表的小程序");
        multip();
    }
    void multip(void){
        int i,j;
        printf("\n");
        for(i=1;i<10;i++){
            for(j=1;j<10;j++){
                printf("%d*%d=%d\t",i,j,i*j);
    
                if(j==9)
                    printf("\n");
            }
        }
    }


17.从1加到100

    #include <stdio.h>
    int sum(void);
    
    int main(){
        printf("和为%d",sum());
    }
    
    int sum(void ){
        int i,s=0;
        for(i=1;i<101;i++)
            s+=i;
        return s;
    }



18.1+1/2+1/3+…1/100

    #include <stdio.h>
    
    int main(){
        int i;
        float sum = 0.0;
        for(i=1;i<=100;i++)
            sum+=(float)1/i;
        printf("和为%f",sum);
    }


19.1-1/2+1/3-1/4+…1/100

    #include <stdio.h>
    float Cout(void);
    
    int main(){
        printf("和为:%f",Cout());
    }
    float Cout(void ){
        int i;
        float sum=0;
        for(i=1;i<=100;i++){
            /**偶数减 奇数加*/
            if(i%2==0)
                sum-=1.0/i;
            else
                sum+=1.0/i;}
        return sum;
    }


20.计算2+22+222+2222+22222

    #include <stdio.h>
    int cout(int n);
    
    int main(){
        int num;
        printf("请输入要计算的数字(例如2):");
        scanf("%d",&num);
        printf("和为:%d",cout(num));
    }
    
    int cout(int n){
        int sum=0,i;
        for(i=1;i<=5;i++){
            sum+=n;
            n=n*10+2;}
        return sum;
    }


21.打印Fibonacci数列

    #include <stdio.h>
    void Fibon(int n);
    
    int main(){
        int num;
        printf("这是一个打印Fibonacci数列的程序");
        printf("请输入要打印多少个:");
        scanf("%d",&num );
        Fibon(num);
    }
    void Fibon(int n){
            int F[n],i;
            /**将Fibonacci数列第一第二个数初始化1*/
            F[0]=1;
            F[1]=1;
            /**打印从第三个数开始的Fibonacci数列*/
            for(i=2;i<n;i++){
                F[i]=F[i-1]+F[i-2];
            }
    
            /**将F[]数列中的所有元素全部打印出来*/
            printf("%d个Fibonacci数:\n",n);
            for(i=0;i<n;i++)
                printf(" %d ",F[i]);
                if(i!=0&&i%10==0)
                    printf("\n");
        }


22.分段函数

    #include <stdio.h>
    int Sction_fun(int x);
    
    int main(){
        int num;
        printf("这是一个分段函数题");
        printf("请输入:");
        scanf("%d",&num);
        printf("结果为:%d",Sction_fun(num));
        return 0;
    }
    int Sction_fun(int x){
        int y;
        if(x<1)
            y=x;
        else if(x>=1&&x<10)
            y=2*x-1;
    	else
            y=3*x-11;
        return y;
    }


23. 2/1 3/2 5/3…前20项的和

    #include <stdio.h>
    float  sum(int n);
    
    int main(){
        int num;
        printf("这是一个打印特定数和的小程序:");
        printf("\n\n请输入:");
        scanf("%d",&num);
        printf("\n打印的%d个数和为:%.2f",num,sum(num));
    }
    
    float sum(int n){
        float  numer=2,a=1,i;
        float s=0;
        for(i=1;i<n;i++)
            s+=numer/a;
            a=numer;
            numer+=i;
        return s;
    }


24.求一组数据中的最大值、最小值、平均值

    #include <stdio.h>
    int  Max(int*p);
    int   Min(int*p);
    float   Averg(int*p);
    
    int main(){
        int str[10],*ptr ,i;
        printf("请输入10个数据:");
        for(i=0;i<10;i++)
            scanf("%d",&str[i]);
        ptr=str;//指针指向数组str的首地址
        printf("最大值是%d",Max(ptr));
        printf("\n最小值是%d",Min(ptr));
        printf("\n平均值是%.2f",Averg(ptr));
    
        return 0;
    }
    
    /*最大值*/
    int  Max(int *p){
        int i,j,max=p[0];
        for(i=0;i<10;i++){
            for(j=0;j<10;j++){
                if(p[i]>max)
                    max=p[i];}
        }
        return max;
    }
    
    /*最小值*/
    int   Min(int *p){
        int i,j,min=p[0];
        for(i=0;i<10;i++){
            for(j=0;j<10;i++){
                if(p[i]<min)
                    min=p[i];}
            }
        return min;
    }
    
    /*平均值*/
    float   Averg(int *p){
        float aver=0.0;
        int sum=0;
        int i;
        for(i=0;i<10;i++)
            sum+=p[i];
        aver=(float)sum/(i+1);
        return aver;
    }


25.密码

    #include <stdio.h>
    #include <string.h>
    int Login(void);
    void main(){
        int Count=1;
        printf("\n\t\t\t\t   --------------------*登录界面*--------------------");
        while(Count<=3){
        if(Login()==1)
            exit(1);
        else
            Count+=1;}
        return 0;
    }
    
    int Login(void){
        char pass[10],def_pass[10]="1234";
        int a;
        printf("\n\n\t\t\t\t\t请输入密码:");
        scanf("%s",pass);
        if(strcmp(pass,def_pass)==0){
            printf("\n\t\t\t\t\t\t  、登录成功");
            a= 1;}
        else{
            printf(0\n"\t\t\t\t\t\t  密码错误!");
            a= 2;}
            return a;
    }


【未做】26.二维数组,最大值,最小值,平均值,对角线元素的和



【未做】27.统计各种字符的个数



28.统计正数,负数和0的个数

    #include <stdio.h>
    void Num_Cout(int *p);
    
    int main(void){
        int a[10],i,*ptr=NULL  ;
        printf("请输入一串数值(包含正数、负数、0):");
        for(i=0;i<10;i++)
            scanf("%d",&a[i]);
        ptr=a;
        Num_Cout(ptr);
    }
    
    void Num_Cout(int *p){
        int i,cout_0=0,cout_z=0,cout_f=0;
        for(i=0;i<10;i++){
            if(p[i]==0)
                cout_0+=1;
            else if(p[i]>0)//正数
                cout_z+=1;
            else if(p[i]<0)//负数时
                cout_f+=1;
        }
        printf("这串数值中\n正数有:%d个\n负数有:%d个\n0有:%d个",cout_z,cout_f,cout_0);
    }


29.输入四个数,输出的时候用空格隔开

    #include <stdio.h>
    void Proc(int *p);
    
    int main(){
        int num[4],*ptr,i;
        printf("请输入4个数:");
        for(i=0;i<4;i++)
            scanf("%d",&num[i]);
        ptr=num ;
        Proc(ptr);
    }
    void Proc(int *p){
        int i;
        for(i=0;i<4;i++){
            printf("%d",p[i]);
            printf(" ");
        }
    }


30.英文字母大小写转换

    #include <stdio.h>
    char Switch_Char(char ch);
    
    int main(){
        char ch;
        printf("请输入要转换的字母:");
        scanf("%c",&ch);
        Switch_Char(ch);
    }
    
    /**转换函数*/
    char Switch_Char(char ch){
        if(ch<='Z'&&ch>='A'){/*判断为大写字符*/
            ch+=32;
            printf("\n转换为小写字母为%c",ch);}
        else if(ch>='a'&&ch<='z'){/*判断为小写字母*/
            ch-=32;
            printf("\n转换为大写字母为%c",ch);}
        else
            printf("输入错误!请输入字母!");
    }


31.长方形的周长面积

    #include <stdio.h>
    float oblong(float a,float b);
    
    int main(void){
        float len,wight;
        printf("请输入长方形的长和宽(中间用空格隔开):");
        scanf("%f %f",&len,&wight);
        printf("长方形的面积是%.2fm^2",oblong(len,wight));
    
    }
    float oblong(float a,float b){
        return a*b;
    }


32.输出100以内所有能被5整除的数

    #include <stdio.h>
    int Input_Division();
    int main(){
        printf("100以内能被5整除的数有:\n");
        Input_Division();
    }
    
    int Input_Division(){
        int i,cout=1;
        for(i=0;i<=100;i++){
            if(i%5= =0){
                printf("%d",i);
                printf(" ");
                cout+=1;
                if(cout%5==0)
                    printf("\n");}
        }
    }


33.输入一个整数,若为正数求平方根

    #include <stdio.h>
    float Sqrt_Func(int num);
    
    int main(){
        int a;
        printf("请输入一个数:");
        scanf("%d",&a);
        if(a>0)
            Sqrt_Func(a);
        else
            printf("\n输入错误!请输入正数!");
    }
    
    float Sqrt_Func(int num){
        float result;
        result = sqrt(num);
        printf("%d的平方根为%.2f",num,result);
    }


34.求一定范围内所有偶数的和

    #include <stdio.h>
    int even_num(int a,int b);
    int main(void){
        int prep,next;
        printf("请输入范围(例如:2 10):");
        scanf("%d %d",&prep,&next);
        printf("%d到%d之间的偶数有:\n",prep,next);
        even_num(prep,next);
    }
    int even_num(int a,int b){
        int cout=1,i;
        for(i=a;i<=b;i++){
            if(i%2= =0){
                printf("%d",i);
                printf(" ");
                cout++;}
                    if(cout%5==0)
                        printf("\n");
        }
    }


<存疑>35.二维数组行列交换

    /**二维数组行列交换*/
    #include <stdio.h>
    void exchange(int str[3][4]);
    int main(){
        int *p,i,j;
        int a[3][4]={{1,1,1,1},
                        {0,0,0,0},
                        {4,4,4,4},};
       printf("数组原顺序为:\n");
        for(i=0;i<3;i++){
            for(j=0;j<4;j++){
                printf("%d",a[i][j]);
                if(j%5= =0&&j!=0)
                    printf("\n");}
        }
        exchange(a);
    }
    void exchange(int str[3][4]){
        int i,j,change;
        for(i=0;i<3;i++){
            for(j=0;j<4;i++){
                change = str[i][j];
                str[i][j]=str[j][i];
                str[j][i]=change;}
        }
        printf("行列交换后为:");
        for(i=0;i<3;i++){
            for(j=0;j<4;j++)
                printf("%d",str[i][j]);
                if(j%5==0)
                    printf("\n");
        }
    }


36.逆序输出

    #include <stdio.h>
    #define  N 8
    int main(){
        char a[N];
        int i;
        printf("请输入:");
        for(i=0;i<N;i++)
            scanf("%c",&a[i]);
        /**逆序输出*/
        for(i=N-1;i>=0;i--)
            printf("%c",a[i]);
        return 0;
    }


37.for循环嵌套打印输出字母

方法一:

    #include <stdio.h>
    
    int main(void){
        int i,j;
        char a='A';
        for(i=0;i<6;i++){
            for(j=6;j>i;j--){//空格逐行-1
                printf("");}
            for(j=0;j<=i;j++){
                printf("%c",a++);
                }
            printf("\n");
        }
    }

方法二:

    #include <stdio.h>
    
    int main(){
        char i,j;
        char a='A';
        for(i='A';i<'G';i++)
        {
        for(j='A';j<=i;j++)
        	{
        		printf("%c",a++);
        		if(j==i)
                    a=a;
        		//'a'==a+1;
        		}
        	printf("\n");
        	}
        return 0;
    }
  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值