C程序设计》期末复习练习题及参考答案(3)
一、单项选择题
1.若有定义int  (*p)[4],则标识符p是一个     
A)指向整型变量的指针变量
B)指向函数的指针变量
√C)指向有四个整型元素的一维数组的指针变量
D)指针数组名,有四个元素,每个元素均为一个指向整型变量的指针
2.下列对字符串的定义中,错误的是:     
√A) char  str[7] = "FORTRAN";
B) char  str[] = "FORTRAN";
C) char  *str = "FORTRAN";
D) char  str[] = {'F','O','R','T','R','A','N',0};
3.针对下面程序段,下面哪些说法是正确的?
#include <stdio.h>
void Swap(int *x, int *y);
main()
{  int a, b;
    a = 5;
    b = 9;
  Swap(&a, &b);
  printf("a=%d,b=%d",a,b);
}
void Swap(int *x, int *y)
{  int *pTemp;
    *pTemp = *x;
整型常量合法要求
    *x = *y;
    *y = *pTemp;
}
A) 程序运行结果为乱码;
B) 程序运行后将导致程序崩溃;
C) 程序编译时出错导致程序无法运行;
√ D) 程序执行了危险的操作;
4.已知学生记录描述为:
struct student
{        int        no;
        char    name[20];
        char    sex;
        struct
          {    int      year;
            char    month[15];
            int    day;
          }birth;
};   
struct student s;
设变量s中的生日是19841111日,下列对生日的正确赋值方式是_____
A) ar = 1984; h = "11"; s.birth.day = 11;
B) ar = 1984;  h = 11;    s.birth.day = 11;
√ C) ar = 1984;  strcpy(h, "11");    s.birth.day = 11;
D) ar = 1984;    strcpy(h, 11);    s.birth.day = 11;
5. 要使下面程序的输出1, 2, 34,则从键盘输入的数据格式应为       
#include  <stdio.h>
main()
{  char a,b;
    int c;           
scanf("%c%c%d",&a,&b,&c);
printf("%c,%c,%d\n",a,b,c);
}
A1 2 34        B1, 2, 34    C’1’,’2’,34              √ D12 34
6.  以下选项中为合法整型常量的是(    )。
A) -080        √B) -80      C) -8e1.0        D) -80.0e
7. x,i,jk都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为(    )。
A) 4        B) 16      √C) 32        D) 52
8. 下列程序执行后的输出结果是(    )。
#include <stdio.h>
void func(int *a, int b[])
{ b[0]=*a+6; }
main()
{  int a,b[5];
a=0; b[0]=3;
func(&a,b); printf("%d\n",b[0]);
}
√A)6          B)7        C)8        D)9
9. 设有定义 char grade = 'A'; 则以下给出的程序运行结果或说法正确的是(    )。
switch(grade)
{ case 'A':
    case 'B':
    case 'C':    printf(">= 60 pass!\n");
    case 'D':    printf("< 60\n");
    default    :    printf("error!\n");
    }
A) >= 60 pass!    B) < 60    C) error!    √D) 以上结果都不正确
10. 以下程序执行后的输出结果是(    )。
#include <stdio.h>
int main()
{  int i = 1, j = 1, k = 2;
if((j++ || k++ ) && i++ )
printf("%d,%d,%d\n", i, j, k);
return 0;
}
A) 1,1,2        B) 2,2,1      √C) 2,2,2        D) 2,2,3
11. 执行完循环语句 for(i = 1; i < 10; i++); 后,以下关于变量i的值及循环体的执行次数的说法正确的是(    )。
A)  i的值是9,循环体执行9    B)  i的值是9,循环体执行10
√C)  i的值是10,循环体执行9  D)  i的值是10,循环体执行10
12. 以下程序的运行结果是(    )。
#include <stdio.h>
int main()
{    int m, n;
    for(m = 0, n = 10; m < n; m+=3, n--);
    printf("%d,%d\n",m,n);   
    return 0;
}
A)  6,7            B)  7,6            √C)  9,7          D)  7,9
13. 以下程序的运行结果是(    )。
#include <stdio.h>
int main()
{    int i;
    int a[3][3]={1,2,3,4,5,6,7,8,9};
    for(i = 0; i < 3; i++)
    printf("%d ",a[2-i][i]);
    return 0;
}
A)  1 5 9        √B)  7 5 3        C)  3 5 7            D)  5 9 1
14. 下列可用于C语言用户标识符的一组是(    )。
A)void, define, WORD            √B)a3_3,_123,Car   
C)For, -abc, IF Case              D)2a, DO, sizeof
15. 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为(    )。.
A) a<>0      B) !a        C) a=0        √D) a!=0
16. 以下程序的输出结果是(    )。
#include<stdio.h>
void main()
{  int x=10,y=10;
        printf("%d %d\n", x--, --y);
}
A) 9 9        √B) 10 9      C) 9 10      D) 10 10
17. 若有定义:char *name[] = {"Follow me","BASIC","Great Wall","FORTRAN"};,则name[2]的值是(    )。
A) 字符'G'                            B) 字符串"Great Wall"
√C) 字符串"Great Wall"的首地址            D) 不确定
18. 有以下程序,程序执行后的输出结果是(    )。
#include <stdio.h>
void  fun(char *p)
{    char *q = p;
    while( *q != '\0')
    {    (*q) ++;
        q++;
    }
}
int main()
{    char a[] = {"Program"}, *p;
    p = &a[3];
    fun(p);   
    printf("%s\n",a);
    return 0;
}
√A)  Prohsbn        B)  Prphsbn        C)  Progsbn      D)  Program

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。