1、以下对二维数组 a的正确说明是( double a[1][4] )。
int a[3][]
float a(3,4)
double a[1][4]
float a(3)(4)
2、判断字符串a是否大于b,应当使用( if (strcmp(a,b)>0) )
if (a>b)
if (strcmp(a,b))
if (strcmp(b,a)>0)
if (strcmp(a,b)>0)
3、有以下程序
1 2 3 4 | main() { int a=666,b=888; printf("%d\n",a,b); } |
程序运行后的输出结果是(666 )。
解:运行后,有警告但没有错误,可以运行出结果,printf函数传参是从右往左,只有一个%d,左边参数会覆盖右边参数;
错误信息
666
888
666,888
3、下列选项中,不能用作标识符的是( 2_int_ )。
解:标识符不能以数字开头;
_1234_
_1_2
int_2_
2_int_
4、在 C++ 中,用于实现动态多态性的是( 虚函数)。
解:C++支持两种多态性,静态多态性,动态多态性;静态多态性:通过重载函数和运算符重载实现(编译时多态性); 动态多态性:通过虚函数和继承实现。(运行时多态性)
内联函数
重载函数
模板函数
虚函数
5、下列标识符错误的是( 2ab )
xly
_123
2ab
_ab
6、以下不符合 C语言语法的赋值语句是( y=(a=3,6*5); )。
解:正确应为y=({a=3;6*5});
a=1,b=2
++j;
a=b=5;
y=(a=3,6*5);
7、以下对C语言函数的描述中,正确的是( c程序必须由一个或一个以上的函数组成)。
C 程序必须由一个或一个以上的函数组成
解:正确,一个C程序至少包含一个主函数;
C 函数既可以嵌套定义又可以递归调用
解:函数可以嵌套调用,但不可以嵌套定义;
函数必须有返回值,否则不能使用函数
解:可以没有返回值;
C 程序中有调用关系的所有函数必须放在同一个程序文件中
解:也可以放到另一个.h文件里;
8、设 x,y,t均为 int 型变量,执行下列语句后,y的值为(3)。
x=y=3; t=++x||++y;
解:短路运算;
不确定
4
3
1
9、下列程序段,循环体执行次数是:(3次)
1 2 3 | y = 2; while (y <= 8) y = y + y; |
2
16
4
3
10、用变量a给出下面的定义:一个有10个指针的数组,该指针指向一个函数,该函数有一个整形参数并返回一个整型数
解: int (*a[10])(int);
int *a[10];
int (*a)[10];
int (*a)(int);
int (*a[10])(int);
11、下面有关java和c++的描述,错误的是?
(c++和java支持多继承) 解:C++支持多继承,java不支持多继承;
java是一次编写多处运行,c++是一次编写多处编译
c++和java支持多继承
Java不支持操作符重载,操作符重载被认为是c++的突出特征
java没有函数指针机制,c++支持函数指针
12、不能把字符串"HELLO!"赋给数组b的语句是(char b[10];b="HELLO!";)
解:数组名是字符串常量,不能赋值;
char b[10]={'H','E','L','L','O','!','\0'};
char b[10];b="HELLO!";
char b[10];strcpy(b,"HELLO!");
char b[10]="HELLO!";
13、*p++ 自增p还是 p 所指向的变量?(自增p所指向的变量)
解:++在后,滞后运算;
自增p
自增p所指向的变量
和机器相关
14、下面程序会输出什么:(1,2,2,2)
1 2 3 4 5 6 7 8 9 10 11 12 13 | static int a=1; void fun1(void){ a=2; }(全局变量赋值) void fun2(void){ int a=3; }(局部变量,销毁) void fun3(void){ static int a=4; } int main(int argc,char** args){ printf(“%d”,a);//1 fun1( ); printf(“%d”,a);//2 fun2( ); printf(“%d”,a);//2 fun3( ); printf(“%d”,a); //2 } |
1 2 3 4
1 2 2 2
1 2 2 4
1 1 1 4
15、已知一运行正常的程序中有这样两个语句:int p1,*p2=&a; p1=b;由此可知,变量a和b的类型分别是( int和int )。
int和int
int*和int
int和int*
int*和int*
16、c++中,声明const int i,是在哪个阶段做到i只可读的 (编译)
编译
链接
运行
以上都不对
17、以下程序的运行结果是(computer , com)
int main(void)
{
printf("%s , %5.3s\n","computer","computer");
return 0;
}
解:%m.ns:一共输出m个字符,但是只取出字符串中前n个字符,这n个字符串在m个字符串右侧,前面补m-n个空格;
computer , puter
computer , com
computer , computer
computer , compu.ter
18、运行下面这段C语言程序之后,输出在屏幕上的结果是:(a=1, b=2, c=3, *p=2)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | void foobar(int a, int *b, int **c) { int *p = &a; *p = 101; *c = b; b = p; }
int main() { int a = 1; int b = 2; int c = 3; int *p = &c; foobar(a, &b, &p); printf("a=%d, b=%d, c=%d, *p=%d\n", a, b, c, *p); return (0); } |
解:理解值传递;
a=1, b=2, c=3, *p=2
a=101, b=2, c=3, *p=2
a=101, b=101, c=2, *p=3
a=1, b=101, c=2, *p=3
19、下列程序的运行结果是3,5,请为横线处选择合适的程序( (p+1)->n )
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include<stdio.h> struct S { int n; char c[10]; } *p; main() { struct S a[3]={{3,"abc"},{5,"def"},{7,"ghi"}}; p=a; printf("%d,",(*p).n); printf("%d\n",___________); } |
20、在 C 语言中下面那个语句的结果是 1 ? (B C)
A、main 函数正常结束的返回值
解;正常返回值为零;
B、return 7&1;
解:B 结果为1;
C、char *p="hello"; return p == "hello";
解:C结果为1;
D、上面都不对
21、下列给定程序中,函数fun的功能是:把形参a所指数组中的奇数按原顺序依次存放到a[0]、a[1]、a[2]…中,把偶数从数组中删除,奇数个数通过函数值返回。 例如,若a所指数组中的数据最初排列为:9,1,4,2,3,6,5,8,7,删除偶数后,a所指数组中的数据为:9,1,3,5,7,返回值为5。
函数原型:int cnt_array_oushu(int *a, int len)
解:
#include<stdio.h>
int cnt_array_oushu(int *a, int len);
void show(int *a, int len);
int main()
{
int a[9]={9,1,4,2,3,6,5,8,7};
show(a, 9);
int ret=cnt_array_oushu(a,9);
printf("奇数个数为:%d\n",ret);
printf("奇数数列为:\n");
show(a, ret);
return 0;
}
int cnt_array_oushu(int *a, int len)
{
int i=0,j=0;
for(i=0;i<len;i++)
{
if((a[i]%2)==0)
{
if(i!=(len-1))
{
for(j=i;j<len-1;j++)
a[j]=a[j+1];
len--;
}
else
len--;
i--;
}
}
return len;
}
void show(int *a, int len)
{
int i=0;
for(i=0;i<len;i++)
{
printf("%d\n",a[i]);
}
}