明解C语言入门篇(第4章练习题)

4.1

#include<stdio.h>

int main(void)
{
    int retry;

    do
    {
        int no;
        printf("请输入一个整数:");
        scanf("%d", &no);
        if (no == 0)
            puts("该整数为0.");
        else if (no > 0)
            puts("该整数为正数.");
        else
            puts("该整数为负数.");
        printf("是否继续? <YES..0/NO..9>");
        scanf("%d", &retry);
    }while (retry == 0);

    return 0;
}

4.2

#include<stdio.h>

int main(void)
{
    int a, b, max, min;
    int sum = 0;

    printf("请输入两个整数: ");
    scanf("%d %d", &a, &b);
    if (a >= b)
    {
        min = b;
        max = a;
    }
    else
    {
        min = a;
        max = b;
    }
    do
    {
        sum = sum + min;
        min = min + 1;
    }while (min <= max);
    printf("这两个整数及其之间所有整数的和为%d.\n", sum);

    return 0;
}

4.3

#include<stdio.h>

int main(void)
{
    int no;

    printf("请输入一个正整数: ");
    scanf("%d", &no);
    while (no >= 0)
    {
        printf("%d ", no);
        no--;
    }
    while (no >= 0)
    	printf("\n");

    return 0;
}

4.4

#include<stdio.h>

int main(void)
{
    int no;

    printf("请输入一个正整数: ");
    scanf("%d", &no);
    while (no > 0)
        printf("%d ", no--);
    while (no >= 0)
    {
        printf("\n");
        no--;
    }

    return 0;
}

4.5

#include<stdio.h>

int main(void)
{
    int i, no;

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

    i = 1;
    while (i <= no)
        printf("%d ", i++);
    if (no < 0);

    return 0;
}

4.6

#include<stdio.h>

int main(void)
{
    int no, i;

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

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

    return 0;
}

4.7

#include<stdio.h>

int main(void)
{
    int i, no;

    printf("请输入一个正整数: ");
    scanf("%d", &no);
    i = 2;
    while (i <= no)
    {
        printf("%d ", i);
        i = i * 2;
    }

    return 0;
}

4.8

#include<stdio.h>

int main(void)
{
    int no;

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

    while (no-- > 0)
        putchar('*');
    while (no >= 1)
        printf("\n");

    return 0;
}

4.9

#include<stdio.h>

int main(void)
{
    int num, i;

    printf("要输入多少个整数: ");
    scanf("%d", &num);
    i = 0;
    while (num >= 0 && i < num){
        if (i % 2)
            putchar('-');
        else
            putchar('+');
        i++;
    }

    return 0;
}

4.10

#include<stdio.h>

int main(void)
{
    int num, i;

    printf("要输入多少个整数: ");
    scanf("%d", &num);
    i = 0;
    while (num >= 0 && i < num)
    {
        putchar('*');
        printf("\n");
        i++;
    }

    return 0;
}

4.11

#include<stdio.h>

int main(void)
{
    int no;

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

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

    return 0;
}

4.12

#include<stdio.h>

int main(void)
{
    int no, i;

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

    /* no比0大时 */
    printf("%d的位数是", no);
    i = 0;
    while (no > 0)
    {
        no /= 10;
        i++;
    }
    printf("%d。", i);

    return 0;
}

4.13

#include<stdio.h>

int main(void)
{
    int no, i, sum;

    printf("请输入n的值: ");
    scanf("%d", &no);
    sum = 0;
    for (i = 0; i <= no; i++)
    {
        sum += i;
    }
    printf("1到%d的和为%d。\n", no, sum);

    return 0;
}

4.14

#include<stdio.h>

int main(void)
{
    int i, j, n;
    j = 1;
    printf("请输入一个正整数: ");
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        printf("%d", j);
        j++;
        if (j > 9)
            j -= 10;
    }
    printf("\n");
    return 0;
}

4.15

#include<stdio.h>

int main(void)
{
    int n1, n2, n3, i;
    double w;
    printf("开始数值(cm): ");
    scanf("%d", &n1);
    printf("结束数值(cm): ");
    scanf("%d", &n2);
    printf("间隔数值(cm): ");
    scanf("%d", &n3);
    i = n1;
    while (i <= n2)
    {
        w = (i - 80) * 0.7;
        printf("%dcm    %.2fkg\n", i, w);
        i += n3;
    }
    return 0;
}

4.16

#include<stdio.h>

int main(void)
{
    int n, i;

    printf("请输入一个整数: ");
    scanf("%d", &n);
    for (i = 1; i <= n; i+= 2)
    {
        printf("%d ", i);
    }
    printf("\n");

    return 0;
}

4.17

#include<stdio.h>

int main(void)
{
    int n, i;

    printf("请输入一个整数: ");
    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(void)
{
    int n, i;

    printf("请输入一个整数: ");
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        putchar('*');
        if (i % 5 == 0)
            printf("\n");
    }

    return 0;
}

4.19

#include<stdio.h>

int main(void)
{
    int i, n;
    int j = 0;

    printf("请输入一个整数: ");
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        if (n % i == 0)
        {
            printf("%d\n", i);
            j++;
        }
    }
    printf("约数有%d个。\n", j);

    return 0;
}

4.20

#include<stdio.h>

int main(void)
{
    int i, j;

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

    return 0;
}

4.21

#include<stdio.h>

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

    printf("请输入一个正整数: ");
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= n; j++)
        {
            putchar('*');
        }
        printf("\n");
    }

    return 0;
}

4.22

#include<stdio.h>

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

    puts("让我们来画一个长方形。");
    printf("一边: ");
    scanf("%d", &height);
    printf("另一边: ");
    scanf("%d", &width);
    for (i = 1; i <= width; i++)
    {
        for (j = 1; j <= height; j++)
        {
            putchar('*');
        }
        putchar('\n');
    }

    return 0;
}

4.23

直角在左上方:

#include<stdio.h>

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

    puts("生成直角在左上方的等腰直角三角形。");
    printf("短边: ");
    scanf("%d", &len);
    for (i = 1; i <= len; i++)
    {
        for (j = len; j >= i; j--)
        {
            putchar('*');
        }
        putchar('\n');
    }

    return 0;
}

直角在右上方:

#include<stdio.h>

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

    puts("生成直角在右上方的等腰直角三角形。");
    printf("短边: ");
    scanf("%d", &len);
    for (i = len; i > 0; i--)
    {
        for (j = 1; j <= len - i; j++)
        {
            putchar(' ');
        }
        for (j = 1; j <= i; j++)
        {
            putchar('*');
        }
        printf("\n");
    }

    return 0;
}

4.24

#include<stdio.h>

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

    printf("让我们来画一个金字塔。\n");
    printf("金字塔有几层: ");
    scanf("%d", &len);
    for (i = 1; i <= len; i++)
    {
        for (j = 1; j <= len - i; j++)
        {
            putchar(' ');
        }
        for (j = 1; j <= (i - 1) * 2 + 1; j++)
        {
            putchar('*');
        }
        printf("\n");
    }

    return 0;
}

4.25

#include<stdio.h>

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

    printf("让我们来画一个向下的金字塔。\n");
    printf("金字塔有几层: ");
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        for (j = n; j > n - i + 1; j--)
        {
            putchar(' ');
        }
        for (j = 1; j <= (n - i) * 2 + 1; j++)
        {
            printf("%d", i % 10);
        }
        printf("\n");
    }

    return 0;
}

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