C语言模拟考试卷
一、是非题(每小题1分,共5分)
1)若有说明:int a[][4] ={0,0}; 则二维数组a的第一维大小为1 B
A)对        B)错
2判断char型变量cl是否为大写字母的正确表达式是(cl>= 'A')&&(cl<= 'Z')A
A)对        B)错
3)已知 int a=1,b=-1; 则语句 printf("%d\n", (a--, ++b)); 的输出结果是 -1B
A)对        B)错
4strcmp函数的功能是字符串的比较A
A)对        B)错
5sizeof(float)是一个不合法的表达式B
A)对        B)错
二、单项选择题(每小题3分,共75分)
1)下列关于C语言用户标识符的叙述中正确的是(A)。
A用户标识符中可以出现下划线和中划线(减号)
B)用户标识符中不可以出现中划线,但可以出现下划线
C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头
D)用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头
2)下列叙述中正确的是(B)。
AC语言的函数可以嵌套调用
BC语言的子程序有过程和函数两种
CC语言的函数可以嵌套定义
DC语言编译时不检查语法
3)以下4个选项中,不能看做一条语句的是(D)。
A;                    Ba=5,b=2.5,c=3.6;
Cifa<5continue语句执行过程;            Difb!=5x=2;y=6;
4)以下程序段的描述,正确的是(C)。
x=-1;
do
{x=x*x;}
while!x;
A)是死循环                B)循环执行两次
C循环执行一次            D)有语法错误
5 已知char ch=’C’;则以下表达式的值是(D)。
ch=(ch>=’A’ && ch<=’Z’)?(ch+32):ch;
AA        Ba        CZ        Dc
6)执行下面的程序段后,变量k中的值为(A)。
int k=3, s[2];
s[0]=k; k=s[1]*10;
A不定值        B33        C30        D10
7)现有如下定义:int a, b, *p, *q;,则下列赋值语句错误的是(D)。
Ap=&a;        Bq=&b;
Cp=q;        Dp=a;
8)有如下程序段
int a=14, b=15, x;
char c='A';
x=(a&&b)&&(c<'B');
执行该程序段后,x的值为(D)
Ature            Bfalse        C0            D1
9)下列说法中错误的是(A)。
A只能在循环体内使用break语句
B)在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环
C)在whiledowhile循环中,continue语句并没有使整个循环终止
Dcontinue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断
10C 语言中,系统的标准输入文件是指(A)。
A键盘        B)显示器        C)软盘        D)硬盘
11)执行以下程序后,a,b的值分别为(C)。
main()
        {    int a, b, k=4, m=6, *p1=&k, *p2=&m;
            a=p1==&m;
b=(*p1)/(*p2)+7;
printf("a=%d\n", a);
printf("b=%d\n", b);
}
A-1, 5            B1, 6            C0, 7        D4, 10
12)当顺利执行了文件关闭操作时,fclose函数的返回值是(C)。
A-1        BTRUE        C0        D1
13)设有数组定义: char array[]="China"; 则数组 array所占的空间为(C)。
A4个字节                B5个字节        C6个字节                D7个字节
14)下面四个选项中,均是不合法的用户标识符的选项是(C)。
AA  P_0  do            Bfloat  la0  _A
Cb-a  goto  int        D_123  temp  int
15)以下程序的运行结果是(B)。
#define MIN(x,y)(x)<(y)?(x):(y)
main()
{    int i=10, j=15, k;
k=10*MIN(i,j);
printf("%d\n", k);
}
A10            B15            C100            D150
16)有如下定义语句:int aa[][3]={12,23,34,4,5,6,78,89,45};,则45在数组aa中的行列坐标各为(C)。
A3,2        B3,1        C2,2        D2,1
17)下面程序段的运行结果是(C)。
char *p=”abcdefgh”;
p+=3;
printf(”%d\n”, strlen(strcpy(p,”ABCD”)));
A8        B12        C4        D7
18)以下程序有错,错误原因是(D)。
main()
{    int *p, i; char *q, ch;
p=&i;
q=&ch;
*p=40; *p=*q;
...... }
Apq的类型不一致,不能执行*p=*q;语句
B*p中存放的是地址值,因此不能执行*p=40;语句
Cq没有指向具体的存储单元,所以*q没有实际意义
Dq虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果
19)以下叙述中不正确的是(D)。
A)在不同的函数中可以使用相同的名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效
D在一个函数内的复合语句中定义的变量在本函数范围内有效
20)有如下程序
int a[10]={1,2,3,4,5,6,7,8,9,10}
int *p=&a[3], b; b=p[5];
b的值是(C
A5        B6        C9        D8
21C语言中,能识别处理的文件为(B)。
A)文本文件和数据块文件
B文本文件和二进制文件
C)流文件和文本文件
D)数据文件和二进制文件
22)下面程序的输出结果是(B)。
main()
{    int a,b; b=(a=3*5,a*4,a*5);
printf"%d",b;}
A60        B75        C65        D)无确定值
23)以下程序的执行结果是(D)。
Main()
{    int a=2, j;
for(j=0; j<3; j++) printf("%4d", f(a));
        }
        f(int a)
        {    int b=0, static int c=3;
            b++; c++;
            return(a+b+c);
}
A7  7  7            B7  10  13        C7  9  11            D7  8  9
24)有如下程序段
int *p,a=10,b=1;
p=&a; a=*p+b;
执行该程序段后,a的值为(B)。
A12        B11        C10        D)编译出错
25)有如下说明
int a10={1,2,3,4,5,6,7,8,9,10}, *p=a;
则数值为9的表达式是(B)。
A*p+9        B*(p+8)        C*p+=9        Dp+8
三、读程序写结果(每题2分,共20分)
1下面程序的运行结果是:      ga       
main()
{    char a[]="Language", b[]="Program";
char *p1, *p2;
int k;
p1=a;
p2=b;
for(k=0; k<=7; k++)
          if(*(p1+k)==*(p2+k))  printf("%c", *(p1+k));
}
2)下面程序的运行结果是:      x=8       
main()
{    int i, j, x=0;
fori=0; i<2; i++
{    x++;
for(j=0; j<3; j++)
{ if(j%2) continue;
x++;
}
x++;
}
printf("x=%d\n", x);
}
3下面程序的运行结果是:    1,3         
#include "stdio.h"
main()
{    int i, m, n;
for(i=0; i<3; i++)
{ m=test1();
n=test2();}
printf("%d,%d\n", m, n);
}
test1()
{    int x=0;
x++;
return x;
}
test2()
{    static int x=0;
x++;
return x;
}
4)下面程序的运行结果是:    2         
#include  <stdio.h>
int a[]={2,4,6,8};
main()
{    int i;
int *p=a;
for(i=0;i<4;i++) a[i]=*p;
printf("%d\n",a[2]);
}
5)下面程序的运行结果是    19         
#include "stdio.h"
#include "string.h"
main()
{    char a[3][20]={{"china"}, {"isa"}, {"bigcountry!"}};
char k[100]={0}, *p=k;
int i;
for(i=0; i<3 ;i++)
{ p=strcat(p, a[i]);}
i=strlen(p);
printf("%d\n",i);}
6)假设程序运行时输入数据为 200,请写出程序运行结果    C8             
main()
{    char b[17]={"0123456789ABCDEF"};
    int c[64], d, i=0, base=16;
long n;
printf("Enter a number:\n");
    scanf("%ld", &n);
    do{
c[i]=n%base;
i++;
n=n/base;}
    while(n!=0);
    printf("Result:");
    for(--i; i>=0; --i)
        {    d=c[i];
printf("%c",
b[d]); }
printf("\n");
}
7)当程序运行时,输入字符串”asd af aa z67”(不包含双引号),则输出为:        asdaffaaz67       
#include <stdio.h>
#include <ctype.h>

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