//
// main.m
// c语言考试
//
// Created by dllo on 15/10/21.
// Copyright (c) 2015年 dllo. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc,const char * argv[]) {
※选择题(共40题,每题2分)
1、在下列程序段中,枚举变量 c1的值是:
enum color { red,yellow,blue=4,green,white}c1;
c1=yellow;
c1=white;
答案:(D)
A、1
B、3
C、5
D、6
2、若已定义X和Y为double型,则表达式:x=1,y=x+3/2的值是:
答案:(C)
A、1
B、2
C、2.0
D、2.5
3、若有说明:int a[3][4];则对a数组元素的非法引用是:
答案:(D)
A、a[0][2*1]
B、a[1][3]
C、a[4-2][0]
D、a[0][4]
4、下面不正确的字符串常量是:
答案:(A)
A、'abc'
B、"12'12"
C、"0"
D、" "
5、设有以下定义,值为5的枚举常量是:
enum week{sun,mon=4,tue,wed,thu,fri,sat} w;
答案:(A)
A、tue
B、sat
C、fri
D、thu
6、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是:
答案:(C)
A、c=b=a;
B、(a=c)||(b=c);
C、(a=c)&&(b=c);
D、a=c=b;
7、以下程序的输出结果是:
main()
{
int a,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d ",a,b);
}
答案:(B)
A、6,1
B、2,1
C、6,0
D、2,0
8、以下定义语句中正确的是:
答案:(C)
A、char a='A' b='B';
B、float a=b=10.0;
C、int a=10,*b=&a;
D、float *a,b=&a;
9、要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是:
答案:(A)
A、while((ch=getchar())!='N') printf("%c",ch);
B、while(ch=getchar()!='N') printf("%c",ch) ;
C、while(ch=getchar()=='N') printf("%c",ch);
D、while((ch=getchar())=='N') printf("%c",ch);
10、若有以下定义和语句:
int u=010,v=0x10,w=10;
printf("%d,%d,%d ",u,v,w);
则输出结果是:
答案:(A)
A、8,16,10
B、10,10,10
C、8,8,10
D、8,10,10
11、若执下面程序时从键盘上输入5,
main()
{
int x;
scanf("%d",&x);
if(x++>5) printf("%d ",x);
else printf("%d ",x--);
}
则输出是:// 先打印输出,再--
答案:(B)
A、7
B、6
C、5
D、4
12、按照c语言规定的用户标识符命名规则,不能出现在标识符中的是:
答案:(B)
A、大写字母
B、连接符
C、数字字符
D、下划线
13、执行下面的程序段后,变量k中的值为
s[0]=k;
k=s[1]*10;
答案:(A)
A、不定值
B、33
C、30
D、10
14、以下不正确的if语句形式是:
答案:(C)
A、if(x>y&&x!=y)t=x++;
B、if(x==y) x+=y;
C、if(x!=y) scanf("%d",&x)else scanf("%d",&y);
D、if(x<0)x++;
15、当调用函数时,实参是一个数组名,则向函数传送的是:
答案:(B)
A、数组的长度
B、数组的首地址
C、数组每一个元素的地址
D、数组每个元素的值
16、表达式3.6-5/2+1.2+5%2的值是:
答案:(D)
A、4.3
B、4.8
C、3.3
D、3.8
17、以下程序的输出结果是:
main( )
{
int k=17;
printf("%d,%o,%x ",k,k,k);
}
答案:(D)
A、17,021,0x11
B、17,17,17
C、17,0x11,021
D、17,21,11
18、在一个C程序中:
答案:(B)
A、main函数必须出现在所有函数之前;
B、main函数可以在任何地方出现;
C、main函数必须出现在所有函数之后;
D、main函数必须出现在固定位置
19、C语言源程序的基本单位是:
答案:(B)
A、过程
B、函数
C、子程序
D、标识符
20、表示关系12<=x<=y的C语言表达式为:
答案:(B)
A、(12<=x)&(x<=y)
B、(12<=x)&&(x<=y)
C、(12<=x)|(x<=y)
D、(12<=x)||(x<=y)
21、若要求定义具有10个int形元素的一维数组array,则以下的定义语句错误的是:
答案:(D)
A、#define N 10
int a[N];
B、#define n 5
int a[2 * n];
C、int a[5 + 5];
D、int n = 10,a[n] = {0};
22、以下代码的输出结果为:
int array[3] = {1,4};
for(int i = 0;i < 3;i++)
{ printf(“%d ”,array[i]); }
答案:(A)
A、1 4 0
B、0 1 4
C、1 0 4
D、1 4 4
23、设i和k都是int类型,则for循环语句:
for(i=0,k=-1;k=1;i++,k++) printf("**** ");
答案:(D)
A、循环结束的条件不合法
B、循环体一次也不执行
C、循环体只执行一次
D、是无限循环
24、以下程序执行后sum的值是:
main()
{
int i,sum;
for(i=1;i<6;i++) sum+=i;
printf("%d ",sum);
}
答案:(C)
A、15
B、14
C、不确定
D、0
25、如有定义int * p = malloc(15);p当int型数组使用,最多可以使用多少元素:
答案:(A)
A、3
B、4
C、15
D、16
26、设int x=1, y=1; 表达式(!x||y--)的值是:
答案:(B)
A、0
B、1
C、2
D、-1
27、以下程序的输出结果为:
#define ADD(x) x*x
main( )
{
int a=4,b=6,c=7,d=ADD(a+b)*c;
printf("d=%d",d);
}
答案:(A)
A、d=70
B、d=80
C、d=140
D、d=700
28、若执行下面程序时:
int x;
scanf("%d",&x);
if(x++ > 5){ printf( "%d ",x)};
else{ printf("%d ",++x)};
从键盘上输入5,则输出是:
答案:(A)
A、7
B、6
C、5
D、4
29、函数调用:strcat(strcpy(str1,str2),str3)的功能是:
答案:(C)
A、将串str1复制到串str2中后再连接到串str3之后
B、将串str1连接到串str2之后再复制到串str3之后
C、将串str2复制到串str1中后再将串str3连接到串str1之后
D、将串str2连接到串str1之后再将串str1复制到串str3中
30、以下代码的输出结果为:
void fun(int x,int y)
{int temp;
if(x < y)
{ temp = x ; x = y ; y = temp; }
}
main()
{
int a = 4,b = 3,c = 5;
fun(a,b);fun(a,c);fun(b,c);
printf("%d,%d,%d ",a,b,c);
}
答案:(C)
A、3,4,5
B、5,3,4
C、4,3,5
D、5,4,3
31、设有以下定义:
#define N 3
#define Y(n) ((N+1)*n)
则执行语句:z=2 * (N+Y(5+1));后,z的值为:
答案:(C)
A、出错
B、42
C、48
D、54
32、以下程序的输出结果为:int i;
void prt( )
{
for(i=5;i<8;i++) printf("%c",'*');
printf("");
}
main( )
{
for(i=5;i<=8;i++) prt( );
}
答案:(A)
A、***
B、*** *** *** ***
C、*** ***
D、* * *
33、以下循环体的执行次数是:
main()
{
int i,j;
for (i=0,j=1; i<=j+1;i+=2,j--)
printf("%d ",i);
}
答案:(C)
A、3
B、2
C、1
D、0
34、设变量定义为int x , *p = &x;则&(*p)相当于:
答案:(C)
A、*(&x)
B、*p
C、p
D、x
35、在C语言程序中,以下说法正确的是:
答案:(B)
A、函数的定义可以嵌套,但函数的调用不可以嵌套
B、函数的定义不可以嵌套,但函数的调用可以嵌套
C、函数的定义和函数的调用都不可以嵌套
D、函数的定义和函数的调用都可以嵌套
36、现有一个函数的功能是求出一个元素在数组中的索引,以下该函数的声明正确的是:
答案:(A)
A、int getIndex(int *a,int count,int n);
B、void getIndex(int a[],int count,int n);
C、int getIndex(int a[],int count);
D、void getIndex(int *a,int count);
37、利用宏,求三个数中的最大值,一下宏定义正确的是:
答案:(A)
A、#define MAX(a,b,c) ((a)>(b)?(a):(b))>c?((a)>(b)?(a):(b)):(c)
B、#define MAX(a,b,c) (a>b?a:b)>c?(a>b?a:b):c
C、#define MAX(a,b,c) (a)>(b)?(a):(b)>c?((a)>(b)?(a):(b)):(c)
D、#define MAX(a,b,c) a>b?a:b>c?(a>b?a:b):c
38、动态分配内存,定义一个int型的包含12个元素的数组,如下定义正确的是:
答案:(A)
A、int *p = malloc(sizeof(int)*12);
B、int a[12] = malloc(12,sizeof,int);
C、int a[12] = calloc(12,sizeof(int));
D、int *p = calloc(sizeof(int)*12)
39、设变量定义为int x,*p=&x;则&*p相当于:
答案:(A)
A、p
B、*p
C、x
D、*&x
40、有以下程序
main()
{
int k=5,n=0;
while(k>0)
{
switch(k)
{
default : break;
case 1: n+=k;
case 2:
case 3: n+=k;
}
k--;
}
printf("%d ",n);
}
程序运行后的输出结果是:
答案:(D)
A、0
B、4
C、6
D、7
※判断题(共10题,每题2分)
1、字符串在内存中的起始地址称为字符串的指针,可以定义一个字符指针变量指向一个字符串
答案:(T)
正确
错误
2、char *s="C Language";表示s是一个指向字符串的指针变量,把字符串的首地址赋予s
答案:(T)
正确
错误
3、用字符串方式赋值比用字符逐个赋值要多占一个字节,用于存放字符串结束标志''。
答案:(T)
正确
错误
4、内存单元的地址与内存单元中的数据是两个完全相同的概念
答案:(F)
正确
错误
5、continue不是结束本次循环,而是终止整个循环的执行。
答案:(F)
正确
错误
6、在switch语句中,每一个的case常量表达式的值可以相同。
答案:(F)
正确
错误
7、char *p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。
答案:(F)
正确
错误
8、do...while循环至少要执行一次循环语句。
答案:(T)
正确
错误
9、int a=24; printf("%o ", a );输出结果是30。
答案:(T)
正确
错误
10、直接访问就是直接利用变量的地址进行存取直接访问
答案:(T)
正确
错误
[关闭]
return 0;
}