实验十六 位运算与文件
班级______________姓名___________指导老师_____________成绩___________
第_____________机房___________号机器 时间:________________________
实验目的:1,掌握位运算符的运算规则。
2,学会计算位运算表达式的结果。
3,掌握文件的打开与关闭函数的使用。
4,学习文件的读函数与写函数的使用。
实验要求:每次实验前,学生要先预习实验内容,写出分析结果或程序,经实验指导老师检查后,上机运行、调试程序,得出最终正确结果。
实 验 内 容
一、读程序
要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。
1,
#include <stdio.h>
main( )
{
int a,b,c;
a=0x13 ;
b=0x17 ;
c= a & b;
printf(,%x \n”,c );
}
分析结果
运行结果
2,
main( )
{
unsigned char a,b ;
a = 0x9d;
b = 0xa5;
printf(“%x \n”,a & b );
printf(“%x \n”,a | b );
C语言程序设计上机指导与同步训练
·94·
·94·
printf(“%x \n”,a ^ b );
}
分析结果
运行结果
3,
#include <stdio.h>
main()
{
unsigned a = 0112,x,y,z ;
x = a >> 3 ; printf (,x = % o\n,,x ) ;
y = ~ ( ~ 0 << 4 ) ; printf (,y = % o\n,,y ) ;
z = x & y ; printf (,z = % o\n,,z ) ;
}
分析结果
运行结果
4,下面的程序执行后,文件test.txt中的内容是________________。
#include <stdio.h>
void fun(char *fname,char *st)
{ FILE *myf; int i;
myf=fopen(fname,“w” );
for(i=0;i<strlen(st); i++)fputc(st[i],myf);
fclose(myf);
}
main()
{ fun(“test”,“new world”);
fun(“test”,“hello,);
}
分析结果
运行结果
5,已有文本文件 test.txt,其中的内容为:Hello,everyone!。以下程序中,文件 test.txt
已正确为“读”而打开,由文件指针fr指向该文件,则程序的输出结果是什么?
#include <stdio.h>
main()
{ FILE *fr; char str[40];

fgets(str,5,fr);
printf("%s\n",str);
fclose(fr);
}
分析结果
运行结果
第一部分 C语言程序设计上机指导
·95·
·95·
二、完成程序
要求:根据要求,分析给出的上下语句,填写程序。
1,以下程序输出结果为:-1,177777,请在_______上填写正确位运算符
# include <stdio.h>
main()
{ int a = -1 ;
a = a _____ 0377 ;
printf(” %d,% O,,a,a );
}
2,以下程序能够实现x,y的值得交换,请在_______上填写正确内容。
main()
{
int x=1,y=2 ;
printf(“%d,%d \n”,x,y );
x = x^y ;
______________ ;
______________ ;
printf(“%d,%d \n”,x,y );
}
3,下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为 bi.dat 的新文件中。请填空。
#include,stdio.h”
main ()
FILE *fp;
{ char ch;
if( (fp=fopen ( _____________ ) )= = NULL)exit(0);
while( (ch=getchar( )) !=’@’) fputc (ch,fp);
fclose(fp);
}
4,以下程序用来统计文件中字符个数。请填空。
#include "stdio.h"
main()
{ FILE *fp; long num=0L;
if((fp=fopen("fname.dat","r"))==NULL)
{ pirntf("Open error\n"); exit(0);}
while( _____________________ )
{fgetc(fp); num++;}
printf("num=%1d\n",num-1);
fclose(fp);
}