c程作业文件

c程作业文件
c程作业文件

1. 下面定义结构变量的语句中错误的是____

A) struct student {int num; char name[20]; } s;

B) struct {int num; char name[20]; } s;

C) struct student { int num; char name[20]; } struct student s;

D) struct student { int num; char name[20]; }; student s;

2. 如果有定义语句:

stuct {

int x,y; } s[2]={ {1,3}, {2,7} };

则语句:printf("%d\n", s[0].y/s[1].x); 输出结果为____

A) 0 B) 1 C)2 D)3

3. 根据下面的定义,能打印出字母M 的语句是____

struct person{

char name[10];

int age;}c[10={" John",17,"Paul",19,"Mary",18,"Adam",16};

A) printf("%c",c[3].name); B)printf("%c",c[3].name[1]);

C) printf("%c",c[2].name[0]); D)printf("%c",c[2].name[1]);

4. 设有如下定义,则对data 中的a成员的正确引用是____

struct sk{int a; float b;} data , *p=&data;

A) (*p).data.a B) (*p).a C) p->data.a D) p.data.a

5. 对于以下结构定义,(*p) -> str++ 中的++ 加在____

struct {int len; char *str; } *p;

A) 指针str上B)指针p 上C) str 指向的内容上D)语法错误

6) 要调用数学处理函数时,在#include 命令行中应包含_____

A) “stdio.h”B) “string.h”C) “math.h”D) “ctype.h”

7) 对于以下递归函数f , 调用f(4), 其返回值为_____

A) 10 B) 4 C) 0 D) 以上均不是

8) 执行下列程序段:

#define MA(x,y) (x*y)

int i=5;

i = MA(i, i+1) -7;

变量i 的值应为:

A) 30 B) 19 C) 23 D) 1

9) 宏定义“define DIV(a,b) a/b”经DIV(x+5,y-5) 引用,替换展开后是_____

A) x+5/y-5 B) (x+5/y-5) C) (x+5)/(y-5) D) (x+5)/(y-5)

10) 定义带参数的宏#define JH(a, b, t) t=a; a=b; b=t, 对两个a, b的值进行交换,下列表述中

正确的是_____

A) 不定义参数a 和b 将导致编译错误B) 不定义参数a,b 和t 将导致编译错误

C) 不定义参数t 将导致运行结果错误D) 不需要定义参数a,b和t 的类型

11) 执行下面程序,正确的输出是_____

int x=5,y=7;

void swap()

{ int z;

z = x; x = y; y = z;

}

int main()

{ int x=3, y=8;

swap();

printf("%d, %d\n", x, y);

return 0;

}

A) 3,8 B) 8,3 C) 5.7 D)7,5

12) 下列说法中正确的是_____

A) 若全局变量仅在单个文件中访问,则可以将这个变量修改成静态全局变量,以降低模块间的耦合度

B) 若全局变量仅由单个函数访问,则可以将这个变量改为函数的静态局部变量,以降低模块间的耦合度

C) 设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑变量生存周期问题

D) 静态全局变量使用过多,可能会导致动态存储区(堆栈)溢出

13. 以下语句将输出_____

#include

printf("%d %d %d", NULL, '\0', EOF);

A) 0 0 1 B) 0 0 -1 C) NULL EOF D) 1 0 EOF

14) 如果二进制文件a.dat已经存在,现在要求写入全新数据,应以____方式打开。

A) "w" B) "wb" C) "w+" D)"wb"

15. 定义FLE *fp, 则文件指针fp 指向的是

A) 文件在磁盘上的读写位置

B) 文件在缓冲区上的读写位置

C) 整个磁盘文件

D) 文件类型结构体

16. 缓冲文件系统的文件缓冲区位于

A) 磁盘缓冲区中B)磁盘文件中C) 内存数据区中D) 程序文件中

17. 使文件指针重新定位到文件读写的首地址的函数是

A) ftell() B) fseek() C) rewind() D)ferror()

【参考答案】

1) D 2) B 3) C 4) B 5) D 6) C 7) A 8) B 9) A 10) C

11) A 12) A 13) B 14) B 15) B 16) C 17) C

二.填空题

1. 以下程序的功能是: 输入一个字符串,输出其中所出现过的大写英文字母。如运行时输

入字符串“FONTNAME and FIELNAME”, 则输出FONTAMEIL。请填空。

int main(void)

