c语言编程练习

2018-03-09  本文已影响12人  Macade

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

编程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位
//注意第二个循环的循环范围,在他循环结束后才输出一个换行符
上一篇下一篇

猜你喜欢

热点阅读