国际关系学院2022年计算机C语言专升本冲刺卷

本试卷为国际关系学院2022年计算机C语言专升本冲刺卷,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。

计算机C语言专升本冲刺卷

一、理论基础 (共20题,每题1分,共计10分)

(  C  )
1、若ch为char型变量,k为int型变量(已知字符a的ascil码是97),则执行下列语句后输出的结果为( )。
ch='b'; k=10;
printf("%x,%0,",ch,ch,k);
printf("k=%%d\n",k);
A、因变量类型与格式描述符的类型不匹配,输出无定值
B、输出项与格式描述符个数不符,输出为0或不定值
C、62,142,k=%d
D、62,142,k=%10
(  A  )
2、下列运算符中优先级最高的算符是________。
A、!
B、%
C、-=
D、&&
(  B  )
3、在c语言程序中可用做用户标识符的是________。
A、void
123
BBN
B、aa
_abc
cas
C、as+b3
-123
If
D、6f
Do
SIG
(  C  )
4、执行下面程序时,欲将25和2.5分别赋给a和b,正确的输入方法是________。 int a; float b; scanf("a=%d,b=%f",&a,&b);
A、25□2.5
B、25,2.5
C、a=25,b=2.5
D、a=25□b=2.5
(  A  )
5、下列语句中,正确的是________。
A、char *s ; s="Olympic";
B、char s[7] ; s="Olympic";
C、char *s ; s={"Olympic"};
D、char s[7] ; s={"Olympic"};
(  D  )
6、有以下程序
main( )
{
int i,s=0;
for(i=1;i<10;i+=2) s+=i+1;
printf("%d\n",s);
}
程序执行后的输出结果是________。
A、自然数1~9的累加和
B、自然数1~10的累加和
C、自然数1~9中的奇数之和
D、自然数1~10中的偶数之和
(  C  )
7、若 a 为整型变量,则以下语句 。 a=-2l; printf("%d\n",a);
A、赋值不合法
B、输出为不确定的值
C、输出值为 -2
D、输出值为 2
(  B  )
8、在下面关于指针的说法中,错误的一条是________。
A、变量的指针就是变量的地址
B、可以将一个整型量或任何其他非地址类型的数据赋给一个指针变量
C、一个指针变量只能指向同一个类型的变量
D、指针变量中只能存放地址(指针)
(  C  )
9、以下说法中正确的是________。
A、#define和printf都是C语句
B、#define是C语句,而printf不是________。
C、printf是C语句,但#define不是________。
D、#define和printf都不是C语句
(  A  )
10、若变量均已正确定义并赋值,以下合法的c语言赋值语句是________。
A、x=y==5;
B、x=n%2.5;
C、x+n=i;
D、x=5=4+1;
(  B  )
11、汉字国标码规定的汉字编码每个汉字用______个字节表示。
A、1
B、2
C、3
D、4
(  D  )
12、若有定义:int x,y;
char a,b,c;
并有以下输入数据(此处\u代表空格):1\u2\ua\ub\uc,那么能给x赋整数1,给y赋整数2,给a赋字符a,给b赋字符b,给c赋字符c的正确程序段是________。
A、scanf("x=%d y=%d",&x,&y);a=getchar();b=getchar();c=getchar();
B、scanf("%d %d",&x,&y);a=getchar();b=getchar();c=getchar();
C、scanf("%d%d%c%c%c,&x,&y,&a,&b,&c);
D、scanf("%d%d%c%c%c%c%c%c",&x,&y,&a,&a,&b,&b,&c,&c);
(  B  )
13、以下叙述中正确的是______。
A、程序必须包含所有三种基本结构才能成为一种算法
B、当用我们所写的每条 C 语句,经过编译最终都将转换成二进制的机器指令
C、如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达
D、只有简单算法才能在有限的操作步骤之后结束
(  D  )
14、在c集成环境执行菜单命令"运行",若运行结束且没有系统提示信息,说明---。
A、源程序有语法错误
B、源程序正确无误
C、源程序有运行错误
D、源程序无编译.运行错误,但仅此无法确定其正确性
(  B  )
15、为表示关系x>y>z ,应使用的c 语言表达式是________。
A、(x>y)&&(x>z)
B、(x>y)&&(y>z)
C、(x>y)&(y>z)
D、.(x>y)AND(x>z)
(  D  )
16、假定x和y为double型,则表达式x=2,y=x+3/2的值是________。
A、3.5
B、3
C、2
D、3.0
(  A  )
17、以下选项中不合法的标识是________。
A、&a
B、FOR
C、print
D、_00
(  C  )
18、以下叙述中错误的是________。
A、算法正确的程序对于相同的输入一定有相同的结果
B、算法正确的程序可以有零个输入
C、算法正确的程序可以有零个输出
D、算法正确的程序最终一定会结束
(  D  )
19、设变量定义为"int a, b;
",执行下列语句时,输入(),则a和b的值都是10.\n scanf("a=%d, b=%d",&a, &b);
A、10 10
B、10, 10
C、a=10 b=10
D、a=10, b=10
(  D  )
20、以下不正确的说法是____
A、在不同的函数中可以使用相同名字的变量
B、形式参数是局部变量
C、在函数内定义的变量只在本函数范围内有效
D、在函数内的复合语句中定义的变量在本函数范围内有效

二、控制结构 (共10题,每题1分,共计10分)

(  A  )
1、与 y=(x>0?1:x<0?-1:0); 的功能相同的if语句是________。
A、if (x>0) y=1;
else if(x<0)y=-1;
else y=0;
B、if(x)
if(x>0)y=1;
else if(x<0)y=-1;
else y=0;
C、y=-1
if(x)
if(x>0)y=1;
else if(x==0)y=0;
else y=-1;
D、y=0;
if(x>=0)
if(x>0)y=1;
else y=-1;
(  A  )
2、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是________。
A、1
B、0
C、2
D、不知道a的值,不能确定
(  A  )
3、下列程序的输出结果是________。
main()
{
int a=0,i;
for(i=1;i<5;i++)
{
switch(i)
{
case 0: case 3:a+=1;
case 1;
case 2:a+=2;
default:a+=3;
}
}
printf("%d",a);
}
A、19
B、1
C、6
D、8
(  A  )
4、if语句的基本形式为:if(表达式)语句,其中"表达式"________。
A、可以是任意合法的表达式
B、必须是逻辑表达式
C、必须是逻辑表达式或关系表达式
D、必须是关系表达式
(  D  )
5、若a和b均是整型变量并已正确赋值,正确的switch语句是________。
A、switch(a+b);……
B、switch(a+b*3.0)……
C、switch a……
D、switch(a%b)……
(  B  )
6、有以下程序
#include <stdio.h>
main ()
{
int a = 5, b = 4, c = 3, d = 2;
if (a > b > c)
printf ("%d\n", d);
else if ((c - 1 >= d) == 1)
printf ("%d\n", d + 1);
else
printf ("%d\n", d + 2);
}
执行后输出的结果是________。
A、2
B、3
C、4
D、编译时有错,无结果
(  A  )
7、有如下程序
main()
{
int x=1,a=5,b=5;
switch(x)
{
case 0: b--;
case 1: a--;
case 2: a--;
b--;
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是______。
A、a=3,b=4
B、a=3,b=3
C、a=4,b=5
D、a=4,b=4
(  B  )
8、能正确表示a≥10或a≤0的关系表达式是________。
A、a>=10 or a<=0
B、a>=10 || a<=0
C、a>=10 | a<=0
D、a>=10 && a<=0
(  D  )
9、在c 的if 语句中,可用作条件的表达式是________。
A、关系表达式
B、逻辑表达式
C、算术表达式
D、任意表达式
(  D  )
10、选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达
式,但其值只能被判断为“真”或“假”。哪个数作为逻辑“假”值()。
A、-1
B、1
C、非零的数
D、0

三、循环结构 (共10题,每题1分,共计10分)

(  B  )
1、定义如下变量: int n=10; 则下列循环的输出结果是________。 while(n>7)
{
n--;
printf("%d\n",n);
}
A、10
9
8
B、9
8
7
C、10
9
8
7
D、9
8
7
6
(  B  )
2、有如下程序
#include<stdio.h>
void main()
{
int x=23;
do
{
printf("%d",x--);
}
while(!x);
}
该程序的执行结果是 _________。
A、321
B、23
C、不输出任何内容
D、陷入死循环
(  B  )
3、对于while、do…while循环结构,正确的说法是________。
A、只是表达形式不同
B、do…while 结构中的语句至少执行一次
C、while 结构中的语句至少执行一次
D、条件成立时,它们有可能一次也不执行
(  B  )
4、下列for循环的次数为________。
for( int i=0,x=0;!x&&i<=5;i++)
A、5
B、6
C、1
D、无限
(  D  )
5、下列不是循环语句的是________。
A、while语句
B、do…while语句
C、for语句
D、if…else语句
(  D  )
6、流程控制语句的基本控制结构有三种,其中不包括________。
A、顺序结构
B、选择结构
C、循环结构
D、计算结构
(  C  )
7、程序的基本控制结构是______。
A、顺序结构,多分支结构和单分支结构
B、顺序结构,支结构和循环结构
C、顺序结构,选择结构和循环结构。
D、单行结构和多行结构。
(  B  )
8、以下程序的功能是计算s=1+12+123+1234+12345。
#include <stdio.h>
main()
{
int t=0,s=0,i;
for(i=1;i<=5;i++) {
t=i+_____;
s=s+t;
}
printf("s=%d\n",s);
}
则______部分是________。
A、t
B、t*10
C、t*100
D、t+10
(  A  )
9、有以下程序:
main()
{
int k=5;
while(--k)printf(”%d”,k-=3);
printf(”n”);
}
执行后的输出结果是________。
A、1
B、2
C、4
D、死循环
(  A  )
10、以下叙述中正确的是________。
A、只要适当地修改代码,就可以将 do-while 与 while 相互转换
B、对于 for(表达式 1;表达式 2;表达式 3)循环体首先要计算表达式 2 的值,以便决定是否开始循环
C、对于 for(表达式 1;表达式 2;表达式 3)循环体,只在个别情况下才能转换成 while 语句
D、如果根据算法需要使用无限循环(即通常所称的"死循环"),则只能使用 while 语句

四、数组/指针数组 (共10题,每题1分,共计10分)

(  D  )
1、以下不能正确定义二维数组的选项是________。
A、int a[2][2]={{1},{2}};
B、int a[][2]={1,2,3,4};
C、int a[2][2]={{1},2,3};
D、int a[2][]={{1,2},{3,4}};
(  B  )
2、以下程序调用findmax函数返回数组中的最大值
findmax(int *a,int n)
{
int *p,*s;
for(p=a,s=a; p-a<n; p++) if ( ) s=p;
return(*s);
}
main()
{
int x[5]={12,21,13,6,18};
printf("%d\n",findmax(x,5));
}
在下划线处应填入的是________。
A、p>s
B、*p>*s
C、a[p]>a[s]
D、p-a>p-s
(  C  )
3、以下函数按每行8个输出数组中的数据
void fun( int *w, int n)
{
int i;
for(i=0;i<n;i++)
{
________ printf("%d",w[i]);
}
printf("\n");
}
下列划线处应填入的语句是________。
A、if(i/8==0)printf(“\n”);
B、if(i/8==0)continue;
C、if(i%8==0)printf(“\n”);
D、if(i%8==0)continue;
(  B  )
4、下列对c语言字符数组的描述中正确的是________。
A、任何一个一维数组的元素在引用时,其下标可以是整型、实型或字符型常量
B、一维数组的元素实质上就是一个变量,代表内存中的一个存储单元
C、如果要引用数组中的每一个元素,则直接使用该数组名称即使
D、以上都不对
(  B  )
5、设矩阵a是一个n×n对称矩阵.即a[i,j]=a[i,j],为了节省存储空间,将其下三角部分按行序为主序存放在一维数b[1...n(n+1)/2]中,对任一下三角元素aij(i≥j),在一维数组b的下标位置k的值是______。
A、(i+(i-1))/2+j-1
B、i(i-1)/2+j
C、i(i+1)/2+j-1
D、i(i+1)/2+j
(  A  )
6、设有定义 double a[10],*s=a; 以下能够代表数组元素a[3]的是______。
A、*(s+3)
B、(*s)[3]
C、*s[3]
D、*s+3
(  D  )
7、以下关于排序算法的叙述中,正确的是________。
A、冒泡排序法中,元素的交换次数与元素的比较次数一定相同
B、冒泡排序法中,元素的交换次数不少于元素的比较次数
C、简单选择排序中,关键字相同的记录在排序前后的相对位置一定不变
D、简单选择排序中,关键字相同的记录在排序前后的相对位置可能交换
(  A  )
8、有说明语句int a[4][5]; 则a[2]+3表示__。
A、a数组行下标为2、列下标为3的元素的地址
B、a数组行下标为2、列下标为3的元素的值
C、a数组第2行的首地址
D、a数组第3行的首地址
(  C  )
9、数组 int a[3][4]; 其中错误的数组引用为________。
A、a[0][0]
B、a[1][3]
C、a[3][3]
D、a[0]
(  A  )
10、下列字符数组长度为5的是________。
A、char a[]={'h', 'a', 'b', 'c', 'd'};
B、char b[]= {'h', 'a', 'b', 'c', 'd', '\0'};
C、char c[10]= {'h', 'a', 'b', 'c', 'd'};
D、char d[6]= {'h', 'a', 'b', 'c', '\0' };

五、字符串/字符串指针 (共10题,每题1分,共计10分)

(  C  )
1、对下述程序的判断中,正确的是________。
main()
{
char*p,s[256];
p=s ;
while(strcmp(s,"the end"))
{
printf("input the string:");
gets(s);
while(*p) putchar(*p++);
}
}
A、此程序循环接收字符串并输出,直到接收到字符串“the end”为止
B、此程序循环接收字符串,接收到字符串“the end”则输出,否则程序终止
C、此程序循环接收字符串并输出,直到接收字符串“the end”为止,但因为代码有错误,程序不能正常工作
D、此程序循环接收字符串并将其连接在一起,直到接收字符串“the end”为止,输出连接在一起的字符串
(  A  )
2、下列选项中,能够满足"若字符串s1等于字符串s2,则执行st"要求的是________。
A、if(strcmp(s2,s1)==0)ST;
B、if(sl==s2)ST;
C、if(strcpy(s l ,s2)==1)ST;
D、if(sl-s2==0)ST;
(  D  )
3、以下能正确定义字符串的语句是________。
A、char str[]={′\064′};
B、char str="kx43";
C、char str=";
D、char str[]="\0";
(  A  )
4、以下选项中合法的c语言字符常量是________。
A、'\t'
B、"A"
C、67
D、A
(  C  )
5、有以下程序:
main()
{
char str[]="xyz", *ps=str;
while(*ps) ps++;
for(ps--;ps-str>=o;ps--) puts(ps);
}
执行后的输出结果是________。
A、yz
xyz
B、z
yz
C、z
yz
xyz
D、x
xy
xyz
(  B  )
6、有以下程序
#include<stdio.h>
main()
{
char s[]="012xy\08s34f4w2";
int i, n=0;
for(i=0; s[i]!=0; i++) if(s[i]>='0'&&s[i]<='9') n++;
printf("%d\n", n);
}
程序运行后的输出结果是______。
A、0
B、3
C、7
D、8
(  B  )
7、下列变量定义中,错误的是______。
A、int x=3;
B、float f;d;
C、String s="Hello!";
D、boolean b=true;
(  C  )
8、\、/、mod、*等4个算术运算符中,优先级最低的是________。
A、\
B、/
C、Mod
D、*
(  A  )
9、下面不能正确进行字符串赋值操作的语句是________。
A、char s[5]={"ABCDE"};
B、char s[5]={'A','B','C','D','E'};
C、char *s;s="ABCDEF";
D、char *s; scanf("%s",s);
(  D  )
10、若有char s1[]="abc",s2[20],*t=s2;gets(t);则下列语句中能够实现当字符串 s1 大于字符串 s2 时,输出 s2 的语句是()。
A、if(strcmp(s1,s1)>0)puts(s2);
B、if(strcmp(s2,s1)>0)puts(s2);
C、if(strcmp(s2,t)>0)puts(s2);
D、if(strcmp(s1,t)>0)puts(s2);

六、函数/函数指针 (共10题,每题1分,共计10分)

(  C  )
1、以下叙述中正确的是________。
A、在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误地表示
B、C程序由主函数组成
C、C程序由若干函数组成
D、C程序中只允许包含一个函数
(  D  )
2、设有宏定义:#define IsDIV(k,n) ((k%n==1)?1:0)且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&& IsDIV(m,7)为真时所要表达的是________。
A、判断m是否能被5或者7整除
B、判断m是否能被5和7整除
C、判断m被5或者7整除是否余1
D、判断m被5和7整除是否都余1
(  B  )
3、下面函数的功能是______。 sss ( char *s , char *t )
{
while (( *s ) && ( *t ) && ( *t++== *s++ )) ;
return ( *s-*t ) ;
}
A、求字符串的长度
B、比较两个字符串的大小
C、将字符串 s 复制到字符串 t 中
D、将字符串 s 接续到字符串 t 中
(  D  )
4、若有以下函数首部: int fun(double x[10],int *n) 则下面针对此函数的函数声明语句中正确的是________。
A、int fun(double x, int *n);
B、int fun(double, int);
C、int fun(double *x, int n);
D、int fun(double*, int*);
(  C  )
5、程序中对fun函数有如下说明 void*fun(); 此说明的含义是________。
A、fun函数无返回值
B、fun函数的返回值可以是任意的数据类型
C、fun函数的返回值是无值型的指针类型
D、指针fun指向一个函数、该函数无返回值
(  D  )
6、以下有关function过程的说法中,正确的是______ 。
A、函数名在过程中只能被赋值一次
B、如果在函数体内没有给函数名赋值,则该函数无返回值
C、如果在定义函数时没有说明函数的类型,则该函数是无类型的
D、执行函数过程中的Exit Function语句,将退出该函数,返回到调用点
(  C  )
7、函数定义为fun(int &i),变量定义n=100,则下面调用正确的是________。
A、Fun(20);
B、Fun(20+n);
C、Fun(n);
D、Fun(&n);
(  C  )
8、若有以下说明和定义union dt
{
int a;
char b;
double c;
}
data;
以下叙述中错误的是______。
A、data 的每个成员起始地址都相同
B、变量 data 所占的内存字节数与成员 c 所占字节数相等
C、程序段 data.a=5;printf("%f\n",data.;输出结果为 5.000000
D、data 可以作为函数的实参
(  A  )
9、关于函数参数,说法正确的是________。
A、实参与其对应的形参各自占用独立的内存单元
B、实参与其对应的形参共同占用一个内存单元
C、只有当形参与实参同名时才占用同一个内存单元
D、形参是虚拟的,不占用内存单元
(  C  )
10、以下与库函数strcmp(char*s,char*t) 的功能相等的程序段是________。
A、strcmp1(char *s,char *t){
for (;*s++==*t++;)
If (*s=='\0')
return 0;
return (*s-*t);
}
B、strcmp2(char *s,char *t){
for (;*s++==*t++;)
If (!*s) return 0;
return (*s-*t);
}
C、strcmp3(char *s,char *t){
for (;*t==*s;){
if (!*t)
return 0;
t++;
s++;
}
return (*s-*t);
}
D、strcmp4(char *s,char *t){
for (;*s==*t;s++,t++)
If (!*s) return 0;
return (*t-*s);
}

七、指针 (共10题,每题1分,共计10分)

(  B  )
1、以下能正确定义二维数组的是________。
A、int a[][3];
B、int a[][3]={2*3};
C、int a[][3]={};
D、int a[2][3]={{1},{2},{3,4}};
(  C  )
2、若有函数 max ( a , b ),并且已使函数指针变量 p 指向函数 max ,当调用该函数时, 正确的调用方法是______。
A、( *p ) max(a ,b) ;
B、*pmax(a , b) ;
C、( *p ) (a , b) ;
D、*p ( a , b );
(  C  )
3、下列叙述中错误的是________。
A、在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值
B、在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容
C、在C语言中,外部变量的隐含类型是自动存储类别
D、在C语言中,函数形参的存储类型是自动(aut类型的变量
(  D  )
4、设已有定义:float x; 则以下对指针变量p进行定义且赋初值的语句中正确的是______。
A、float*p=1024;
B、int*p=(float)x;
C、float p=&x;
D、float*p=&x;
(  B  )
5、设
void f1 (int *m,long & n);
int a; long b;
则以下调用合法的是______ 。
A、f1 (a,b);
B、f1(&a,b);
C、f1(a,&b);
D、f1(&a,&b);
(  A  )
6、以下程序运行后的输出结果是
#include <stdio.h>
void fun(int a,int b) {
int t;
t=a;
a=b;
b=t;
}
main( ) {
int c[10]=1,2,3,4,5,6,7,8,9,0,i;
for(i=0;i<10;i+=2) fun(c[i],c[i+1]);
for(i=0;i<10;i++) prinff("%d,",c[i]);
printf("\n");
}
A、1,2,3,4,5,6,7,8,9,0
B、2,1,4,3,6,5,8,7,0,9
C、0,9,8,7,6,5,4,3,2,1
D、0,1,2,3,4,5,6,7,8,9
(  C  )
7、下列选项中,表示字符串末尾的结束标志是________。
A、'\n'
B、'\r'
C、'\0'
D、NULL
(  B  )
8、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为________。
A、静态(static)
B、自动(auto)
C、外部(extern)
D、寄存器(register)
(  D  )
9、若希望下列的程序运行后输出25,程序空白处的正确选项是________。
main()
{
int i,j=50,a[]={7,4,10,5,8};
for(_____)
j+=a[i];
print(”%d”,j-40);
}
A、i=1;i<4;++i
B、i=1;i<3;++i
C、i=4;i>2;i--
D、i=2;i<4;++i
(  D  )
10、c语言中函数调用的方式有________。
A、函数调用作为语句一种
B、函数调用作为函数表达式一种
C、函数调用作为语句或函数表达式两种
D、函数调用作为语句、函数表达式或函数参数三种

八、结构体 (共10题,每题1分,共计10分)

(  A  )
1、有以下程序 struc stu
{
char name[10];
int num;
};
void f1(struct stu c)
{
struct stu b={"lisiguo",2042};
c=b;
}
void f2(struct stu *c)
{
struct stu b={"sundan",2044} ;
*c=b;
}
main( )
{
struct stu a={"yangsan",2041},b={"wangyin",2043} ;
f1(a);
f2(&b);
printf("%d %d\n",a.num,b.num);
}
执行后的输出结果是________。
A、2041 2044
B、2041 2043
C、2042 2044
D、2042 2043
(  C  )
2、以下关于c语言数据类型的叙述中正确的是________。
A、C基本数据类型包括:分为整型、实型、浮点型、字符型四种
B、实型常量的表达方式包括十进制形式、十六进制形式、二进制形式、八进制形式、指数形式
C、若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型
D、若只处理“真”和“假”两种逻辑值,应使用逻辑类型
(  A  )
3、下列选项中不属于c语言的数据类型是________。
A、复数型
B、逻辑型
C、双精度型
D、集合型
(  A  )
4、以下结构体类型说明和变量定义中正确的是________。
A、typedef struct
int n;char c;REC;
REC t1,t2;
B、struet REC;
int n;char c;;
REC t1,t2;
C、typedef struct REC;
int n=0;char c='A';t1,t2;
REC t1,t2;
D、struct
int n;char c;REC;
(  C  )
5、设有以下语句:
typedef struct tt { char c; int a[4]; } cin; 则下面叙述中正确的是________。
A、可以用TT定义结构体变量
B、TT是struct类型的变量
C、可以用CIN定义结构体变量
D、CIN是struct TT类型的变量
(  A  )
6、设有以下语句
typedef struct s
{
int g;
char h;
}
t;
则下面叙述中正确的是________。
A、可用S定义结构体变量
B、可以用T定义结构体变量
C、S是struct类型的变量
D、T是struct S类型的变量
(  A  )
7、c 语言中的基本数据类型包括
A、整型、实型、字符型
B、整型、字符型、数组
C、整型、实型、逻辑型
D、整型、实型、结构体
(  B  )
8、设有如下定义:
struct sk
{
int a;
float b;
}
data,*p;
若有p=&data;
则对data中成员a的引用正确的是________。
A、(*p).data.a
B、(*p).a
C、p->data.a
D、p.data.a
(  A  )
9、在下列程序段中,枚举变量c1,c2的值依次是________。
enum color
{
red,
yellow,
blue=4,
green,
white
}
c1,c2;
c1=yellow;
c2=white;
printf("%d,%d\n",c1,c2);
A、1,6
B、2,5
C、1,4
D、2,6
(  B  )
10、c语言中,定义结构体的保留字是________。
A、union
B、struct
C、enum
D、typedef

九、程序题 (共10题,每题1分,共计10分)

(  A  )
1、有以下程序
main()
{
int a,b,c=246;
a=c/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);
}
输出结果是________。
A、2,1
B、3,2
C、4,3
D、2,-1
(  B  )
2、已知x=2.5,a=7,y=4.7,则表达式 x+a%3*(int)(x+y)%2/4 的结果是________。
A、2.4
B、2.5
C、2.75
D、0
(  D  )
3、下面程序的输出是 ___________
#include<stdio.h>
void main()
{
int k=11;
printf("k=%d,k=%o,k=%x\n",k,k,k);
}
A、k=11,k=12,k=11
B、k=11,k=13,k=13
C、k=11,k=013,k=0xb
D、k=11,k=13,k=b
(  A  )
4、已知字母a的ascii码为十进制数65,下面程序的输出结果是________。
main( ) {
char ch1,ch2;
ch1=a+5-3;
ch2=a+6-3;
printf("%d,%c\n",ch1,ch2);
}
A、67,D
B、B,C
C、C,D
D、不正确定的值
(  C  )
5、下列程序的输出结果是______。 int fun(int x,int y,int*cp,int*dp)
{
*cp=x+y;
*dp=x-y;
}
main()
{
int a, b, c, d;
a=30;
b=50;
fun(a,b,&c,&d);
printf("%d,%d\n", c, d);
}
A、50,30
B、30,50
C、80,-20
D、80,20
(  A  )
6、下列程序的输出结果是______。
#include <stdio.h>
main()
{
union
{
int k;
char i[2];
}
*s,a;
s=&a;
s->i[0]=0x39;
s->i[1]=0x38;
printf("%x\n",s->k);
}
A、3839
B、3938
C、380039
D、390038
(  D  )
7、以下程序结果为:______。
void add( )
{
static int y=1;
y++;
printf("%d",y);
}
main( )
{
int m;
for(m=0;m<4;m++)add( );
}
A、1234
B、2222
C、1111
D、2345
(  C  )
8、有以下程序
main()
{
int a=666,b=888;
printf("%d\n",(a,b));
}
程序运行后的输出结果是______。
A、错误信息
B、666
C、888
D、666,888
(  B  )
9、有以下程序
#include <stdio.h>
#define N 4
void fun(int a[][N],int b[])
{
int i;
for(i=0;i<N;i++) b[i]=a[i][i];
}
main()
{
int x[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;
fun(x,y);
for(i=0;i<N;i++) printf("%d,",y[i]);
printf("\n");
}
程序的运行结果是______。
A、1,2,3,4,
B、1,0,7,0,
C、1,4,5,9,
D、3,4,8,10,
(  B  )
10、有以下程序的输出结果为________。
main()
{
char a = 0x95, b, c;
b = (a & 0xf) << 4;
c = (a & 0xf0) >> 4;
a = b | c;
printf("%x\n",a);
}
A、24
B、59
C、34
D、56