当前位置:文档之家› C语言题库(1).docx

C语言题库(1).docx

C语言题库(1).docx
C语言题库(1).docx

一. 选择题 (单项)

1. C 语言中的标识符只能由字母、数字和下划线3种字符组成,且第一个字符

——。

A必须为字母B必须为下划线

C必须为字母或下划线 D 可以是字母、数字和下划线中的任一种字符

2.下面 4个选项中,均是 C 语言关键字的选项是——。

Aauto enum includeBswitch typedef continue

C signed union scanf

D if struct type

3.下面 4个选项中,均是不合法的用户标识符的选项是——。

A A P_0 doBfloat la0_A

C b- a goto int D_123 temp INT

4.在 C 语言中,int 、char 和 short 三种类型的数据在内存中所占用的字节数——。A由用户自己定义B均为 2 个字节

C是任意的D由所用机器的机器字长决定

5.下面 4 个选项中,均是合法浮点数的选项是——。

A+1e+15e-9.403e2B- .60 12e-4-8e5

C123e 1.2e-.4 +2e - 1D-e3 .8e-4 5.e -0

6.下面不正确的字符串常量是——。

AˊabcˊB〞 12ˊ12〞

C〞0 〞D〞〞

7.假设所有的变量均为整型,则表达式(a=2,b=5,b++, a+b)的值是——。

A7B8

C6D2

8.以下正确的叙述是——。

A在 C 语言中,每行只能写一条语句

B若 a 是实型变量, C 程序中允许赋值a=10,因此实型变量中允许存放整型

C在 C 程序中,无论整数还是实数,都能被准确无误的表示

D在 C 程序中, % 是只能用于整数运算的运算符

9.以下表达式值为 3 的是——。

A 16-13%10B2+3/2

C 14/3-2D(2+6)/(12- 9)

10.设变量 a 是整型, f 是实型, i 是双精度型,则表达式 10+ˊ aˊ +i*f 值的数据类型为——。

A int

B float

C double

D 不确定

11.在 C 语言中, char 型数据在内存中的存储形式是——。

A 补码C 原码B反码

D AS CⅡ码

12.设有说明语句: char w;int x ;float y ;double z;w x z y 值的数据类型为

——。

A float

B char

C int

D double

13.在 C 语言中,要求运算数必须是整型的运算符是——。

A/B++

C!=D%

14.在 C 语言中一个 int 型数据在内存中占 2 个字节,则 unsigned int 型数据的取值范围为——。

A0~255B0~32 767

C0~ 65 535 D 0~ 2 147 483 647

15 下面正确的字符常量是——。

A〞c 〞B〞〞

Cˊ W ˊDˊˊ

16.已知各变量的类型说明如下:

int k , a , b;

unsigned long w=5;

double x=1.42;

则以下不正确的表达式是——。

A x%(-3)

B w+= -2

C k=(a=2,b=3,a+b)

D a+=a-=(b=4)*(a=3)

17.若定义语句: int a=7; float x=2.5;y=4. 7; 则表达式 x+a%3*(int)(x+y)%2/4 的值是——。

A 2.500000

B 2.750000

C 3.500000D0.000000

18.已知字母 A 的 ASCⅡ码为十进制数65,且定义 c2 为字符型变量,则执行语句

c2=ˊ Aˊ +ˊ6ˊ- ˊ3ˊ;后, c2 中的值为:

A D

B 68

C 不确定的值

D C

19.以下程序的运行结果是——。

#include

main()

{

int m=5,n=10;

printf( “%d,%d\n”,m++,--n);

}

A 5, 9

B 6,9

C 5,10D6,10

20.以下程序的运行结果是——。

# include

main()

{

int a=201,b=012;

printf( “%2d,%2d\n”,a,b);

}

A 01,12

B 201,10

C 01,10D20,01

21.设有如下程序

# include

main()

{

char ch1=’A’,ch2=’a’;

printf( “%c\n”,(ch1,ch2));

}

则下列叙述正确的为——

A 程序的输出结果为大写字母A

B 程序的输出结果为小写字母a

