明解C语言入门(第四章习题答案)

#define _CRT_SECURE_NO_WARNINGS 1

练习4-1

#include<stdio.h>
int main()
{
	int no = 0;
    int x = 0;
	do
	{
        printf("请输入一个整数:"); 
        scanf("%d", &no);
        if (no == 0)
			puts("该整数为0。");
		else if(no>0)
			puts("该整数为正数。");
		else
			puts("该整数负数。");

        printf("是否继续?<yes···0/No···9>:");
        scanf("%d", &x);
	} while (!x);

	return 0;
}

练习4-2

#include<stdio.h>
int main()
{
	int a, b = 0;
	puts("请输入两个整数。");
	printf("整数a:"); scanf("%d", &a);
	printf("整数b:"); scanf("%d", &b);

	//确定上下限
	int min = a;
	int max = b;
	if (min > b)
	{
		min = b;
		max = a;
	}

	int sum = 0;
	int r = min; //防止min变化
	do
	{
		sum += r;
		r++;
	} while (r <= a || r <= b);

	printf("大于等于%d小于等于%d的所有整数的和是%d。\n", min, max, sum);

	return 0;
}

练习4-3

#include <stdio.h>
int main()
{
	int no;
	printf("请输入一个正整数:");
	scanf("%d", &no);

	while (no >= 0) 
	{
		printf("%d ", no);
		no--;
	}
	if (no == -1) //重要
	{
		printf("\n");
	}
	
	return 0;
}

练习4-4

#include <stdio.h>
int main()
{
	int no;
	printf("请输入一个正整数:");
	scanf("%d", &no);

	while (no > 0) //递减到1
	{
		printf("%d ", no--);
	}
	if (no == 0) //重要
	{
		printf("\n");
	}

	return 0;
}

练习4-5

#include <stdio.h>
int main()
{
	int no;
	printf("请输入一个正整数:");
	scanf("%d", &no);

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

	if (no >= 0) 
	//if (i > no)
	{
		printf("\n");
	}
	
	return 0;
}

练习4-6

#include <stdio.h>
int main()
{
	int no;
	printf("请输入一个整数:");
	scanf("%d", &no);

	int i = 1;
	while (i < no)
	{
		if (i % 2 == 0)
		{
			printf("%d ", i);
		}
		i++;
	}
    //或用i+=2

	return 0;
}

练习4-7

#include <stdio.h>
int main()
{
	int no;
	printf("请输入一个整数:");
	scanf("%d", &no);

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

	return 0;
}

练习4-8

#include <stdio.h>
int main()
{
	int no;
	printf("正整数:");
	scanf("%d", &no);

	int r = no;
	while (no-- > 0) //多走一次no=-1
	{
		putchar('*');
	}
	if (no == -1 && r >= 1) //注意
		putchar('\n');

	return 0;
}

练习4-9

#include <stdio.h>
int main()
{
	int no; 
	printf("正整数:");
	scanf("%d", &no);

	int i = 1;
	while (i <= no) 
	{
		if (i % 2)
		{
			printf("+");
		}
		else
		{
			printf("-");
		}
		i++;

	}
	return 0;
}

练习4-10

