明解C语言 第三版 第四章练习题

练习4-1

#include <stdio.h>
int main()
{
	puts("请输入两个整数。");
	int n1, n2;
	printf("整数a:"); scanf("%d", &n1);
	printf("整数b:"); scanf("%d", &n2);
	int min = n1 < n2 ? n1 : n2;
	int min1 = min;
	int max = n1 > n2 ? n1 : n2;
	int acc = min;
	do {
		acc = acc + (min + 1);
		min++;
	} while (min < max);
	printf("大于等于%d小于等于%d的所有整数的和是%d", min1, max, acc);
	return 0;
}

练习4-15

#include <stdio.h>
int main()
{
	int sta, sta1, value;
	printf("开始数值(cm):"); scanf("%d", &sta);
	printf("结束数值(cm):"); scanf("%d", &sta1);
	printf("间隔数值(cm):"); scanf("%d", &value);
	for (sta; sta < sta1; sta += value) {
		printf("%dcm\t%.2fkg\n", sta, (double)(sta - 100) * 0.9);
	}
	printf("%dcm\t%.2fkg\n", sta1, (double)(sta1 - 100) * 0.9);
	return 0;
}

练习4-18

#include <stdio.h>
int main()
{
	int value;
	printf("显示多少个*:");
	scanf("%d", &value);
	for (int i = 1; i <= value; i++) {
		putchar('*');
		if (i % 5 == 0 && i >= 5) {
			putchar('\n');
		}
	}
	return 0;
}

练习4-19

#include <stdio.h>
int main()
{
	printf("整数值:");
	int value, num = 0;
	scanf("%d", &value);
	for (int i = 1; i <= value; i++) {
		if (!(value % i)) {
			printf("%d\n", i);
			num++;
		}
	}
	printf("约数有%d个", num);
	return 0;
}

练习4-22

#include <stdio.h>
int main()
{
	printf("让我们来画一个长方形。\n一边:");
	int n1, n2;
	scanf("%d", &n1);
	printf("另一边:");
	scanf("%d", &n2);
	int max = n1 > n2 ? n1 : n2;
	int min = n1 < n2 ? n1 : n2;
	for (int i = 1; i <= min; i++) {
		for (int j = 1; j <= max; j++) {
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

练习4-23 直角左上方

#include <stdio.h>
int main()
{
	printf("生成直角在左上方的等腰直角三角形。\n短边:");
	int n1;
	scanf("%d", &n1);
	for (int i = 1; i <= n1; i++) {
		for (int j = n1;j>=i;j--) {
			putchar('*');
		}
		putchar('\n');
	}
	return 0;
}

 练习4-23 直角右上方

#include <stdio.h>
int main()
{
	printf("生成直角在左上方的等腰直角三角形。\n短边:");
	int n1,x=0;
	scanf("%d", &n1);
	for (int i = 1; i <= n1; i++) {
		for (int j = 2; j <= i; j++) {
			putchar(' ');
		}
		for (int j = n1; j >= i; j--) {
			putchar('*');
		}
		putchar('\n');
	}
	return 0;
}

 练习4-24

/*比如现在用户输入3最后一行要打印多少个呢?
(3-1)*2+1
2*2+1
4+1=5 最后一行需要打印5个星号
	*
   ***
  *****                                    */
#include <stdio.h>
int main()
{
	int stor, n1 = 1;/*定义一个用户输入的变量来接收有几层*/
	scanf("%d", &stor);
	int value = (stor - 1) * 2 + 1; /*value的结果 = 最后一行要打印多少星,不过我的代码没有用到value  */
	for (int i = 1; i <= stor; i++) {
		/*下面的for先处理空格*/
		for (int j = stor - 1; j >= i; j--) {
			if (i != stor)
				printf(" ");
		}
		/*开始处理要打印出来的*号思路:先从1开始打,依次加上2,如果最后打印星号的值等于value那就结束。*/
		for (int i = 1; i <= n1; i++) {
			putchar('*');
		}
		n1 += 2; /*上面打印好了后,n1就+2*/
		putchar('\n');
	}
	return 0;
}
/*注意,代码中没有做检测负数运算。*/
/*这题就是先打印出左上直角。只不过这里用空格替代了*/

练习4-25

#include <stdio.h>
int main()
{
	int n1, j;
	scanf("%d", &n1);
	int value = (n1 - 1) * 2 + 1; /*这里是先计算出第一行要打印多少*/
	for (int i = 1; i <= n1; i++) {
		for (int j = 2;j<=i;j++) {
			printf(" ");
		}
		for (j = 1; j <= value; j++) {
			printf("%d", i);
		}
		value -= 2;
		putchar('\n');
	}
	printf("%d%%10的结果是:%d", n1, n1 % 10);
	return 0;
}

/*注意:当用户输入大于10的数,那么就会显示错误,
解决方法,如果是10,那么检查有多少个数,然后这个减去这个数/2的数。(未测试)*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值