明解C语言 入门篇 第四章练习题

4-1

#include <stdio.h>

int main()
{
    int retry;
    do {
        int no;

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

        if (no == 0)
            puts("该整数为0。");
        else if (no > 0)
            puts("该整数为正数。");
        else
            puts("该整数为负数。");

        printf("是否继续?【YES···1/NO···0】");
        scanf("%d",&retry);
    }while (retry == 1);


    return 0;
}

PS:注意C语言中int类型的长度,此处在测试时因输入了大于int类型范围的数,导致输出出错。

4-2

#include <stdio.h>

int main()
{
    int h1, h2;
    puts("请输入两个整数。");
    printf("整数a:"); scanf("%d",&h1);
    printf("整数b:"); scanf("%d",&h2);

    int big, small;
    if (h1 > h2)
    {
        big = h1;
        small = h2;
    } else{
        big = h2;
        small = h1;
    }
    printf("大于等于%d小于等于%d的所有整数的和是",small,big);

    int sum;
    do {
        sum += small;
        small++;
    }while (small <= big);
    printf("%d。",sum);

    return 0;

}

4-3

#include <stdio.h>

int main()
{
    int no, num;
    num = 0;

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

    while (no >= 0)
    {
        printf("%d ",no);
        no--;
        num++;
    }
    if (num != 0)
    {
        printf("\n");
    }
    return 0;
}

4-4

#include <stdio.h>

int main()
{
    int no;

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

    while (no > 0){
        printf("%d ",no--);
    }
    if (no == 0)
    {
        printf("\n");
    }

    return 0;
}

4-5

#include <stdio.h>

int main()
{
    int i, no;
    printf("请输入一个正整数:");
    scanf("%d",&no);

    i = 1;
    while (i <= no){
        printf("%d ",i++);
    }
    if (no >= 0)
    {
        printf("\n");
    }


    return 0;

}

4-6

#include <stdio.h>

int main()
{
    int i, no;
    printf("请输入一个正整数:");
    scanf("%d",&no);

    i = 0;
    while (i+2 < no){
        i += 2;
        printf("%d ",i);
    }
    printf("\n");

    return 0;

}

4-7

#include <stdio.h>

int main()
{
    int no, i;

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

    i = 2;
    while (i < no){
        printf("%d ",i);
        i *=2;
    }

    return 0;
}

4-8

#include <stdio.h>

int main()
{
    int no, num;
    num = 0;
    printf("正整数:");
    scanf("%d",&no);

    while (no-- > 0){
        putchar('*');
        num++;
    }
    if (num != 0)
    {
        putchar('\n');
    }


    return 0;
}

4-9

#include <stdio.h>

int main()
{
    int no, i;
    i = 0;

    printf("正整数:");
    scanf("%d",&no);

    while (i++ < no){
        if (i % 2)
        {
            putchar('+');
        } else{
            putchar('-');
        }

    }
     return 0;
}

4-10

#include <stdio.h>

int main()
{
    int no;
    int i = 0;

    printf("正整数:");
    scanf("%d",&no);

    while (i++ < no){
        printf("*\n");
    }

    return 0;
}

4-11

#include <stdio.h>

int main()
{
    int no;

    do {
        printf("请输入一个正整数:");
        scanf("%d",&no);
        if (no <= 0)
        {
            puts("\a请不要输入非正整数!");
        }
    }while (no <= 0);

    printf("%d逆向显示的结果是",no);
    while (no > 0){
        printf("%d",no % 10);
        no /= 10;
    }
    puts("。");

    return 0;
}

4-12

#include <stdio.h>

int main()
{
    int no, num;
    num = 0;

    do {
        printf("请输入一个正整数:");
        scanf("%d",&no);
        if (no <= 0)
        {
            puts("\a请不要输入非正整数!");
        }
    }while (no <= 0);

    printf("%d的位数是",no);
    while (no > 0){
        num++;
        no /= 10;
    }
    printf("%d。",num);

    return 0;
}

4-13

#include <stdio.h>

int main()
{
    int n, i, sum;
    sum = 0;

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

    for (i = 1;i <= n;i++)
    {
        sum += i;
    }

    printf("1到%d的和为%d。",n,sum);

    return 0;
}

4-14

#include <stdio.h>

int main()
{
    int no,i;

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

    for (i = 1;i <= no;i++)
    {
        printf("%d",i % 10);
    }

    return 0;
}

4-15

#include <stdio.h>

