题目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;
}
运行结果:
分析:
因为体积不一定是整数,因此使用浮点数更合适。