{ char x[80], y[26]; int i,j,ny=0;

i = 0;

while ((x[i]=getchar())!= '\n') i++;

x[i]='\0';

for (i=0; ___[1]___ ; i++)

if (x[i]>='A' ___[2]___ x[i]<='Z') {

for (j = 0; j

___[3]___;

if (___[4]___) {

y[ny] = x[i]; ny++;

}

}

for (i=0; i

printf("%c", y[i]);

printf("\n");

return 0;

}

2.“.”称为___【1】___ ,“->”称为___【2】___

3. 完成下列程序,该程序计算10 名学生的平均成绩

#include

#include

struct student {

int num;

char name[20];

int score;

};

struct student stud[10];

int main(void)

{ int i, sum =0;

for (i =0; i<10; i++) {

scanf("%d%s%d", &stud[i].num, ___【1】___ &stud[i].score);

sum+= stud[i].score;

}

printf("aver=%d\n", sum/10);

return 0;

}

4.下列程序读入时间数值,将其加1 秒后输出,时间格式为:hh:mm:ss,即小时:分钟:秒,

当小时等于24 小时,置为0

#include

struct {

int hour, minute, second;

} time;

int main(void)

{

scanf("%d:%d:%d",___【1】___);

time.second++;

if (___【2】___==60) {

___【3】___;

time.second = 0;

if ( time.minute==60) {

time.hour ++;

time.minute = 0;

if (___【4】___) time.hour = 0;

}

}

printf("%d:%d:%d\n", time.hour, time.minute, time.second);

return 0;

}

5. 写出下面程序的运行结果是________

struct s1{

char c1,c2;

int n;

};

struct s2 {

int n;

struct s1 m;

} m={ 1, {'A','B', 2} }; 第15次练习-夏7周

7 浙江大学计算机学院

int main(void)

{ printf("%d\t%d\t%c\t%c\n", m.n, m.m.n,m.m.c1,m.m.c2);

return 0;

}

6. 写出下面程序的运行结果是________

struct abc{

int a;

float b;

char *c;

};

int main(void)

{ struct abc x={23, 98.5, "wang"};

struct abc *px = &x;

printf("%d, %s, %.1f, %s\n", x.a, x.c, (*px).b, px->c);

return 0;

}

7. 执行完下列语句段后,i 值为_____

int i;

int f(int x)

{ static int k = 0;

x+= k++;

return x;

}

i = f(f(1));

8. 执行完下列语句段后,i 值为_____

int i;

int f(int x)

{ return ( ( x>0)? f(x-1) + f(x-2) : 1 );

}

i = f(3);

9. 下列程序段A与B 功能等价,请填写程序段B 中相应语句程序段A:

int f(int n)

{ if (n<=1) return n;

else return f(n-1) + f(n-2); 第15次练习-夏7周

8 浙江大学计算机学院

}

程序段B:

int f(int n)

{

__【1】___

while (__【2】___) {

t=t0+t1;

t0 = t1;

t1 = t;

n --

}

return __【3】___;

}

10. 下面程序用于计算,f(k, n) = 1k + 2k

+ ... + nk

, 其中power(m,n) 求mn

, 请填写程序中相

应语句。

int power(int m, int n)

{ int i;

__【1】___

for (i = 1; i<=n; i++)

__【2】___

return p;

}

int f(int k, int n)

{ int i;

__【3】___

for (i = 1; i<=n; i++)

__【4】___

return s;

}

int main()

{ int k,n;

scanf("%d%d", &k, &n);

printf("f(%d,%d) = %ld), k, n, f(k,n)); return 0;

}

11. 下列递归程序的输出结果为_____ #include

int fib(int g)

{ switch (g) {

case 0: return 0;

case 1:

case 2: return 2;

}

printf("g=%d#", g);

return fib(g-1) + fib(g-2);

}

main() {

int k;

k = fib(4);

printf("k=%ld#", k);

return 0;

}

12. 下列语句的运算结果为____

#define F(x) x-2

#define D(x) x*F(x)

printf("%d,%d", D(3), D(D(3)) );

13. fopen()函数的返回值是____

14 缓冲文件系统与非缓冲文件系统的不同点在于____

15. 只能向指定文件写入一个字符的函数是____

16. 判断文件指针是否已经到了文件尾部的函数是____

17. 阅读程序,以下程序完成的功能是____

#include

int main(void)

{ char infile[10], outfile[10]; FILE *fpa, *fpb;

gets(infile);

gets(outfile);

fpa=fopen(infile, "r");

fpb=fopen(outfile,"w");

while (!feof(fpa))

fputc(fgetc(fpa),fpb);

fclose(fpa);

fclose(fpb);

return 0;

}

【参考答案】

1) 【1】x[i]!='\0' 【2】&& 【3】if (y[j]==x[i]) break 【4】j >= ny

2) 【1】成员【2】指向

3) 【1】stud[i].name

4) 【1】&time.hour, &time.minute, &time.second 【2】time.second

【3】time.minute ++ 【4】time.hour == 24

5) 1 2 A B 6) 23, wang, 98.5, wang 7) 2 8) 5

9) 【1】int t0,t1,t=n; 【2】n>1 【3】t

10) 【1】int p = 1; 【2】p = p*m; 【3】int s = 0; 【4】s = s + power(i, k);

11) g=4#g=3#k=6# 12) 7, -13

13) 指向文件缓冲区的首地址的文件结构类型指针

14) 系统是否为文件自动分配一块文件缓冲区(内存单元)

15) fputc() 16) feof()

17) 将文件名为键盘输入的infile 表示的文件内容复制到文件名为键盘输入的outfile表示的文件中

c和c语言的文件操作全高效与简洁修订稿

c和c语言的文件操作 全高效与简洁 SANY标准化小组 #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#

例一 #include "" int main() {FILE *fp,*f; int a,b,c; fp=fopen("","r"); f=fopen("","w"); fscanf(fp,"%d%d%d",&a,&b,&c); a=5; b=3; fprintf(f,"%d%d",a+b+c,b); fclose(fp); fclose(f); return 0;} 例二、新建一个名为的文件,里面按如图1存储6个数据,然后在同一目录下建立一文件,按图2格式输出这六个数据。 #include "" int main() {FILE *fp,*fpp; int a,b,c,d,e,f; fp=fopen("","r"); fpp=fopen("","w"); fscanf(fp,"%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f); fprintf(fpp,"%d%d%d%d%d%d",a,b,c,d,e,f); fclose(fp); fclose(fpp); return 0;}

c++常用: #include <> ifstream filein(""); // 定义一个文件输入流 ofstream fileout(""); //cout<< --> fileout<< () //文件到末尾,返回非零值 表示输入的数据文件 本地测试的话本来输入的数据就要在这个文件里面测试了 建一个本地的文本,可以用记事本的方式打开 注意:文件输入的话,以后的cin>>都要改成filein>>, cout<<都要改成fileout<< c语言常用: freopen("","r",stdin); //重定向所有标准的输入为文件输入 freopen("","w",stdout);//重定向所有标准的输出为文件输出 fclose(stdout);//输出结束 freopen("","r",stdin); //重定向所有标准的输入为文件输入 freopen("","w",stdout);//重定向所有标准的输出为文件输出 fclose(stdout);//输出结束 第一句的意思就是文件输入,以"读状态",去替换标准的输入 以上如果只是规定用文件输入输出的某一种,那么就只用其中的一种 方法一:最简单的 main() { freopen("","r",stdin);//从中读取数据 freopen("","w",stdout);//输出到文件 } 方法二:速度比第一种快 main() { FILE *in; FILE *out; in=fopen("","r"); //指针指向输入文件

C语言程序中关于文件的操作

文件操作函数C语言(FILE fputc fgetc fputs fgets fscanf fprintf) 在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。 一、流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:typedef struct{ int level;/*fill/empty level of buffer*/ unsigned flags;/*File status flags*/ char fd;/*File descriptor*/ unsigned char hold;/*Ungetc char if no buffer*/ int bsize;/*Buffer size*/ unsigned char_FAR*buffer;/*Data transfer buffer*/ unsigned char_FAR*curp;/*Current active pointer*/ unsigned istemp;/*Temporary file indicator*/ short token;/*Used for validity checking*/ }FILE;/*This is the FILE object*/ FILE这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行,此种文件操作常用的函数见下表函数功能 fopen()打开流 fclose()关闭流 fputc()写一个字符到流中 fgetc()从流中读一个字符 fseek()在流中定位到指定的字符 fputs()写字符串到流 fgets()从流中读一行或指定个字符 fprintf()按格式输出到流 fscanf()从流中按格式读取 feof()到达文件尾时返回真值 ferror()发生错误时返回其值 rewind()复位文件定位器到文件开始处 remove()删除文件 fread()从流中读指定个数的字符 fwrite()向流中写指定个数的字符 tmpfile()生成一个临时文件流 tmpnam()生成一个唯一的文件名 下面就介绍一下这些函数 1.fopen() fopen的原型是:FILE*fopen(const char*filename,const char*mode),fopen实现三个功

C语言读写文件操作

C语言读写文件操作 #include #include #include FILE *stream;//, *stream2; FILE *stream2; void main( void ) { int numclosed; char *list; list="这个程序由czw编写"; //试图打开文件data.txt,如果该文件不存在,则自动创建 if( (stream= fopen( "data.txt", "r" )) == NULL ) { printf( "试图打开'data.txt'\n" ); printf( "'data.txt'不存在\n" ); printf( "'data.txt'被创建\n" ); } else printf( "'data.txt'被打开\n" ); //以写入方式打开 if( (stream2 = fopen( "data.txt", "w+" )) == NULL ) printf( "'data.txt'不存在\n" ); else { printf( "'data.txt'成功被打开\n" ); fwrite(list,strlen(list),30,stream2); printf("写入数据成功\n"); } //如果文件data.txt存在,就会打开成功,则stream!=NULL,这时就关闭stream if (stream!=NULL) if( fclose( stream) ) printf( "文件流 stream 被关闭\n" ); //关闭所有打开的文件流,返回关闭的文件流个数 numclosed = _fcloseall( );

《C语言程序设计》第1章 C语言概述练习题答案

第一章 C语言概述练习题 一、选择题 1.C语言是一种( )。 A) 机器语言B) 汇编语言C) 高级语言D) 低级语言 2.下列各项中,不是C语言的特点是( )。 A) 语言简洁、紧凑,使用方便B) 数据类型丰富,可移植性好 C) 能实现汇编语言的大部分功能D) 有较强的网络操作功能 3.下列叙述正确的是( )。 A) C语言源程序可以直接在DOS环境中运行 B) 编译C语言源程序得到的目标程序可以直接在DOS环境中运行 C) C语言源程序经过编译、连接得到的可执行程序可以直接在DOS环境中运行 D) Turbo C系统不提供编译和连接C程序的功能 4.下列叙述错误的是()。 A) C程序中的每条语句都用一个分号作为结束符 B) C程序中的每条命令都用一个分号作为结束符 C) C程序中的变量必须先定义,后使用 D) C语言以小写字母作为基本书写形式,并且C语言要区分字母的大小写 5.一个C程序的执行是从()。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 6.以下叙述不正确的是()。 A) 一个C源程序必须包含一个main函数 B) 一个C源程序可由一个或多个函数组成 C) C程序的基本组成单位是函数 D) 在C程序中,注释说明只能位于一条语句的后面 7.C语言规定:在一个源程序中,main函数的位置( )。 A)必须在程序的开头B)必须在系统调用的库函数的后面 C)可以在程序的任意位置D)必须在程序的最后 8.一个C语言程序是由( )。 A)一个主程序和若干个子程序组成B) 函数组成 C) 若干过程组成D) 若干子程序组成 9.以下有4组用户标识符,其中合法的一组是()。 A) For B) 4d C) f2_G3 D) WORD -sub DO IF void Case Size abc define 10. 一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是 ()。 A) 有零个或多个输入B) 有零个或多个输出C) 有穷性D) 可行性 二、填空题 1.汇编语言属于面向( 面向机器的 )语言,高级语言属于(面向问题的)语言。 2.用高级语言编写的程序称为(源)程序,它可以通过解释程序翻译一句执行一句的方式 执行,也可以通过编译程序一次翻译产生(目标)程序,然后执行。