C运行时产生错误信息

D格式说明符的个数少于输出项的个数,编译出错

22.以下正确定义整型变量a,b 和 c 并为其赋初值 5 的语句是——。

A int a=b=c=5;

B int a,b,c=5;

C int a=5,b=5,c=5;

D a=b=c=5;

23.设x,y 均为float型变量,则不合法的赋值语句是——。

A++x; B y=(x%2)/10;C x y 8;D x=y=0;

24.输入数据的形式是25,13,10<回车 >,则程序的输出结果是——。

main()

{

int x,y,z;

scanf (“%d%d%d”,&x,&y,&z);

printf( “x+y+z=%d\n ”,x+y+z);

}

A x+y+z=48

B x+y+z=35

C x+z=35D不确定值25.若有如下定义,则正确的赋值语句是——。

int a,b;float x;

A a=1,b=2,

B b++;

C a=b=5

D b=int(x);

1.已知学生记录描述为

struct student

{int no;

char name[20];

char sex;

struct

{int year;

int month;

int day;}birth;};

struct student s;

设变量 s 中的“生日”应该是“1984年 11 月 11 日”,下列对“生日”的正确赋值方式是()

A. year=1984;

h.day=11;

2.当说明一个结构体变量时系统分配给它的内存是( )

A.各成员所需内存的总和

B.结构中第一个成员所需内存量

C.成员中占内存量最大者所需的容量

D.结构中最后一个成员所需内存量

3.设有以下说明语句

struct stu

{int a;float b;}stutype; 则以下叙述不正确的是( )

A. struct 是结构体类型的关键字

B. struct stu 是用户定义的结构体类型

C. stutype 是用户定义的结构体类型名

D. a 和 b 都是结构体成员名

4.C 语言结构体类型变量在程序执行期间( )

A.所有成员一直驻留在内存中

B.只有一个成员驻留在内存中

C.部分成员驻留在内存中

D.没有成员驻留在内存中

5.在 16 位机动 IBM-PC 机上使用 C 语言,若有如下定义:

struct data

{int I; char ch; double f;}b;

则结构体变量 b 占用内存的字节数是 ( )

A.1

B.7

C.8

D.11

6.以下程序的运行结果是 ( )

main()

{struct date

{int year,month,day;}today;

printf("%d\n",sizeof(struct date));}

A.6

B.8

C.10

D.12

7.根据下面的定义,能打印出字母M 的语句是 ( )

struct person

{char name[9];

int age;};

struct person class[10]={"John",17,"Paul",19,"Mary"18,"adam",16};

A.printf("%c\n",class[3].name);

B.printf("%c\n",class[3].name[1]);

C.printf("%c\n",class[2].name[1]);

D.printf("%c\n",class[2].name[0]);

8.下面程序的运行结果是 ( )

main()

{struct cmplx{int x;int y;}cnumn[2]={1,3,2,7};

printf("%d\n"),cnum[0].y/cnum[0].x*cnum[1].x;}

A.0

B.1

C.3

D.6

9.若有以下定义和语句

struct student

{int age;

int num;};

struct student stu[3]={{1001,20},{1002,19},{1003,21}};

main()

{struct student *p;p=stu; ??}以下不正确的引用是 ( )

A.(p++)->num

B.p++

C.(*p).num

D.p=&stu.age

10.以下 scanf 函数用句中构体量成的不正确引用是( )

struct pupil

{char name[20]; int age; int sex;}pup[5],*p;

p=pup;

A.scanf("%s",pup[0].name);

B.scanf("%d",&pup[0].age);

C..scanf("%d",&(p->.sex));

D.scanf("%d",p-age);

11.若有以下明和句 :

struct student

{int age; int num;}std.*p;

p=&std;以下构体量std 中成 age 的引用方式不正确的是 ( )

A. std.age

B.P->age

C.(*p).age

D.*p.age

12.若有以下程序段:

struct dent

{int n; int *m;};

int a=1,b=2,c=3;

struct dent s[3]={{101,&a},{102,&b},{103,&c}};

main()

