C语言题库(1).docx
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一. 选择题 (单项)
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<stdio.h>
main()
{
int m=5,n=10;
printf( “%d,%d\n”,m++,--n);
}
A 5, 9
B 6,9
C 5,10D6,10
20.以下程序的运行结果是——。
# include<stdio.h>
main()
{
int a=201,b=012;
printf( “%2d,%2d\n”,a,b);
}
A 01,12
B 201,10
C 01,10D20,01
21.设有如下程序
# include<stdio.h>
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<stdio.h>
main()
{union
{ long a;
int b;
char c;}m;
printf("%d\n",sizeof(m));}
A.2
B.4
C.6
D.8
25.以下程序的运行结果是 :( )
#include<stdio.h>
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<NUM;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<NUM;i++)printf("%s\t\t\t%s\n",man[i].name,man[i].phone); }
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<boy+5;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<stdio.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
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();
}。