C Primer Plus (第六版)课后编程练习答案3.11
第一题:
这道题要我们去观察整数上溢、浮点数上溢、浮点数下溢的问题,下面给出了整数上溢的代码:
#include
int main(void)
{
int a;
a=2147483647;
printf("a=%d\na+1=%d\n",a,a+1);
return 0;
}
输出如下:
第二题:
这道是要我们输入一个ASCII值,然后转换成字符打印出来,代码如下:
#include
int main(void)
{
int c; //ASCII值可以用int类型读取
scanf("%d",&c); //然后用字符型输出
printf("%c\n",c);
}
#include
int main(void)
{
float value;
printf("Enter a floating-point value:\n");
scanf("%f",&value);
printf("fixed=point notation:%f\nexponential natation:%e\n",value,value); //注意科学记数法的转换说明。
}
由于我的编译器不支持转换成16进制,所以有兴趣的话可以自己用其他编译器试试。
输出如下
第五题
代码如下:
#include
int Before(int F_sign,int day);
int After(int F_sign,int day);
int B_mounth(int birthday,int day);
int A_mounth(int now,int day);
#define SIZE 4
#define LONG 4
int main(void)
{
int birthday[SIZE],now[LONG],Y_count,D_count,F_sign,num,S_sign,T_sign,a,day;
int i,j,k;
printf("请输入的你的出生日期(年 月 日):(请用空格隔开)");
printf("(输入非正常月份退出)\n");
while(scanf("%d%d%d",&birthday[0],&birthday[1],&birthday[2])==3)
{
if(birthday[1]>12||birthday[1]<1) break;
printf("请输入今天的日期(年 月 日):(用空格隔开)\n");
if(scanf("%d%d%d",&now[0],&now[1],&now[2])==3)
{
Y_count=(now[0]-birthday[0]-1)*365; //这里记录你的年龄并转换成天数,没有考虑年份。
F_sign=birthday[0]; //标记年份
++F_sign;
for(;;) //这个for循环是为了找到离出生日期(不含)往后最近的闰年。
{
if(F_sign%4==0&&F_sign%100!=0||F_sign%400==0)
break;
else
F_sign++;
}
num=0;
for(;F_sign
第六题:
这一题的数量等于夸脱数乘上950除于3.0e-23。代码如下:
#include
int main(void)
{
float kua;
printf("Please enter how much quart:");
scanf("%f",&kua);
printf("%e\n",(kua*950)/(3.0e-23)); //数量等于夸脱数乘上950除于3.0e-23
}
输出如下:
第七题:
身高(厘米)=英寸*2.54;代码如下:
#include
#define inch 2.54
int main(void)
{
float stature;
printf("Please enter you stature(inch):");
scanf("%f",&stature);
printf("%f\n",stature*inch); //身高(厘米)=英寸*2.54
return 0;
}
输出如下:
第八题
这题是连续的单位换算,并没有什么难度,不过要注意的是定义变量的时候应该和上面几题一样使用float变量类型来定义。代码如下:
#include
int main(void)
{
float pint;
printf("Please enter how much pint:\n");
scanf("%f",&pint);
printf("%f pint=%f cup\n",pint,pint*2);
printf("%f cup=%f ounce\n",pint*2,pint*2*8);
printf("%f ounce=%f table spoon\n",pint*2*8,pint*2*8*2);
printf("%f table spoon=%f tea spoon\n",pint*2*8*2,pint*2*8*2*3);
return 0;
}