C语言 文件操作

C语言中的文件操作 12.1请编写一个程序,把一个文件的内容复制到另一个文件中。 程序如下: #include main() { char ch; FILE *fp1; FILE *fp2; if((fp1=fopen("C:\\Users\\acer\\Documents\\1.txt","r"))==NULL) { printf("The file 1.txt can not open!"); exit(0); } if((fp2=fopen("C:\\Users\\acer\\Documents\\2.txt","w"))==NULL) { printf("The file 2.txt can not open!"); exit(0); } ch=fgetc(fp1); while(!feof(fp1)) { fputc(ch,fp2); ch=fgetc(fp1); } fclose(fp1); fclose(fp2); } 运行结果: 12.3请编写一个程序,比较两个文件,如果相等则返回0;否则返回1。

程序如下:#include main() { FILE *f1,*f2; char a,b,c; int x; printf("input strings for file1\n"); f1=fopen("file1","w"); while((c=getchar())!= EOF) putc(c,f1); fclose(f1); printf("output strings for file1\n"); f1=fopen("file1","r"); while((c=getc(f1))!= EOF) printf("%c",c); fclose(f1); printf("\n\ninput strings for file2\n"); f2=fopen("file2","w"); while((c=getchar())!= EOF) putc(c,f2); fclose(f2); printf("\noutput strings for file2\n"); f1=fopen("file2","r"); while((c=getc(f2))!= EOF) printf("%c",c); fclose(f2); f2=fopen("file2","r"); getch(); }

Linux下C语言的文件读写

Linux下C语言的文件(fputc,fgetc,fwrite,fread对文件读写操 作) //================================== fputc 向文件写入字符 #include #include main() { FILE *fp; char ch; if((fp=fopen("test.txt","w"))==NULL) { printf("不能打开文件\n"); exit(0); } while ((ch=getchar())!='\n') fputc( ch, fp ); fclose(fp); } ------------- 小提示: fp=fopen("test.txt","w") ,把"w"改为"a" 可以创建文件并且追加写入内容 exit(0); 需要包含stdlib.h 头文件,才能使用 //============================================================ fgetc 读取字符 #include #include main( int argc, char *argv[] ) { char ch;

FILE *fp; int i; if((fp=fopen(argv[1],"r"))==NULL) { printf("不能打开文件\n"); exit(0); } while ((ch=fgetc(fp))!=EOF) putchar(ch); fclose(fp); } 文件结尾,通过判断EOF //============================================================== fwrite 的使用 使数组或结构体等类型可以进行一次性读写 #include #include main() { FILE *fp1; int i; struct student{ char name[10]; int age; float score[2]; char addr[15]; }stu; if((fp1=fopen("test.txt","wb"))==NULL) { printf("不能打开文件"); exit(0); } printf("请输入信息,姓名年龄分数1 分数2 地址:\n"); for( i=0;i<2;i++) { scanf("%s %d %f %f %s",https://www.360docs.net/doc/9c3284507.html,,&stu.age,&stu.score[0],&stu.score[1], stu.addr);

C语言中关于文件操作

C语言中关于文件操作 C语言中的文件 C语言把文件看作一个字节的序列 C语言对文件的存取是以字节为单位的文本文件(ASCII文件) 按数据的ASCII形式存储 二进制文件 按数据在内存中的二进制形式存储 文本文件和二进制文件 缓冲文件系统 文件类型指针 FILE类型 保存被使用的文件的有关信息 所有的文件操作都需要FILE类型的指针 FILE是库文件中定义的结构体的别名注意不要写成struct FILE 举例 FILE *fp;

FILE类型 typedef struct { short level; /*缓冲区满空程度*/ unsigned flags; /*文件状态标志*/ char fd; /*文件描述符*/ unsigned char hold; /*无缓冲则不读取字符*/ short bsize; /*缓冲区大小*/ unsigned char *buffer; /*数据缓冲区*/ unsigned char *curp; /*当前位置指针*/ unsigned istemp; /*临时文件指示器*/ short token; /*用于有效性检查*/ } FILE; 文件的打开 (fopen函数) 函数原型 FILE *fopen(char *filename, char *mode); 参数说明 filename: 要打开的文件路径 mode: 打开模式 返回值 若成功,返回指向被打开文件的指针 若出错,返回空指针NULL(0) 打开模式描述 r 只读,打开已有文件,不能写 w 只写,创建或打开,覆盖已有文件 a 追加,创建或打开,在已有文件末尾追加 r+ 读写,打开已有文件 w+ 读写,创建或打开,覆盖已有文件 a+ 读写,创建或打开,在已有文件末尾追加 t 按文本方式打开 (缺省) b 按二进制方式打开 文件的打开模式 文件的关闭 (fclose函数) 函数原型 int fclose(FILE *fp); 参数说明 fp:要关闭的文件指针 返回值 若成功,返回0 若出错,返回EOF(-1) 不用的文件应关闭,防止数据破坏丢失

