
请教两道C语言题目
一、若有以下说明和定义uniondt{inta;charb;doublec;}date;则以下叙述是否正确,为什么程序段:date.a=5;printf("%f\n",d...
一、
若有以下说明和定义
union dt
{
int a;char b;double c;
}date;
则以下叙述是否正确,为什么
程序段:date.a=5;printf("%f\n",date.c);输出结果为5。000000
二、
#include<stdio.h>
main()
{ FILE *fp;int i,k=0,n=0;
fp=fopen("d1.dat","w");
for(i=1;i<4;i++) fprintf(fp,"%d",i);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n); printf("%d %d\n",k,n);
fclose(fp);
}
请给我步骤 展开
若有以下说明和定义
union dt
{
int a;char b;double c;
}date;
则以下叙述是否正确,为什么
程序段:date.a=5;printf("%f\n",date.c);输出结果为5。000000
二、
#include<stdio.h>
main()
{ FILE *fp;int i,k=0,n=0;
fp=fopen("d1.dat","w");
for(i=1;i<4;i++) fprintf(fp,"%d",i);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n); printf("%d %d\n",k,n);
fclose(fp);
}
请给我步骤 展开
展开全部
1,
错。输出应该是0。理由是int和float存储格式不同,int占2个字节共16位;而float占4个字节占32位,其中第32位是符号位,31-23是数值位,22-1位是指数位。你可以用如下语句去理解一下float的存储格式。
date.c=1.0;
printf("%x\n",date.a);
date.c=2.0;
printf("%x\n",date.a);
date.c=-1.0;
printf("%x\n",date.a);
2,
#include<stdio.h>
main()
{ FILE *fp;int i,k=0,n=0;
fp=fopen("d1.dat","w"); //以write方式打开d1.dat。如果没有d1.dat,则在a.exe同目录下创建一个
for(i=1;i<4;i++) fprintf(fp,"%d",i); //在文件中写入123
fclose(fp); //关闭文件
fp=fopen("d1.dat","r"); //以read方式打开文件
fscanf(fp,"%d%d",&k,&n); /从文件中读出两个整数,赋值给k,n;由于123之间没有空格,于是k=123,n=0
printf("%d %d\n",k,n);
fclose(fp);
}
错。输出应该是0。理由是int和float存储格式不同,int占2个字节共16位;而float占4个字节占32位,其中第32位是符号位,31-23是数值位,22-1位是指数位。你可以用如下语句去理解一下float的存储格式。
date.c=1.0;
printf("%x\n",date.a);
date.c=2.0;
printf("%x\n",date.a);
date.c=-1.0;
printf("%x\n",date.a);
2,
#include<stdio.h>
main()
{ FILE *fp;int i,k=0,n=0;
fp=fopen("d1.dat","w"); //以write方式打开d1.dat。如果没有d1.dat,则在a.exe同目录下创建一个
for(i=1;i<4;i++) fprintf(fp,"%d",i); //在文件中写入123
fclose(fp); //关闭文件
fp=fopen("d1.dat","r"); //以read方式打开文件
fscanf(fp,"%d%d",&k,&n); /从文件中读出两个整数,赋值给k,n;由于123之间没有空格,于是k=123,n=0
printf("%d %d\n",k,n);
fclose(fp);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |