C程序设计选择题汇总
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C程序设计选择题汇总
C程序设计选择题汇总
⼀、单选题(每⼩题2分,共30分) 答案填⼊下表
1.以下不合法的C语⾔标识符是( )。
A、_1
B、Int
C、a_b
D、a--b
2.设a和b均为float型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是( )。
A、6.500000
B、6
C、5.500000
D、6.000000
3.以下叙述错误的是( )。
A、⼀个C程序可以包含多个不同名的函数
B、⼀个C程序只能有⼀个主函数
C、C程序在书写时,有严格的缩进要求,否则不能编译通过
D、C程序的主函数必须⽤main作为函数名
4.若a 是数值类型,则逻辑表达式(a==1)||(a!=1)的值是:( )。
A、1
B、0
C、2
D、不知道a 的值,不能确定
5.巳知字母A的ASCII码是65,以下程序的执⾏结果是 ( )
#include
main()
{ char c1='A',c2='Y';
printf("%d,%d\n",c1,c2); }
A、A,Y
B、65,89
C、65,90
D、65, 65
6.以下⼀维数组初始化语句中,正确的是( )。
A、int a[5]={1,2};
C、int a[5]={5*2}
D、int a[]=(1,2,0,0,0);
7.若有char c[5]={'c','d','\0','e','\0'};则执⾏语句printf("%s",c);结果
是( )。
A、cd\0e
B、'c''d'
C、cd
D、cd e
8.设变量均已正确定义并且赋值,以下与其他三组输出结构不同的⼀组语句是( )。
A、x++; printf(“%d\n”,x);
B、n=++x; printf(“%d\n”,n);
C、++x; printf(“%d\n”,x);
D、n=x++; printf(“%d\n”,n);
9.下⾯程序的输出结果是( )。
main( )
{ int i, x[3][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<4;i+=2) printf(″%d″, x[i][1]);
}
A、 5 1
B、 5 2
C、 8 2
D、 9 3
10.若k是int类型变量,且有以下for语句
for(k=-1;k<0;k++) printf(“****\n");
下⾯关于语句执⾏情况的叙述中正确的是( )。
A、循环体执⾏⼀次
B、循环体执⾏两次
C、循环体⼀次也不执⾏
D、构成⽆限循环
11.若有定义语句: int k1=10, k2=20;,执⾏表达式(k1=k1>k2) && (k2=k2>k1)后,k1和k2的值分别为( )。
A、0和1
B、0和20
C、10和1
12.下列表达式的值为0的是( )。
A、 3﹪5
B、 3/5.0
C、3<5
D、3/5
13.以下程序段的输出结果是( )。
int a=10,b=50,c=30;
if(a>b)
a=b;
b=c;
c=a;
printf(“a=%d b=%d c=%d\n”,a,b,c);
A、a=10 b=50 c=10
B、a=10 b=30 c=10
C、a=50 b=30 c=10
D、a=50 b=30 c=50
14.下⾯结构体的定义语句中,错误的是( )。
A、struct ord {int x; int y; int z;}; struct ord a;
B、struct ord {int x; int y; int z;}a;
C、struct ord {int x; int y; int z;} struct ord a;
D、struct {int x; int y; int z;} a;
15.已知:int a,*p=&a; 则为了得到变量a的值,下列错误的表达式为( )。
A、p[0]
B、*p
C、&*a
D、*&a
答案:1-5 DDCAB 6-10 ACDCA 11-15 BDBCA
⼀、单选题(20⼩题,每题1分,共20分)
1、下⾯合法的C语⾔字符常量是_________.
A) '\t' B) "A" C) 65 D) A
2、⼀个C语⾔的执⾏是从___________.
A) 本程序的主函数开始,到本程序的主函数结束
B) 本程序的第⼀个函数开始,到本程序的最后⼀个函数结束
C) 本程序的主函数开始,到本程序的最后⼀个函数结束
D) 本程序的第⼀个函数开始,到本程序的主函数结束
3、为了避免嵌套的if-else语句的⼆义性,C语⾔规定else总是与______组成配对关系.
A) 缩排位置相同的if
B) 在其之前未配对的if
C) 在其之前尚未配对的最近的if
D) 同⼀⾏上的if
4. 在C语⾔中,字符型数据在内存中的存储形式是______
A)原码 B)补码 C)反码 D)ASCII码
5. 在C语⾔中,⼗进制数47可等价地表⽰为______
A) 2f B) 02f C) 57 D) 057
6. 设有定义:int x=12,n=5; 则表达式 x%=(n%2) 的值为 ______
A) 0 B) 1 C) 2 D) 3
7. 若i为整型变量,则以下循环的次数是______
for(i=2;i==0;)printf(“%d”,i--);
A)⽆限次 B) 0次 C) 1次 D) 2次
8. 有如下定义:long m;char c;float x;double y;则表达式c+m*x/y的值的类型是______ A) long B) char C) float D) double
9、若x和y都是int型变量,x=100,y=200,且有下⾯的程序⽚段:
printf("%d",(x,y));
上⾯程序⽚段的输出结果是______.
A) 200 B) 100
C) 100 200 D) 输出格式符不够,输出不确定的值
10、设int a=12,则执⾏完语句a+=a-=a*a后,a的值是________
A) 552 B) 264 C) 144 D) -264
11、C语⾔提供的合法的数据类型关键字是_________.
A) Double B) short C) integer D) Char
12、表达式: 10!=9的值是__________.
A) true B) ⾮零值C) 0 D) 1
13、若要求在if后⼀对圆括号中表⽰a不等于0的关系,则能正确表⽰这⼀关系的表达式为_____.
A) a<>0 B) !a C) a=0 D) a
14、为表⽰关系x≥y≥z,应使⽤C语⾔表达式_____.
A) (x>=y)&&(y>=z) B) (x>=y)AND(y>=z) C) (x>=y>=z) D) (x>=y) & (y>=z)
15、对于for(表达式1;;表达式3)可理解为________.
A) for(表达式1;0;表达式3)
B) for(表达式1;1;表达式3)
C) for(表达式1;表达式1;表达式3)
D) for(表达式1;表达式3;表达式3)
16、以下叙述正确的是________.
A) continue语句的作⽤是结束整个循环的执⾏
B) 只能在循环体内和switch语句体内使⽤break语句
C) 在循环体内使⽤break语句或continue语句的作⽤相同
D) 从多层循环嵌套中退出时,只能使⽤goto语句
17、下⾯程序的输出结果是________.
#include
A.⾼级语⾔ B.⾃然语⾔ C.机器语⾔ D.汇编语⾔
2.如有int a=11;则表达式(a++*1/3)的值是:
A.0 B.3 C.4 D.12
3.类的字段和⽅法的默认访问修饰符是:
A. public B. private C. protected D. internal
4.对于在代码中经常要⽤到的且不会改变的值,可以将其声明为常量。
如圆周率PI始终为3.14。
现在要声明⼀个名为PI的圆周率常量,下⾯哪段代码是正确的?
A.const float PI;PI = 3.14f;
B.const float PI = 3.14f;
C.float const PI;PI = 3.14f;
D.float const PI = 3.14f;
5.请问经过表达式a=3+3>5?0:1的运算,变量a的最终值是什么?。
A.6 B.1 C.0 D.true
6.下列语句是MyClass的⼀部分,obj是MyClass的⼀个对象。
private class subclass
{
public int data;
}
void change(ref int x) { x=1;}
public void test()
{
subClass s=new subClass();
s.data=100;
change(ref s.data);
Console.WriteLine(s.data);
}
则调⽤obj.test()后。
控制台输出()。
A. 100
B. 101
C. 0
D. 1
7.⽤户⾃定义的异常类应该从哪个类中继承()
A. System.ArgumentException
B. System.IO.IOException
C. System.SystemException
D. System.ApplicationException
8.下⾯有关虚⽅法的描述正确的是()。
A. 虚⽅法能在程序运⾏时,动态确定要调⽤的⽅法,因⽽⽐⾮虚⽅法更灵活,更⽅便
B. 在定义虚⽅法时,基类和派⽣类的⽅法定义语句中都要带上virtual修饰符
C. 重写基类的虚⽅法时,为消除隐藏基类成员的警告,需要带上new修饰符
D. 在重写虚⽅法时,需要同时带上override和virtual修饰符
9.下列语句声明了⼀个委托:public delegate int myCallBack(int x);则⽤该委托产⽣
的回调⽅法的原型应该是:
A.void receive (int x)
B.int receive(int num)
C.int receive( )
D.不确定的
10.C#中TestClass为⼀⾃定义类,其中有以下属性定义public void Property{…}
使⽤以下语句创建了该类的对象,并使变量obj引⽤该对象:TestClass obj=new TestClass();
那么,可通过什么⽅式访问类TestClass的Property属性()
A. TestClass.Progerty;
B. TestClass. Property();
C. obj. Property;
D. obj. Property();
11.已知类Base、MyClass 的定义如下
class Base
{
public void Hello()
{
System.Console.WriteLine("Hello in Base!");
}
}
class Derived : Base
{
public void Hello()
{
System.Console.WriteLine("Hello in Derived!");
}
}
则下列语句在控制台中的输出结果为_____。
Derived x = new Derived();
x.Hello();
A. Hello in Base!
B. Hello in Derived!
C. Hello in Base!
D. Hello in Derived!
Hello in Derived! Hello in Base!
12.下列关于接⼝的说法中,哪个选项是正确的?()
A. ⼀个类可以有多个基类和多个基接⼝
B. 抽象类和接⼝都不能被实例化
C. 抽象类和接⼝都可以对成员⽅法进⾏实现
D.派⽣类可以不实现抽象基类的抽象⽅法,但必须实现继承的接⼝的⽅法
13.下列关于构造函数的描述中,哪个选项是正确的?()
A. 构造函数必须与类名相同
B. 构造函数不可以⽤private修饰
C. 构造函数不能带参数
D.构造函数可以声明返回类型
14.引⽤数组元素时,数组下标的数据类型可以允许哪项类型?()
A. 整型常量
B. 整型表达式
C. 整型常量或整型表达式
D. 任何类型的表达式
15.以下类MyClass 的属性count 属于_____属性。
class MyClass
{
int i;
int count
{
get{ return i; }
}
}
A. 只读
B. 只写
C. 可读写
D. 不可读不可写
16.要让⽤户选择和浏览要打开的⽂件,应使⽤什么对话框?()
A. FileDialog
B. OpenFileDialo
C. SaveFileDialo
D. FolderBrowserDialog
17.在Visual Studio 2005中,假设你正在单步调试某个应⽤程序。
程序从⼊⼝开始,调
⽤某个私有⽅法将产⽣异常。
现在代码运⾏到如图所⽰位置,应该使⽤下⾯哪种⽅式进⼀步调试?
A.使⽤逐语句调试
B.使⽤逐过程调试
C.跳出调试
D.停⽌调试
/doc/382d9ed3d8ef5ef7ba0d4a7302768e9950e76e4e.html Framework 2.0中,处理异常是很有⽤的功能。
⼀个try代码块可以有多个catch
块于之对应。
在多个catch块中,下⾯哪个异常应该最后捕获?
A. System.Exception类
B. System.SystemException类
C. System.ApplicationException类
D. System.StackOverflowException类
19.在⼆维坐标系中,通常需要保存⼀组点的坐标。
使⽤⼆维数组是⼀个解决⽅案。
下⾯哪
段代码正确初始化了2⾏2列的整数⼆维数组?
A. int[,] array = new int[2,2];
B. int[][] array = new int[2][2];
C. int[,] array = new int[2][2];
D. int[][] array = new int[2,2];
20.已经定义了⼀个Season枚举,它有4个成员Spring,Summer,Autumn,Winter。
现在
需要定义⼀个名为currentSeason的Season枚举,并将其赋值为Spring,应使⽤下⾯哪段代码?
A. Season currentSeason = Spring;
B. currentSeason = Spring;
C. currentSeason = Season.Spring;
D. Season currentSeason = Season.Spring;
⼀、选择题
(1)⼀个C语⾔程序总是从()开始执⾏
A)书写顺序的第⼀个函数
B)书写顺序的第⼀条执⾏语句
C)主函数main()
D)不确定
(2)设int x=3,y=4,z=5,则下列表达式中的值为0的是( )
A) …x?&&?y?B) x||y+z&&y-z C) x<=y
D) !((x
(3)执⾏以下程序段后,i的值是( )
int i=10;
switch(i+1)
{ case 10: i++; break;
case 11: ++i;
case 12: ++i; break;
default : i=i+1;
}
A) 11 B) 13 C) 12 D) 14
(4)语句while(!e);中的条件!e等价于( )
A) e==0 B)e!=1 C) e!=0 D) 运⾏时出错
(5)⽤int a[4]={1,2}; 对数组进⾏初始化后,数组元素a[3]的值是( )
A) 随机值B) 0 C) 1 D) F
(6)在执⾏char str[10]=“china\0”;strlen(str)的结果是( )
A)5 B) 6 D) 7 D 9
(7)若有定义,char *p=”computer”; 则语句printf(“%c”,*(p+2))运⾏结果是( )
A) 随机值B) m C)o D) omputer
(8)在以下函数调⽤语句中
fun1(x,10,(x,10),fun2(y,10,(y,10)));
函数fun1参数的个数为( )
A) 8 B) 4
C) 5 D) 编译出错
(9) 在说明⼀个结构体变量时系统分配给它的存储空间是()
A)该结构体中第⼀个成员变量所需存储空间B) 该结构体中最后⼀个成员变量所需存储空间
C)该结构体中占⽤最⼤存储空间的成员变量所需存储空间D) 该结构体中所有成员变量所需存储空间的总和Key:CDCAB ABBD
1. ⽤C语⾔编写的代码程序
A)可⽴即执⾏B)是⼀个源程序C)经过编译即可执⾏D)经过编译解释才能执⾏
2. C语⾔中⽤于结构化程序设计的三种基本结构是
A)顺序结构、选择结构、循环结构B)if、switch、break C)for、while、do-while D)if、for、continue 3. 以下定义语句中正确的是
A)char a='A'b='B'; float a=b=10.0;C)int a=10,*b=&a; D)float *a,b=&a;
4.下列选项中,不能⽤作标识符的是
A)_1234_ B)_1_2 C) int_2_ D)2_int_
5.在函数调⽤过程中,如果函数funA调⽤了函数funB,函数funB⼜调⽤了函数funA,则
A)称为函数的直接递归调⽤B)称为函数的间接递归调⽤
C)称为函数的循环调⽤D)C语⾔中不允许这样的递归调⽤
6.以下叙述中正确的是
A)局部变量说明为static存储类,其⽣存期将得到延长
B)全局变量说明为static存储类,其作⽤域将被扩⼤
C)任何存储类的变量在未赋初值时,其值都是不确定的
D)形参可以使⽤的存储类说明符与局部变量完全相同
7.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是
A)for(i=1,p=1;i<=5;i++) p*=i;B)for(i=1;i<=5;i++){ p=1; p*=i;}
C)i=1;p=1;while(i<=5){p*=i; i++;}D)i=1;p=1;do{p*=i; i++; }while(i<=5);
8.有以下程序
main()
{ char a='a',b;
printf("%c,",++a);
printf("%c\n",b=a++);}
程序运⾏后的输出结果是a)b,b B)b,c C)a,b D)a,c
9.有以下函数定义:
void fun(int n, double x) { …… }
若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调⽤语句是
A)fun(int y,double m); B)k=fun(10,12.5) C)fun(x,n); D)void fun(n,x)
10.已定义c为字符型变量,则下列语句中正确的是
A)c='97'; B)c="97"; C)c=97; D)c="a";
11.以下能正确定义⼀维数组的选项是
A)int num[]; B)#define N 100 C)int num[0..100]; D)int N=100;
int num[N]; int num[N];
12.以下能正确定义数组并正确赋初值的语句是
A)int N=5,b[N][N]; B)int a[1][2]={{1},{3}};C)int c[2][]= {{1,2},{3,4}}; D)int
d[3][2]={{1,2},{34}};
13.有以下程序
main()
for (i=0; i<3; i++)
switch (i)
{ case 1: printf("%d ", i);
case 2: printf("%d ", i);
default : printf("%d ", i); }
}
执⾏后输出结果是
A)011122 B)012 C)012020 D)120
14.有以下程序
main()
{ int p[7]={11,13,14,15,16,17,18}, i=0,k=0;
while(i<7 && p[i]%2) { k =k+ p[i]; i++; }
printf("%d\n", k);
}
执⾏后输出结果是
A)58 B)56 C)45 D)24
15.以下叙述中正确的是
A)C语⾔⽐其他语⾔⾼级B)C语⾔可以不⽤编译就能被计算机识别执⾏
C)C语⾔以接近英语国家的⾃然语⾔和数学语⾔作为语⾔的表达形式
D)C语⾔出现的最晚,具有其他语⾔的⼀切优点
16.下列叙述中正确的是
A)C语⾔中既有逻辑类型也有集合类型B)C语⾔中没有逻辑类型但有集合类型
C)C语⾔中有逻辑类型但没有集合类型D)C语⾔中既没有逻辑类型也没有集合类型17.以下叙述中正确的是
A)C程序中注释部分可以出现在程序中任意合适的地⽅B)花括号"{"和"}"只能作为函数
体的定界符
C)构成C程序的基本单位是函数,所有函数名都可以由⽤户命名D)分号是C语句之间的分隔符,不是语句的⼀部分Key:BACDB ABACC BDADC DA
⼀、单项选择题(本⼤题共20题,每题2分,共40分)
1.以下不是C语⾔的特点的是(b)
A、C语⾔简洁、紧凑
B、能够编制出功能复杂的程序
C、C语⾔可以直接对硬件进⾏操作
D、C语⾔移植性好
2.以下不正确的C语⾔标识符是(d)
B、abc
C、a_bc
D、ab.c
3.⼀个C语⾔程序是由(b)
A、⼀个主程序和若⼲⼦程序组成
B、函数组成
C、若⼲过程组成
D、若⼲⼦程序组成
4.⼀个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是(b)
A、有零个或多个输⼊
B、有零个或多个输出
C、有穷性
D、可⾏性
5.设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为(c)
A、int
B、float
C、double
D、不确定
6.在C语⾔中,char型数据在内存中的存储形式是(d)
A、补码
B、反码
C、源码
D、ASCII码
7.有如下程序,输⼊数据:12345M678<cR>后(表⽰回车),x的值是(b)。
#include
main(){
intx;
floaty;
scanf("%3d%f",&x,&y);
}
A、12345
B、123
C、45
D、345
A、a=1,b=2
B、b++;
C、a=b=5
D、b=int(x);
9.以下程序的执⾏结果是(a)
#include
{
inti=10,j=10;
printf("%d,%d\n",++i,j--);
}
A、11,10
B、9,10
C、11,9
D、10,9
10.巳知字母A的ASCII码是65,以下程序的执⾏结果是(d)
#include
main()
{
charc1='A',c2='Y';
printf("%d,%d\n",c1,c2);
A、A,Y
B、65,65
C、65,90
D、65,89
11.下列运算符中优先级最⾼的是(d)
A、<
B、⼗
C、%
D、!=
12.设x、y和z是int型变量,且x=3,y=4,z=5,则下⾯表达式中值为0是(d)。
A、’x’&&’y’
B、x<=y
C、x||y+z&&y-z
D、!((x<y)&&!z||1)
A、’a’<=c1<=f’z’
B、(c1>=a)&&(c1<=z)
C、(‘a’>=c1)(‘z’<=c1)
D、(c1>=’a’)&&(c1<=’z’)
14.字符串"a"在内存中占据的字节个数为(c)
A、0
B、1
C、2
D、3
15.下⾯有关for循环的正确描述是(d)
A、for循环只能⽤于循环次数已经确定的情况
B、for循环是先执⾏循环体语句,后判定表达式
C、在for循环中,不能⽤break语句跳出循环体
D、for循环体语句中,可以包含多条语句,但要⽤花括号括起来
16.下⾯程序的运⾏结果是(c)
#include
main()
{intnum=0;
while(num<=2)
{num++;
printf(“%d,num);
}
}
A、1
B、12
C、123
D、1234
17.以下描述正确的是(c)
A、由于do-while循环中循环体语句只能是⼀条可执⾏语句,所以循环体内不能使⽤复合语句。
B、do-while循环由do开始,⽤while结束,在while(表达式)后⾯不能写分号。
C、在do-while循环体中,⼀定要有能使while后⾯表达式的值变成零(“假”)的操作。
D、do-while循环中,根据情况可以省略while。
18.以下对⼀维整形数组a的正确说明是(d)
A、inta(10);
C、intn;
D、inta[10];scanf(“%d”,&n);inta[n];
19.以下对⼆维数组a的正确说明是(c)
A、inta[3][];
B、floata(3,4);
C、doublea[1][4];
D、floata(3)(4);
20.若⼆维数组a有m列,则在a[j]前⾯的元素个数为(b)
A、j*m+i
B、i*m+j
C、i*m+j-1
D、i*m+j+1
⼀、单项选择题(在每⼩题的四个备选答案中,选出⼀个正确答案,并将正确答案的序号填在题⼲的括号内。
每⼩题1分,共20分)
1、在C语⾔中,下列标识符中合法的是( )
A). -int B). in1_3 C). A_B!D D). const
2、不属于C语⾔基本数据类型的是( )
A). int B). union C). char D). unsigned
3、下⾯是对宏定义的描述。
不正确的是( )
A). 宏不存在类型问题,宏名⽆类型,它的参数也⽆类型
B). 宏替换不占⽤运⾏时间
C). 宏替换只是字符串的简单替代
D). 宏替换时先检查类型,类型⼀致时才可以替换
4、C语⾔中,″\\xfds″在内存中占⽤的字节数是( )
A).3 B).4 C).5 D).6
5、设int x;则执⾏printf(″%x\n″,~x^x);的结果是( )
A). ffffffff B). ff C). 0 D). 1
6、对于while语句,错误的说法是( )
A).⽤条件控制循环体的执⾏次数B).循环体⾄少要执⾏⼀次
C).循环体有可能⼀次也不执⾏D).循环体中可以包含若⼲条语句
7、执⾏下列语句后输出的结果是( )
int a=8,b=7,c=6;
if(ac){a=c;c=b;}
printf("%d,%d,%d\n",a,b,c);
8、设int a=9,b=20;则printf(″%d,%d\n″,a--,--b);的输出结果是( )
A).9,19 B).9,20 C).10,19 D).10,20
9、设static char x[ ]=″12345″,y[ ]={′1′,′2′,′3′,′4′,′5′,′\0′};那么( )
A).x数组的长度等于y数组的长度B).x数组的长度⼤于y数组的长度
C).x数组的长度少于y数组的长度D).x数组与y数组的存储区域相同
10、设int i,x[3][3]={1,2,3,4,5,6,7,8,9};则下⾯语句的输出结果是( )
for(i=0;i<3;i++)
printf(″%d″,x[i][2-i]);
A).147 B).159 C).357 D).369
11、执⾏完下列语句后,n的值是( )
int n;
for (n=0 ; n<100 ; n=2*n+1);
A).125 B).126 C).127 D).128
12、有以下语句:int a=6;a+=a-=a*a;printf(―%d‖,a);输出结果( )
A).–132 B).–60 C). -24 D). 0
13、为了连接两个字符串s1与s2,应当使⽤( )
A). strcat( s1,s2 ) B). strcpy( s1, s2 ) C). strlen( s1, s2 ) D). strcmp( s1, s2 )
14、设int a,*p;则语句p=&a;中的运算符―&‖的含义是( )
A).位与运算 B).逻辑与运算C).取指针内容 D).取变量地址
15、下⾯输出的结果为( )
i nt a=13, b=64;
printf(―%d\n‖, !a || (b>>3) );
A).13 B).64
C).1 D).0
16、下列定义正确的是( )
A).enum t={a,b}x; B). enum t{1,2}x; C). e num {′+′,′-′}x;D). enum t{a,b}x;
17、设有定义:struct u{int a[4];float b[3]; char c[16];}aa;
则printf(″%d\n″,sizeof(aa));的输出是( )
A).32 B).36 C).12 D).8
18、数据-54.78在⽂本⽂件中占⽤的字节个数是( )
A).4 B).5 C).6 D).8
19、在宏定义#define p(r) 3.14*r中,请问宏名是( )
A). p B). p(r) C). 3.14*r D). p(r) 3.14*r
20、要打开⼀个已存在的⽤于修改的⾮空⼆进制⽂件“hello.txt”,正确语句是( )
C). fp=fopen( "hello.txt ","w" ) D). fp=fopen( "hello.txt ","r+" )
⼀、单项选择题:(每⼩题1分,共20分)
⼀、选择题(每题1.5分,共计45分)
1、以下叙述正确的是【】
A.C语⾔程序是由过程和函数组成的
B.C语⾔函数可以嵌套调⽤,例如:fun(fun(x))
C.C语⾔函数不可以单独编译
D.C语⾔中除了main函数,其他函数不可作为单独⽂件形式存在
2、以下关于C语⾔的叙述中正确的是【】
A.C语⾔中的注释不可以夹在变量名或关键字的中间
B.C语⾔中的变量可以在使⽤之前的任何位置进⾏定义
C.在C语⾔算术表达式的书写中,运算符两侧的运算数类型必须⼀致
D.C语⾔的数据常量中夹带空格不影响常量的正常使⽤
3、以下C语⾔⽤户标识符中,不合法的是【】
A._1
B.AaBc
C.a_b
D.a—b
4、若有定义:double a=22;int i=0,k=18;,则不符合C语⾔规定的赋值语句是【】A.a=a++,i++;
B.i=(a+k)<=(i+k);
C.i=a%11;
D.i=!a;
5、有以下程序
#include
main()
{ char a,b,c,d;
scanf(“%c%c”,&a,&b);
c=getchar(); d=getchar();
printf(“%c%c%c%c\n”,a,b,c,d);
34
则输出结果是【】
A.1234
B.12
C.12
3
D.12
34
6、以下关于C语⾔数据类型使⽤的叙述中错误的是【】
A.若要准确⽆误差的表⽰⾃然数,应使⽤整数类型
B.若要保存带有多位⼩数的数据,应使⽤双精度类型
C.若要处理如“⼈员信息”等含有不同类型的相关数据,应⾃定义结构体类型D.若只处理“真”和“假”两种逻辑值,应使⽤逻辑类型
7、若a是数值类型,则逻辑表达式(a= =1)||(a!=1)的值是【】
A.1
B.0
C.2
D.不知道a的值,不能确定
8、以下选项中与if(a= =1)a=b; else a++; 语句功能不同的switch语句是【】A.switch(a)
{case:a=b;break;
default:a++;
}
B.switch(a= =1)
{case 0:a=b;break;
case 1:a++;
}
C.switch(a)
{default:a++;break;
case 1:a=b;
}
D.switch(a= =1)
{case 1 : a=b;break;
9、有如下嵌套的if语句
if (a
if(a
else k=c;
else
if(b
else k=c;
以下选项中与上述if语句等价的语句是【】
A.k=(a<b)?a:b; k=(b<c)?b:c;
B.k=(a<b)?((b<c)?a:b:((b>c)?b:c); C.k=(a<b)?((a<c)?a:c):((b<e)?b:c); D.k=(a<b)?a:b; k=(a<c)?a:c;
10、有以下程序
#include<stdio.h>
main()
{in i,j,m=1;
for(i=1;i<3;i++)
{for(j=3;j>O;j--)
{if(i*j)>3)break;
m=i*j;
}
}
printf("m=%d\n",m);
}
程序运⾏后的输出结果是【】
A.m=6
B.m=2
C.m=4
D.m=5
11、有以下程序
#include(stdio.h>
main()
{int a=l;b=2;
printf("%d,%d\n",a,b);
}
程序运⾏后的输出结果是【】
A.9,18
B.8,11
C.7,11
D.10,14
12、有以下程序,其中k的初值为⼋进制数
#include
main()
{int k=011;
printf("%d\n",k++);
}
程序运⾏后的输出结果是【】
A.12
B.11
C.10
D.9
13、下列语句组中,正确的是【】
A.char *s;s="Olympic";
B.char s[7];s="Olympic";
C.char *s;s={"Olympic"};
D.char s[7];s={"Olympic"};
14、以下关于return语句的叙述中正确的是【】
A.⼀个⾃定义函数中必须有⼀条return语句
B.⼀个⾃定义函数中可以根据不同情况设置多条return语句C.定义成void类型的函数中可以有带返回值的return语句D.没有return语句的⾃定义函数在执⾏结束时不能返回到调⽤处15、下列选项中,能正确定义数组的语句是【】
A.int num[0..2008];
B.int num[];
C.int N=2008;
int num[N];
D.#define N 2008
int num[N];
16、有以下程序
#include
void fun(char *c,int d)
{*c=*c+1;d=d+1;
printf("%c,%c,",*c,d);
main()
{char b='a',a='A';
fun(&b,a);printf("%c,%c\n",b,a);
}
程序运⾏后的输出结果是【】
A.b,B,b,A
B.b,B,B,A
C.a,B,B,a
D.a,B,a,B
17、若有定义int(*Pt)[3];,则下列说法正确的是【】
A.定义了基类型为int的三个指针变量
B.定义了基类型为int的具有三个元素的指针数组pt
C.定义了⼀个名为*pt、具有三个元素的整型数组
D.定义了⼀个名为pt的指针变量,它可以指向每⾏有三个整数元素的⼆维数组18、设有定义double a[10],*s=a;,以下能够代表数组元素a[3]的是【】A.(*s)[3]
B.*(s+3)
C.*s[3]
D.*s+3
19、有以下程序
#include(stdio.h)
main()
{int a[5]={1,2,3,4,5},b[5]={O,2,1,3,0},i,s=0;
for(i=0;i<5;i++) s=s+a[b[i]]);
printf("%d\n", s);
}
程序运⾏后的输出结果是【】
A.6
B.10
C.11
20、有以下程序
#include
main()
{int b [3][3]={O,1,2,0,1,2,O,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=ij<=1;j++) t+=b[i][b[j][i]];
printf("%d\n",t);
}
程序运⾏后的输出结果是【】
A.1
B.3
C.4
D.9
21、若有以下定义和语句
char s1[10]="abcd!",*s2="\n123\\";
printf("%d %d\n", strlen(s1),strlen(s2));则输出结果是【】
A.5 5
B.10 5
C.10 7
D.5 8
22、有以下程序
#include
#define N 8
void fun(int *x,int i)
{*x=*(x+i);}
main()
{int a[N]={1,2,3,4,5,6,7,8},i;
fun(a,2);
for(i=O;i<N/2;i++)
{printf("%d",a[i]);}
printf("\n");
}
程序运⾏后的输出结果是【】
B.2234
C.3234
D.1234
23、有以下程序
#include
int f(int t[ ],int n);
main
{ int a[4]={1,2,3,4},s;
s=f(a,4); printf("%d\n",s);
}
int f(int t[ ],int n)
{ if(n>0) return t[n-1]+f(t,n-1); else return 0;
}
程序运⾏后的输出结果是【】A.4
B.1O
C.14
D.6
24、有以下程序
#include
int fun()
{ static int x=1;
x*2; return x;
}
main()
{int i,s=1,
for(i=1;i<=2;i++) s=fun(); printf("%d\n",s);
}
程序运⾏后的输出结果是【】A.O
B.1
C.4
D.8
25、有以下程序
#include
#define SUB(a)(a)-(a)main()
{ int a=2,b=3,c=5,d;
d=SUB(a+b) *c;
printf("%d\n",d);
}
程序运⾏后的输出结果是【】A.0
B.-12。