Bootstrap

C语言数据类型题10道

题目1

通过实验(即编写带此类问题的程序)观察系统如何处理整数上溢、浮点数上溢和浮点数下溢的情况
整数上溢程序:

//整数溢出
#include <stdio.h>
int main()
{
	short ttg = 100000;
	printf("ttg=%hd",ttg);
	getchar();
	return 0;
}

处理结果:
整数溢出的结果显示
分析:
当达到短整型所能表示的最大值32767,会重新从起点-32768开始直到所要表示出100000,值为-31072。看i酷酷酷酷酷酷酷酷酷酷酷酷酷酷酷酷酷
浮点数上溢程序:

//浮点数上溢
#include <stdio.h>
int main()
{
	float ttg = 3.4E38*100.0f;
	printf("ttg=%e\n",ttg);
	getchar();
	return 0;
} 

处理结果:
在这里插入图片描述
分析:
计算的数字过大,超过了当前类型能表达的范围3.4E+38,发生浮点数上溢,这种情况下计算机会赋给变量ttg一个表示无穷大的值,printf()显示该值为inf。
浮点数下溢程序:

//浮点数下溢
#include <stdio.h>
int main()
{
	float ttg = 0.1234E-38/10;
	printf("ttg=%e\n",ttg);
	getchar();
	return 0;
} 

处理结果:
在这里插入图片描述
分析:
计算的数字过小,小于float类型所能表达的最小值,造成的精度损失。本来ttg=0.1234E-38/10=1.234E-40,结果却给出了是ttg=1.233997e-40。

题目2

编写一个程序,要求提示输入一个ASCLL码值(如,66),然后打印输入的字符。
程序:

//打印输入的ASCLL码值的字符
#include <stdio.h>
int main()
{
	char A_char;
	printf("请输入ASCLL码值:");
	scanf("%d",&A_char);
	printf("%c\n", A_char);
	getchar();
	return 0;
}

运行结果:
在这里插入图片描述

题目3

编写一个程序,发出一声警报,然后打印下面的文本:
程序:

//发出警报、打印文本
#include <stdio.h>
int main()
{
	printf("\aStartled by the sudden sound,Sally shouted,");
	printf("\n\"By the Great pumpkin,what was that!\"\n");
	getchar();
	return 0;
}

运行结果:
在这里插入图片描述

题目4

编写一个程序。读取一个浮点数,先打印成小数点形式,再打印成指数形式。然后,如果系统支持,再打印成p计数法(即16进制计数法)。按以下格式输出(实际显示的指数位数因系统而异)。
程序:

//打印浮点数的三种形式
#include <stdio.h>
int main()
{
	float fax;
	printf("请输入一个浮点数:");
	scanf("%f",&fax);
	getchar();
	printf("该数的小数点形式:%f\n", fax);
	printf("该数的指数形式:%e\n", fax);
	printf("该数的p计数法形式:%f\n", fax);
	getchar();
	return 0;
}

运行结果:
在这里插入图片描述

题目5

一年大约有3.156✖10^7秒,编写一个程序,提示用户输入年龄,然后显示该年龄对应的秒数。
程序:

//年龄对应的秒数
#include <stdio.h>
int main()
{
	short ages;
	float seconds;
	printf("请输入你的年龄:");
	scanf("%d",&ages);
	getchar();
	seconds = 3.156E7*ages;
	printf("你的年龄对应的秒数:%f\n", seconds);
	getchar();
	return 0;
}

运行结果:
在这里插入图片描述

题目6

1个水分子的质量约3.0✖10^-23克。1夸脱水大约是950克。编写一个程序,提示用户输入水的夸脱数,并显示水分子的数量
程序:

//水分子数
#include <stdio.h>
int main()
{
	short Quarts;
	long float Waters;
	printf("请输入水的夸脱数:");
	scanf("%d",&Quarts);
	getchar();
	Waters = 950 * Quarts / 3.0E-23;
	printf("水分子的数量为:%Le\n", Waters);
	getchar();
	return 0;
}

运行结果:
在这里插入图片描述

题目7

1英寸相当于2.54厘米。编写一个程序,提示用户输入身高(英寸),然后以厘米为单位显示身高。
程序:

//身高英寸转厘米
#include <stdio.h>
int main()
{
	short inch_height;
    float cm_height;
	printf("请输入你的身高(英寸):");
	scanf("%d",&inch_height);
	getchar();
	cm_height = 2.54*inch_height;
	printf("你的身高是(厘米):%.3f\n", cm_height);
	getchar();
	return 0;
}

运行结果:
在这里插入图片描述

题目8

在美国的体积测量系统中,1品脱等于2杯,1杯等于8盎司,1盎司等于2大汤勺,1大汤勺等于3茶勺。编写一个程序,提示用户输入杯数,并以品脱、盎司、汤勺、茶勺为单位显示等价容量、思考对于该程序,为何使用浮点类型比整数类型更合适。
程序:

//体积转化
#include <stdio.h>
int main()
{
    float pints,cups,ounces,soups,teas;
	printf("请输入杯数:");
	scanf("%f",&cups);
	getchar();
	pints = cups / 2;
	ounces = 8 * pints;
	soups = 2 * ounces;
	teas = 3 * soups;
	printf("品脱:%f\n", pints);
	printf("盎司:%f\n", ounces);
	printf("汤勺:%f\n", soups);
	printf("茶勺:%f\n", teas);
	getchar();
	return 0;
}

运行结果:
在这里插入图片描述
分析:
因为体积不一定是整数,因此使用浮点数更合适。

;