1.打开文件函数fopen
文件指针名=fopen(文件名,打开方式);
文件打开方式有以下4 种模式。
①只读模式:只能从文件读取数据,要求文件本身存在。
②只写模式:只能向文件输出数据。如果文件本身存在,则删除文件的全部内容,准备写入新的数据;如果文件不存在,则建立一个以当前文件名全名的文件。
③追加模式:一种特殊写模式,要求文件本身存在。从文件的末端写入新的数据,文件原有数据保持不变。
④读写模式:既可向文件写入数据,又可从文件读取数据。有如下几个参数。
“r+”“rb+”:要求文件已经存在。
“w+”“wb+”:若文件已经存在,则删除当前文件的内容,然后进行读写操作,若文件不存在,则建立新文件,开始对文件进行读写操作。
“a+”“ab+”:要求文件已经存在,从当前文件末端进行读写操作。
2.关闭文件函数fclose
fclose(文件指针名);
3.字符的读取函数fgetc
字符变量=fgetc(文件指针);
4.字符的写入函数fputc
fputc(字符量,文件指针);
5.数值的读取函数getw
整型变量=getw(文件指针);
6.数值的写入函数putw
putw(整型变量,文件指针);
7.字符串读取函数fgets
fgets(字符数组名,n,文件指针);
其中,n 是一个正整数,表示从文件中读出的字符串不超过n-1 个字符,在读入的最后一个字符后加上串结束标志' \ 0'。
8.字符串写入函数fputs
fputs(字符串,文件指针);
其中,字符串可以是字符串常量,也可以是字符数组名或指针变量。
9.格式化读写函数
格式化读取函数:fscanf(文件指针,格式字符串,输入表列);
格式化写入函数:fprintf(文件指针,格式字符串,输出表列);
10.块的读写函数
读数据块函数:fread(buffer,size,count,fp);
写数据块函数:fwrite(buffer,size,count,fp);
其中:
buffer:是一个指针,在fread 函数中,它表示存放输入数据的首地址;在fwrite 函数中,它表示存放输出数据的首地址。
size:表示数据块的字节数。
count:表示要读写的数据块的块数。
fp:表示文件指针。
11.文件定位函数fseek
fseek(文件指针,位移量,起始点);
其中:
“文件指针”指向被移动的文件。
“位移量”表示移动的字节数,要求位移量是long 型数据。
“起始点”表示从何处开始计算位移量,规定的起始点有3 种:文件首、当前位置和文件尾。
文件头:SEEK_SET0
文件尾:SEEK_END2
当前位置:SEED_CUR1
文件偏移量的计算单位为字节,文件偏移量可为负值,表示从当前位置向反方向偏移。
12.函数rewind
rewind(文件指针);
作用将当前文件指针重新移动到文件的开始位置。
13.函数ftell
ftell(文件指针);
作用是获得文件指针的当前位置,此位置为相对于文件开始位置的相对偏移量。
选择题
1.若fp 是指某文件的指针,且已读到文件的末尾,则表达式feof(fp)的返回值是( )。
A.EOF B.-1 C.非零值 D.NULL
C.数据文件和二进制文件 D.数据代码文件
3.C 语言库函数fgets(str,n,fp)的功能是( )。
A.从文件fp 中读取长度n 的字符串存入str 指向的内存
B.从文件fp 中读取长度不超过n-1 的字符串存入str 指向的内存
C.从文件fp 中读取n 个字符串存入str 指向的内存
D.从str 读取至多n 个字符到文件fp 中
4.函数rewind 的作用是( )。
A.使位置指针重新返回文件的开头
B.将位置指针指向文件中所要求的特定位置
C.使位置指针指向文件的末尾
D.使位置指针自动移至下一个字符位置
5.在执行fopen 函数时,若执行不成功,则函数的返回值是( )。
A.TRUE B.-1 C.1 D.NULL
一、选择题
1.设x 和y 均为int 型变量,则语句“x+=y,y=x-y;x-=y;”的功能是( )。
A.把x 和y 按从大到小排列 B.把x 和y 按从小到大排列
C.无确定结果 D.交换x 和y 的中的值
2.若有以下定义:则表达式a∗b+d-c 值的类型为( )。
char a; int b; float c; double d;
A.float B.int C.char D.double
3.若有以下定义和语句:则输出结果是( )。
A.8,16,10 B.10,10,10 C.8,8,10 D.8,10,10
4.以下程序运行后的输出结果是( )。
A.2,3,3 B.2,3,2 C.2,3,1 D.2,2,1
5.下列叙述中错误的是( )。
A.计算机不能直接执行用C 语言编写的源程序
B.C 程序经C 编译后,生成后缀为.obj 的文件是一个二进制文件
C.后缀为.obj 的文件,经过链接程序生成后缀为.exe 的文件是一个二进制文件
D.后缀为.obj 和.exe 的二进制文件都可以直接运行
6.在C 语言中运算对象必须是整型的运算符是( )。
A.%= B./ C.= D.<=
7.若已定义i 和j 为double 类型,则表达式i=1,j=i+3/2 的值是( )。
A.1 B.2 C.2.0 D.2.5
8.若变量a、i 已正确定义,且i 已正确赋值,合法的语句是( )。
A.a==1 B.++i; C.a=a++=5; D.a=int(i);
9.( )是非法的C 语言转义字符。
A.' \ b' B.' \ 0xf' C.' \ 037' D.' \ '
10.若有以下程序段:
则执行后,c3 中的值是( )
A.0 B.0.5 C.1 D.2
11.有以下程序,程序运行后的输出结果是( )。
A.1 65 1 6.5 B.1 65 1.5 6.5 C.1 65 1.0 6.5 D.2 65 1.5 6.5
12.以下针对scanf 函数的叙述中,正确的是( )。
A.输入项可以为一实型常量,如scanf("%f",3,5);
B.只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d");
C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("4.2f",&f);
D.当输入数据时,必须指明变量的地址,如scanf("%f",&f);
13.设有如下程序段,则以下叙述正确的是( )。
int a=2002,b=2003; printf("% d\n",(a,b));
A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出
B.运行时产生出错信息
C.输出值为2002
D.输出值为2003
14.以下非法的赋值语句是( )。
A.n=(i=2,++i); B.j++;
C.++(i+1); D.x=j>0;
15.已知i、j、k 为int 型变量,若从键盘输入:1,2,3<回车>,使i 的值为1、j 的值为2、k 的值为3,以下选项中正确的是( )。
A.scanf("%2d%2d%2d",&i,&j,&k);
B.scanf("%d %d %d",&i,&j,&k);
C.scanf("%d,%d,%d",&i,&j,&k);
D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);
16.以下程序段的输出结果是( )。
int a=1234; printf("% 2d\n",a);
A.12 B.34 C.1234 D.提示出错、无结果
17.若变量已正确说明为float 类型,要通过语句“scanf("%f %f %f",&x,&y,&z);”给x赋予10.0,y 赋予22.0,z 赋予33.0,不正确的输入形式是( )。
A.10<回车> B.10.0,22.0,33.0<回车>
22<回车>
33<回车>
C.10.0<回车> D.10 22<回车>
22.033.0<回车> 33<回车>
18.以下程序的输出结果是( )。
A.17,021,0x11 B.17,17,17 C.17,0x11,021 D.17,21,11
19.设有以下程序:
若运行时从键盘输入数据:
则输出结果是( )。
A.eofx B.eoxy C.eoyz D.eozk
20.下列不可作为C 语言赋值语句的是( )
A.x=3,y=5; B.a=b=6; C.i--; D.y=int(x);
21.有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x 的值不为3的是( )。
A.if(c<a)x=1; B.if(a<3)x=3;
else if(b<a)x=2; else if(a<2)x=2;
else x=3;else x=1;
C.if(a<3)x=3; D.if(a<b)x=b;
if(a<2)x=2; if(b<c)x=c;
if(a<1)x=1; if(c<a)x=a;
22.有以下程序,执行后输出结果是( )。
A.1,1,2 B.2,2,1 C.2,2,2 D.,2,2,3
23.若有以下程序
则以下程序的输出结果是( )。
A.10 B.11 C.13 D.15
24.有以下程序
程序运行后的结果是( )。
A.FALSE:a=1,b=1 B.FALSE:a=0,b=1
C.TRUE:a=1,b=2 D.TRUE:a=0,b=2
25.有以下程序
程序运行后的结果是( )。
A.D B.C C.B D.A 26.以下选项中,两个条件语句语义等价的是( )。
A.if(a=2)printf("%d\n",a); B.if(a-2)printf("%d\n",a);
if(a==2)printf("%d\n",a); if(a!=2)printf("%d\n",a);
C.if(a)printf("%d\n",a); D.if(a-2)printf("%d\n",a);
if(a==0)printf("%d\n",a); if(a==2)printf("%d\n",a);
27.有以下程序,执行后输出的结果是( )。
A.2 B.3 C.4 D.编译时有错,无结果
28.已有定义:int i=3,j=4,k=5;,则表达式! (i+j)+k-1&&j+k/2 的值是( )。
A.6 B.0 C.2 D.1
29.有一函数,以下程序段中不能根据x 的值正确计算出y 的值是( )。
A.if(x>0)y=1; B.y=0;
else if(x==0)y=0; if(x>0)y=-1;
else y=-1; else if(x<0)y=-1;
C.y=0; D.if(x>=0)
if(x>=0) if(x>0)y=1;
if(x>0)y=1; else y=0;
else y=-1; else y=-1;
30.以下程序的输出结果是( )。
A.1 B.0 C.非0 的数 D.-1
31.若二维数组a 有m 列,则计算任一元素a[i][j]在数组中位置的公式为( )。
A.i∗m+j B.j∗m+i C.i∗m+j-1 D.i∗m+j+1
32.若有说明:int a[ ][3]={1,2,3,4,5,6,7};,则a 数组第一维大小是( )。
A.2 B.3 C.4 D.无确定值
33.若有说明,int a[10];,则对a 数组元素的正确引用是( )。
A.a[10] B.a[3.5] C.a(5) D.a[10-10]
34.在C 语言中,一维数组的定义方式为:类型说明符 数组名( )。
A.[常量表达式] B.[整型表达式]
C.[整型常量]或[整型表达式] D.[整型变量]
35.以下能对一维数组进行正确初始化的语句形式是( )。
A.int a[3][]; B.int a[10]={};
C.int a[]={}; D.int a[10]={10∗1};
36.若有说明:int a[3][4];,则对a 数组元素的正确引用是( )。
A.a[0][2∗1] B.a[1][4] C.a[4-1][0] D.a[0][4]
37.以下能对二维数组a 进行正确初始化的语句是( )。
A.int a[2][ ]={{1,2,2},{3,4,5}};
B.int a[ ][3]={{2,2,3},{4,5,6}};
C.int a[2][4]={{1,2,2},{3,2},{5}};
D.int a[ ][3]={{1,9,1,4},{ },{1,1}};
38.以下各组选项中,均能正确定义二维实型数组a 的选项是( )。
A.float a[2][3]; B.float a(3,4);
float a[ ][4]; float a[2][3];
float a[3][0]={{1},{9}}; float a[ ][ ]={{0}.{3}};
C.float a[3][3]; D.flaot a[3][4];
static float a[ ][4]={{0},{0}}; float a[3][ ];
auto float a[ ][4]={{0},{0},{0}}; float a[ ][4];
39.若有说明:int a[ ][4]={0,0};,则下面不正确的叙述是( )。
A.数组a 的每个元素都可以得到初值0
B.二维数组a 的第一维大小为1
C.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
D.因为二维数组a 中第二维大小的值除以初值个数的商为1,所以数组a 的行数为1
40.对以下定义语句的正确理解是( )。
int a[10]={6,7,8,9,10};
A.将6,7,8,9,10 依次赋给a[1]~a[5]
B.将6,7,8,9,10 初值依次赋给a[0]~a[4]
C.将6,7,8,9,10 初值依次赋给a[6]~a[10]
D.因为数组长度与初值的个数相同,所以此初始化语句不正确
二、写出下面程序的执行结果
1.#include<stdio.h>
2.#include<stdio.h>
3.#include<stdio.h>
4.main()
5.#include "stdio.h"
6.已知int a=12,n=5;则下列表达式运算后a 的值各为多少?
a+=a a 的值为________。
a-=2 a 的值为________。
a∗=2+3 a 的值为________。
a/=a+a a 的值为________。
a%=(a%=2)a 的值为________。
a+=a-=a∗=a a 的值为________。
7.以下程序运行后的输出结果是________。
8.若有语句int i=-19,j=i%4;printf("%d\n",j);则输出结果是________。
9.以下程序的输出结果是________。
10.若a 是int 变量,则执行表达式a=25/3%3 后,a 的值是________。
三、填空题
(1)编写一个验证正整数M 是否为素数的函数,若M 是素数则把1 送到T 中,否则把0 送到T 中。在主函数中读入N 个正整数,每读入一个则调用函数判断它是否为素数,在主函数中将T 的值累加到另一个变量中。用此方法可求出N 个数中素数的个数。请填空完成上述功能的程序。
(2)编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。请填空完成上述功能的程序。
(3)用递归方法求N 阶勒让德多项式的值,递归公式为
一、选择题
1.以下选项中不属于C 语言的类型的是( )。
A.signed short int B.unsigned long int
C.unsigned int D.long short
2.以下选项中属于C 语言的数据类型是( )。
A.复数型 B.逻辑型 C.双精度型 D.集合型
3.将二进制数10000001 转换为十进制数应该是( )。
A.127 B.129 C.126 D.128
4.有一个数值是152,它与十六进制数6A 相等,那么该数是( )。
A.二进制数 B.八进制数 C.十进制数 D.四进制数
5.设有如下的变量定义,则以下符合C 语言语法表达式是( )
A.a+=a-=(b=4)∗(a=3) B.x%(-3)
C.a=a∗3=2 D.y=float(i)
6.有以下程序若想从键盘上输入数据,使变量m 中的值为123,n 中的值为456,p 中的值为789,则正确的输入为( )。
A.m=123n=456p=789 B.m=123 n=456 p=789
C.m=123,n=456,p=789 D.123 456 789
7.有以下程序,程序运行后的输出结果是( )。
A.0256 0400 B.0256 256 C.256 400 D.400 400
8.有以下程序,程序运行后的输出结果是( )。(www.xing528.com)
A.错误信息 B.55 C.33 D.55,33
9.若a,b 均定义为int 型,c 定义为double 型,以下不合法的scanf 函数调用语句是( )。
A.scanf("%d%lx,%le",&a,&b,&c); B.scanf("%2d∗%d%lf",&a,&b,&c);
C.scanf("%x∗%d%o",&a,&b); D.scanf("%x%o%6.2f",&a,&b,&c);
10.有以下程序,执行后输出结果是( )。
A.10,01 B.02,12 C.102,10 D.02,10
11.设有定义:int a=2,b=3,c=4;则以下选项中值为0 的表达式是( )
A.(! a==0)&&(! b==0) B.(a<0)&&(! c | |1)
C.a&&b D.a | |(b+b)&&(c-a)
12.设变量a、b、c、d 和y 都已正确定义并赋值。若有以下定义if 语句,该语句所表示的含义是( )。
13.有以下程序
程序的输出结果是( )。
A.a=4,b=9 B.a=4,b=%5 C.a=4,b=%d D.运行出错
14.以下程序段的运行结果是( )。
A.0111 B.1111 C.0101 D.0100
15.当把以下4 个表达式用作if 语句的控制表达式时,有一个选项与其他3 个选项含义不同,这个选项是( )。
A.k%2 B.k%2==1 C.(k%2)!=0 D.! k%2==1
16.有以下程序,程序运行后的结果是( )。
A.1 2 3 B.2 3 4 C.2 2 3 D.2 3 3
17.设有定义:
则语句printf("%3d,%1.3f",n,x);的输出结果是( )。
A.1234,3.142 B.123,3.142 C.1234,3,141 D.123,3.141
18.有以下程序,程序运行后的结果是( )。
A.2 B.3 C.43 D.44
19.下列语句中,功能与其他语句不同的是( )。
A.if(a)printf("%d\n",x);else printf("%d\n",y);
B.if(a==0)printf("%d\n",y);else printf("%d\n",x);
C.if(a!=0)printf("%d\n",x);else printf("%d\n",y);
D.if(a==0)printf("%d\n",x);else printf("%d\n",y);
20.有以下程序,程序运行后的输出结果是( )。
A.0,0 B.0,1 C.1,0 D.1,1
21.以下程序运行后的输出结果是( )。
A.6,1 B.2,1 C.6,0 D.2,0
22.设以下变量均为int 类型,则值不等于7 的表达式是( )。
A.(x=y=6,x+y,x+1) B.(x=y=6,x+y,y+1)
C.(x=6,x+1,y=6,x+y) D.(y=6,y+1,x=y,x+1)
23.在16 位C 编译系统上,若定义long a;,则能给a 赋40000 的正确语句是( )。
A.a=20000+20000; B.a=4000∗10;
C.a=30000+10000; D.a=4000L∗10L;
24.有以下定义语句
double a,b; int w; long c;
若各变量已正确赋值,则下列选项中不正确的表达式是( )。
A.a=a+b=b++ B.w%(int)(a+b) C.(c+w)%(int)a D.w=a==b
25.以下程序运行后的输出结果是( )。
A.-1 B.65535 C.32767 D.-32768
26.以下符合C 语言语法的实型常量是( )。
A.1.2E0.5 B.3.14.159E C..5E-3 D.E15
27.设有以下定义,则下面语句中错误的是( )。
A.a++; B.b++; C.c++; D.d++;
28.以下4 个选项中不能看作一条语句的是( )。
A.{;} B.x=0,y=0,z=0;
C.if(k>0) D.if(b==0)a=1;b=2;
29.以下叙述中正确的是( )。
A.C 程序中注释部分可以出现在程序中任意合适的地方
B.大括号“{”和“}”只能作为函数体的定界符
C.构成C 程序的基本单位是函数,所有函数名都可以由用户自定义
D.分号是C 语句之间的分隔符,不是语句的一部分
30.设变量x 为float 型且已赋值,则以下语句中能将x 中的数值保留到小数点后两位,并将第三位四舍五入的是( )。
A.x=x∗100+0.5/100.0; B.x=(x∗100+0.5)/100.0;
C.x=(int)(x∗100+0.5)/100.0 D.x=(x/100+0.5)∗100.0
31.若有以下定义和语句:
int w[2][3],(* pw)[3]; pw=w;
则对w 数组元素非法引用是( )。
A.∗(w[0]+2) B.∗(pw+1)[2] C.pw[0][0] D.∗(pw[1]+2)
32.有以下说明和语句,则( )是对c 数组元素的正确引用。
A.cp+1 B.∗(cp+3) C.∗(cp+1)+3 D.∗(∗cp+2)
33.设有如下的程序段:
执行上面的程序段后,∗(ptr+5)的值为( )。
A.'o' B.' \ 0' C.不确定的值 D.'o'的地址
34.下面函数的功能是( )。
A.求字符串的长度 B.比较两个字符串的大小
C.将字符串s 复制到字符串t 中 D.将字符串s 接续到字符串t 中
35.在下面各语句行中,能正确进行字符串赋值操作的语句是( )。
A.char ST[5]={"ABCDE"}; B.char S[5]={'A','B','C','D','E'};
C.char ∗S;S="ABCDE"; D.char ∗S;scanf("%S",S);
36.下列函数的功能是( )。
A.求字符串的长度 B.比较两个字符串的大小
C.将字符串x 复制到字符串y D.将字符串x 连接到字符串y 后面
37.请读程序:
上面程序的输出结果是( )。
A.正数 B.负数 C.零 D.不确定的值
38.设有如下定义:
int (* ptr)();
则以下叙述中正确的是( )。
A.ptr 是指向一维组数的指针变量
B.ptr 是指向int 型数据的指针变量
C.ptr 是指向函数的指针;该函数返回一个int 型数据
D.ptr 是一个函数名;该函数的返回值是指向int 型数据的指针
39.若有函数max(a,b),并且已使函数指针变量p 指向函数max,当调用该函数时,正确的调用方法是( )。
A.(∗p)max(a,b); B.∗pmax(a,;
C.(∗p)(a,b); D.∗p(a,b);
40.已有函数max(a,),为了让函数指针变量p 指向函数max,正确的赋值方法是( )。
A.p=max; B.∗p=max; C.p=max(a,); D.∗p=max(a,b);
二、写出下面程序的执行结果
1.若变量a,b 已定义为int 类型并赋值21 和55,要求printf 函数以a=21,b=55 的形式输出,请写出完整的输出语句:____________________。
2.以下程序的输出结果是________。
3.main()
4.float fac(int n)
假如在运行程序时输入5,写出程序的运行情况及最终结果:________。
5.以下程序的输出结果是________。
6.以下程序的输出结果是________。
7.语句;x++;++x;x=x+1;x=1+x;,执行后都使变量X 中的值增1,请写出一条同一功能的赋值语句(不得与列举的相同)____________________。
8.若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是________。
三、填空题
(1)在数组中同时查找最大元素下标和最小元素下标,分别存放在main 函数的变量max 和min 中。
(2)写一函数,实现两个字符串的比较,即自己写一个strcmp 函数:compare(s1,s2)。
如果s1=s2,返回值为0;
如果s1≠s2,返回它们二者第一个不同字符的ASCII 码差值("BOY"与"BAD",第二个字母不同,"O"与"A"之差为79-65=14)。若s1>s2,则输出正值;若s1<s2,则输出负值。
(3)有一个班4 名学生,5 门课。求第一门课的平均分;找出有2 门以上课程不及格的学生,输出他们的学号和全部课程成绩与平均成绩;找出平均成绩在90 分以上或全部课程成绩在85 分以上的学生,分别编写3 个函数实现以上要求。
一、选择题
1.以下程序运行后的输出结果是( )。
A.235 B.0235 C.02356 D.2356
2.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是( )。
A.(! E==0) B.(E>0 | |E<0) C.(E==0) D.(E!=0)
3.以下程序执行后的输出结果是( )。
A.x=4 B.x=8 C.x=6 D.x=12
4.以下程序执行后的输出结果是( )。
A.1 B.2 C.4 D.死循环
5.下面程序的输出结果是( )。
A.1 B.1256 C.12ab56 D.ab
6.若有定义:float w;int a,b;则合法的switch 语句是( )。
7.有如一下程序,该程序的输出结果是( )。
A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2
8.有如下程序,该程序的输出结果是( )。
A.0.000000 B.0.250000 C.0.500000 D.1.000000
9.语句while(! E)中的表达式! E 等价于( )。
A.E==0 B.E!=1 C.E!=0 D.E==1
10.有如下程序,该程序的输出结果是( )。
A.0 B.1 C.2 D.3
11.以下叙述中错误的是( )。
A.用户所定义的标识符允许使用关键字
B.用户所定义的标识符中,大、小写字母代表不同标识
C.用户所定义的标识符必须以字母或下划线开头
D.用户所定义的标识符应尽量做到“见名知意”
12.C 语言中整数-8 在内存中的存储形式为( )。
A.1111111111111000 B.100000000001000
C.000000000001000 D.1111111111110111
13.以下不能正确计算代数式值的C 语言表达式是( )。
A.pow(sin(0.5),2)/3 B.sin(0.5)∗sin(0.5)/3
C.1/3∗sin(1/2)∗sin(1/2) D.1/3.0∗pow(sin(1.0/2),2)
14.以下能正确定义且赋初值的语句是( )。
A.int n1=n2=10; B.char ch=32;
C.float j=j+1.1; D.double y=12.3E2.5
15.以下程序的功能是:给r 输入数据后计算半径为r 的圆面积s。程序在编译时出错。
出错的原因是( )。
A.注释语句书写位置错误
B.存放圆半径的变量r 不应该定义为整型
C.输出语句中格式描述符非法
D.计算圆面积的赋值语句中使用了非法变量
16.设有定义:int k=1,m=2;float f=7;,则以下选项中错误的表达式是( )。
A.k=k>=k B.-k++ C.k%int(f) D.k>=f>=m
17.对于char cx=' \ 039';语句,正确的是( )。
A.cx 的值为3 个字符 B.不合法
C.cx 的ASCII 值是33 D.cx 的值为4 个字符
18.若int k=7,x=12;则能使值为3 的表达式是( )。
A.(x%=k)-(k%=5) B.x%=(k-k%5)
C.x%=k-k%5 D.x%=(k%=5)
19.以下选项中,不能作为合法常量的是( )。
A.1.234e04 B.1.234e0.4 C.1.234e+4 D.1.234e0
20.以下程序运行后的输出结果是( )。
A.15353517 B.15353516 C.15343517 D.15343516
21.设i 是int 型变量,f 是float 型变量,用下面的语句给这两个变量输入值。
scanf("i=%d,f=%f",&i,&f);
为了把100 和75.12 分别赋给i 和f,则正确的输入为( )。
A.100765.12 B.i=100,f=75.12 C.100765.12 D.i=100f=765.12
22.以下程序运行后输出结果是( )。
A.a+b=0 B.a+b=30 C.30 D.出错
23.设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量a1 和a2 赋数值10 和20,为变量c1 和c2 赋字符X 和Y。以下所示的输入形式正确的是( )。
A.10○X 20○Y B.10○X20○Y<回车>
C.10○X<回车> D.10X <回车>
20○Y <回车> 20Y <回车>
24.设有定义:int a;float b;执行scanf("%2d%f",&a,&b)语句时,若从键盘输入876543.0<回车>,a 和b 的值分别是( )。
A.876 和6543.000000 B.87 和6.000000
C.87 和6543.000000 D.76 和6543.000000
25.以下叙述中正确的是( )。
A.调用printf 函数时,必须要有输出项
B.使用putchar 函数时,必须在之前包含头文件stdio.h
C.在C 语言中,整数可以以十二进制、八进制或十六进制的形式输出
D.调用getchar 函数读入字符时,可以从键盘上输入字符所对应的ASCII 码
26.以下程序的输出结果是( )。(□表示空格)
A.∗s1=studentstu□□□∗ B.∗s1=□□studentstu∗
∗s2=∗∗abc∗ ∗s2=□□abc∗B)∗s1=studentstu□∗
∗s2=abc□
C.∗s1=∗□□studentstu∗ D.∗s1=□□□□□studentstu∗
∗s2=□□abc∗B)∗s1=studentstu□∗ ∗s2=abc□□∗
∗s2=abc□∗
27.以下C 程序的运行结果是( )。(□表示空格)
A.k=□□□1234 B.k=□□□2342
k=□□□□□□□ k=□□□□□□□
k=# # # # # # # #1234 k=# # # # # # # #2342
C.k=2322 D.k=2342
k=□□□□2322 k=□□□
k=□□□02322 k=□□02342
28.根据下面的程序及数据的输入方式和输出形式,程序中输入语句的正确形式应该为( )。(□表示空格)
A.scanf("%c%c%c",&a1,&a2,&a3);
B.scanf("%c,%c,%c",&a1,&a2,&a3);
C.scanf("%c %c %c",&a1,&a2,&a3);
D.scanf("%c%c",&a1,&a2,&a3);
29.若有定义:int x,y;char a,b,c;并有以下输入数据(□代表空格):
1u2<CR>A□B C<回车>
则能给x 赋整数1,给y 赋整数2,给a 赋字符A,给b 赋字符B,给c 赋字符C 的正确程序段是( )。
A.scanf("x=%d y+%d",&x,&y);a=getchar();c=getchar()
B.scanf("%d %d",&x,&y);a=getchar();b=getchar();c=getchar();
C.scanf("%d%d%c%c%c",&x,&y,&a,&b,&c);
D.scanf("%d%d%c%c%c%c%c%c",&x,&y,&a,&a,&b,&b,&c,&c);
30.以下选项中,值为1 的表达式( )。
A.1-'0' B.1-' \ 0' C.'1'-0 D.' \ 0'-'0'
31.已有定义int (∗p)();指针p 可以( )。
A.代表函数的返回值 B.指向函数的入口地址
C.表示函数的类型 D.表示函数返回值的类型
32.若有以下说明和定义。
在必要的赋值之后,对fun 函数的正确调用语句是( )。
A.a=a(w); B.(∗a)(&c); C.b=∗b(w); D.fun(b);
33.以下正确的叙述是( )。
A.C 语言允许main 函数带形数,且形参个数和形参名均可由用户指定
B.C 语言允许main 函数带形参,形参名只能是argc 和argv
C.当main 函数带有形参时,传给形参的值只能从命令行中得到
D.有说明:main(int argc,char ∗argv),则形参argc 的值必须大于1
34.若有说明:int i,j=2,∗p=&i;,则能完成i=j 赋值功能的语句是( )。
A.i=∗p; B.∗p=∗&j; C.i=&j; D.i=∗∗p;
35.设a 和b 均为double 型常量,且a=5.5、b=2.5,则表达式(int)a+b/b 的值是( )。
A.6.500000 B.6 C.5.500000 D.6.000000
36.以下叙述错误的是( )。
A.C 程序中的#include 和#define 行均不是C 语句
B.除逗号运算符之外,赋值运算符的优先级最低
C.C 程序中,j++;是赋值语句
D.C 程序中,+、-、∗、/、%号是算术运算符,可用于整型和实型数的运算
37.若有以下程序,则程序执行后的输出结果是( )。
A.8,6 B.8,3 C.6,4 D.7,4
38.以下选项中,与k=n++完全等价的表达式是( )。
A.k=n,n=n+1 B.n=n+1,k=n C.k=++n D.k+=n+1
39.以下有4 组用户标识符,其中合法的一组是( )。
A.For -sub Case
B.4d DO Size
C.f2_G3 IF abc
D.Word void define
40.以下程序的输出结果是( )。
A.12 B.-6 C.0 D.-12
二、写出下面程序的执行结果
1.#include <stdio.h>
2.#include <stdio.h>
3.#include <stdio.h>
4.#include <stdio.h>
5.#include "stdio.h"
三、填空题
(1)编写一个程序,首先定义一个复数数据类型,即结构类型;然后按照复数的运算规则进行计算,并按照复数表示的格式进行输出。
(2)有n 个学生,每个学生的数据包括学号(num)、姓名(name[20])、性别(sex)、年龄(age)、三门课的成绩(score[3])。要求在main 函数中输入这n 个学生的数据,然后调用一个函数count,在该函数中计算出每个学生的总分和平均分,然后打印出所有各项数据(包括原有的和新求出的)。
(3)将上题改为用指针方法处理,即用指针变量逐次指向数组元素,然后向指针变量所指向的数组元素输入数据,并将指针变量作为函数参数,将地址值传给count 函数,在函数count 中作统计,再将数据返回main 函数,在main 函数中输出。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。