C语言文件操作大全

1.创建文件夹 //using System.IO; Directory.CreateDirectory(%%1); 2.创建文件 //using System.IO; File.Create(%%1); 3.删除文件 //using System.IO; File.Delete(%%1); 4.删除文件夹 //using System.IO; Directory.Delete(%%1); 5.删除一个目录下所有的文件夹 //using System.IO; foreach (string dirStr in Directory.GetDirectories(%%1)) { DirectoryInfo dir = new DirectoryInfo(dirStr); ArrayList folders=new ArrayList(); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); for (int i = 0; i < folders.Count; i++) { FileInfo f = folders[i] as FileInfo; if (f == null) { DirectoryInfo d = folders[i] as DirectoryInfo; d.Delete(); } } } 6.清空文件夹 //using System.IO; Directory.Delete(%%1,true); Directory.CreateDirectory(%%1); 7.读取文件 //using System.IO; StreamReader s = File.OpenText(%%1); string %%2 = null; while ((%%2 = s.ReadLine()) != null){

c语言中目录及文件操作

1. 错误处理与错误号 cat /usr/include/asm-generic/errno-base.h #define EPERM 1 /* Operation not per mitted */ #define ENOENT 2 /* No suc h file or director y */ #define ESRCH 3 /* No suc h proc ess */ #define EINTR 4 /* Interrupted s y stem call */ #define EIO 5 /* I/O error */ #define ENXIO 6 /* No such dev ice or address */ #define E2BIG 7 /* Argument list too long */ #define ENOEXEC 8 /* Ex ec format error */ #define EBADF 9 /* Bad file number */ #define ECHILD 10 /* No c hild process es */ #define EAGAIN 11 /* Try again */ #define ENOMEM 12 /* Out of memor y */ #define EACCES 13 /* Per mission denied */ #define EFAULT 14 /* Bad address */ #define ENOTBLK 15 /* Bl oc k dev ice required */ #define EBUSY 16 /* Dev ice or resource bus y */ #define EEXIST 17 /* File ex ists */ #define EXDEV 18 /* Cross-dev ice link */ #define ENODEV 19 /* N o suc h dev ice */ #define ENOTDIR 20 /* Not a direc tor y */ #define EISDIR 21 /* Is a director y */ #define EINVAL 22 /* Inv alid argument */ #define ENFILE 23 /* File table ov erflow */ #define EMFILE 24 /* Too many open files */ #define ENOTTY 25 /* Not a ty pewriter */ #define ETXTBSY 26 /* Text file bus y */ #define EFBIG 27 /* File too large */ #define ENOSPC 28 /* N o space l eft on dev ic e */ #define ESPIPE 29 /* Illegal seek */ #define EROFS 30 /* Read-onl y file s y s tem */ #define EMLINK 31 /* T oo many link s */ #define EPIPE 32 /* Brok en pipe */ #define EDOM 33 /* Math argument out of domain of func */ #define ERANGE 34 /* M ath r esult not repres entabl e */ 1.1 用错误常数显示错误信息 函数strerror()可以把一个错误常数转换成一个错误提示语句。char *strerror(int errnum); #include #include #include int main()

学生成绩查询c语言程序文件

填写说明: 1、同一名教师在不同教学班教授的同一门课程只须填写一份教学日历;由不同教师教授的同一门课程每人填写一份教学日历。 2、“作业、实验”栏中的作业,是指教师计划布置的,应该批改的作业。 3、法定假日不安排教学容,其课次顺排。 系统开发语言作业 现有一个班级,共10人,本学期共学习三门课程,设计一个学生成绩管理系统,要求如下: 1、完成三门课程成绩输入;或单门课程录入、或同时录入三门课。 2、完成成绩排序:按单科成绩排序、按平均分排序; 3、完成成绩统计:按单科分段统计人数、按平均分分段统计(60分以下,60-79分,80以上); 4、用结构体完成学生和成绩的输入: 5、完成成绩查询:单科查询、平均分查询、按查询、分段查询等; 6、完成奖学金统计:三门课均高于90分,一等奖学金;三门课均高于80分,二等奖学金,统计获奖学金人数 7、完成成绩输出:按单科输出、输出所有成绩、按平均分由高到低输出,输出奖学金等;. 作业要求 第1、2、3周、完成成绩录入、排序和统计 第4、5、6周、完成菜单和函数编制 第2、8、9周、完成成绩查询和统计 第10、11周、完成查询输出 第12、13周、讲程序进行函数化、模块化 第14、15周、应用指针、指针函数以及函数指针等 第16周,完善程序、验收。最后打印出完整代码清单 代码如下: #include struct student {

float math; float Chinese; float English; float average; char name[5]; }; void inputgread(struct student stu) //输入成绩 { int a=0; scanf("%s",https://www.360docs.net/doc/9c3284507.html,); printf("按顺序输入数学成绩,语文成绩,英语成绩"); scanf("%f%f%f",&stu.math,&stu.Chinese,&stu.English); } void Chinesecompositor(struct student stu[]) //按语文排序{ int num=0,num2=0;

C语言中文件_数据的输入输出_读写

