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

练习4-1

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

练习4-2

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

练习4-3

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

	while (no >= 0) {
		printf("%d ", no);
		no--;			/* no的值递减 */
	}
	if(no==-1||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--);	/* no的值在显示之后递减 */
	if(no>=0)
		printf("\n");				/* 换行 */

	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++);		/* i的值在显示之后递增 */
	if(no>=0)
		printf("\n");				/* 换行 */
	return 0;
}

练习4-6

#include <stdio.h>
int main(void)
{
	int no;
	int i = 2;
	printf("请输入一个整数:");
	scanf("%d", &no);
	while (i < no)
	{
		printf("%d ", i);
		i += 2;
	}
	printf("\n");				/* 换行 */
	return 0;
}

练习4-7

#include <stdio.h>
int main(void)
{
	int no;
	int i = 2;
	printf("请输入一个整数:");
	scanf("%d", &no);
	while (i < no)
	{
		printf("%d ", i);
		i *= 2;
	}
	printf("\n");				/* 换行 */
	return 0;
}

练习4-8

#include <stdio.h>
int main(void)
{
	int no;
	printf("正整数:");
	scanf("%d", &no);
	while (no-- > 0)
		putchar('*');
	if(no == -1)//注意书上
		putchar('\n');
	return 0;
}

练习4-9

#include <stdio.h>
int main(void)
{
	int no;
	printf("正整数:");
	scanf("%d",&no);
	while (no--)
	{
		if (no % 2)
			putchar('-');
		else
			putchar('+');
	}
	printf("\n");
	return 0;
}

练习4-10

#include <stdio.h>
int main(void)
{
	int no;
	printf("正整数:");
	scanf("%d",&no);
	while (no--)
	{
		printf("*\n");
	}
	return 0;
}

练习4-11

#include <stdio.h>
int main(void)
{
	int no;
	printf("请输入一个正整数:");
	scanf("%d",&no);
	while (no!=0)
	{
		printf("%d",no%10);
		no /= 10;
	}
	return 0;
}

练习4-12

#include <stdio.h>
int main(void)
{
	int no;
	int i=0;
	int no1;
	printf("请输入一个正整数:");
	scanf("%d",&no);
	no1 = no;
	while (no!=0)
	{
		no /= 10;
		i++;
	}
	printf("%d的位数是%d\n",no1,i);
	return 0;
}

练习4-13

#include <stdio.h>
int main(void)
{
	int n;
	int sum = 0;
	printf("n的值:");
	scanf("%d",&n);
	int n1 = n;
	while (n>0)
	{
		sum += n;
		n--;
	}
	printf("1到%d的和是%d\n",n1,sum);
	return 0;
}

练习4-14

#include <stdio.h>
int main(void)
{
	int n;
	int i = 1;
	printf("请输入一个整数:");
	scanf("%d",&n);
	while (i<=n)
	{
		printf("%d", i % 10);
		i++;
	}
	printf("\n");
	return 0;
}

练习4-15

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

练习4-16

#include <stdio.h>
int main(void)
{
	int no;
	int i = 1;
	printf("整数值:");
	scanf("%d", &no);
	while (i < no)
	{
		printf("%d ", i);
		i += 2;
	}
	printf("\n");				/* 换行 */
	return 0;
}

练习4-17

#include <stdio.h>
int main(void)
{
	int n;
	int i = 1;
	printf("n的值:");
	scanf("%d", &n);
	while (i <= n)
	{
		printf("%d的二次方是%d\n",i,i*i);
		i++;
	}
	return 0;
}

练习4-18

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

练习4-19

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

练习4-20 待做


练习4-21

#include <stdio.h>
int main(void)
{
	int n;
	int i;
	int j;
	printf("生成一个正方形");
	printf("正方形有几层:");
	scanf("%d",&n);
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n; j++)
			printf("*");
		printf("\n");
	}
	return 0;
}

练习4-22

#include <stdio.h>
int main(void)
{
	int i, j;
	int height, width;
	int tmp;
	puts("让我们来画一个长方形。");
	printf("一边:");   scanf("%d", &height);
	printf("另一边:");   scanf("%d", &width);
	if (height > width)
	{
		tmp = height;
		height = width;
		width = tmp;
	}
	for (i = 1; i <= height; i++) {			/* 长方形有height行 */
		for (j = 1; j <= width; j++)		/* 显示width 个'*'* */
			putchar('*');
		putchar('\n');						/* 换行 */
	}
	return 0;
}

练习4-23-1

#include <stdio.h>
int main(void)
{
	int i, j, len;
	puts("生成直角在左上方的等腰直角三角形。");
	printf("短边:");
	scanf("%d", &len);
	for (i = 1; i <= len; i++) {		/* i 行(i = 1, 2, --- , len) */
		for (j = 1; j <= len+1-i; j++)		/* 每行显示i 个'*' */
			putchar('*');
		putchar('\n');					/* 换行 */
	}

	return 0;
}

练习4-23-2

#include <stdio.h>
int main(void)
{
	int i, j, len;
	puts("生成直角在右上方的等腰直角三角形。");
	printf("短边:");
	scanf("%d", &len);
		for (i = 1; i <= len; i++) 
		{		
			for (j = 1; j < i; j++)	/* 每行显示len-i 个' ' */
				putchar(' ');
			for (j = 1; j <= len + 1 - i; j++)		/* 每行显示i 个'*' */
				putchar('*');
			putchar('\n');					/* 换行 */
		}
	return 0;
}

练习4-24 待做


练习4-25 待做


猜你喜欢

转载自blog.csdn.net/wofreeo/article/details/80652606