C期末考试复习题2(1) 联系客服

发布时间 : 星期六 文章C期末考试复习题2(1)更新完毕开始阅读f405c744e53a580216fcfed8

(1) int a[4]={5,3,8,9};其中 a[3]的值为( D )。

A. 5 B. 3 C. 8 D. 9

(2) 以下 4 个数组定义中,(D )是错误的。

A. int a[7]; B.int n=5; long b[n]; C. char c[5]; D. int n,d[7];

(3) 对字符数组进行初始化,( B )形式是错误。

A. char c1[ ]={'1', '2', '3'}; B. char c2[ ]=123; C. char c3[10 ]={ '1', '2', '3', '\\0'}; D. char c4[ ]=\

(5) 在数组中,数组名表示( A. )。

A. 数组第 1 个元素的首地址 B.数组第 2 个元素的首地址 C. 数组所有元素的首地址 D.数组最后 1 个元素的首地址

(6) 若有以下数组说明,则数值最小的和最大的元素下标分别是(B )。 int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12};

A. 1,12 B. 0,11 C. 1,11 D. 0,12

(7) 若有以下说明,则数值为 4 的表达式是( D )。

int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’, d=4, g=3 A. a[g-c] B. a[4] C. a['d'-'c'] D. a['d'-c]

(8) 设有定义:char s[12] = \; 则printf( \ 的输出是( A. 6 B. 7 C. 11 D. 12

(9) 设有定义:char s[12] = \ 则printf(\\sizeof(s)); 的输出是( A. 6 B. 7 C. 11 D. 12

(10) 合法的数组定义是( A)。

A. char a[ ]= \\; B. int a[5] ={0,1,2,3,4,5}; C. char a= \\; D. char a[ ]={0,1,2,3,4,5}

(11) 下面的程序中哪一行有错误( D )。 #include main() {

float array[5]={0.0}; //第A行

int i;

for(i=0;i<5;i++)

scanf(\ for(i=1;i<5;i++)

array[0]=array[0]+array[i];//第B行

printf(\ //第C行 } }

A. 第A行 B. 第B行 C. 第C行 D. 没有 (12) 下面哪一项是不正确的字符串赋值或赋初值的方式( C )。

C A. char *str; str=\ B. char str[7]={'s','t','r','i','n','g'}; ;str1=\

D. char str1[]=\

A )。 D)。 C. char str1[10]

(13) 若有以下说明和语句,则输出结果是哪一项( C )。 (strlen(s)为求字符串s的长度的函数)

char s[12]=\book!\ printf(\ A. 12 B. 8 C. 7 D. 11

(14) 若有以下说明和语句,则输出结果是( C )。 char str[]=\ printf(\

A. 字符串中有非法字符 B. \\\ C. \ D. \

(15)若有以下语句,则下面 是正确的描述。 char x[]=\

char y[]={'1', '2','3','4','5','6'}; (B )

A. x数组与y数组长度相同。 B. x数组长度大于y数组长度。 C. x数组长度小于y数组长度。 D. x数组和y数组的赋值是非法的。

(16)在C 语言中,引用数组元素时,其数组下标的数据类型允许是。C A)整型常量

B)整型表达式

C)整型常量或整型表达式 D)任何类型的表达式

(17)以下对一维整型数组a 的正确说明是。 D A)inta(10); B)int n=10,a[n]; C) int n;

D) #define SIZE 10 scanf(“%d”,&n);

int a[SIZE];

int a[n];

(18)若有说明:int a[10];则对a 数组元素的正确引用是。 C A)a[10] B)a[3.5] C)a(5) D)a[10-10] (19)在C 语言中,一维数组的定义方式为:类型说明符数组名; (C) A)[整型常量表达式]

B)[整型表达式] C)[整型常量] 或[整型表达式]

D)[常量]

(20)以下能对一维数组a 进行正确初始化的语句是。 ( C) A)int a[10]=(0,0,0,0,0); B)int a[10]={}; C)int a[]={0};

D)int a[10]=”10*1”;

(21)下面程序如果只有一个错误,那么是(每行程序前面的数字表示行号)1 main() 2 {

3 float a[3]={3*0}; 4 int i;

5 for(i=0;i<3;i++) scanf(“%d”,&a[i]); 6 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7 printf(“%d\\n”,a[0]);

8 }

A)第3 行有错误 B)第7 行有错误 C)第5 行有错误

D)没有错误

(A) 。

(22)下面程序中有错误9*/的行是(每行程序前面的数字表示行号)。(D) 1 main() 2 {

3 float a[3]={1}; 4 int i;

5 scanf(“%d”,&a);

6 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7 8 } A)3

(23)下面程序(每行程序前面的数字表示行号)。 (D) 1 main() 2 { 3

float a[3]={0}; 4 int i;

5 for(i=0;i<3;i++) scanf(“%f”,&a[i]); 6 for(i=1;i<4;i++) a[0]=a[0]+a[i]; 7 printf(“%f\\n”,a[0]); 8 }

A)没有错误 C)第5 行有错误

(24)对以下说明语句的正确理解是。 (B) int a[10]={6,7,8,9,10}; A)将5 个初值依次赋给a[1]至a[5] B)将5 个初值依次赋给a[0]至a[4] C)将5 个初值依次赋给a[6]至a[10]

D)因为数组长度与初值的个数不相同,所以此语句不正确

B)第3 行有错误 D)第6 行有错误

B)6

C)7

D)5

printf(“a[0]=%d\\n”,a[0]);

1.变量的指针,其含义是指该变量的____B_____. a)值 b)地址 c)名 d)一个标志

2.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是___D__. a)a,point,*&a b)&*a,&a,*point c)*&point,*point,&a d)&a,&*point ,point

3.若有说明;int *p,m=5,n;以下正确的程序段的是_____D___. a)p=&n; b)p=&n;

scanf(\c)scanf(\ d)p=&n; *p=n; *p=m;

4. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是____B____. main() {

int *p,*q,a,b; p=&a;

printf(“input a:”); scanf(“%d”,*p); ?? }

a)*p表示的是指针变量p的地址

b)*p表示的是变量a的值,而不是变量a的地址 c)*p表示的是指针变量p的值 d)*p只能用来说明p是一个指针变量

5. 已有变量定义和函数调用语句:int a=25; print_value(&a); 下面函数的正确输出结果是_____D___. voidprint_value(int *x) { printf(“%d\\n”,++*x);} a)23b)24 c)25 d)26

6.若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是A A) *p=&a;scanf(\,p);

B) p=(long *)malloc(8);scanf(\,p); C) scanf(\,p=&a); D) scanf(\,&a);

7.有以下程序B #include main()

{ int m=1,n=2,*p=&m,*q=&n,*r; r=p;p=q;q=r;

printf(\}

程序运行后的输出结果是 A)1,2,1,2 C)2,1,2,1

B)1,2,2,1 D)2,1,1,2