20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises10

本文提供了多个C语言编程练习题的详细解答,涵盖字符处理、数学运算、幂运算及复杂逻辑处理等方面。通过实例帮助读者掌握C语言的核心概念和技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises10

P125

在这里插入图片描述

/*
  编写一程序P125.C实现以下功能
  从键盘读入两个字符cBegin和cEnd,要求输出≤cBegin且≥cEnd的所有字符。
    编程可用素材:
    printf("Please Input two char: ");
    printf("\nResult: ");
  程序的运行效果应类似地如图1所示,图1中的MA是从键盘输入的内容。

        Please Input two char: MA

        Result: MLKJIHGFEDCBA

    知识点:
    1. 循环起点cBegin
    2. 循环终点cEnd
    3. 循环趋势:越来越小

*/

#include <stdio.h>

int main(void)
{
    char cBegin, cEnd;
    int i;

    printf("Please Input two char: ");
    scanf("%c%c", &cBegin, &cEnd);
    printf("\nResult: ");
    for (i = (int)cBegin; i >= (int)cEnd; i--)
    {
        printf("%c", (char)i);
    }

    return 0;
}

P127

在这里插入图片描述

/*
  编写一程序P127.C实现以下功能
  从键盘读入一个字符cBegin和一个数iCount,要求输出≤cBegin的iCount个字符。
    编程可用素材:
    printf("Please Input a char and a number: ");
    printf("\nResult: ");
  程序的运行效果应类似地如图1所示,图1中的M 9是从键盘输入的内容。

Please Input a char and a number: M 9

Result: MLKJIHGFE
*/

#include <stdio.h>

int main(void)
{
    char cBegin;
    int iCount, i;

    printf("Please Input a char and a number: ");
    scanf("%c %i", &cBegin, &iCount);
    printf("\nResult: ");

    // 要特别注意这里的循环
    /* 
            起点:cBegin,包括端点
            终点:用输入的计数来计算终点iCount个
            步长:1
            char类型本质上就是int型,也可以不用强转,可以自动转化的
     */
    for (i = (int)cBegin; i > (int)cBegin - iCount; i--)
    {
        printf("%c", (char)i);
    }

    return 0;
}

P232

在这里插入图片描述

/*
  编写一程序P232.C实现以下功能
  从键盘读入一个整数Num,按从小到大的顺序依次输出所有满足条件的3位数:“该数各位数字的平方和”再加上“该数/2”等于Num。
    编程可用素材:
    printf("Please Input a number: ");
    printf("\nResult: ");
    printf("%5d"…);
    printf("not Find!\n");
  程序的运行效果应类似地如图1和图2所示,图1中的293和图2中的199是从键盘输入的内容。

        Please Input a number: 293

        Result:   289  368  455  504
    图1 程序运行效果示例

        Please Input a number: 199

        Result: not Find!
*/

#include <stdio.h>

int main(void)
{
    int data, gw, sw, bw;
    int i, count = 0;

    printf("Please Input a number: ");
    scanf("%d", &data);

    printf("\nResult: ");
    for (i = 100; i <= 999; i++)
    {
        /* 
            分离出各位上的数字
            使用整数的除法和求余算法
         */
        gw = i % 10;
        sw = i / 10 % 10;
        bw = i / 100;
        // “该数各位数字的平方和”再加上“该数/2”等于Num
        if (i / 2 + gw * gw + sw * sw + bw * bw == data)
        {
            count++;
            printf(" %5d", i);      // 注意输出格式宽度控制
        }
    }
    if (count == 0)
    {
        printf("not Find!\n");
    }

    return 0;
}

P753

在这里插入图片描述

/*
  编写一程序P753.C实现以下功能
  计算X的Y次方,其中Y为整数(可以是负整数或0),X为实型。
    注意,程序中不能使用库函数pow或使用同名的变量、函数、单词。
    编程可用素材:
        printf("Input x, y: ");
        printf("\nResult: …^…=…);
  程序的运行效果应类似地如图1和图2所示,图1中的3.7,5和图2中的4,-2是从键盘输入的内容。

        Input x, y: 3.7,5

        Result: 3.700000^5=693.439570
    图1 程序运行效果示例

        Input x, y: 4,-2

        Result: 4.000000^-2=0.062500


    看注释部分,可以看出,重构一下程序,程序看起来更简单,符合代码重用思想
*/

#include <stdio.h>

int main(void)
{
    double datax, result = 1.0;
    int datay, i;

    printf("Input x, y: ");
    scanf("%lf,%d", &datax, &datay);
    if (datay == 0)
    {
        // 不考虑datax也为0的情况
        ;
    }
    else if (datay > 0)
    {
        for (i = 0; i < datay; i++)
            result = result * datax;
        // printf("\nResult: %lf^%d=%lf", datax, datay, result);    
    }
    else
    {
        for (i = 0; i < (-1)*datay; i++)
            result = result / datax;
        // printf("\nResult: %lf^%d=%lf", datax, datay, result); 
    }
    printf("\nResult: %lf^%d=%lf", datax, datay, result);

    return 0;
}

P716

在这里插入图片描述

/*
  编写一程序P716.C实现以下功能
  求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字(可取1~9之间的一个值)。
    例如2+22+222+2222+22222(此时共有5个数相加),其中a值和有几个数相加由键盘输入控制。
    注意s的值有可能超出int的范围,
    编程可用素材:
    printf("Please input a,n: ");
    printf("\na+aa+...=…);
  程序的运行效果应类似地如图1所示,图1中的2,3是从键盘输入的内容。

        Please input a,n: 2,3

        a+aa+...=246

    提示:
        1. 这样的题,自己做完后测试,一定要主动测试一下自己创造的数据,看结果符不符合预期
        2. 首先题提供的测试数据要能通过
        3. 变化后的数据,可以检验算法的通用性

*/

#include <stdio.h>

int main(void)
{
    int dataa, count, i;
    double aaa;
    double result = 0;

    printf("Please input a,n: ");
    scanf("%d,%d", &dataa, &count);

    aaa = dataa;
    /* 
        注意循环的范围 ,特别是终点
     */
    for (i = 0; i < count; i++)
    {
        result = result + aaa;      // 累加还有一种常用的写法 result += aaa;
        aaa = aaa * 10 + dataa;     // 构造a aa aaa ... 数据
    }
    printf("\na+aa+...=%.0lf", result);

    return 0;
}

P724

在这里插入图片描述

/*
  编写一程序P724.C实现以下功能
  从键盘输入1~9之间的一个数,根据输入的数,输出对应的下三角乘法口诀表。
    要求积的输出占3个宽度,且左对齐。
    编程可用素材:
        printf("input a number(1~9): ");
  程序的运行效果应类似地如图1和图2所示,图1中的3和图2中的7是从键盘输入的内容。

        input a number(1~9): 3
        1*1=1
        2*1=2  2*2=4
        3*1=3  3*2=6  3*3=9
图1 程序运行效果示例

        input a number(1~9): 7
        1*1=1
        2*1=2  2*2=4
        3*1=3  3*2=6  3*3=9
        4*1=4  4*2=8  4*3=12 4*4=16
        5*1=5  5*2=10 5*3=15 5*4=20 5*5=25
        6*1=6  6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
        7*1=7  7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49


    提示
    1. 首先要弄清楚行的控制
    2. 再弄清楚列的控制
    3. 常用的双重循环的行列的控制,特别是里面一层循环的起点和终点
*/

#include <stdio.h>

int main(void)
{
    int i, j, data;

    printf("input a number(1~9): ");
    scanf("%d", &data);

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

    return 0;
}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值