1.通过试验(即编写带有此类问题的程序)观察系统如何处理整数上溢、浮点数上溢和浮点数下溢的情况。
/*1.定义目标:设计问题使面对整数上溢、浮点数上溢和浮点数下溢的情况
设计程序:设计题目,调用整数类型,浮点数类型,赋值超出位数,输出查看情况 */
/*某博物馆想请你设计可容纳最大访问人数为4294967295,
超出最大访问人数从0开始(整数上溢).你的朋友想看看浮点数最大和最小,计算机会怎样*/
#include <stdio.h>
int main(void)
{
unsigned int i =4294967295;
float j= 3.4E38 * 100.0f;
float k= 3.1415e9/10;
printf("%u %u %u\n",i,i+1,i+2);
printf("%f\n%f\n",j,k);
return 0;
}
2.编写一个程序,要求提示输入一个ASCII码值(如66),然后打印输入的字符。
/*2.定义目标:输入一个ASCII码值,输出字符
设计程序:使用char类型,scanf获取数据,以十进制输出 */
#include <stdio.h>
int main(void)
{
char c;
printf("请输入字母\n");
scanf("%c",&c);
printf("%c means %d.",c,c);
return 0;
}
3.编写一个程序,发出一声警报,然后打印下面的文本:
Startled by the sudden sound, Sally shouted,
"By the Great Pumpkin, what was that!"
/*3.定义目标:发出警报,打印文本
Startled by the sudden sound, Sally shouted,
"By the Great Pumpkin, what was that!"
设计程序:使用转义字符,输出*/
#include <stdio.h>
int main(void)
{
printf("\aStartled by the sudden sound, Sally shouted,\n");
printf("\"By the Great Pumpkin, what was that!\"");
return 0;
}
4.编写一个程序,读取一个浮点数,先打印成小数点形式,再打印成指数形式。然后,如果系统支持,再打印成p记数法(即十六进制记数法)。 按以下格式输出(实际显示的指数位数因系统而异):
/*4.定义目标:一个浮点数,打印成小数点形式,指数形式,p记数法(即十六进制记数法)
按以下格式输出:
Enter a floating-point value: 64.25
fixed-point notation: 64.250000
exponential notation: 6.425000e+01
p notation: 0x1.01p+6
设计程序: 声明并初始化浮点数变量,以不同形式输出*/
#include <stdio.h>
int main(void)
{
float six =64.25;
printf("Enter a floating-point value:%2.2f\n",six);
//%g也行 输出实数,自动选择合适的表示法(科学计数法与小数记数法)
printf("fixed-point notation:%f\n",six);
printf("exponential notation:%e\n",six);
printf("p notation:%a\n",six);
return 0;
}
5.一年大约有3.156×10^7秒。编写一个程序,提示用户输入年龄,然后显示该年龄对应的秒数。
/*5.定义目标:输入年龄,显示该年龄对应的秒数 3.156×10^7
设计程序: 声明变量,printf询问年龄,scanf输入年龄,计算秒数,printf输出*/
#include <stdio.h>
int main(void)
{
int age;
printf("How old are you?\n");
scanf("%d",&age);
printf("Your age is agree with %.2f",age*3.156e7);
return 0;
}
6. 1个水分子的质量约为3.0×10^−23克。1夸脱水大约是950克。编写一个程序,提示用户输入水的夸脱数,并显示水分子的数量。
/*6.定义目标:输入水的夸脱数,显示水分子的数量
1个水分子的质量约为3.0×10^−23克,1夸脱水大约是950克.
设计程序: 声明变量,printf询问夸脱数,scanf输入夸脱数,计算水分子的数量,printf输出*/
#include <stdio.h>
int main(void)
{
int num;
printf("请问你想要几夸脱水\n");
scanf("%d",&num);
printf("这些水分子的质量是 %e",num*3.0e-23/950);
//用%e打印指数记数法的浮点数。
return 0;
}
7. 1英寸相当于2.54厘米。编写一个程序,提示用户输入身高(/英寸),然后以厘米为单位显示身高。
/*7.定义目标:输入身高(/英寸),以厘米为单位显示身高 1英寸相当于2.54厘米
设计程序: 声明变量,printf询问身高,scanf获取,printf计算输出*/
#include <stdio.h>
int main(void)
{
float num;
printf("请问您的身高是多少英寸\n");
scanf("%f",&num);
printf("这相当于%.2f厘米",num*2.54);
return 0;
}
8.在美国的体积测量系统中,1品脱等于2杯,1杯等于8盎司,1盎司等 于2大汤勺,1大汤勺等于3茶勺。编写一个程序,提示用户输入杯数,并以 品脱、盎司、汤勺、茶勺为单位显示等价容量。思考对于该程序,为何使用 浮点类型比整数类型更合适?
/*7.定义目标:输入杯数,并以品脱、盎司、汤勺、茶勺为单位显示等价容量
//整数类型在用户输入的单数时会有小数出现
设计程序: 声明变量,printf询问杯数,scanf获取,printf计算输出*/
#include <stdio.h>
int main(void)
{
float num;
printf("请问您想要几杯?\n");
scanf("%f",&num);
printf("这相当于%.2f品脱\n",num/2);
printf("这相当于%.2f盎司\n",num*8);
printf("这相当于%.2f汤勺\n",num*8*2);
printf("这相当于%.2f茶勺\n",num*8*2*3);
return 0;
}