C语言基础知识练习题(精选)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言基础知识练习题
一、选择题
1. 以下不是C语言的特点的是()。
A、语言简洁紧凑
B、能够编制出功能复杂的程序
C、C语言可以直接对硬件操作
D、C语言移植性好
2. 下列字符序列中,不可用作C语言标识符的是()。
A.abc123 B.no.1 C._123_ D._ok
3. 正确的C语言标识符是()。
A._buy_2 B.2_buy C.?_buy D.buy?
4. 请选出可用作C语言用户标识符的一组标识符()。
A.void B.a3_b3 C.For D.2a
define _123 -abc DO
WORD IF Case sizeof
5. 下列符号中,不属于转义字符的是()。
A.\\ B.\0xAA C.\t D.\0
6. 不属于C语言关键字的是()。
A.int B.break C.while D.character
7. 是C语言提供的合法关键字的是()。
A.Float B.signed C.integer D.Char
8. 以下不能定义为用户标示符的是()。
A.scanf B.Void C._3com_ D.int
9. 一个C程序是由()。
A一个主程序和若干子程序组成 B一个或多个函数组成
C若干过程组成 D若干子程序组成
10. C语言程序的基本单位是()。
A.程序行 B.语句 C.函数 D.字符
11. 下列说法中,错误的是()。
A.每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号B.每个函数都有一个函数头和一个函数体,主函数也不例外
C.主函数只能调用用户函数或系统函数,用户函数可以相互调用
D.程序是由若干个函数组成的,但是必须有、而且只能有一个主函数
12. 以下说法中正确的是()。
A.C语言程序总是从第一个定义的函数开始执行
B.在C语言程序中,要调用的函数必须在main( )函数中定义
C.C语言程序总是从main( )函数开始执行
D.C语言程序中的main( )函数必须放在程序的开始部分
13. C编译程序是()。
A.C程序的机器语言版本 B.一组机器语言指令
C.将C源程序编译成目标程序 D.由制造厂家提供的一套应用软件
14.以下选项中,合法的用户标识符是()。
A.long B._2abc C.3dmax D.A.dat
15.以下选项中,合法的实型常数是()。
A.5E2.0 B.E-3 C.2E0 D.1.3E
16.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的
字符常量’\101’是( )。
A .字符A
B .字符a
C .字符c
D .非法的常量
17.以下选项中, 合法转义字符的选项是( )。
A .’\\’
B .’\018’
C .’xab ’
D .’\abc ’
18.以下选项中,正确的字符常量是( )。
A .”F ”
B .’\\’’
C .’W ’
D .’’
19.以下选项中可作为C 语言合法整数的是
A .10110
B B .0386
C .0Xffa
D .x2a2
20.下列变量定义中合法的是
A .short _a=1-.le-1;
B .double b=1+5e2.5;
C .long do=0xfdaL;
D .float 2_and=1-e-3;
21.与数学式子1
29 x x n
对应的C 语言表达式是( )。
A .9*x^n/(2*x-1) B .9*x**n/(2*x-1)
C .9*pow(x,n)*(1/(2*x-1))
D .9*pow(n,x)/(2*x-1)
22.若有代数式cd
ab 3,则不正确的C 语言表达式是( )。
A .a/c/d*b*3 B .3*a*b/c/d C .3*a*b/c*d D .a*b/d/c*3
23.已知各变量的类型说明如下:
int m=8,n, a, b; unsigned long w=10; double x=3.14, y=0.12;
则以下符合C 语言语法的表达式是( )。
A .a+=a-=(b=2)*(a=8)
B . n=n*3=18
C .x%3
D .y=float (m)
24.以下符合C 语言语法的赋值表达式是( )。
A .a=9+b+c=d+9
B .a=(9+b, c=d+9)
C .a=9+b, b++, c+9
D .a=9+b++=c+9
25. 已知字母A 的ASCII 码为十进制数65,且S 为字符型,则执行语句S=’A ’+’6’-’3’;
后,S 中的值为( )。
A .’D ’ B .68 C .不确定的值 D .’C ’
26.在C 语言中,要求运算数必须是整型的运算符是( )。
A ./
B .++
C .*=
D .%
27.若有说明语句:char s=’\72’;则变量s ( )。
A .包含一个字符
B .包含两个字符
C .包含三个字符
D .说明不合法,s 的值不确定
28.若有定义:int m=7; float x=2.5, y=4.7; 则表达式x+m%3*(int)(x+y)%2/4的值是( )。
A .2.500000
B .2.750000
C .3.500000
D .0.000000
29.在C 语言中,char 型数据在内存中的存储形式是( )。
A .补码
B .反码
C .原码
D .ASCII 码
30.设变量x 为float 类型,m 为int 类型,则以下能实现将x 中的数值保留小数点后两位,
第三位进行四舍五入运算的表达式是( )。
A .x=(x*100+0.5)/100.0
B .m=x*100+0.5, x=m/100.0
C .x=x*100+0.5/100.0
D .x=(x/100+0.5)*100.0
31.表达式13/3*sqrt(16.0)/8的数据类型是( )。
A .int
B .float
C .double
D .不确定
32.设以下变量均为int 类型,则值不等于7的表达式是( )。
A .(m=n=6, m+n, m+1)
B .(m=n=6, m+n, n+1)
C .(m=6, m+1, n=6, m+n)
D .(m=6, m+1, n=m, n+1)
33.假设所有变量均为整型,则表达式(x=2, y=5, y++, x+y)的值是()。
A.7 B.8 C.6 D.2
34.已知s是字符型变量,下面不正确的赋值语句是()。
A.s=’\012’; B.s= ’u+v’; C.s=’1’+’2’; D.s=1+2;
35.已知s是字符型变量,下面正确的赋值语句是()。
A.s=’abc’; B.s=’\08’;C.s=’\xde’; D.s=”\”;
36.若有以下定义,则正确的赋值语句是()。
int x,y; float z;
A.x=1,y=2, B.x=y=100 C.x++; D.x=int (z);
37.设x、y均为float型变量,则不正确的赋值语句是()。
A.++x ; B.x*=y-2; C.y=(x%3)/10; D.x=y=0;
38.下列语句中符合C语言的赋值语句是()。
A.a=7+b+c=a+7; B.a=7+b++=a+7; C.a=7+b,b++,a+7 D.a=7+b,c=a+7; 39.putchar函数可以向终端输出一个()。
A.整型变量表达式值。
B.字符串C.实型变量值。
D.字符或字符型变量值。
40.以下程序段的输出结果是( )。
int a=12345; printf(”%2d\n”, a);
A.12 B.34 C.12345 D.提示出错、无结果
41.若x, y均为int 型,z为double型,以下不合法的scanf()函数调用语句为()。
A.scanf(”%d%lx,%le”,&x,&y,&z);B.scanf (”%2d*%d%lf ”, &x, &y, &z);
C.scanf(”%x%*d%o”, &x,&y);D。
scanf(”%x%o%6.2f”, &x,&y,&z);
42.有如下程序段: int x1,x2;char y1,y2;
scanf(”%d%c%d%c”,&x1,&y1,&x2,&y2);若要求x1、x2、y1、y2的值分别为10、
20、A、B,正确的数据输入是()。
(注:
└┘
代表空格)
A.10A
└┘20B B.10
└┘
A20B C.10
└┘
A
└┘
20
└┘
B D.10A20
└┘
B
43.若变量已正确说明为float类型,要通过语句scanf(”%f %f%f”, &a, &b, &c);给a 赋予10.0, b赋予22.0, c赋予33.0,不正确的输入形式为()。
A.10<回车> B.10.0,22.0,33.0<回车> C.10.0<回车> D.10 22<回车> 22<回车> 22.0 33.0<回车> 33<回车>
33
44.有如下程序,若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的数据输入是()。
(注:
└┘
代表空格)
int x1,x2;char y1,y2;
scanf(”%d%d”,&x1,&x2);scanf(”%c%c”, &y1,&y2);
A.1020AB B.10
└┘20
└┘
ABC C.10
└┘
20 D.10
└┘
20AB
AB
45.已有定义int a=-2;和输出语句:printf(”%8lx”,a);以下正确的叙述是()。
A.整型变量的输出格式符只有%d一种
B.%x是格式符的一种,它可以适用于任何一种类型的数据
C.%x是格式符
D.%8lx不是错误的格式符,其中数字8规定了输出字段的宽度
46.有如下程序段,对应正确的数据输入是()。
float x,y; scanf(”%f%f”, &x,&y);
printf(”a=%f,b=%f”, x,y);
A.2.04<回车> B.2.04,5.67<回车> C.A=2.04,B=5.67<回车> D.2.055.67<回车>
47.有如下程序段,从键盘输入数据的正确形式应是()。
(注:
└┘
代表空格)float x,y,z; scanf(“x=%d,y=%d,z=%d”,&a,&y,&z);
A.123 B.x=1,y=2,z=3 C.1,2,3 D.x=1
└┘ y=2
└┘
z=3
48.以下说法正确的是()。
A.输入项可以为一个实型常量,如scanf(”%f”,3.5);
B.只有格式控制,没有输入项,也能进行正确输入,如scanf(”a=%d,b=5d”);
C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(”%4.2f”,&f);
D.当输入数据时,必须指明变量的地址,如scanf(”%f”,&f);
49.根据定义和数据的输入方式,输入语句的正确形式为:()。
(注:
└┘
代表空格)已有定义:float x,y;
数据的输入方式:1.23<回车>
4.5<回车>
A.scan(”%f,%f”,&x,&y); B.scanf(”%f%f”,&x,&y);
C.scanf(”%3.2f
└┘
%2.1f”,&x,&y); D.scanf(”%3.2f%2.1f”,&x,&y); 50.根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为()。
#include ”stdio.h”
main()
{char s1,s2,s3; 输入语句; printf(”%c%c%c”,s1,s2,s3); }
输入形式:A
└┘B
└┘
C<回车>(注:
└┘
代表空格)输出形式:A
└┘
B
A.scanf(”%c%c%c”,&s1,&s2,&s3); B.scanf(”%c
└┘%
└┘
c%c”,&s1, &s2,&s3);
C.scanf(”%c,%c,%c”,&s1,&s2,&s3); D.scanf(”%c%c”, &s1, &s2,&s3);
51.以下程序的执行结果是:()。
#include ”stdio.h”
main() { int x=2,y=3; printf(”x=%%d,y=%%d\n”,x,y);}
A. x=%2,y=%3
B. x=%%d,y=%%d
C. x=2,y=3
D. x=%d,y=%d
52.以下程序的输出结果是()。
(注:
└┘
代表空格)
#include ”stdio.h”
main()
{ printf(”\nstring1=%15s*”, ”programming”);
printf(”\nstring2=%-5s*”,”boy”); printf(”string3=%2s*”,”girl”);}
A.string1=programming
└┘└┘└┘└┘* B.string1=
└┘└┘└┘└┘
programming*
string2=boy* string2=boy
└┘└┘
*string3=gi* string3=gi*
C.string1=programming
└┘└┘└┘└┘* D.string1=
└┘└┘└┘└┘
programming*
string2=
└┘└┘boy*string3=girl* string2=boy
└┘└┘
*string3=girl*
53.根据题目中已给出的数据的输入和输出形式,程序中输入输出语句的正确内容是()。
#include ”stdio.h”
main(){ int a; float b; 输入语句输出语句}
输入形式:1
└┘2.3<回车> (注:
└┘
代表空格)输出形式:a+b=3.300
A.scanf(”%d%f”,&a,&b); B.scanf(”%d%3.1f”,&a,&b);
printf(”\na+b=%5.3f”,a+b); printf(”\na+b=%f”,a+b); C.scanf(”%d,%f”,&a,&b); D.scanf(”%d%f”,&a,&b);
printf(”\na+b=%5.3f”,a+b) printf(”\na+b=%f”,a+b);
54.阅读以下程序,当输入数据的形式为:12,34,正确的输出结果为()。
#include ”stdio.h”
main() { int a,b; scanf(”%d%d”, &a,&b); printf(”a+b=%d\n”,a+b);} A.a+b=46 B.有语法错误 C.a+b=12 D.不确定值
55.若有定义:int x,y; char s1,s2,s3; 并有以下输出数据:(注:
└┘
代表空格)
1
└┘
2<回车>
U
└┘V
└┘
W<回车>
则能给x赋给整数1,给y赋给整数2,给s1赋给字符U,给s2赋给字符V,给s3赋给字符W的正确程序段是()。
A.scanf(”x=%dy=%d”,&x,&y); s1=getchar();s2=getchar();s3=getchar();
B.scanf(”%d%d”,&x,&y); s1=getchar();s2=getchar();s3=getchar();
C.scanf(”%d%d%c%c%c”,&x,&y,&s1,&s2,&s3);
D.scanf(”%d%d%c%c%c%c%c%c”,&x,&y,&s1,&s1,&s2,&s2,&s3,&s3);
56、设有语句“int i,a;”,执行语句“i=(a=2*3,a*5),a+6”后,变量i的值是:
A、6
B、12
C、30
D、36
57、给定下列程序:int i=65536;printf(“%d”,i);程序的输出结果是:
A、65536
B、0
C、语法错误
D、-1
58、在一个程序中,main()函数出现的位置是【】
A、必须在程序的最后面
B、可以在任意地方
C、必须在程序的最前面
D、必须在系统调用的库函数的后面
59、语句int i=3;k=(i++)+(i++)+(i++);执行后k和i的值分别是:
A、9,6
B、12,6
C、18,6
D、9,3
60、为表示关系“x>=y>=z”,在C语言中应使用表达式【】
A、(y<=x)&&(y>=z)
B、(x>=y)and (y>=z)
C、(x>=y>=z)
D、(x>=y)&(y>=z)
61、写出下面程序的运行结果
#include<stdio.h>
main() {int x=2,y=0,z ; x*=3+2 ;
pintf(“%d,”,x ) ; x*=y=z=4; pintf(“%d”,x ) ;}
A、8,4
B、10,40
C、10,4
D、8,40
62、有如下程序
main() { int i,s; for(i=1;i<=3;s++) s+=i;printf(“%d\n”,s); }
该程序的执行结果是
A、6
B、 3
C、死循环
D、 0
63、有如下程序段
int a=4,b=5,y; char c=’A’;y=(a&&b)&&(c<’B’);
执行该程序段后,y的值为
A、 ture
B、 false
C、 0
D、 1
64、写出下列程序的运行结果是
main()
{int i,j;i=6,j=8;printf(“%d,%d,%d,%d\n”,i,j,++i,j++);}
A、7,8,7,8
B、6,8,7,9
C、7,9,7,9
D、6,8,7,8
65、下面这个程序的输出是
#include <stdio.h>
main(){int y=10;while(y--);printf("y=%d\n",y);}
A y=0
B while构成死循环
C y=1
D y=-1
66、已知字母A和字符’0’的ASCII码分别为十进制数65和48,且c2为字符型,则执行c2=‘A’+‘1’;后,c2中的ascII码值为()
A、B
B、66
C、不确定的值
D、114
67、下面程序的运行结果是
#include<stdio.h>
main() {int a=10,b=20,c=30,d; d=++a<=10||b-->=20||c++;
printf("%d,%d,%d,%d\n",a,b,c,d);}
A、11,19,30,1
B、10,19,30,10
C、 11,19,31,1
D、11,20,30,30
68、己有定义:int x=3, y=4, z=5;,则表达式!(x+y)+z-1&&y+z/2的值是
A 6
B 0
C 2
D 1
69、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是
A、地址传递
B、单向值传递
C、由实参传给形参,再由形参传回给实参
D、传递方式
70、执行下面的程序后,a的值是
#define S(X) X*X
main() {int a=10,k=2,m=1; a=S(k+m); printf(“%d”,a);}
A、 5
B、9
C、4
D、以上都不对
71、当C的值不能为0时,在下列选项中能正确将C的值赋给变量a、b的是
A、c=b=a;
B、(a=c)||(b=c);
C、(a=c)&&(b=c);
D、a=c=b;
72、若x、i、j、k都是int型变量,则计算下面表达式后,x的值为( )。
x=(i=4,j=16,k=32) A、 4 B、16 C、32 D、52
73、逻辑运算符两侧运算对象的数据类型()
A) 只能是0和1 B) 只能是0或非0正数
C) 只能是整型或字符型数据 D) 可以是任何类型的数据
74、若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。
则以下不能满足要求的表达式是()
A、 A%2==1
B、 !(A%2==0)
C、 !(A%2)
D、A%2
75、语句while(!E);中的表达式!E等价于()。
A) E==0 B)E!=1 C)E!=0 D)E==1
76、下面程序段的运行结果是()
a=1;b=2;c=2
while (a<b && a<c) { t=a;a=b;b=t;c--;} printf(%d,%d,%d”,a,b,c);
A、 1,2,0
B、 2,1,0
C、1,2,1
D、 2,1,1
77、以下程序段()
x=-1;
do{ x=x*x; } while(!x);
A、是死循环
B、循环执行二次
C、循环执行一次
D、有语法错误
78、在C语言中,形参必须是()
A、常量
B、变量
C、数值
D、表达式
79、C语言的函数()
A、可以嵌套调用,不能递归调用
B、可以嵌套定义
C、既可以嵌套调用,也可以递归调用
D、不可以嵌套调用
80、以下程序功能是:将小写字母换成大写字母输出。
请在下划线处填上合适语句
#include<stdio.h>
void main {char c; scanf(“%c”,&c); if(______) _________;printf(“%c”,c);}
81、下面四个选项中,均是不合法的转义符的选项是( )。
A) '\"' B) '\1011' C) '\011' D) '\abc'
'\\' '\' '\f' '\101'
'xf' '\A' '\}' 'x1f'
82、下面不正确的字符串常量是( )。
A、'abc'
B、"12'12"
C、"0"
D、" "
83、在C语言中,逻辑值"真"的表示是用( )。
A) true B) 整型值0 C)非另整型值 D) T
84、若有以下定义
char s='\092';则该语句()
A)使s的值包含一个字符 B)定义不合法,s的值不确定
C)使s的值包含4个字符 D)使s的值包含3个字符
85、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3'后,c2中的值为( ) A)D B)68 C)不确定的值 D)C
86、逻辑运算符两侧运算对象的数据类型是 ( )。
A) 只是0或1 B) 只能是0或非0正数
C) 只能是整型或字符型数据 D) 可以是任何合法的类型数据
87、若有int k=7, x=12;,则能使值为3的表达式是( )。
A)x%=(k%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5)
88、判断char型变量c1是否为小写字母的正确表达式为 ( )。
A) 'a'<=c1<='z' B) (c1>=A. &&(c1<='z')
C) ('a'>=c1)||('z'<=c1) D) (c1>='a')&&(c1<='z')
89、在C语言中,char型数据在内存中的存储形式是( )。
A) 补码 B) 反码 C) 原码 D) ASCII码
90、列程序的输出结果是()。
main(){int k=-1;printf("%d,%u\n",k,k);}
A)-1,-1 B)-1,32767 C)-1,32768 D)-1,65535
二、填空题
1. C语言的符号集包括________、________、________。
2.结构化设计中的三种基本结构是________、_______、________。
3. C语言源程序文件的后缀是________,经过编译后生成文件的后缀是________,经过链接后生成文件的后缀是________。
4. C语言的关键字都用________{大写或小写}。
5.一个函数由两部分组成,它们是_______、_______。
6.函数体一般包括_______、_______。
7. C语言是通过_______来进行输入和输出的。
8.以下程序的执行结果________。
#include ”stdio.h”
main() { short i=-1,j=1;
printf(”dec:%d,oct:%o,hex:%x,unsigned:%u\n”,i,i,i,i);
printf(”dec:%d,oct:%o,hex:%x,unsigned:%u\n”,j,j,j,j);}
9.以下程序的执行结果是________。
#include ”stdio.h”
main(){ char s=’b’; printf(”dec:%d,oct:%o,hex:%x,ASCII:%c\n”, s,s,s,s);} 10.以下程序的执行结果是________。
(注:
└┘
代表空格)
#include ”stdio.h”
main()
{ float pi=3.1415927; printf(”%f,%.4f,%4.3f,%10.3f”,pi,pi,pi,pi);
printf(”\n%e,%.4e,%4.3e,%10.3e”,pi,pi,pi,pi);}
11.以下程序的执行结果是:________。
#include ”stdio.h”
main() { char c=’c’+5; printf(”c=%c\n”,c); }
12.以下程序输入1
└┘2
└┘
3后的执行结果是________。
(注:
└┘
代表空格)
#include ”stdio.h”
main()
{ int i,j; char k;
scanf(”%d%c%d”,&i,&k,&j); printf(”i=%d,k=%c,j=%d\n”,i,k,j);}
13.有以下程序,若输入9876543210后的执行结果是________;若输入为:98
└┘76
└┘
543210
后的执行结果是________;若输入为:987654
└┘
3210后的执行结果为:________。
#include ”stdio.h”
main() { int x1,x2; char y1,y2;
scanf(”%2d%3d%3c%c”,&x1,&x2,&y1,&y2);
printf(”x1=%d,x2=%d,y1=%c,y2=%c\n”,x,y);}
14.若x和y均为int型变量,则以下语句的功能是________。
x+=y; y=x-y; x-=y;
15.有一输入函数scanf(”%d”,k);则不能使float类型变量k得到正确数值的原因是16.有如下程序段,输入数据:12345ffl678后,u的值是,v的值是。
int u; float v; scanf(“%3d%f”,&u,&v);
17、在C语言中,表示逻辑"真"值用 .
18、表达式pow(2.8,sqrt(double(x)))值的数据类型为。
19、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是。
20、若x是int型变量,则执行表达式x=(a=4,6*2)后,x的值为
21、若k为 int整型变量且赋值7,请写出赋值表达式 k *= k + 3的运算结果
22、scanf函数是一个标准库函数,它的函数原型在头文件中。
23、getchar函数可以接收个字符,输入数字也按字符处理。
24、在语句中,给变量赋值时,赋值语句必须以结尾。
25、当a=3,b=2,c=1时,表达式f=a>b>c 的值是
26、设x,y,z均为int型变量,请写出描述"x,y中有一个为负数"的表达式
27、若a=6,b=4,c=3,则表达式 a&&b||b-c的值是
28、设x=3,y=-4,z=5,则表达式!(x>y)+(y!=z)||(x+y)&&(y=z)的值是
29、若有以下定义:int x=3,y=2;float a=2.5,b=3.5;则表达式(x+y)%2+(int)a/(int)b的
值为。