C Primer Plus第五章习题

#include <stdio.h>
//9.打印字母a~g
#define TEN 'g'
int main(void)
{
int n = 'a'-1;
while (n++ < TEN)
printf("%5c", n);
printf("\n");
return 0;
}

1.编写一个程序,把用分钟表示的时间转换成用小时和分钟表示的时间。
使用#define或const创建一个表示60的符号常量或const变量。通
过while循环让用户重复输入值,直到用户输入小于或等于0的值才停止
循环。

/*
1.编写一个程序,把用分钟表示的时间转换成用小时和分钟表示的时间。
使用#define或const创建一个表示60的符号常量或const变量。通
过while循环让用户重复输入值,直到用户输入小于或等于0的值才停止
循环。
*/
#include<stdio.h>
int main(void)
{
	const int sixtheen = 60;
	int inputMin = 1;
	
	while(inputMin>0){
		printf("请输入要转换的分钟数\n");
		
		scanf("%d",&inputMin);
		if(inputMin <= 0){
			break;
		}
		printf("%d分钟就是%d小时%d分钟\n\n",inputMin,inputMin/sixtheen,inputMin%sixtheen);
	}
	printf("程序退出\n");
}

2.编写一个程序,提示用户输入一个整数,然后打印从该数到比该
数大10的所有整数(例如,用户输入5,则打印5~15的所有整数,包
括5和15)。要求打印的各值之间用一个空格、制表符或换行符分开。

