从C到Capable-----C语言入门常见练习题

前言:下面这些习题主要来源于苏小红编写的《C语言程序设计一书》。在平时写练习时的部分练习记录,练习还没写完🤠,还在连载中.....

目录

1.利用4/Π公式求Π

2.输出绝对值

3.判断奇偶

4.求存钱获取利润

5.判断是否为闰年

6.大小写字母转换

7.判断字符类型

8.五分制成绩

  9.判断体重

10.实现生产翻倍所花时间

11.求e的近似值

12.判断是否为水仙花数

13.求m阶乘值

14.正数和

14.马克思男女小孩用餐付钱求人数问题

15.鸡兔同笼问题(两重for循环)

16.鸡兔同笼问题(一重for循环)

17.百元买白鸡

18.百元换成10元5元1元,换50张问题

19.输出乘法表

20.富豪换钱问题

21.找车牌

22.礼炮问题

23.二维矩阵转置

24.互换最大最小元素位置

25.找出3个字符串中最大字符串


1.利用4/Π公式求Π

# include <stdio.h>
# include <math.h>

main()
{
    double answer;
    int item, sign;

    answer = 0;
    item = sign = 1;

    while (fabs(1.0/item) >= 1e-4)
    {
        answer += (double) sign/item;
        item += 2;
        sign = -sign;
        
    }
    printf("pi=%f\n", 4 * answer);
}


2.输出绝对值

#include <stdio.h>

main()
{
    int number, n;

    n = 1;

    printf("输入一个实数:");
    scanf("%d", &number);

    if (number >= 0)
        printf("该数的绝对值为:%d\n", number);

    else 
        printf("该数的绝对值为%d\n", -number);
        
}

3.判断奇偶

# include <stdio.h>

main()
{
    int number;

    printf("输入一个整数:");
    scanf("%d", &number);

    if (number&1 == 1)
        printf("%d 是奇数\n", number);

    else 
        printf("%d 是偶数\n", number);
}  

4.求存钱获取利润

# include <stdio.h>
# include <math.h>

main()
{
    int year;
    float bon;
    double sum, rate;

    printf("输入需要储存的金额:");
    scanf("%f", &bon);
    printf("输入需要储存的年限:");
    scanf("%d", &year);

    switch (year)
    {
    case 1: rate = 0.0225;
        break;
    case 2: rate = 0.0243;
        break;
    case 3: rate = 0.027;
        break;
    case 5: rate = + 0.0288;
        break;
    case 8: rate = + 0.03;
        break;
    default : printf("为设有该年限。\n");
    }

    sum = bon * pow(1+rate, year);
    printf("合计:%f\n", sum);
}

5.判断是否为闰年

# include <stdio.h>

main()
{
    int year;

    printf("Enter year:");
    scanf("%d", &year);

    if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
        printf("%d is a leap year!\n", year);
    else
        printf("%d is not a leap year\n", year);
}

6.大小写字母转换

#include <stdio.h>

main()
{
    int i = 0;
    int dif = 'a' - 'A'; 
    char chr;
    
    printf("Enter a key:");
    scanf("%c", &chr);
    printf("转换前/不转换 : %c \t ASCLL:%d\n", chr, chr);
 
    if(chr >= 'a' && chr <= 'z')
    {
        chr -= dif;
        printf("转换后 : %c \t ASCLL:%d\n", chr, chr);
    }
    else if(chr >= 'A' && chr <= 'Z')
    {
        chr += dif;
        printf("转换后 : %c \t ASCLL:%d\n", chr, chr);
    }

    
}

7.判断字符类型

# include <stdio.h>
# include <stdlib.h>

main()
{
    char chr;

    printf("Enter a key:");
    chr = getchar();

    if (chr >= '0' && chr <= '9')
        printf(" %c 是 数字\n", chr);
    else if (chr >= 'A' && chr <= 'Z')
        printf("%c 是大字母\n", chr);
    else if (chr >= 'a' && chr <= 'z')
        printf(" %c 是小写字母\n", chr);
    else
        printf("%c 是其他字符\n", chr);
}

8.五分制成绩

# include <stdio.h>
# include <stdlib.h>

main()
{
    float score;

    printf("Enter score:");
    scanf("%f", &score);

    if (score >= 0 && score < 60)
        printf("对应等级:E\n");
    else if (score >= 60 && score < 70)
        printf("对应等级:D\n");
    else if (score >= 70 && score < 80)
        printf(printf("对应等级:C\n"));
    else if (score >= 80 && score < 90)
        printf(printf("对应等级:B\n"));
    else if (score >= 90 && score <= 100)
        printf(printf("对应等级:A\n"));

}   

  9.判断体重

# include <stdio.h>
# include <math.h>

main()
{
    float height, weight, t;

    printf("Enter your height:");
    scanf("%f(m)", &height);
    printf("Enter your weight:");
    scanf("%f(kg)", &weight);
    
    t = weight / pow(height, 2);

    if (t < 18)
        printf("低体重\n");
    else if (t >= 18 && t < 25)
        printf("正常体重\n");
    else if (t >= 25 && t < 27)
        printf("超重体重\n");
    else if (t >= 27)
        printf("肥胖\n");

}    

