美文网首页
c语言编程练习

c语言编程练习

作者: Macade | 来源:发表于2018-03-09 14:58 被阅读12次

    由于自己的编程水平不高,所以从现在开始每天编一个小程序来提高编程能力。

    编程1

    题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

    //printf("\1\1\n");   /*输出两个笑脸*/ 为什么‘\1’输出的就是一个笑脸呢?
    //因为\1表示ASCII码为1的字符(即笑脸符)
    
    #include <stdio.h>
    
    int a[4] = {1, 2, 3, 4};
    
    int main()
    {
        int i=0, j=0, k=0, m=0;
        for(i=0;i<4;i++)
        {
            for(j=0;j<4;j++)
            {
                for(k=0; k<4;k++)
                {
                    if(a[i] != a[j] && a[i] != a[k] && a[j] != a[k])
                    {
                        printf("%d",  a[i]);
    
                        printf("%d",  a[j]);
    
                        printf("%d",a[k]);
                        printf("   ");
    
                        m++;
                        if(m%5 == 0)
                        printf("\n");
                    }
                }
            }
        }
        printf("%d\n",m);
        return 0;
    }
    //总结其实根本可以不用数组的,直接用数,加三个循环就行了
    

    编程练习2
    题目:题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高
    于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提
    成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于
    40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于
    100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

    #include <stdio.h>
    
    void main()
    {
        for(;;)
        {
            float I=0;
            double cash=0;
    
            printf("请输入当月利润!单位:万元\n");
            scanf("%f",&I);
    
            if(I<10 || I==10)
            {
                cash = I * 0.1;
                printf("%f\n",cash);
            }
            else if(I>10 || I<20)
            {
                I = I - 10;
                cash = 10*0.1 + I*0.075;
                printf("%f\n",cash);
            }
            else if(I>20 || I<40)
            {
                I = I - 20;
                cash = 10*0.1 + 10*0.075 + I*0.05;
                printf("%f\n",cash);
            }
            else if(I>40 || I<60)
            {
                I = I - 40;
                cash = 10*0.1 + 10*0.075 + 20*0.05 + I*0.03;
                printf("%f\n",cash);
            }
            else if(I>60 || I<100)
            {
                I = I - 60;
                cash = 10*0.1 + 10*0.075 + 20*0.05 + 20*0.03 + I*0.015;
                printf("%f\n",cash);
            }
            else if(I>100)
            {
                I = I - 100;
                cash = 10*0.1 + 10*0.075 + 20*0.05 + 20*0.03 + 40*0.015 + I*0.01;
                printf("%f\n",cash);
            }
        }
    }
    //总结:答案解析说:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 
    //奖金定义成长整型,大概和四舍五入一个意思,由于单位是万元,所以就算是小数点后几位也是一笔不小
    //的数目
    

    编程练习3
    题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

    #include <stdio.h>
    #include <math.h>
    
    void main()
    {
        //int x=0, y=0;
        long int i,x=0, y=0;
    
        for(i=1;i<100000;i++)
        {
            x=sqrt(i+100);
            y=sqrt(i+168);
    
            if(x*x == i+100 && y*y == i+168)
            printf("%d\n",i);
        }
    }
    //总结:可以直接使用编译器自身提供的函数来开方,但是要包含《math.h》这个头文件
    //在定义变量的时候,注意int只能存放4个字节的数据
    

    编程练习4
    题目:输入某年某月某日,判断这一天是这一年的第几天?

    #include <stdio.h>
    
    void main()
    {
        long int year;
        int month, day;
        printf("请输入年月日:\n");
        scanf("%d %d %d",&year, &month, &day);
    
        if((year/4==0 && year/100!=0)||(year/400==0))
        {
            switch(month)
            {
                case 1: 
                    printf("%d\n",day);
                    break;
                case 2:
                    printf("%d\n",day+31);
                    break;
                case 3:
                    printf("%d\n",day+31+28);
                    break;
                case 4:
                    printf("%d\n",day+31+28+31);
                    break;
                case 5:
                    printf("%d\n",day+31+28+31+30);
                    break;
                case 6:
                    printf("%d\n",day+31+28+31+30+31);
                    break;
                case 7:
                    printf("%d\n",day+31+28+31+30+31+30);
                    break;
                case 8:
                    printf("%d\n",day+31+28+31+30+31+30+31);
                    break;
                case 9:
                    printf("%d\n",day+31+28+31+30+31+30+31+31);
                    break;
                case 10:
                    printf("%d\n",day+31+28+31+30+31+30+31+31+30);
                    break;
                case 11:
                    printf("%d\n",day+31+28+31+30+31+30+31+31+30+31);
                    break;
                case 12:
                    printf("%d\n",day+31+28+31+30+31+30+31+31+30+31+30);
                    break;
            }
    
        }
        else 
        {
            switch(month)
            {
                case 1: 
                    printf("%d\n",day);
                    break;
                case 2:
                    printf("%d\n",day+31);
                    break;
                case 3:
                    printf("%d\n",day+31+27);
                    break;
                case 4:
                    printf("%d\n",day+31+27+31);
                    break;
                case 5:
                    printf("%d\n",day+31+27+31+30);
                    break;
                case 6:
                    printf("%d\n",day+31+27+31+30+31);
                    break;
                case 7:
                    printf("%d\n",day+31+27+31+30+31+30);
                    break;
                case 8:
                    printf("%d\n",day+31+27+31+30+31+30+31);
                    break;
                case 9:
                    printf("%d\n",day+31+27+31+30+31+30+31+31);
                    break;
                case 10:
                    printf("%d\n",day+31+27+31+30+31+30+31+31+30);
                    break;
                case 11:
                    printf("%d\n",day+31+27+31+30+31+30+31+31+30+31);
                    break;
                case 12:
                    printf("%d\n",day+31+27+31+30+31+30+31+31+30+31+30);
                    break;
            }
        }
    }
    //总结:代码写得太复杂,起始switch语句可以只使用一次的
    

    编程练习5
    题目:输入三个整数x,y,z,请把这三个数由小到大输出。

    #include <stdio.h>
    
    void main()
    {
        int m, n, p, q;
        
        int a[3];
        printf("请输入三个整数\n");
        scanf("%d %d %d",a, &a[1], &a[2]);
    
        for(m=0;m<3;m++)
        {
            for(n=m+1;n<3;n++)
            {
                if(a[n]<a[m])
                {
                    p=a[n];
                    a[n]=a[m];
                    a[m]=p;
                }
            }
        }
        for(q=0;q<3;q++)
        {
            printf("%d\n", a[q]);
        }
    }
    //总结:本次排序使用的是冒泡排序的方法
    

    编程练习6
    题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!

    #include <stdio.h> 
    main() 
    { 
        char a=176,b=219; 
        printf("%c%c%c%c%c\n",b,a,a,a,b); 
        printf("%c%c%c%c%c\n",a,b,a,b,a); 
        printf("%c%c%c%c%c\n",a,a,b,a,a); 
        printf("%c%c%c%c%c\n",a,b,a,b,a); 
        printf("%c%c%c%c%c\n",b,a,a,a,b);
    } 
    //总结:输出的ascii码被cmd以GBK编码输出了,在cmd里面输入
    //mode con cp select=437选择英文编码再运行就可以正常显示了
    //用完了使用mode con cp select=936改回简体中文
    //即在cmd中修改,然后在cmd命令行模式下运行该程序
    

    编程练习7
    题目:输出9*9口诀。

    #include <stdio.h> 
    
    void main()
    {
        int i, j;
        for(i=1;i<10;i++)
        {
            for(j=1;j<i+1;j++)
            printf("%d*%d=%-3d",j,i,i*j);  /*-3d表示左对齐,占3位*/ 
            printf("\n");
        }
    }
    //总结:在输出的时候%-3d表示的是左对齐,占3位
    //注意第二个循环的循环范围,在他循环结束后才输出一个换行符
    

    相关文章

      网友评论

          本文标题:c语言编程练习

          本文链接:https://www.haomeiwen.com/subject/zfgpfftx.html