C语言中文件,数据的输入输出,读写. 文件是数据的集合体,对文件的处理过程就是对文件的读写过程,或输入输出过程。 所谓文件是指内存以外的媒体上以某种形式组织的一组相关数据的有序集合。文件分类: 顺序文件,随机文件。 文本文件和二进制文件。 文本文件也称为ASCII文件,在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。 文本文件可以在屏幕上按字符显示,源程序文件就是文本文件,由于是按字符显示,所以能读懂文件内容。 二进制文件是按二进制编码方式来存放的。这里主要讨论文件的打开,关闭,读,写,定位等操作。 文件的存取方法 C程序的输入输出(I/O)有两种方式:一种称为标准I/O或流式I/O,另一种称为低级I/O。流式I/O是依靠标准库函数中的输入输出函数实现的。低级I/O利用操作系统提供的接口函数(称为底层接口或系统调用)实现输入输出,低级I/O 主要提供系统软件使用。 在C语言中用一个FILE类型的指针变量指向一个文件,(FILE类型是系统在stdio.h中定义的描述已打开文件的一种结构类型),这个指针称为文件指针。FILE *指针变量标识符; 如 FILE *fp; 文件的打开与关闭 所谓打开文件,指的是建立文件的各种有关信息,并使文件指针指向该文件,以便对它进行操作。 关闭文件则是断开指针与文件之间的联系,也就禁止再对该文件进行操作。 1、fopen 函数原型:FILE *fopen(const char *filename,const char *mode); Fopen函数用来打开一个文件,前一部分用来说明文件路径及文件名,后一部分mode指出了打开文件的存取方式;返回值是被打开文件的FILE型指针,若打开失败,则返回NULL。打开文件的语法格式如下: 文件指针名=fopen(文件名,使用文件方式); 文件指针名必须被说明为FILE类型的指针变量。 FILE *fp; fp=fopen(“C:\\Windowss\\abc.txt”,”r”); 注意用两个反斜杠\\来表示目录间的间隔符。 存取文件的模式是一个字符串,可以由字母r,w,a,t,b及+组合而成,各字符的含

c语言程序中文件的操作

文件操作函数 C语言 (FILE fputc fgetc fputs fgets fscanf fprintf) 在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。 一、流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在中定义如下: typedef struct { int level; /* fill/empty level of buffer */ unsigned flags; /* File status flags */ char fd; /* File descriptor */ unsigned char hold; /* Ungetc char if no buffer */ int bsize; /* Buffer size */ unsigned char _FAR *buffer; /* Data transfer buffer */ unsigned char _FAR *curp; /* Current active pointer */ unsigned istemp; /* Temporary file indicator */ short token; /* Used for validity checking */ } FILE; /* This is the FILE object */ FILE这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行,此种文件操作常用的函数见下表函数功能 fopen() 打开流 fclose() 关闭流 fputc() 写一个字符到流中

C语言 文件练习题

C语言文件练习题 1.系统的标准输入文件是指_________. a)键盘 b)显示器 c)软盘 d)硬盘 2.若执行fopen函数时发生错误,则函数的返回值是______. a)地址值 b)0 c)1 d)EOF 3.若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是______. a)"ab+" b)"wb+" c)"rb+" d)"ab" 4.fscanf函数的正确调用形式是______. a)fscanf(fp,格式字符串,输出表列) ) 11.下列关于C语言数据文件的叙述中正确的是________ A)文件由ASCII码字符序列组成,C语言只能读写文本文件 B)文件由二进制数据序列组成,C语言只能读写二进制文件 C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 12.函数fseek(pf, OL,SEEK_END)中的SEEK_END代表的起始点是________ A)文件开始B)文件末尾C)文件当前位置D)以上都不对 13.C语言中,能识别处理的文件为_______ A)文本文件和数据块文件B)文本文件和二进制文件 C)流文件和文本文件D)数据文件和二进制文件

14.若调用fputc函数输出字符成功,则其返回值是________ A)EOF B)1 C)0 D)输出的字符 15 已知函数的调用形式:fread(buf,size,count,fp),参数buf的含义是______ A)一个整型变量,代表要读入的数据项总数 B)一个文件指针,指向要读的文件 C)一个指针,指向要读入数据的存放地址 D)一个存储区,存放要读的数据项 16 当顺利执行了文件关闭操作时,fclose函数的返回值是_________ A)-1 B)TRUE C)0 D)1 17.如果需要打开一个已经存在的非空文件“Demo”进行修改下面正确的选项是______ 盘 d) 为pname指定的相应文件开辟一个缓冲区,调用操作系统提供的打开或 建立新文件功能; 22.利用fwrite (buffer, sizeof(Student),3, fp)函数描述不正确的_________. a) 将3个学生的数据块按二进制形式写入文件; b) 将由buffer指定的数据缓冲区内的3* sizeof(Student)个字节的数据写入指定文件; c) 返回实际输出数据块的个数, 若返回0值表示输出结束或发生了错误; d) 若由fp指定的文件不存在,则返回0值; 23.利用fread (buffer,size,count,fp)函数可实现的操作_________. a) 从fp指向的文件中,将count个字节的数据读到由buffer指出的数据区

C语言程序设计第一章作业