{struct dent *p;p=s; ??} 以下表达式 2 是 ( ) A.(P++)->m

B.*(P++)->m

C.(*P).m

D.*(++p)->m

13.有以下句 :

struct st

{int n; struct st *next;};

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

15.若有以下明和句,下面表达式中的1002 的是 ( )

struct student

{ int num;int age; };

struct student stu[3]={{1001,20},{1002,19},{1003,21}};

struct student *p;

p=stu;

A.(p++)->num

B.(++p)-> num

C.(*p).num

D.(*++p).age

16.以下构体量stul 中成 age的非法引用的是 ( )

struct strudent

{int age; int num;}stul,*p;

p=&stul;

C.p->age

D.(*p).age

17.有以下明和定句,下面表达式中 3 的是 ( )

struct s

{int il; struct s *12;};

struct s a[3]={1,&a[1],2,&a[2],3,&a[0]},*ptr

ptr=&a[1];

A.ptr->il++

B.ptr++->il

C.*ptr->il

D.++ptr->il

18.当说明一个共用体变量时系统分配给它的内存是( )

A.各成员所需内存量的总和

B.结构中第一个成员所需内存量

C.成员中占内存量最大者所需内存量

D.结构中最后一个成员所需内存量

19.以下对 C 语言中共用体类型数据的叙述正确的是( )

A.可以对共用体变量名直接赋值

B.一个共用体变量中可以同时存放其所有成员

C.一个共用体变量中不能同时存放其所有成员

D.共用体类型定义中不能出现结构体类型的成员

20.若有以下定义语句

union data

{int l; char c; float f;}a;

int n;则以下语句正确的是 ( )

A.a=5;

B.a={2,'a',1.2};

C.printf("%d\n",a.l);

D.n=a;

21.设有以下语句,则下面不正确的叙述是( )

union data

{int I; char c; float f;}UN;

A.UN 所占的内存长度等于成员 f 的长度

B.UN 的地址和它的各成员地址都是同一地址

C.UN 不可以作为函数参数

D.不能对 UN 赋值,但可以在定义un 时对它初始化

22.C 语言共用体类型变量在程序运行期间( )

A.所有成员一直驻留在内存中

B.只有一个成员驻留在内存中

C.部分成员驻留在内存中

D.没有成员驻留在内存中

23.以下程序的运行结果是 ( )

#include

main()

{union

{ long a;

int b;

char c;}m;

printf("%d\n",sizeof(m));}

A.2

B.4

C.6

D.8

25.以下程序的运行结果是 :( )

#include

union pw

{ int i;

char ch[2];

}a;

main()

{ a.ch[0]=13;

a.ch[1]=0;

printf("%d\n",a.i);}

A.13

B.14

C.208

D.209

文件选择题:

1.下列哪个是字符写函数()。

A.fgetc B. fputc C. fgets D fwrite

2.下列哪个是字符串读函数()。

A.fgetc B. fputc C. fgets D fwrite

3.若要打开 D 盘上 user 文件夹下名为 abc.txt 的文本文件进行读、写操作,符合此要求的函数调用是()。

A.fopen("D:\\user\\abc.txt","r")B.fopen("D:\user\abc.txt","w")

C. fopen("D:\\user\\abc.txt","r+")D. fopen("D:\user\abc.txt","rb") 4.下列哪个是读写文件出错检测函数()。

A. ferror B.clearerr C.feof D fwrite

5.当顺利执行了文件关闭操作时,A. -1 B.TRUE C.0fclose 函数的返回值是(

D. 1

)。

6.当不能正确执行文件关闭操作时,fclose 函数的返回值是(

A. -1B.EOF C. TRUE D. 1

)。

7.以下要作为函数fopen 中第一个参数的正确格式是:()

A.c:user\text.txt

B.c:\rser\text.txt

C.\user\text.txt

D.c:\\user\\text.txt

8.若执行 fopen 函数时发生错误,则函数的返回值是:()

A.地址值 B.null C.1 D.EOF

9.若以” a+方”式打开一个已存在的文件,则以下叙述正确的是:()

A.文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作。

