122、对于"int *pa[5];"的描述中,( )是正确的。
123、以下叙述中正确的是()
C语言的源程序中对缩进没有要求,所以A选项错误。C语言中区分大小写,main函数不能写成Main或_main,所以B选项错误。一个C程序有且只有一个主函数,所以C选项错误。
124、在嵌套使用if语句时,C语言规定else总是()
125、下列程序的输出是()
#include <stdio.h>
int main(void) {int a[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, *p[4], i;for (i = 0; i < 4; i++) p[i] = &a[i * 3];printf("%d\n", p[3][2]);return 0;
}
int p[4]: p 是指针数组, 数组内包含 4 个元素, 每个元素都是 int 类型.
p[3] = &a[9], 即第 3 个元素是指向 a[9] 的
p[3][2] = p[3]+2, p[3] 是 int* 类型, 偏移 2 个单位后指向 a[11]
126、假设数原型和变量说明如下:
void f4(int **p);
int a[4]={1,2,3,4};
int b[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int *q[3]={b[0],b[1],b[2]};
下面调用合法的是()
f(a). a 被传入函数形参时, 会退化成指向其首元素的指针, 类型是 int*, 不符.
f(&a). &a 是数组 a 的地址, 其类型是 int()[4], 不符.
f(b). b 是数组的数组. b 被传入函数形参时, 会退化成指向其首元素的指针, 也就是 b[0] 的地址, b[0] 的类型是 int[4], 故 &b[0] 类型是 int()[4], 不符.
f(q). q 是一个指针数组, 在初始化时, 用 b[0], b[1], b[2] 初始化了, 此时 b[0], b[1], b[2] 会退化成指向各首元素的指针(int* 类型, 因此类型符合, 可以用它们初始化). q 被传入函数形参时, 退化成指向其首元素的指针, 即 int**. 符合
127、循环语句whlie(int i=0 )i–;的循环次数是()
128、对于代码段
#define D 2
int x = 5;
float y = 3.83;
char c = 'D';
则下面选项中错误的是( )
char c=‘D’ c++就是字符D的ASCII码加一,变成E
我们不能对宏进行取地址操作,而++操作是先从内存取值到寄存器 然后寄存器加一后再写入内存中必然涉及如地址操作
129、对于代码段
char c = 48;
int i = 1, j = 10;
j = !(c > j)&&i++;
则i和j的值分别是1和0。请问这句话是正确的吗?
130、面向对象的基本特征有哪些()
重载是属于多态的一类
131、有以下程序,程序运行后的输出结果是()
int f (int n)
{if (n==1) return 1;else return f(n-1)+1;
}
int main()
{int i, j = 0;for (i=1; i < 3; i++) j += f(i);printf("%d\n",j); return 0;
}
132、定义一个输出文件流对象,并打开d盘du文件夹下的abc.dat文件的代码如下所示:
ofstream fout;
fout.open("d:\\du\\abc.dat");
133、
int foo(int n) {if (n < 2) return n;return foo(n - 1) + foo(n - 2);
}
当 n = 6 时,函数的返回值是()
134、在64位系统下,分别定义如下两个变量:char *p[10]; char(*p1)[10];请问,sizeof§和sizeof (p1)分别值为____。
64位系统指针为8字节 ,所以10*8=80 p1是一个指针,8字节
135、下列代码运行出错,可能会是哪一行引起的?
void getMemory(char *p) {p = (char *)malloc(100); // 1
}int main(int argc, char const *argv[]) {char *str = NULL;getMemory(str);strcpy(str, "hello wrold"); // 2printf("%s\n", str); // 3free(str); // 4
}
参数本身就是指针了,传str实际就是按值传递(因为str就是指针)。如果想传递str的指针,应该将参数定为指针的指针。
p所分配的空间和str所占用的空间完全不是一个,所以给p分配malloc(100)空间是符合语法的;但是它是在动态空间中分配的,函数a运行结束时,已经不存在了而str的空间一直都是0未曾改变过,所以在向str内拷贝字符串时,会出现无空间接收的情况!!!
136、设有定义 int a=3 , b=4, c=5; 则以下的表达式中 , 值为 false 的是 ()
137、设有数组定义 int a[][4]={0,0}; 则数组的行数为 1
二维数组初始化有两种方式:一种顺序初始化, int array1[3][2]={4,2,5,6};//顺序初始化;另一种按行初始化,如 int array2[3][2]={{4,2},{5},{6}};//按行初始化
本题是顺序初始化,初始化的元素个数不超过一行规定的个数,所以只有一行
138、设有下面的程序段:char s[]="china";char *p=s,p 和 s 可以随意替换使用
数组名作为指针是个常量,而指针则是变量
139、以下字符串定义与赋值中,正确的是()
140、
#include<stdio.h>
int main(){unsigned char i = 7;int j = 0;for(;i > 0;i -= 3){++j;}printf("%d\n", j);return 0;
}
请问该程序的输出是多少?
141、输入字符数组的字符串个数应短于定义的字符数组的个数否则下标越界,这句话是否正确?
142、若有定义
typedef char T[10] ;
T * a ;
上述定义中a的类型与下面选项中完全相同的是?
typedef char T[10] 的意思是 T为包含10个char元素的数组,是一个数组
T * a;就是指a为指向T类型的指针,是指针,即指向包含10个char元素数组的指针
typedef并不创建新的类型,只是对已存在类型使用一个新的名字,在出现新名字的地方可以直接替换为原来的类型来处理,选项D正确。
143、以下对选择语句描述错误的是()
流程控制语句分类:
顺序结构
选择结构:if语句、switch语句
循环结构:while语句、for语句
144、有以下程序
#include <stdio.h>
#include <stdlib.h>
void fun(int *p1, int *p2, int *s) {s = (int *)malloc(sizeof(int));*s = *p1 + *(p2++);
}
int main() {int a[2] = {1, 2}, b[2] = {10, 20}, *s = a;fun(a, b, s);printf("%d \n", *s);
}
程序运行后的输出结果是?
数组名作为函数参数,执行fun函数后,s的值并没有发生变化,仍然是指向a,所以输出结果为1
145、C语言允许函数类型缺省定义,此时函数值隐含的类型是( )
隐含类型是 int型,如int main()常常可写为 main()
146、若有以下说明和定义语句:
union uti {int n;double g;char ch[9];
} struct srt {float xy;union uti uv;
} aa;
考虑内存对齐,则变量aa所占内存的字节数是( )
147\有以下程序
#define N 20
void fun(int a[], int n, int m)
{int i, j;for(i=m;i>=n;i--) a[i+1]=a[i];
}
int main()
{int i, a[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};fun(a,2,9);for(i = 0; i < 5; i++)printf("%d", a[i]);
}
程序运行后的输出结果是()
148、以下程序运行时,若输入1abcedf2df<回车>输出结果是?
149\以下正确的函数原型声明语句是( )。
150. 32位系统中,如下程序执行的结果是()
#include <stdio.h>
int main() {char str[] = {"hello world"};printf("%s",str);return 0;
}
151.有如下一段程序:
int f1(float);
int f2(char);
void f3(float);
int (*pf)(float);
152.在 C 语言中,引用数组元素时,其数组下标的数据类型允许是( )。
引用数组元素,只要是整形就可以可,常量也行,变量也行