教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 学前教育 >

电1C语言实验报告(12)

来源:网络收集 时间:2026-08-03
导读: 《计算方法与程序设计实验》 if((fp1=fopen(\{ while((ch=fgetc(fp2))!=EOF) fputc(ch,fp1); } else { printf(\} fclose(fp1); fclose(fp2); printf(\if((fp=fopen(\{ printf(\exit(1); } for(i=0;(ch=fgetc(fp))!=

《计算方法与程序设计实验》

if((fp1=fopen(\{

while((ch=fgetc(fp2))!=EOF) fputc(ch,fp1); } else {

printf(\}

fclose(fp1); fclose(fp2);

printf(\if((fp=fopen(\{

printf(\exit(1); }

for(i=0;(ch=fgetc(fp))!=EOF;i++) {

c[i]=ch;

putchar(c[i]); }

putchar('\\n'); fclose(fp);}

Key:第一空应填:(fp=fopen(\ 第二空应填:putc(c[i],fp); 第三空应填:&&

第四空应填:fputc(ch,fp1);

注意:若此程序运行前,先用C++集成开发环境新建文本文件b.dat,其内容为qwerty。则每次运行结果为:

3. 从磁盘文件 file1.dat 中读入一行字符到内存,将其中的小写字母全改成大写字母, 然后输出到磁盘文件file2.dat 中。 具体要求如下:

(1)用fgetc()和fputc()实现字符的输入和输出。

(2)用条件运算符判断输入的字符是否是小写字母,若是,则减去32(大小写字母的 ASCII 码相差32);否则不改变。最后输出此字符。

(3)分别用以下数据运行该程序:c,F。/*此要求似乎与题意不符,建议去掉*/ 【程序源代码1:将该行字符存入字符数组中】 #include #define N 80 main() {

FILE *fp; int i;

char c[N];

36

《计算方法与程序设计实验》

if((fp=fopen(\{

printf(\exit(0); }

printf(\

for(i=0;(c[i]=fgetc(fp))!=EOF;i++) {

putchar(c[i]);

c[i]=c[i]>='a'&&c[i]<='z'?c[i]-32:c[i]; }

putchar('\\n'); fclose(fp);

if((fp=fopen(\{

printf(\exit(0); }

printf(\for(i=0;c[i]!='\\n';i++) {

fputc(c[i],fp); putchar(c[i]); }

putchar('\\n'); fputc('\\n',fp); fclose(fp); }

注意:若此程序运行前,先用C++集成开发环境新建文本文件file1.dat,若其内容为: aS12 DF-afiour(表示按回车键)。则运行结果为:

【程序源代码2:只显示修改后的该行字符】 #include \main() { FILE *fp1,*fp2; char ch;

fp1=fopen(\ if(fp1==NULL)

{ printf(\ exit(0); }

fp2=fopen(\ if(fp2==NULL)

{ printf(\ exit(0); }

printf(\

while((ch=fgetc(fp1))!= '\\n') { ch=ch>='a'&&ch<='z'?ch-32:ch; fputc(ch,fp2);

37

《计算方法与程序设计实验》

putchar(ch); }

putchar('\\n'); fclose(fp2); fclose(fp1); }

4. 密码管理。(本实验强调文件的操作,密码设置和密码字符串的加密自己设计和实现,本实验进行不加密存储和校验) 具体要求如下:

(1)设置密码长度为6~12 个字符。

(2)加密存储到1 个ASCII 文件。本实验直接利用fputs()函数,将假定已加密的密码存储在文件password 中。

(3)密码校验。使用同一个加密算法对登录密码加密然后和设置的原始密文比较进行校验。 【程序源代码】 #include #include #include void show(char *s) { int i,len; len=strlen(s); for(i=0;i

void getpass(char *s) { FILE *fp; int i=0; if((fp=fopen(\ { printf(\ printf(\ while((s[i]=getch())!='\\r') { putchar('*'); i++; } s[i]=0; putchar('\\n'); show(s); fputs(s,fp); fclose(fp); }

int main() { int i; char pass[50],t[50]; while(1) { getpass(pass); i=strlen(pass); if(i>=6&&i<=12)break; } printf(\ printf(\ i=0; while(1) { while((t[i]=getch())!='\\r') { putchar('*');

38

《计算方法与程序设计实验》

i++; } t[i]=0; putchar('\\n'); show(t); if(!strcmp(t,pass))break; printf(\ printf(\ return 0;} 输出截图

}

5. 假设有若干个学生,每个学生有 3 门功课,从键盘上输入学生有关信息(学号、姓 名、成绩),并计算其平均成绩,将原有数据和平均分保存在磁盘文件record 中。 具体要求如下:

(1)学生有关信息采用结构体类型存储。

(2)fwrite()函数实现数据块输出到文件record。 (3)结合循环结构实现数据输入和输出。

【程序源代码】 #include #include #define N 3

typedef struct{int num;char name[10];float score[3],ave;}STU; main()

{FILE *fp; int i,j; STU st[N];

if((fp=fopen(\

{ printf(\ for(i=0;i

{ printf(\ scanf(\ getchar(); printf(\ gets(st[i].name); st[i].ave=0; for(j=0;j<3;j++) { printf(\ scanf(\ st[i].ave+=st[i].score[j];} st[i].ave/=j; fwrite(&st[i],sizeof(STU),1,fp);} fclose(fp);} 输出截图

39

《计算方法与程序设计实验》

6. 假设有 10 个学生记录从键盘输入到文件record 中,在实验3(实验3建议改为本实验的第5题)的基础之上,将第1、3、5、7、9 号记录学生信息读出显示在屏幕。 具体要求如下:

(1)用fread()函数实现从文件record 中数据块读。

(2)用随机方式读文件,采用fseek()函数定位文件读写位置。 【程序源代码】 #include #include #define N 3

typedef struct{int num;char name[10];float score[3],ave;}STU; main() {FILE *fp; int i=1,j; STU st;

if((fp=fopen(\

{ printf(\while(fread(&st,sizeof(st),1,fp)==1)

{ printf(\ printf(\ for(j=0;j<3;j++) printf(\ printf(\ fseek(fp,sizeof(STU),SEEK_CUR); i+=2;} fclose(fp); }

输出截图

7.有两个磁盘文件,各自存放已排好序的若干字符(如a1.dat中放\,a2.dat中放\),要求将两个文件合并,合并后仍然保持有序(如\),存放在a3.dat文件中。 【程序如下】

#include main()

{FILE *in1,*in2,*out; int i,j,n; char q[10],t;

if((in1=fopen(\if((in2=fopen(\if((out=fopen(\i=0;

while(!feof(in1)){q[i]=fgetc(in1);i++;} while(!feof(in2)){q[i]=fgetc(in2);i++;} i--;

40

…… 此处隐藏:1289字,全部文档内容请下载后查看。喜欢就下载吧 ……
电1C语言实验报告(12).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/595017.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)