int main()
{
    int h1, h2, i;
    double weight;

    printf("开始数值(cm):"); scanf("%d",&h1);
    printf("结束数值(cm):"); scanf("%d",&h2);
    printf("间隔数值(cm):"); scanf("%d",&i);

    for (;h1 <= h2;h1 += i)
    {
        weight = (h1 - 80) * 0.7;
        printf("%dcm    %.2fkg\n",h1,weight);
    }

    return 0;
}

4-16

#include <stdio.h>

int main()
{
    int no;

    printf("整数值:");
    scanf("%d",&no);

    for (int i = 1;i <= no;i++) {
        if (i % 2) {
            printf("%d ", i);
        }
    }

    return 0;
}

4-17

#include <stdio.h>

int main()
{
    int n, i;

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

    for (i = 1;i <= n;i++)
    {
        printf("%d的二次方是%d。\n",i,i*i);
    }

    return 0;
}

4-18

#include <stdio.h>

int main()
{
    int num, i;

    printf("显示多少个*:");
    scanf("%d",&num);

    for (i = 1;i <= num;i++)
    {
        putchar('*');
        if (i % 5 ==0)
        {
            putchar('\n');
        }
    }

    return 0;
}

4-19

#include <stdio.h>

int main()
{
    int n, i;
    int num = 0;

    printf("整数值:");
    scanf("%d",&n);

    for (i = 1;i <= n;i++)
    {
        if (n % i == 0)
        {
            printf("%d\n", i);
            num++;
        }
    }
    printf("约数有%d个。",num);
    putchar('\n');

    return 0;
}

4-20

#include <stdio.h>

int main()
{
    int i, j;

    printf("   |");
    for (int a = 1;a <= 9;a++)
    {
        printf("%3d",a);
    }
    putchar('\n');
    printf("-------------------------------\n");
    for (i = 1;i <= 9;i++)
    {
        printf("%2d |",i);
        for (j = 1;j <= 9;j++)
        {
            printf("%3d",i*j);
        }
        putchar('\n');
    }

    return 0;
}

4-21

#include <stdio.h>

int main()
{
    int i, j, len;
    puts("生成一个正方形。");
    printf("正方形有几层:");
    scanf("%d",&len);

    for (i = 1 ;i <= len ;i ++)
    {
        for (j = 1 ;j <= len;j ++)
        {
            putchar('*');
        }
        putchar('\n');
    }

    return 0;

}

4-22

#include <stdio.h>

int main()
{
    int i, j;
    int width, height, a;

    puts("让我们来画一个长方形。");
    printf("一边:"); scanf("%d",&height);
    printf("另一边:"); scanf("%d",&width);

    if (height > width)
    {
        a = width;
        width = height;
        height = a;
    }

    for (i =1;i <= height;i++)
    {
        for (j = 1;j <= width;j++)
        {
            putchar('*');
        }
        putchar('\n');
    }

    return 0;
}

4-23

/*直角在左上角 */
#include <stdio.h>

int main()
{
    int i, j, len;

    puts("生成直角在左上方的等腰直角三角形。");
    printf("短边:"); scanf("%d",&len);

    for (i =1;i <= len;i++)
    {
        for (j = 1;j <= len - i + 1;j++)
        {
            putchar('*');
        }
        putchar('\n');
    }

    return 0;
}
/*直角在右上角 */
#include <stdio.h>

int main()
{
    int i, j, len;

    puts("生成直角在右上方的等腰直角三角形。");
    printf("短边:"); scanf("%d",&len);

    for (i =1;i <= len;i++)
    {
        for (j = 1;j <= i - 1;j++)
        {
            putchar(' ');
        }
        for (j = 1;j <= len - i + 1;j++)
        {
            putchar('*');
        }
        putchar('\n');
    }

    return 0;
}

4-24

#include <stdio.h>

int main()
{
    int blank, star, i;
    int j;

    puts("让我们来画一个金字塔。");
    printf("金字塔有几层:");
    scanf("%d",&i);


    for (j = 1;j <= i;j ++)
    {
        for (blank = 1;blank <= i - j;blank ++)
        {
            putchar(' ');
        }
        for (star = 1;star <= (j - 1) * 2 + 1;star ++)
        {
            putchar('*');
        }
        putchar('\n');
    }

    return 0;
}

4-25

#include <stdio.h>

int main()
{
    int blank, star, i;
    int j;

    puts("让我们来画一个金字塔。");
    printf("金字塔有几层:");
    scanf("%d",&i);


    for (j = 1;j <= i;j ++)
    {
        for (blank = 1;blank <= j - 1;blank ++)
        {
            putchar(' ');
        }
        for (star = 1;star <= (i - j) * 2 + 1;star ++)
        {
            printf("%d",j % 10);
        }
        putchar('\n');
    }

    return 0;
}

版权声明:本文为qq_44841196原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。