#include<stdio.h>
int main()
{
	int x = 0;
	printf("正整数:");
	scanf("%d", &x);

	while (x--)
	{
		putchar('*');
		putchar('\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);
	int x = no;
	printf("%d逆向显示的结果是", x);
	while (no > 0) 
	{
		printf("%d", no % 10);
		no /= 10;
	}
	puts("。");

	return 0;
}

练习4-12

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

	int k = no;
	int count = 0;
	while (no) //while语句的循环次数和no的位数一致
	{
		no /= 10;
		count++;
	}
	printf("%d的位数是%d。\n", k, count);

	return 0;
}

练习4-13

#include <stdio.h>
int main()
{
	int n = 0;
	printf("n的值:");
	scanf("%d", &n);

	int i = 0;
	int sum = 0;
	for (i = 0; i <= n; i++) 
	{
		sum += i;
	}
	printf("1到%d的和为%d。\n", n, sum);

	return 0;
}

练习4-14

#include <stdio.h>
int main()
{
	int n = 0;
	printf("请输入一个整数:");
	scanf("%d", &n);

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

	return 0;
}

练习4-15

#include <stdio.h>
int main()
{
	int begin = 0;
	int final = 0;
	int interval = 0;
	printf("开始数值(cm):");	scanf("%d", &begin);
	printf("结束数值(cm):");	scanf("%d", &final);
	printf("间隔数值(cm):");	scanf("%d", &interval);

	int x = begin;
	int i = 0;
	for (i = 0; i <= (final - x) / interval; i++) 
	{
		printf("%dcm\t%.2fkg\n", begin, (begin - 100) * 0.9);
		begin += interval;
	}

	return 0;
}

练习4-16

#include <stdio.h>
int main()
{
	int no = 0;
	printf("整数值:");
	scanf("%d", &no);

	int i = 0;
	for (i = 1; i <= no; i += 2) //简单
	{
		printf("%d ", i);
	}

	return 0;
}

练习4-17

#include <stdio.h>
int main()
{
	int n = 0;
	printf("n的值:");
	scanf("%d", &n);

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

	return 0;
}

练习4-18

#include <stdio.h>
int main()
{
	int n;
	printf("显示多少个*:");
	scanf("%d", &n);

	int i;
	for (i = 1; i <= n; i++) 
	{
		printf("*");
		if(i % 5 == 0) //重要
		{
			putchar('\n');
		}
	}

	return 0;
}

练习4-19

#include <stdio.h>
int main()
{
	int n = 0;
	printf("整数值:");
	scanf("%d", &n);

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

	return 0;
}

练习4-20

#include<stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	printf("  |");
	for (i = 1; i <= 9; i++)
	{
		printf("%3d", i);
	}
	putchar('\n');
	for (i = 1; i <= 30; i++)
	{
		printf("-");
	}
	putchar('\n');
	for (i = 1; i <= 9; i++)
	{
		printf("%d |", i);
		for (j = 1; j <= 9; j++)
		{
			printf("%3d", i * j);
		}
		putchar('\n');
	}

	return 0;
}

练习4-21

#include <stdio.h>
int main()
{
    int height = 0;
    printf("生成一个正方形\n");
    printf("正方形有几层:");
    scanf("%d", &height);

    int i, j = 0;
    for (i = 0; i < height; i++) 
    {
        for (j = 0; j < height; j++) 
        {
            putchar('*');
        }
        putchar('\n');
    }

    return 0;
}

练习4-22

#include <stdio.h>
int main()
{
    int a, b = 0;
    printf("让我们画一个长方形\n");
    printf("一边:");
    scanf("%d", &a);
    printf("另一边:");
    scanf("%d", &b);

    int height = (a < b) ? a : b; //注意
    int length = (a > b) ? a : b;
    
    int i, j = 0;
    for (i = 0; i < height; i++) 
    {
        for (j = 0; j < length; j++) 
        {
            putchar('*');
        }
        putchar('\n');
    }

    return 0;
}

练习4-23

//生成直角在左上方的等腰直角三角形
#include <stdio.h>
int main()
{
    int len = 0;
    puts("生成直角在左上方的等腰直角三角形。");
    printf("短边:");
    scanf("%d", &len);

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

    return 0;
}
//生成直角在右上方的等腰直角三角形
#include <stdio.h>
int main()
{
    int len = 0;
    puts("生成直角在右上方的等腰直角三角形。");
    printf("短边:");
    scanf("%d", &len);

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

    return 0;
}

练习4-24

#include <stdio.h>
int main()
{
    int len = 0;
    puts("让我们来画一个金字塔。");
    printf("金字塔有几层:");
    scanf("%d", &len);

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

    return 0;
}

练习4-25

#include <stdio.h>
int main()
{
    int len = 0;
    puts("让我们来画一个向下的金字塔");
    printf("金字塔有几层:");
    scanf("%d", &len);

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

    return 0;
}

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值