B.文件打开时,原有文件内容被删除,位置指针移到文件开头,可作重新写

和读操作。

C.文件打开时,原有文件内容被删除,只可作写操作。

D.以上各种说法皆不下确。

10.当顺利执行了文件关闭操作时,fclose 函数的返回值是:()

A.-1 B.TURE C.0 D.1

11.已知函数的高速用形式:fread(buffer,size,count,fp);其中 buffer 代表的是()A.

一个整型变量,代表要读入的数据项总数

B.一个文件指针,指向要读的文件

C.一个指针,指向要读入数据的存放地址

D.一个存储区,存放要读的数据项

12.fscanf 函数的正确调用形式是:()

A.fscanf(fp,格式字符串,输也表列 )

B.fscanf(格式字符串,输出表列,fp)

C.fscanf(格式字符串,文件指针,输出表列)

D.fscanf(文件指针,格式字符串,输入表列)

13.fwrite 函数的一般调用形式是:()

A.fwrite(buffer,count,size,fp)

B.fwrite(fp,size,count,buffer)

C.fwrite(fp,count,size,buffer)

D.fwirte(buffer,size,count,fp)

14.fgetc 函数的作用是从指定文件读入一个字符,该文件的打开方式必须是(

)A.只写 B.追加 C.读或读写 D. 答案 B 和 C 都正确

10.若调用 fputc 函数输出字符成功,则其返回值是:()

A. EOF B.1 C.0 D.输出的字符

15.函数调用语句: fseek(fp,-20L,2);的含义是()

A.将文件位置指针移到了距离文件头20 个字节处

B.将文件位置指针从当前位置向后移动20 个字节

C.将文件位置指针从文件末尾处向后退20 个字节

D.将文件位置指针移到了距离当前位置20 个字节处

16.利用 fseek 函数可以实现的操作是:()

A.改变文件的位置指针

B.文件的顺序读写

C.文件的随机读写

D.以上答案均正确

17.Rewind,函数的作用是:()

A.使位置指针重新返回文件的开头

B.将位置指针指向文件中所要求的特定位置

C.使位置指针指向文件的末尾

D.使位置指针自动移至下一个字符位置

18.函数 ftell(fp) 作用是:()

A.得到流式文件中的当前位置

B. 移动流式文件的位置指针

C.初始化流式文件的位置指针

D.以上答案均正确

19、下列程序的输出结果是( )

struct abc

{ int a,b,c;};

main()

{ struct abc s[2]={{1 ,2,3} ,{4 ,5,6}} ;

int t;

t=s[0].a+s[1].b%s[0].c;

printf("%d \n" ,t); }

A2B3 C 4D7

20.下列程序的输出结果是 ( )

struct student

{ int a, b, c; };

main()

{ struct student stu[2]={{1,2,3},{4,5,6}}; int t;

t=stu[0].a+stu[1].b%stu[0].c;

printf("%d \n",t); }

(A) 0(B) 1(C) 3(D) 5

二.填空题

1.C语言中的标识符可分为关键字、【用户标识符】和【预定义标识符】 3 类。

2.在 C语言中,用“”开头的字符序列称为转义字符,转义字符“ \n ”的功能是

【换行】;转义字符“ \r ”的功能是【回车】。

3.在 C 语言中,用关键字【 float】定义单精度实型变量,用关键字【double 】

定义双精度实型变量,用关键字【char 】定义字符型变量。

4.在 C 语言中, &作为双目运算符时表示的是【按位与运算】,而作为单目运算

符时表示的是【取地址】。

5.C 语言所提供的基本数据类型包括:单精度型、双精度型、【整型】、【字符型】和【枚举类型】。

6 运算符 %两侧运算量的数据类型必须都是【整型】;运算符 ++和 -- 的运算量必

须是【变量】。

7.若 a 是 int型变量,且a的初值是6,则执行表达式a+=a-=a*a 后 a 的值为【-60 】。

8.若有定义语句: int x=3,y=2;float a=2.5,b=3.5;则表达式(x+y)%2+

(int )a/ ( int )b 的值为【 1】。