10.实现生产翻倍所花时间

# include <stdio.h>

main()
{
    int year;
    double addrate, sum, product;

    product = 1000000;
    sum = 0;

    printf("输入增长率:");
    scanf("%lf", &addrate);

    for (year = 0; sum < 2*product; year++)
        sum += product * (1 + addrate);

    printf("需要%d年\n", year);
}

//计算pi近似值
# include <stdio.h>
# include <math.h>

main()
{
    int i, count, sign;
    double sum, term;

    sign = 1;
    sum = count = 0;

    for (i = 1; fabs(term) >= 1e-5; i+=2)
    {
        
        term = (double)sign / i;
        sum += term;
        sign = -sign;
        count += 1;
    }
    printf("pi:%f\n", sum*4);
    printf("%d\n", count);
}
    


11.求e的近似值

# include <stdio.h>
# include <math.h>

main()
{
    long i, count, n;
    double sum, term;

    count = 0;
    n = sum = 1;

    for (i = 1; fabs(term) >= 1e-5; i++)
    {
        n *= i;
        term = (double)1/n;
        sum += term;
        count += 1;
    }
    printf("e:%f\n", sum);
    printf("count%d\n", count);
}

12.判断是否为水仙花数

# include <stdio.h>
# include <math.h>

main()
{
    int number, a, b, c;

    printf("输入一个三位数整数:");
    scanf("%d", &number);
    
    a = number / 100;
    b = (number - a*100) / 10;
    c = number - a*100 - b*10;

    if (pow(a, 3) + pow(b, 3) + pow(c, 3) == number)
        printf("%d 是水仙花数\n", number);
    else
        printf("%d 不是水仙花数\n", number);
}

13.求m阶乘值

# include <stdio.h>

main()
{
    int i, m;
    long sum, n, term;

    m = 1;
    term = 1;
    sum = 0;

    printf("Enter n:");
    scanf("%d", &n);

    for (i = 1; sum < n; i++)
    {
        term *= i;
        sum += term;
    }
    printf("m = %d\n", i - 2);
}

14.正数和

# include <stdio.h>

main()
{
    int number, sum;

    sum = 0;

    printf("Enter some number(enter 0 to end input)\n");

    while (number != 0)
    {
        printf("Enter a number:");
        scanf("%d", &number);
        
        if (number >0)
            sum += number;
    }
    printf("all positive number sum is %d\n", sum);
}

14.马克思男女小孩用餐付钱求人数问题

# include <stdio.h>

main()
{
    int child, women, man, count;

    count = 0;

    for (man = 1; man <= 15; man++)
    {
        for (women = 1; women <= 23; women++)
        {
            child = 30 - man - women;
            if (man*3 + women*2 + child == 50)
            {
                printf("man:%d\nwomen:%d\nchild:%d\n", man, women, child);
                printf("-------------------------\n");
                count += 1;
            }
        }
    }
    printf("共%d种结果\n", count);
}

15.鸡兔同笼问题(两重for循环)

# include <stdio.h>

main()
{
    int chicken, rabbit, count;

    count = 0;

    for (rabbit = 1; rabbit <= 95; rabbit++)
    {
        for (chicken = 1; chicken <= 98; chicken++)
        {
            if (rabbit*4 + chicken*2 == 386 && rabbit + chicken == 98)
            {
                printf("rabbit:%d\nchicken:%d\n", rabbit, chicken);
                printf("-------------------------\n");
                count += 1;
            }
        }
    }
    printf("共%d种结果\n", count);
}

16.鸡兔同笼问题(一重for循环)

# include <stdio.h>

main()
{
    int chicken, rabbit, count;

    count = 0;

    for (rabbit = 1; rabbit <= 95; rabbit++)
    {
        chicken = 98 - rabbit;
        if (rabbit*4 + chicken*2 == 386 && rabbit + chicken == 98)
        {
            printf("rabbit:%d\nchicken:%d\n", rabbit, chicken);
            printf("-------------------------\n");
            count += 1;
        }
    }
    printf("共%d种结果\n", count);
}


17.百元买白鸡

# include <stdio.h>

main()
{
    int g, m, x, count;

    count = 0;

    for (g = 1; g <= 19; g++)
    {
        for (m = 1; m <= 32; m++)
        {
            x = 100 - m - g;
            if ((g*5 + m*3 + x/3 == 100) && (x % 3 == 0))
            {
                printf("公鸡:%d\n母鸡:%d\n小鸡:%d\n", g, m, x);
                printf("-------------------------\n");
                count += 1;
            }
        }
    }
    printf("共%d种结果\n", count);
}

18.百元换成10元5元1元,换50张问题

# include <stdio.h>

main()
{
    int a, b, c, count;

    count = 0;

    for (a = 1; a <= 5; a++)
    {
        for (b = 1; b <= 10; b++)
        {
            c = 50 - a - b;
            if (a*10 + b*5 + c == 100)
            {
                printf("十元张数:%d\n五元张数:%d\n一元张数:%d\n", a, b, c);
                printf("-------------------------\n");
                count += 1;
            }
        }
    }
    printf("共%d种结果\n", count);
}

