c語言編程練習

由于自己的編程水平不高,所以從現(xiàn)在開始每天編一個小程序來提高編程能力。

編程1

題目:有1、2、3、4個數(shù)字,能組成多少個互不相同且無重復數(shù)字的三位數(shù)?都是多少?

//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;
}
//總結其實根本可以不用數(shù)組的,直接用數(shù),加三個循環(huán)就行了

編程練習2
題目:題目:企業(yè)發(fā)放的獎金根據(jù)利潤提成。利潤(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,求應發(fā)放獎金總數(shù)?

#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);
        }
    }
}
//總結:答案解析說:請利用數(shù)軸來分界,定位。注意定義時需把獎金定義成長整型。 
//獎金定義成長整型,大概和四舍五入一個意思,由于單位是萬元,所以就算是小數(shù)點后幾位也是一筆不小
//的數(shù)目

編程練習3
題目:一個整數(shù),它加上100后是一個完全平方數(shù),再加上168又是一個完全平方數(shù),請問該數(shù)是多少?

#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);
    }
}
//總結:可以直接使用編譯器自身提供的函數(shù)來開方,但是要包含《math.h》這個頭文件
//在定義變量的時候,注意int只能存放4個字節(jié)的數(shù)據(jù)

編程練習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
題目:輸入三個整數(shù)x,y,z,請把這三個數(shù)由小到大輸出。

#include <stdio.h>

void main()
{
    int m, n, p, q;
    
    int a[3];
    printf("請輸入三個整數(shù)\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環(huán)境中運行,看一看,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位
//注意第二個循環(huán)的循環(huán)范圍,在他循環(huán)結束后才輸出一個換行符
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 今天做一下練習題。 1、假如我國國民生產總值的年增長率為9%,計算10年后我國國民生產總值與現(xiàn)在相比增長多少百分比...
    重耳兄閱讀 2,412評論 0 8
  • 【程序1】 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔...
    葉總韓閱讀 5,229評論 0 41
  • 50道經典Java編程練習題,將數(shù)學思維運用到編程中來。抱歉哈找不到文章的原貼了,有冒犯的麻煩知會聲哈~ 1.指數(shù)...
    OSET我要編程閱讀 7,304評論 0 9
  • 【程序1】題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子...
    Xplorist閱讀 757評論 0 2
  • 今天早上寶寶睡到七點多才起來,上午帶著寶寶一起去高新區(qū)行政服務中心去辦理了戶口事情。姥爺抱著睡回來。 下午睡覺起來...
    熊小笨閱讀 165評論 0 0

友情鏈接更多精彩內容