一、单选题(每小题10分,共100分,得分70 分) 1、1.关于C程序的构成描述,_________是不正确的。 A、一个源程序至少且仅包含一个main函数,也可包含一个main函数和若干个其他函数。 B、函数由函数首部和函数体两部分组成,二者缺一不可。 C、函数首部通常是函数的第1行,包括:函数属性、函数类型、函数名、函数参数等,不管有无函数参数,都必须用一对圆括号括起来。 D、函数体通常在函数首部下面,用一对花括号将声明部分和执行部分括起来,但不能为空。 你的回答:D (√) 参考答案:D 2、2.C程序中,不管是数据声明还是语句,都必须有一个结束符,它是C语句的必要组成部分,该符号是_________。 A、逗号“,” B、句号“。” C、分号“;” D、单撇号“’” 你的回答:C (√) 参考答案:C 3、3.下列关于C程序的运行流程描述,______是正确的。 A、编辑目标程序、编译目标程序、连接源程序、运行可执行程序。 B、编译源程序、编辑源程序、连接目标程序、运行可执行程序。 C、编辑源程序、编译源程序、连接目标程序、运行可执行程序。 D、编辑目标程序、编译源程序、连接目标程序、运行可执行程序。 你的回答:C (√) 参考答案:C 4、5.描述或表示算法有多种方法,______不是常用的表示方法。 A、自然语句 B、流程图或N-S图 C、伪代码 D、效果图 你的回答:D (√) 参考答案:D

5、7.C语言是一种结构化的程序设计语言,任何程序都可以将模块通过3种基本的控制结构进行组合来实现,这三种基本的控制结构是指______。 A、分支结构、循环结构、函数结构 B、顺序结构、选择结构、函数结构 C、顺序结构、分支结构、循环结构 D、以上描述都不正确 你的回答:D (×) 参考答案:C 6、下列关于算法特性的描述,______是不正确的。 A、有穷性:指一个算法应该包含有限的操作步骤,而不能是无限的。 B、确定性:指算法的每一个步骤都应当是确定的,不应该是含糊的、模棱两可的。 C、有效性:指算法中的每一个步骤都应当能有效地执行,并得到确定的结果。 D、输入/输出性:指算法中可以有输入/输出操作,也可以没有输入/输出操作。 你的回答:D (√) 参考答案:D 7、关于运行一个C程序的描述,______是正确的。 A、程序总是从main()函数处开始运行,当main()函数执行结束时,程序也就执行结束。 B、程序总是从main()函数处开始运行,当调用其它函数时,也可在其它函数中执行结束。 C、当程序中无main()函数时,可以设置一个主控函数来代替main()函数,从而达到运行程序的目的。 D、以上描述都不正确。 你的回答:B (×) 参考答案:A 8、下列关于C程序中复合语句的描述,______是正确的。 A、用一对圆括号“( )”将若干语句顺序组合起来就形成一个复合语句。 B、用一对大括号“{ }”将若干语句顺序组合起来就形成一个复合语句。 C、用一对大括号“[ ]”将若干语句顺序组合起来就形成一个复合语句。 D、以上描述都不正确。 你的回答:B (√) 参考答案:B 9、一个C源程序文件的扩展名是______。

C语言文件操作命令

C语言文件操作函数大全 clearerr(清除文件流的错误旗标) 相关函数 feof 表头文件 #include 定义函数 void clearerr(FILE * stream); 函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。 返回值 fclose(关闭文件) 相关函数 close,fflush,fopen,setbuf 表头文件 #include 定义函数 int fclose(FILE * stream); 函数说明 fclose()用来关闭先前fopen()打开的文件。此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源。 返回值若关文件动作成功则返回0,有错误发生时则返回EOF并把错误代码存到errno。 错误代码 EBADF表示参数stream非已打开的文件。 范例请参考fopen()。 fdopen(将文件描述词转为文件指针) 相关函数 fopen,open,fclose 表头文件 #include 定义函数 FILE * fdopen(int fildes,const char * mode); 函数说明 fdopen()会将参数fildes 的文件描述词,转换为对应的文件指针后返回。参数mode 字符串则代表着文件指针的流形态,此形态必须和原先文件描述词读写模式相同。关于mode 字符串格式请参考fopen()。 返回值转换成功时返回指向该流的文件指针。失败则返回NULL,并把错误代码存在errno中。 范例 #include main() { FILE * fp =fdopen(0,”w+”); fprintf(fp,”%s\n”,”hello!”); fclose(fp); } 执行 hello! feof(检查文件流是否读到了文件尾) 相关函数 fopen,fgetc,fgets,fread 表头文件 #include 定义函数 int feof(FILE * stream); 函数说明 feof()用来侦测是否读取到了文件尾,尾数stream为fopen()所返

C语言程序的设计试题库完整