java 复制代码
/*
2.编写一个程序,提示用户输入一个整数,然后打印从该数到比该
数大10的所有整数(例如,用户输入5,则打印5~15的所有整数,包
括5和15)。要求打印的各值之间用一个空格、制表符或换行符分开。
*/
#include<stdio.h>
int main(void)
{
	int i;
	int o;
	printf("请输入一个整数\n");
	scanf("%d",&i);
	o = i+11;
	printf("开始输出\n");
	for(i;i<o;i++){
	printf("%d\n",i);
	}
}
java 复制代码
/*
3.编写一个程序,提示用户输入天数,然后将其转换成周数和天
数。例如,用户输入18,则转换成2周4天。以下面的格式显示结果:
18 days are 2 weeks, 4 days.
通过while循环让用户重复输入天数,当用户输入一个非正值时
(如0或-20),循环结束。
*/
#include<stdio.h>
int main(void)
{
	const int week = 7;
	int days = 0;

	
	while(1){
		printf("请输入要计算的天数\n");
		scanf("%d",&days);
		
		if(days<=0){
			printf("输入的数值非法!\n");
			break;
		}
		printf("%d天是%d周%d天\n",days,days/week,days%week);
		
	}
	 
	
}
java 复制代码
/*
4.编写一个程序,提示用户输入一个身高(单位:厘米),并分别
以厘米和英寸为单位显示该值,允许有小数部分。程序应该能让用户
重复输入身高,直到用户输入一个非正值。其输出示例如下:
Enter a height in centimeters: 182
182.0 cm = 5 feet, 11.7 inches
Enter a height in centimeters (<=0 to quit): 168.7
168.0 cm = 5 feet, 6.4 inches
Enter a height in centimeters (<=0 to quit): 0
bye
feet = 30.48厘米
英寸 = 2.54厘米 
*/
#include<stdio.h>
int main(void)
{
	float tall;
	while(1)
	{
		printf("请输入你的身高单位cm,输入值小于0则退出程序:\n"); 
		
		scanf("%f",&tall);
		if(tall<=0){
			printf("程序退出\n");
			break;
		}
		printf("%.1f cm = %d feet,%.1f inches\n",tall,(int)(tall/30.48),tall/2.54);
		 
	}
} 
java 复制代码
#include <stdio.h>
/*
5.修改程序addemup.c(程序清单5.13),你可以认为addemup.c是
计算20天里赚多少钱的程序(假设第1天赚$1、第2天赚$2、第3天赚
$3,以此类推)。修改程序,使其可以与用户交互,根据用户输入的
数进行计算(即,用读入的一个变量来代替20)。
*/
int main(void)         /* 计算前20个整数的和  */
{
	int count, sum,num;     /* 声明 [1]        */
	count = 0;         /* 表达式语句      */
	sum = 0;          /* 表达式语句      */
	while(1){
		printf("请输入一个要求和的数\n");
		scanf("%d",&num);
		
		if(num <= 0){
			printf("输入非法,程序退出");
		 break;
		}
		while (count++ < num)/* 迭代语句      */
			{
			sum = sum + count; 
			}    
		
		printf("sum = %d\n", sum); /* 表达式语句 [2]      */
		count =0;
		sum = 0;
	}

	
return 0;       /* 跳转语句         */
}
java 复制代码
#include <stdio.h>
/*
6.修改编程练习5的程序,使其能计算整数的平方和(可以认为第1
天赚$1、第2天赚$4、第3天赚$9,以此类推,这看起来很不错)。C没

有平方函数,但是可以用n * n来表示n的平方。
*/
int main(void)         /* 计算前20个整数的和  */
{
	int count, sum,num;     /* 声明 [1]        */
	count = 0;         /* 表达式语句      */
	sum = 0;          /* 表达式语句      */
	while(1){
		printf("请输入一个要求平方和的数\n");
		scanf("%d",&num);
		
		if(num <= 0){
			printf("输入非法,程序退出");
		 break;
		}
		while (count++ < num)/* 迭代语句      */
			{
			sum = sum + count*count; //修改加法为求平方和 
			}    
		
		printf("sum = %d\n", sum); /* 表达式语句 [2]      */
		count =0;
		sum = 0;
	}

	
return 0;       /* 跳转语句         */
}
java 复制代码
/*
7.编写一个程序,提示用户输入一个double类型的数,并打印该数
的立方值。自己设计一个函数计算并打印立方值。main()函数要把用户
输入的值传递给该函数。
*/ 
#include<stdio.h>
double getCount(double d); 
int main(void)
{
	double inputDouble;
	double a;
	printf("请输入一个double类型的数\n");
	scanf("%lf",&inputDouble);//这里用%f无法接收到用户输入 

	printf("输入数的立方值为:%e\n",getCount(inputDouble));
	return 0;
}
double getCount(double d)
{
	return d*d*d;
}
java 复制代码
/*
8.编写一个程序,显示求模运算的结果。把用户输入的第1个整数
作为求模运算符的第2个运算对象,该数在运算过程中保持不变。用户
后面输入的数是第1个运算对象。当用户输入一个非正值时,程序结
束。其输出示例如下:
This program computes moduli.
Enter an integer to serve as the second operand: 256
Now enter the first operand: 438
438 % 256 is 182
Enter next number for first operand (<= 0 to quit): 
1234567
1234567 % 256 is 135
Enter next number for first operand (<= 0 to quit): 0
Done
*/
#include<stdio.h>
int main(void)
{
	int first,next;
	printf("请输入一个整数作为模\n");
	scanf("%d",&first);
	while(1){
		printf("请输入一个被模数,输入值<=0退出程序\n");
		scanf("%d",&next);
		if(next<=0)
		{
			printf("Done\n");
			break;
		}
		printf("%d%%%d的值为%d\n",next,first,next/first);
		 
	}
}
java 复制代码
/*
9.编写一个程序,要求用户输入一个华氏温度。程序应读取double
类型的值作为温度值,并把该值作为参数传递给一个用户自定义的函
数Temperatures()。该函数计算摄氏温度和开氏温度,?以小数点后面
两位数字的精度显示3种温度。要使用不同的温标来表示这3个温度
值。下面是华氏温度转摄氏温度的公式:
摄氏温度 = 5.0 / 9.0 * (华氏温度 - 32.0)
开氏温标常用于科学研究,0表示绝对零,代表最低的温度。下面
是摄氏温度转开氏温度的公式:
开氏温度 = 摄氏温度 + 273.16

Temperatures()函数中用const创建温度转换中使用的变量。在main()
函数中使用一个循环让用户重复输入温度,当用户输入 q 或其他非数
字时,循环结束。scanf()函数返回读取数据的数量,所以如果读取数字
则返回1,如果读取q则不返回1。可以使用==运算符将scanf()的返回值
和1作比较,测试两值是否相等。*/
#include<stdio.h>
void Temperatures(double tem);
int main(void)
{
	double tem;
	while(1){
	printf("请输入华氏温度,输入非预期值则退出程序\n");

	if(scanf("%lf",&tem)!=1){
		break;
	}
	Temperatures(tem);
	}	
}
	void Temperatures(double tem){
		const double C = 5.0/9.0;
		const double K = 273.16;
		printf("你输入的华氏温度为%lf\n",tem);
		printf("你输入的摄氏度为%lf\n",C*(tem-32));
		printf("你输入的华氏温度为%lf\n",C*(tem-32)+K);
	
	} 
相关推荐
我爱蛋蛋后2 小时前
Linux驱动开发之音频驱动与基础应用编程
linux·c语言·驱动开发·音视频
卷卷的小趴菜学编程2 小时前
c++之多态
c语言·开发语言·c++·面试·visual studio code
大白的编程日记.4 小时前
【C++笔记】C+11深度剖析(三)
c语言·开发语言·c++
和光同尘@5 小时前
56. 合并区间 (LeetCode 热题 100)
c语言·开发语言·数据结构·c++·算法·leetcode·职场和发展
YH_DevJourney6 小时前
Linux-C/C++《C/9、信号:基础》(基本概念、信号分类、信号传递等)
linux·c语言·c++
让我们一起加油好吗6 小时前
【数学】数论干货(疑似密码学基础)
c语言·visualstudio·密码学
许科大9 小时前
【笔记ing】C语言补充、组成原理数据表示与汇编实战、操作系统文件实战(高级阶段)
c语言
时时三省10 小时前
【时时三省】(C语言基础)求多项式1-1/2+1/3-1/4+...+1/99-1/100的值 用C语言表示
c语言
我不是程序猿儿16 小时前
【C】识别一份嵌入式工程文件
c语言·开发语言
子豪-中国机器人20 小时前
2月17日c语言框架
c语言·开发语言