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);
	
	} 
相关推荐
小麦嵌入式24 分钟前
Linux驱动开发实战(十一):GPIO子系统深度解析与RGB LED驱动实践
linux·c语言·驱动开发·stm32·嵌入式硬件·物联网·ubuntu
jelasin1 小时前
LibCoroutine开发手记:细粒度C语言协程库
c语言
篝火悟者1 小时前
自学-C语言-基础-数组、函数、指针、结构体和共同体、文件
c语言·开发语言
神里流~霜灭3 小时前
蓝桥备赛指南(12)· 省赛(构造or枚举)
c语言·数据结构·c++·算法·枚举·蓝桥·构造
双叶8363 小时前
(C语言)单链表(1.0)(单链表教程)(数据结构,指针)
c语言·开发语言·数据结构·算法·游戏
艾妮艾妮4 小时前
C语言常见3种排序
java·c语言·开发语言·c++·算法·c#·排序算法
charlie1145141915 小时前
STM32F103C8T6单片机硬核原理篇:讨论GPIO的基本原理篇章1——只讨论我们的GPIO简单输入和输出
c语言·stm32·单片机·嵌入式硬件·gpio·数据手册
矿渣渣5 小时前
int main(int argc, char **argv)C语言主函数参数解析
c语言·开发语言
阿让啊5 小时前
bootloader+APP中,有些APP引脚无法正常使用?
c语言·开发语言·stm32·单片机·嵌入式硬件
代码AC不AC5 小时前
【数据结构】队列
c语言·数据结构·学习·队列·深度讲解