9.假设 m是一个 3 位数,从左到右依次用 a、b、c 表示各位数字,则从左到右各位

数字是b、a、c 的 3 位数的表达式是【(m/10%10)*100+m/100*10+m%10】。

10.在 C 语言中的赋值表达式中,赋值号左边须是【变量】。

11.C 语言中的标识符只能由 3 种字符组成,它们是【关键字】、【用户标识符】

和【预定义标识符】。

12.表达式 x=6 应当读做【将 6 赋给变量 x】。

13.设在 C 语言中一个 int 型数据在内存中占 2 个字节,则 int 型数据的取值范围

为【 -32768 ~ 32767】(用十进制表示)。

14.若有定义语句: int s=6 ;则表达式 s%2+(s+1) %2的值为【 1】。

15.把以下多项式写成只含 3 次乘法运算,其余皆为加、减运算的 C 语言表达式

为【】。

16.以下程序的输出结果为【 *3.140000, 3.142* 】。

main()

{

printf (“ *%f,%4.3f*\n ”,3.14 ,3.1415 );

}

17.以下程序的输出结果为【】。

main()

{

int x=1,y=2;

printf (“x=%d y=%d*sum*=%d\n”,x ,

y,x+y ); printf (“10 Squared

is :%d\n ”,10*10 );

}

x=1 y=2*sum*=3

10 Squared is :100

18.以下程序的输出结果为【】。

include <stdio.h>

main()

{

int x=10;

float pi=3.1416;

printf(“(1) %d\n” ,x);

printf(“(2) %6d\n”,x);

printf(“(3) %f\n” ,56.1);

printf(“(4) %14f\n”,pi);

}

(1)10

(2)10

(3)56.100000

(4)3,141600

19.以下程序的输出结果为【 20】。

#include <stdio.h >

main()

{

int n=0;

n+=(n=10);

printf(“%d\n”,n);

}

20.已知字母 A 的 ASCⅡ的值为 65。以下程序的输出结果为【 a=66, b=E 】。

#include <stdio.h >

main()

{

char a,b;

a=ˊAˊ+ˊ4ˊ- ˊ3ˊ ;

b=ˊAˊ+ˊ6ˊ- ˊ2ˊ ;

printf (“a=%d,b=%c\n”,a ,b);

}

编程题

1.输入三角形的三边长,求三角形的面积。可设三边长分别为a,b,c能构成三角形,则三角形的公式为:

其中:

2.从键盘输入一个大写字母,要求改用小写字母输出。

3.输入一个华氏温度,要求输出摄氏温度。公式为

输出要有文字说明,取 2 位小数。

4.设圆半径,求圆周长,圆面积。用 scanf 输入数据,输出结果时要求有文字

说明,取小数点后 2 位数字。

5.设圆半径,求圆球表面积,圆球体积。用 scanf 输入数据,输出结果时要求有文字说明,取小数点后 2 位数字。

6.设圆半径,圆柱高 h=3,求圆柱体积。用 scanf 输入数据,输出结果时要求有文字说明,取小数点后 2 位数字。

结构体编程:

1.利用下列结构和初始化条件,计算并输出学生的平均成绩和不及格的人数。struct student

{int num;

char *name;

char sex;

float score;

}boy[5]={ {101,"Li ping",'M',45},

{102,"Zhang ping",'M',62.5},

{103,"He fang",'F',92.5},

{104,"Cheng ling",'F',87},

{105,"Wang ming",'M',58},

};

答案:

main()

{ int i,c=0; float

ave,s=0;

for(i=0;i<5;i++)

{ s+=boy[i].score;

if(boy[i].score<60) c+=1; }

printf("s=%f\n",s);

ave=s/5;

printf("average=%f\ncount=%d\n",ave,c);

}

2.根据如下结构,建立同学通讯录收入三个同学信息并输出

struct mem

{

char name[20];

char phone[10];

};

答案:

main()