19.输出乘法表

# include <stdio.h>

main()
{
    int i, j;
    for (i = 1; i <= 9; i++)
        printf("%4d", i);
    printf("\n");
    for (i = 1; i <= 9; i++)
        printf("   -");
    printf("\n");

    for (i = 1; i <= 9; i++)
    {
        printf("\n");
        for (j = i; j <= i*9; j += i)
            printf("%4d", j);
    }
    printf("\n");


}


20.富豪换钱问题

# include <stdio.h>

main()
{
    //解法一:p_f = 0.01 * pow(2, 30)   f_p = 30 * 100000

    int i;
    float f_p, p_f;

    f_p = 100000;
    p_f = 0.01;

    for (i = 2; i <= 30; i++)
    {
        f_p += 100000;
        p_f *= 2;
    }
    printf("富豪给陌生人:%f元\n陌生人给富豪:%f元\n", f_p, p_f);
}

21.找车牌

# include <stdio.h>
# include <math.h>

main()
{
    // a1,a2,a3,a4分别表示千位数,百位数,十位数,个位数
    int a1, a2, a3, a4, n, i;

    for (i = 32; i <= 99; i++)
    {
        n = pow(i, 2);

        a1 = n / 1000;  // 利用整除求千位数

        a2 = (n - a1*1000) / 100;  // 先将千位数去除(减去)后计算百位数

        a3 = (n - a1*1000 - a2*100) / 10;
        a4 = n - a1*1000 - a2*100 - a3*10;

        if ((a1 == a2 && a3 == a4) && (a1 != a3))  // 带入条件1,2判断
            printf("该车牌号为:%d\n", n);
    }
}

22.礼炮问题

//解法一
# include <stdio.h>
# include <math.h>

main()
{
    // 初始化变量和标记值flaga~c
    int a, b, c;
    int number;
    int flaga, flagb, flagc;

    a = b = c = 0;
    number = 0;

    // ABC三艘军舰放完礼炮各需要5*21秒,6*21秒,7*21秒

    while (c <= 21*7)  // 因为c不断增1且到达21*7所需时间最晚,所以做循环结束条件
    {
        if (a <= 21*5)
        {
            a += 1;
            if (a % 5 == 0)
                flaga = 1;   // flaga标记当前是否是鸣炮时刻
            else
                flaga = 0;
        }

        if (b <= 21*6)
        {
            b += 1;
            if (b % 6 == 0)
                flagb = 1;
            else
                flagb = 0;
        }
        if (c <= 21*7)
        {
            c += 1;
            if (c % 7 == 0)
                flagc = 1;
            else
                flagc = 0;
        }

        printf("%d\t%d\t%d\n", flaga, flagb, flagc);
        if (flaga + flagb + flagc != 0)  // 可以听到一次炮声,计数变量+1
            number += 1;
    }
    printf("观众可以听见%d声礼炮\n", number);
}



//解法二
#include<stdio.h>

main()
{
    int number, i;
    number = 0;
    for(i = 0; i < 21*7 ; i++)
    {
        if(i % 5 == 0 && i <= 21*5)
        {
            number++;
            continue;
        }         
        if(i % 6 == 0 && i <= 21 * 6)
        {
        number++;
        continue;
        }        
        if(i % 7 == 0)
        {
        number++;
        }       
    }
    printf("观众可以听见%d声礼炮\n", number);

}

23.二维矩阵转置

# include <stdio.h>


main()
{
    int i, j;
    int num1[2][3] = {{1,2,3},{4,5,6}};
    int num2[2][3];

    for (i = 0; i < 2; i++)
    {
        for (j = 0; j < 3; j++)
        {
            num2[j][i] = num1[i][j];
            printf("%d", num1[i][j]);
        }
        printf("\n");
    }
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 2; j++)
        {
            printf("%d", num2[i][j]);
        }
        printf("\n");
    }
}


24.互换最大最小元素位置

# include<stdio.h>

main()
{
    int num[10], temp, i, max, min;

    max = 0; 
    min = 0;

    printf("enter num[10]:");

    for (i = 0; i < 10; i++)
        scanf("%d", &num[i]);

    for(i = 1; i < 10; i++)
    {
        if(num[max] < num[i]) 
            max=i;
        if(num[min] > num[i]) 
            min=i;
    }

    printf("\n");
    temp = num[max];
    num[max] = num[min];
    num[min] = temp;

    for(i = 0; i < 10; i++)
        printf("%-3d", num[i]);
}

25.找出3个字符串中最大字符串

# include<stdio.h>
# include <string.h>

main()
{
    char s1[3][10];
    char string[10];
    int i;
    
    printf("enter s1[3][10]:");
    for (i = 0; i < 3; i++)
        gets(s1[i]);
    if (strcmp(s1[0], s1[1]) > 0)
        strcpy(string, s1[0]);
    else
        strcpy(string, s1[1]);
    if (strcmp(s1[2], string) > 0)
        strcpy(string, s1[2]);
    printf("max:%s\n", string);
    
}

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亖夕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值