C++问题,求高手详细解答,谢谢。

程序段“int x=12;double y=3.141593;printf("%d%8.6f",x,y);"的输出结果是123.141593,能不能解释一下printf这个东西,我没学过不懂,%8.6是什么意思?改成别的数会怎么样?printf最好能拓展讲一下谢谢,还有scanf,getchar,
变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000,若要求将a的高4位取反,低4位不变,所要执行的运算是A.a*b B.a|b C.a&b D.a<<4 希望把四个选项中的符号都解释一下,看不懂是什么意思,没碰到过。
有下列程序:
#include<stdio.h>
void main(){
FILE * fp;int a[10]={1,2,3},i,n;
fp=fopen("d1.dat","w");
for(i=0;i<3;i++) fprintf(fp,"%d",a[i]);
fprintf(fp,"\n");
fclose(fp);
fp=open("d1.dat","r");
fscanf(fp,"%d",&n);
fclose(fp);
printf("%d\n",n);
}
这个程序我几乎都看不懂,能不能帮我解释一下各句话是什么意思,FILE,fopen ,之类的都不知道是什么。
以上求高手解答,我分不多,回答的好我再追加。

第一个问题:printf()函数是控制台(就是你的dos窗口,那个黑色的)输出函数
其中的含义:%d 十进制有符号整数 %u 十进制无符号整数 %f 浮点数 %s 字符串 %c 单个字符 %p 指针的值 %e 指数形式的浮点数 %x, %X 无符号以十六进制表示的整数 %0 无符号以八进制表示的整数 %g 自动选择合适的表示法

你的程序中printf("%d%8.6f",x,y); 第一个%d输出一个有符号整数就是后边对应的x的值到控制台上
紧接着输出%8.6f 即对应于y的值,这里%8.6f的意思是,首先输出一个浮点数,这个浮点数的格式是:8.6中的6代表有六个小数位(不足的用零补齐),8代表这个浮点数总共有8位(包括小数点),不足八位,在浮点数前边用空格补齐;

scanf函数跟printf正好相反是从控制台读取数据
getchar是从控制台读取一个字符

第二个问题:A选项:代表a乘b B选项:a与b按位取或, C选项:a和b按位取与 D选项是将a的八位向右移动四位

第三个问题:
#include<stdio.h>
void main(){
FILE * fp;int a[10]={1,2,3},i,n;
fp=fopen("d1.dat","w");//以写的方式打开d1.dat文件
for(i=0;i<3;i++) fprintf(fp,"%d",a[i]);//将a【10】中的1、2、3写入d1.dat文件
fprintf(fp,"\n");
fclose(fp);
fp=open("d1.dat","r");//以读的方式打开d1.dat文件
fscanf(fp,"%d",&n);//将d1.dat中的数据读入变量n中
fclose(fp);
printf("%d\n",n);//将n的数据打印到控制台上 应该是123
}追问

第二个问题的4个选项具体是怎么算的你能说一下吗?答案应该选哪个?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-22
FILE * fp;//文件定义
int a[10]={1,2,3},i,n;//数组声明,这句声明很槽,应该分开声明
fp=fopen("d1.dat","w");//打开文件“d1,dat”,后面的W是指以写入方式打开
for(i=0;i<3;i++) fprintf(fp,"%d",a[i]); //依次循环将fp中的值写入数组
fprintf(fp,"\n");//在文件中换行
fclose(fp);//关闭文件
fp=open("d1.dat","r");//以只读方式打开
fscanf(fp,"%d",&n);//读取数据
fclose(fp);//关闭文件
printf("%d\n",n);//输出N的大小

看懂这段代码,你需要掌握C中的文件操作,和格式化输出函数
相似回答