C prime plus 第六章课后题

该博客详细介绍了C语言第六章的课后习题,包括使用循环嵌套打印特殊字符图案、用户输入大写字母形成金字塔、生成整数及其平方立方的表格、倒序输出单词和数字序列、解决投资问题等多方面练习,旨在提升读者的C语言编程能力。
摘要由CSDN通过智能技术生成

6-1存储并输出26个字母

int main(void)
//{
//	char arr[SIZE];
//	for (int i = 0; i < 26; i++)
//	{
//		arr[i] = 'a' + i;
//	}
//
//	for (int j = 0; j < 26; j++)
//	{
//		printf("%c",arr[j]);
//	}
//	return 0;
//}

6-2嵌套循环打印字符,打印结果如下所示

int main(void)
{
	for (int i = 1; i <= 5; i++)//非数组,不要从0开始
	{
		for (int j = 1; j <= i; j++)
			printf("$");
		printf("\n");
	}
	return 0;
}

 6-3嵌套循环打印如下字符

int main(void)
{
	char ch = 'F';
	for (int i = 1; i < 7; i++)
	{
		for (int j = 0; j < i; j++)
			printf("%c", ch-j);
		printf("\n");
	}
	return 0;
}

 6-4循环嵌套打印如下字符

int main(void)
{
	int j = 0;
	char ch = 'A';
	for (int i = 1; i < 7; i++) //行数,不能变
	{
		for (j = 0; j < i; j++)//列数不能变
		printf("%c", ch+j);
		ch += i;   //每一行不仅有个换行符,并且每一行第一个值变了
		printf("\n");
	}
	return 0;
}

 6-5提示用户输入一个大写字母,以金字塔格式打印字母

int main(void)
{
	char user;
	char init = 'A';
	char end = 'A';
	printf("请输入一个大写字母:");
	scanf("%c", &user);
	const int LINE = user - 'A';//行数确定
	const int NUM = 2 * LINE + 1;//总列数目的确定,保证字母居中所必须的信息

	for (int i = 0; i < LINE + 1; i++)//行数的循环准备
	{
		for (int j = LINE-i; j >= 0; j--)//前一半空格的循环
			printf("%c", 32);

		for (int k = 0; k <= i; k++)//前一半字母的循环
			printf("%c", init + k);
		
		for (int m = i-1; m>=0; m--)//后一半字母的循环
			printf("%c", init + m);

		for (int m = LINE; m >= 0;m--)//后一半空格的循环
			printf("%c", 32);
		printf("\n");
	}
	return 0;
}

6-6打印一个表格,每一行显示一个整数极其平方立方,要求用户输入整数上下界

int main(void)
{
	int start, end;
	printf("请输入你要打印数字的上下限:\n");
	printf("最小数字为:");
	scanf("%d", &start);
	printf("最大数字为:");
	scanf("%d", &end);
	printf(" num  dou  tri\n");
	for (int i = start; i <= end; i++)
	{
		printf("%3d  %3d  %3d\n", i, i * i, i * i * i);
	}
	return 0;
}

6-7 将单词读入后并倒序打印字符

int main(void)
{
	int status;
	char word[100];
		printf("请输入一个单词(输入非字母退出):");
		status = scanf("%s", word);
		int i = strlen(word);
		for (; i >= 0; i--)
			printf("%c", word[i]);
		int j = scanf("%s", word);

	return 0;
}

6-8用户输入两浮点数,打印两数差除以两数的乘积,并循环输入。

int main(void)
{
	double num_1, num_2;
	int status; 
	printf("请输入两个浮点数(输入非数字结束):");
	while (scanf("%lf %lf", &num_1, &num_2) == 2)
	{
		double result = (num_1 - num_2) / (num_1 * num_2);
		printf("结果为:%lf\n", result);
		printf("请输入两个浮点数(输入非数字结束):");
	}
	printf("程序结束!");
	return 0;
}

6-9 采用一个函数重新写6-8题。


# define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
double CALCULATE(double x, double y);int main(void)
{
	double num_1, num_2;
	
	printf("请输入两个浮点数:");
	while (scanf("%lf %lf", &num_1, &num_2) == 2)
	{
		double result = CALCULATE(num_1,num_2);
		printf("结果为:%lf\n", result);
		printf("请输入两个浮点数:");
	}
	printf("程序结束");
	return 0;
}
double CALCULATE(double x, double y)
{
	double result = (x - y) / (x * y);
	return result;
}

6-10要求用户输入上下限,并且输出上下限内所有平方和,打印如下所示:

 

int main(void)
{
	int lower, upper;
	int sum = 0;

	printf("Enter lower and upper integer limits:");
	scanf("%d %d", &lower, &upper);
	while (lower < upper)
	{
		for (int i = lower; i <= upper; i++)
			sum += i * i;
		printf("The sum of the squares from %d to %d is %d\n", lower * lower, upper * upper, sum);
		printf("Enter next set of limits:");
		scanf("%d %d", &lower, &upper);
	}
	printf("Done");
	return 0;
}

6-11 读入8个数,倒序打印

int main(void)
{
	int arr[8];
	printf("请输入8个数字:");
	for (int i = 0; i < 8; i++)
		scanf("%d", &arr[i]);
	for (int j = 7; j >= 0; j--)
		printf("%d",arr[j]);
	return 0;
}

6-12 考虑两个无限序列相加的和:

int main(void)
{
	int user;
	int i, j;
	double sum = 0;
	printf("请输入你想要计算的项数:");
	scanf("%d", &user);
	while (user > 0)
	{
		if (user % 2 == 0)
		{
			for ( i = 1,sum=0; i < user; i += 2)
				sum += 1.0 / i;
			sum = sum * 2;
			printf("结果为%lf\n", sum);
		}
		if (user % 2 == 1)
		{
			for ( j = 1,sum=0; j <= user; j += 2)
				sum += 1.0 / j;
				sum = sum * 2;
				printf("结果为%lf\n", sum);
		}
		printf("请输入你想要计算的项数:");
		scanf("%d", &user);
	}
	printf("程序结束");
	return 0;
}

6-13  数组8个数字,分别是2的幂次数,最后显示出来

int main(void)
{
	int arr[8];
	int num = 1;
	arr[0] = 1;
	int j = 0;

	for (int i = 1; i < 8; i++)
	{
		num *= 2;
		arr[i] = num;
	}
	do
	{
		printf("%4d", arr[j]);
		j++;
	} while (j < 8);
		
	return 0;
}

6-14 两个8位double数组,第一个是用户输入,第二个数组分别是前n个数字相加

int main(void)
{
	double arr_1[8], arr_2[8];
	printf("请输入8个数字:");

	for (int i = 0; i < 8; i++)
	{
		scanf("%lf", &arr_1[i]);
		arr_2[i] = arr_1[i];
	}

	for (int i = 1; i < 8; i++)
	{
		arr_2[i] = arr_2[i] + arr_2[i - 1];
	}

	for (int i = 0; i < 8; i++)
		printf("%6.2lf", arr_1[i]);
	printf("\n");
	for (int i = 0; i < 8; i++)
		printf("%6.2lf", arr_2[i]);
	printf("\n");
	return 0;
}

6-15.读取一行输入,倒序输出

int main(void)
{
	char arr[255];
	printf("请输入一串字符串:");
	scanf("%s", arr);
	for (int i = strlen(arr); i >=0; i--)
		printf("%c", arr[i]);
	return 0;
}

6-16投资问题

int main(void)
{
	const int cash = 100;
	const double Daphne = 0.1;
	const double Deirdre = 0.05;
	double money_Da=100, money_De=100;
	int i = 1;

	for ( i = 1; money_De <= money_Da; i++)
	{
		money_Da = money_Da + cash * Daphne;
		money_De =money_De + money_De * Deirdre;
	}
	printf("需要%d年Deirdre的存款会超过Daphne的存款\n", i);
	printf("Deirdre的存款是%lf,Daphne的存款是%lf。", money_De, money_Da);
	return 0;
}

6-17 投资问题

int main(void)
{
	/*double interest = 0.08;*/
    double cash = 100;
	int i = 0;
	double left = 100;

	while(left>0)
	{
		cash = left + left * 0.08;
		left = cash - 10;
		i++;
	}
	printf("需要%d年才能把钱取完", i);
	return 0;
}

6-18  最多朋友

int main(void)
{
	int num = 5;
	int week = 1;
	while (num <= 150)
	{
		num =  (num - week) * 2 ;
		
		printf("第%d周他有%d个朋友\n", week, num);
		week++;
	}
	printf("需要%d周会达到最大数",week-1);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值