一、选择题(每题1分,共20分) 1.C语言程序从main()函数开始执行,所以这个函数要写在(D )。 A.程序文件的开始B.程序文件的最后 C.它所调用的函数的前面D.程序文件的任何位置 2.下列方法中错误的是(D )。 A.主函数可以分为两个部分:主函数说明部分和主函数体。 B.主函数可以调用任何非主函数的其它函数。 C.任何非主函数可以调用其它任何非主函数。 D.程序可以从任何非主函数开始执行。 3.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 4.C语言中的简单数据类型包括(D )。 A.整型、实型、逻辑型B.整型、实型、逻辑型、字符型 C.整型、字符型、逻辑型D.整型、实型、字符型 5.下列可以正确表示字符型常量的是(A )。 A.’\t’B.”a”C.”\n”D.297 6.在C语言中,字符型数据所占的内存空间是(C )。 A.2个字节B.4字节C.1字节D.由用户自定义 7.若int类型数据占2个字节,则unsigned int类型数据的取值范围是(B )。 A.0~255 B.0~65535 C.-32768~32767 D.-256~255 8.若有以下类型说明语句:char a;int b; float c; double d; 则表达式a*b+d-c的结果类型为(D )。 A.float B.char C.int D.double 9.下列正确的预编译命令是(D )。 A.define PI 3.14159 B.#define P(a,b)=strcpy(a,b) C.#define stdio.h D.#define PI 3.14159 10.为表示逻辑表达式7979 )&&( X<90 ) B.( X>79 )!=( X<90 ) C.7979 )||( X<90 ) 11.设有语句“int a=2,b=3,c=-2,d=2;”,则逻辑表达式“a>0&&b&&c<0&&d>0”的值是(A )。 A.1 B.0 C.-1 D.出错

C语言文件操作

文件 教学目标:了解文件的概念;熟练掌握缓冲文件系统和非缓冲文件系统的概念及其区别;熟练掌握文件类型指针的概念;熟练掌握打开文件和关闭文件的方法;熟练掌握利用标准I/O提供的四种读写文件的方法对文件进行顺序读写和随机读写;了解文件操作的出错检测方法。 教学重点:缓冲文件系统与非缓冲文件;文件类型指针;文件的打开与关闭;利用标准I/O提供的四种读写文件的方法对文件进行顺序读写和随机读写。 教学难点:缓冲文件系统与非缓冲文件;利用标准I/O提供的四种读写文件的方法对文件进行顺序读写操作和随机读写操作。 §11.1 文件概述 11.1.1 文件的概念 所谓文件是指记录在外部存储介质上的数据集合。例如,用EDLN编辑好的一个源程序就是一个文件,把它存储到磁盘上就是一个磁盘文件。从计算机上输出一个源文件到打印机,这也是一个文件。广义上说,所有输入输出设备都是文件。例如,键盘、显示器、打印机都是文件。计算机以这些设备为对象进行输入输出,对这些设备的处理方法统一按文件处理。 计算机中的文件可以从不同角度进行分类: (1)按文件介质:磁带文件、磁盘文件和卡片文件等。 (2)按文件内容:源程序文件、目标文件、可执行文件和数据文件等。 (3)按文件中数据的组织形式:二进制文件和文本文件。 文本文件是指文件的内容是由一个一个的字符组成,每一个字符一般用该字符对应的ASCII码表示。例如,一个实数136.56占6个字符。二进制文件是以数据在内存中的存储形式原样输出到磁盘上去。例如,实数136.56在内存中以浮点形式存储,占4个字符,而不是6个字节。若以二进制形式输出此数,就将该4个字节按原来在内存中的存储形式送到磁盘上去。不管一个实数有多大,都占4个字节。一般来说,文本文件用于文档资料的保存,方便用户阅读理解;二进制文件节省存储空间而且输入输出的速度比较快。因为在输出时不需要把数据由二进制形式转换为字符代码,在输入时也不需要把字符代码先换成二进制形式然后存入内存。如果存入磁盘中的数据只是暂存的中间结果数据,以后还要调入继续处理,一般用二进制文件以节省时间和空间。如果输出的数据是准备作为文档供给人们阅读的,一般用字符代码文件,它们通过显示器或打印机转换成字符输出,比较直观。 11.1.2 缓冲文件系统和非缓冲文件系统 目前C语言所使用的磁盘文件系统有两大类:一类称为缓冲文件系统,又称为标准文件系统或高层文件系统;另一类称非缓冲文件系统,又称为低层文件系统。 (1)缓冲文件系统的特点 对程序中的每一个文件都在内存中开辟一个“缓冲区”。从磁盘文件输入的数据先送到“输入缓冲区”,然后再从缓冲区依次将数据送给接收变量。在向磁盘文件输出数据时,先将程序数据区中变量或表达式的值送到“输出缓冲区”中,然后

C语言中.h和.c文件解析

C语言中.h和.c文件解析20468104728 2010-1-9 15:32:30 收藏 | 打印 | 投票(1) | 评论(0) | 阅读(156) ◇字体:[大中小]---By xiaoxiaopig收集 简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件) 4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息。(生成.exe文件) 编译器在编译时是以C文件为单位进行的,也就是说如果你的项目中一个C文件都没有,那么你的项目将无法编译,连接器是以目标文件为单位,它将一个或多个目标文件进行函数与变量的重定位,生成最终的可执行文件,在PC上的程序开发,一般都有一个main函数,这是各个编译器的约定,当然,你如果自己写连接器脚本的话,可以不用main函数作为程序入口!!!! (main .c文件目标文件可执行文件) 有了这些基础知识,再言归正传,为了生成一个最终的可执行文件,就需要一些目标文件,也就是需要C文件,而这些C文件中又需要一个main函数作为可执行程序的入口,那么我们就从一个C文件入手,假定这个C文件内容如下: #include #include "mytest.h" int main(int argc,char **argv) { test = 25; printf("test.................%d\n",test); } 头文件内容如下: int test; 现在以这个例子来讲解编译器的工作: 1.预处理阶段:编译器以C文件作为一个单元,首先读这个C文件,发现第一句与第二句是包含一个头文件,就会在所有搜索路径中寻找这两个文件,找到之后,就会将相应头文件中

相关文档
最新文档