文件时,将用记事本打开mym.out。
②每运行一次程序,都要打开一次myf2.out,查看运行结果,很麻烦也很浪费时间。其实在编写程序时,没有必要在一开始就将所有结果都输出到myf2.out中,可先将所有结果都输出到显示器上,这样比较直观。待能够正确输出所有结果后,再加人必要的文件输出语句,这样可节省时间。
③无法写入myf2.out文件。
先检查myf2.out文件的大小,如果文件大小为0K,不用打开文件便可知道文件没有被写入。 导致myf2.out无法写入的主要原因是文件操作有误。正确的文件操作过程如下:
(a)在源程序中使用#include
在stdio.h文件中被定义的。
(b)定义文件指针。例如,“FILE *out;”。
(c)打开文件。把要进行读写的文件与磁盘中实际存储的数据文件建立关联。
例如:
out=fopen(”myf2.out”,”w”);
”w”表示为输出打开文件myf2.out。注意它与”a”的不同,”a”是在文件尾部增加数据,而\”是用新数据覆盖原有数据。
(d)对文件进行写操作。可使用fprinff对文件进行写操作,函数的格式如下:
fprintf(文件指针,格式字符串,输出列表) 例如:
fprintf(out,”%d”,m); fread(f,4,2,fp);
(e)文件使用完毕后,使用函数关闭文件。 例如:
fclose(out);
(3)上机编程题是按步给分的,每项操作都有相应的分值。所以,即便不能编写出完整程序,也不要轻易放弃。要尽量把变量定义和可能要用的程序结构写出来。
6
江苏省计算机等级考试
- 学年 第 学期 c程序设计 试卷( )
题号 得分 总一 二 三 四 五 六 七 八 九 分 一、选择题(本题共20道小题,共40分。) 1. 若有说明,double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是 A)*p=&a; scanf(\ B)p=(double*)malloc(8);scanf(\C) p=&a;scanf(\ D)p=&a; scanf(\
2. 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 main( ) { int x; scanf(\if(x + + >5) printf(\
else printf(\ }
A) 7和5 B) 6和3 C) 7和4 D) 6和4
3. 下面程序的输出是
A) xyzabcABC B) zabcABC #include
{ char *p1=\strcpy(str+2,strcat(p1,p2)); printf(\
4. 若有以下说明:
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g;
则数值为4的表达式是
A)a[g-c] B)a[4] C)a['d'-'c'] D)a['d'-c]
5. 以下叙述中不正确的是
7
C) yzabcABC D) xyabcABC
A)在不同的函数中可以使用相同名字的变量 B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效 D)在一个函数内的复合语句中定义的变量
6. 请选出以下程序段的输出结果 #include
#define MIN(x,y) (x)<(y)? (x):(y) main() { int i,j,k; i=10; j=15; k=10*MIN(i,j); printf(\}
A) 15 B) 100 C) 10 D)150
7. 在C程序中,可把整型数以二进制形式存放到文件中的函数是 A) fprintf函数 B) fread函数 C) fwrite函数 D) fputc函数
8. 设有以下语句:
struct st {int n; struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,'\\0'},*p; p=&a[0];
则表达式_____的值是6。
A)p + + ->n B) p->n + + C) (*p).n + + D) + + p->n
9. C语言中形参的缺省存储类别是 A)自动(auto) B)静态(static) C)寄存器(register) D)外部(extern) 10. 执行下面的程序段后,变量k中的值为 int k=3, s[2]; s[0]=k; k=s[1]*10;
A) 不定值 B) 33 C) 30 D) 10 11. 已知字母A的ASCII码为十进制的65,下面程序的输出是 main() { char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3';
printf(\A) 67,D B) B,C
C) C,D
D) 不确定的值
12. 语句:printf(\,12 &012);的输出结果是
8
A) 12 B) 8 C) 6 D) 012
13. 以下说法中正确的是
A) C语言程序总是从第一个的函数开始执行
B) 在C语言程序中,要调用的函数必须在main()函数中定义 C) C语言程序总是从main()函数开始执行
D) C语言程序中的main()函数必须放在程序的开始部分
14. 以下程序运行后,输出结果是 main( ) {
char *s=\s+=2;
printf(\,s); }
A)cde B)字符c的ASCII码值 C)字符c的地址 D)出错
15. 设x和y均为int型变量,则执行下的循环后,y值为 for(y=1,x=1;y<=50;y++) {
if(x>=10)break;
if(x%2==1){x+=5;continue;} x-=3; }
A)2 B)4 C)6 D)8
16. 当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为 if(a
A)1 B)2 C)3 D)6
17. 设所有变量均为int型,则表达式(a=2,b=5,b++,a+b)的值是 A.7 B.8 C.6 D.2
18. 设C语言中,一个int 型数据在内存中占2个字节,则unsigned int 型数据的取值范围为: A) 0-255
9
B) 1-32767 C) 0-65535 D) 0-2147483647
19. 下面的程序 main()
{ int x=3,y=0,z=0; if(x=y+z)printf(\else printf(\A) 有语法错误不能通过编译 B) 输出* * * *。
C) 可以通过编译,但是不能通过连接,因而不能运行。 D) 输出# # # #。
20. 若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参的个数是 A)3 B)4
二、填空题(每空1分,共10分。)
1. 若有定义:double x[3][5],则x数组中行下标的下限为_________,列下标的下限为__________。
2. 设有说明语句\a[3][4]={{1,2},{3,4,5},{6,7,8}};\则a[0][2]的初始化值为_____________,a[2][2]的初始化值为______________。
3. 表达式7/2的结果是____________。表达式7%2的结果是____________。 4. 若已知a=1.5,b=15,c=1,则表达式a*b&&c的运算结果是____________。 5. C语言的标识符只能由大小写字母,数字和下划线三种字符组成,而且第一个字符必须为______________。
6. 定义int a[]={1,2,3,4,5,6},*p=a;表达式(*++p)++的值是____________。 7. 已有int i,j; float x;为将-10赋给i,12赋给j,410.34赋给x;则对应scanf(\调用语句的数据输入形式是__________
三、判断题(本题共10道小题,共10分。)
1. 在实际编程中,do-while循环完全可以用for循环替换( ) 2. do-while循环中,根据情况可以省略while( )
3. 若调用一个函数,且此函数中没有return语句,则返回一个不确定的值( ) 4. 函数调用:strcat(strcpy(str1,str2),str3)的功能是将串str2复制到串str1中后再将串str3连接到串str1之后( )
5. 自增运算符(++)或自减运算符(--)只能用于变量,不能用于常量或表达式( ) 6. 全局变量使得函数之间的\耦合性\更加紧密,不利于模块化的要求( )
10
C)5 D)6