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

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

P227

在这里插入图片描述

/*
  编写一程序P227.C实现以下功能
  从键盘读入两个整数iBegin和iEnd,要求输出≤iBegin且≥iEnd的所有整数。
    编程可用素材:
        printf("Please Input two number: ");
        printf("\nResult: ");
        printf(" %d");
  程序的运行效果应类似地如图1所示,图1中的203 192是从键盘输入的内容。

Please Input two number: 203 192

Result:  203 202 201 200 199 198 197 196 195 194 193 192
图1 程序运行效果示例
*/

#include <stdio.h>

int main(void)
{
    int iBegin, iEnd;
    int i;
    printf("Please Input two number: ");
    scanf("%d%d", &iBegin, &iEnd);

    printf("\nResult: ");
    /* 
        注意:
            1. 循环的起点
            2. 循环的终点
            3. 循环的增量,变化方向
     */
    for (i = iBegin; i >= iEnd; i--)
    {
        printf(" %d", i);
    }
    
    return 0;
}

P112

在这里插入图片描述

/*
  编写一程序P112.C实现以下功能
  设某企业2006年的产值为5000万,计划以后每年的增长率为x(x从键盘输入,例如输入8.75表示8.75%),
    计算该企业的产值在哪年实现翻番以及翻番时的产值,
    然后输出(输出时以万为单位,应考虑有小数)。
    编程可用素材:
        printf("Please input x: ");
        printf("\nyear = … nian, chanzhi = …);
  程序的运行效果应类似地如图1所示,图中的红色部分是从键盘输入的内容。

Please input x: 50.6

year = 2008 nian, chanzhi = 11340.18
图1 程序运行效果示例

要点:
    1. 要特别注意百分数的使用
    2. 相当于是直接模拟,看哪一年会超过10000

*/

#include <stdio.h>

int main(void)
{
    int year = 2006;
    double ratio;
    double chanzhi = 5000;

    printf("Please input x: ");
    scanf("%lf", &ratio);

    // 未实现翻番,即chanzhi < 2*5000
    while(chanzhi < 10000)
    {
        year++;         // 累计计年
        chanzhi = chanzhi * (1 + ratio / 100);  // 核算每一年产值
    }

    printf("\nyear = %d nian, chanzhi = %.2lf", year, chanzhi);

    return 0;
}

P233

在这里插入图片描述

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

Please Input a number: 216

Result:  106 206 306 406 493 506 606 706 806 906 982
图1 程序运行效果示例

Please Input a number: 218

Result: not Find!
图2 程序运行效果示例
*/

#include <stdio.h>

int main(void)
{
    int i;
    int data;
    int gw, sw, bw;
    int mul;      //该数各位数字之积
    int shi2;     //该数十位数的平方
    int ge3;      //该数个位数的立方
    int flag = 0; // 标志位,有无满足的数,甚至可以当成计数器用,初始没有,即为0

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

    printf("\nResult: ");
    // 满足条件的3位数的解空间,暴力求解
    for (i = 100; i < 1000; i++)
    {
        gw = i % 10;
        sw = i / 10 % 10;
        bw = i / 100;
        mul = gw * sw * bw; //该数各位数字之积
        shi2 = sw * sw;     //该数十位数的平方
        ge3 = gw * gw * gw; //该数个位数的立方
        // “该数各位数字之积”加上“该数十位数的平方”加上“该数个位数的立方”之和等于Num
        if (data == mul + shi2 + ge3)
        {
            printf("%4d", i);
            flag = 1; // 可以置标志,也可以置计数
        }
    }

    if (flag == 0)
    {
        printf("not Find!\n");
    }

    return 0;
}

P714

在这里插入图片描述

/*
  编写一程序P714.C实现以下功能
  用scanf输入10个整数(采用int数据类型),计算所有正数的和、负数的和以及10个数的和。
    编程可用素材:
        printf("Input 10 integers: ");
        printf("\nzhengshu=…,fushu=…,all=);
  程序的运行效果应类似地如图1所示,图1中的4 6 20 -45 35 56 -23 -4 9 70是从键盘输入的内容。

Input 10 integers: 4 6 20 -45 35 56 -23 -4 9 70

zhengshu=200,fushu=-72,all=128
图1 程序运行效果示例
*/

#include <stdio.h>

#define N 10

int main(void)
{
    int data;
    int i;
    double zhengshu = 0;
    double fushu = 0;
    double all = 0;

    printf("Input 10 integers: ");
    for (i = 0; i < N; i++)
    {
        scanf("%d", &data);
        // 核心业务:判断并求和,要特别注意和的精确性,万一数据很大呢
        all += (double)data;
        if (data>0)
        {
            zhengshu += (double)data;
        }
        if (data<0)
        {
            fushu += (double)data;
        }
    }

    // 拿浮点数当整数形式来输出,注意小数点后无位数
    printf("\nzhengshu=%0.lf,fushu=%0.lf,all=%0.lf", zhengshu, fushu, all);

    return 0;
}

P212

在这里插入图片描述

/*
  编写一程序P212.C实现以下功能
  根据输入的n(约定n>1)在屏幕上显示对应的图案。编程可用素材:
        printf("Please input n: ");
  程序的运行效果应类似地如图1和图2所示,图1中的2和图2中的5是从键盘输入的内容。

Please input n: 2
 a
b b
 a
图1 程序运行效果示例(n=2时)

Please input n: 5
    a
   b b
  c   c
 d     d            // 分析这一行:空格+字母+空格+字母+回车
e       e
 d     d
  c   c
   b b
    a
图2 程序运行效果示例(n=5时)
*/

#include <stdio.h>

void printBlank(int n);
void printSign(char ch);

int main(void)
{
    int i;
    int n;

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

    // 上三角
    for (i = 0; i < n;i++) // 控制行
    {
        printBlank(n - 1 -i);           // 首部空格
        printSign((char)('a' + i));     // 字母
        printBlank(2 * i - 1);          // 中间空格
        if(i==0)                        // 尾部字母
        {}
        else
        {
            printSign((char)('a' + i));
        }
        printf("\n");                   // 回车换行
    }

    // 下三角
    for (i = n - 2; i >= 0; i--) // 控制行
    {
        printBlank(n - i - 1);
        printSign((char)('a' + i));
        printBlank(2 * i - 1);
        if(i==0)
        {}
        else
        {
            printSign((char)('a' + i));
        }
        printf("\n");
    }

    return 0;
}

/* 
打印n个空格
 */
void printBlank(int n)
{
    int i;
    for (i = 0; i < n;i++)
        printf(" ");
}

/* 
打印任意字符ch
 */
void printSign(char ch)
{
    printf("%c", ch);
}

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
图2 程序运行效果示例
*/

#include <stdio.h>

int main(void)
{
    int i, j;
    int n;
    
    printf("input a number(1~9): ");
    scanf("%d", &n);

    for (i = 1; i <= n; i++)                // 行控制
    {
        for (j = 1; j <= i; j++)            // 列控制
        {
            /* 
                注意这里的 %md格式
                    1. %md  即占m宽度,不足则补空格在高位【左】,超出则原样输出
                    2. %-md 即占m宽度,不足则补空格在底位【右】,超出则原样输出
                    3. %0md 即占m宽度,不足则补0在高位,超出则原样输出
                    4. %-0md 整数没有这样的搞法,无意义,0会被忽略,并给出警告
             */
            printf("%d*%d=%-3d", i, j, i * j);
        }
        printf("\n");
    }
    
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值