{

struct mem man[NUM];

int i;

for(i=0;i

{

printf("input name:\n");

gets(man[i].name);

printf("input phone:\n");

gets(man[i].phone);

}

printf("name\t\t\tphone\n\n");

for(i=0;i

3.利用下列结构和初始化条件,用指针变量输出结构数组。struct stu

{

int num;

char *name;

char sex;

float score;

}boy[5]={

{101,"Zhou ping",'M',45},

{102,"Zhang ping",'M',62.5},

{103,"Liou fang",'F',92.5},

{104,"Cheng ling",'F',87},

{105,"Wang ming",'M',58},

};

答案:

#include "stdio.h"

main()

{

struct stu *ps;

printf("No\tName\t\t\tSex\tScore\t\n");

for(ps=boy;ps

}

4 编写一个链表输出的函数print 。

答案:

void print( struct student *head)

{

struct student *p;

printf("\nNow,These %d records are:\n",n);

p=head;

if (head!=NULL)

do

{

printf("%ld %5.1f\n",p->num,p->score);

p=p->next;

}while (p!=NULL);

}

5.写一函数从链表中删除学号为指定值 num 的结点答

案:

struct student *del(struct student *head;long num) {struct student *p1,*p2;

if (head==NULL)

{printf("\nlist null!\n");goto end;}

p1=head;

while (num!=p1->num&&p1->next!=NULL)

{p2=p1;p1=p1->next;}

if (num==p1->num)

{if (p1==head) head=p1->next;

else p2->next=p1->next;

printf("delete:%ld\n",num);

n=n-1; }

else printf("%ld not been found!\n",num);

end:

return(head);

}

文件编程:

1.读入文件 e 盘上的文件 c1.doc,在屏幕上输出。

答案:

#include

main()

{ FILE *fp;char ch; if((fp=fopen("e:\\c1.c","rt"))==NULL) { printf("\nCannot open file strike any key exit!");

getch(); exit(1);}

ch=fgetc(fp);

while(ch!=EOF)

{ putchar(ch);

ch=fgetc(fp);}

fclose(fp);}

2.从键盘输入一行字符,写入一个文件,再把该文件内容读出显示在屏幕上。答案:

#include

main()

{

FILE *fp;

char ch;

if((fp=fopen("e:\\tt.c","a"))==NULL)

{

printf("Cannot open file strike any key exit!");

getch();

exit(1);

}

printf("input a string:\n");

ch=getchar();

while (ch!='\n')

{ fputc(ch,fp);

ch=getchar();

}

rewind(fp);

ch=fgetc(fp);

while(ch!=EOF)

{ putchar(ch);

ch=fgetc(fp); }

printf("\n");

fclose(fp);

}

3.从string文件中读入一个含10 个字符的字符串放入 e 盘 tt.c 文件中。

答案:

#include

main()

{ FILE *fp;

char str[11];if((fp=fopen(“e:\\tt.c","rt"))==NULL)

{ printf("\nCannot open file any key exit!");

getch();

exit(1); }

fgets(str,11,fp);

printf("\n%s\n",str);

fclose(fp);}

4.利用结构体,从键盘输入两个学生基本信息数据,写入 e 盘 tt.c 文件中,再读出这两个学生的数据显示在屏幕上。

struct stu

{

char name[10];

int num;

int age;

char addr[15];

}

boya[2],*pp;

答案:

#include

struct stu

{

char name[10];

int num;

int age;

char addr[15];

}

boya[2],*pp;

main()

{

FILE *fp;

char ch;

int i;

pp=boya;

if((fp=fopen("e:\\tt3.c","wb+"))==NULL)

{

printf("Cannot open file strike any key exit!");

getch();

exit(1);

}

printf("\ninput data\n");

for(i=0;i<2;i++,pp++)

scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr); pp=boya;

fwrite(pp,sizeof(struct stu),2,fp);

rewind(fp);

fread(pp,sizeof(struct stu),2,fp);

printf("\nname\tnumber age addr\n");

for(i=0;i<2;i++,pp++)

printf("%s\t%5d%7d %s\n",pp->name,pp->num,pp->age,pp->addr); fclose(fp);

getch();

}

相关主题
文本预览
相关文档 最新文档