湖北工业大学计算机C语言期末
本试卷为湖北工业大学计算机C语言期末,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
计算机C语言期末
一、理论基础 (共20题,每题1分,共计10分)
( D )
1、合法的c语言赋值语句是________。
( A )
2、设int x=7,则~x的值是________。
( D )
3、设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是________。
( A )
4、阅读以下程序,则执行下面语句后m 的值是________。 int w=1,x=2,y=3,z=4,m; m=w<x?w:x; m=m<y?m:y; m=m<z?m:z;
( B )
5、下列能正确定义且赋初值的语句是________。
( C )
6、若以下选项中的变量已正确定义,则正确的赋值语句是________。
( D )
7、设char型变量x中的值为10100111,则表达式(2+x)^(~3)的值是________。
( D )
8、在c语言中,下列运算符优先级最高的是________。
( A )
9、以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子x/(y*z)的c语言表达式是 ______ 。
( B )
10、串是任意有限个 (46) 。
( A )
11、十六进制数100转换为十进制数为
( C )
12、若已定义x和y是整型变量,x=2; 则表达式y=2.75+x/2的值是________.
( B )
13、某学校有1500名学生,若用二进制来编学号,需要多少位来表示。
( C )
14、以下不合法的用户标识符是________。
( C )
15、该语句打印结果为(每个d后都有空格)printf("%d ", printf("%d ", printf("%d ", 43)));
( C )
16、以下叙述中错误的是________。
( B )
17、以下标识符中,不能作为合法的c用户定义标识符的是________。
( C )
18、以下叙述中不正确的是________。
( D )
19、在c 语言中,退格符是________。
( C )
20、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为____
二、控制结构 (共10题,每题1分,共计10分)
( C )
1、在嵌套使用if语句时,c语言规定else总是________。
( C )
2、若a的值为3时,下列程序段被执行后,c的值是________。 int c = 1; if (a>0) if (a>3) c = 2; else c = 3; else c = 4;
( C )
3、执行以下程序段后,w的值为________。 int w='a',x=14,y=15; w=((x||y)&&(w<'a'));
( A )
4、有以下程序
main()
{
int i;
for(i=0;i<3;i++)
switch(i)
{
case 1: printf("%d",i);
case 2: printf("%d",i);
default: printf("%d",i);
}
}
执行后输出的结果是________。
( A )
5、以下程序的输出结果是________。
#include<stdio.h>
main()
{
int a=4,b=3,c=2,d=1;
printf("%d",a<b?a:d<c?d:b);
}
( C )
6、若有定义:float x=1.5; int a=1,b=3,c=2; 则正确的switch语句是________。
( C )
7、以下程序的输出结果是________。
#include<stdio.h>
main()
{
int a=1,b=3;
if((++a<0)&&!(b--<=0)) printf("%d,%d\n",a,b);
else printf("%d,%d\n",b,a);
}
( B )
8、以下if语句书写正确的是________。
( C )
9、c语言中下面哪个不是条件语句?
( A )
10、c语言的if语句嵌套时,if与else的配对关系是________。
三、循环结构 (共10题,每题1分,共计10分)
( A )
1、下列叙述中正确的是________。
( A )
2、下列while循环的次数是________。 while (int i=0)i--;
( D )
3、现有以下语句: i=1; for (;i<=100;i++) sum+=i;
( B )
4、以下选项中与if(a==1)a++; else a=b; 语句功能不同的语句是________。
( D )
5、分析下列程序,其最终执行结果是______。
main()
{
int n[3],i,j,k;
for(i=0;i<3;i++)n[i]=o;
k=2;
for(i=0;i<k;i++) for(j=0;j<k;j++) n[j]=n[i]-1;
printf("%d\n",n[0]);
}
( A )
6、下面程序的运行结果是________。
#include <stdio.h>
void main()
{
int y=10;
do
{
y--;
}
while(--y);
printf("%d\n",y--);
}
( B )
7、下面程序
main()
{
int y=9;
for(;y>0;y--)
{
if(y%3==0)
{
printf("%d",--y);
continue;
}
}
}
的输出是______。
( C )
8、下面的代码int i=10; 之后的for循环语句,语法正确,不会编译出错的是________。
( A )
9、定义如下变量:int n=10;
则下列循环的输出结果是________。
while(n>7)
{
n--;
printf(''%d'',n);
}
( B )
10、设 j 和 k 都是 int 类型,则 for 循环语句
for(j=0,k=-1;k=1;j++,k++) printf("****\n");()。
四、数组/指针数组 (共10题,每题1分,共计10分)
( C )
1、下列描述中不正确的是________。
( B )
2、以下对二维数组a进行正确初始化的是________。
( B )
3、有以下程序
main()
{
char p[]={'a', 'b', 'c'} , q[10]={'a', 'b', 'c'} ;
printf("%d %d\n", strlen(p), strlen(q));
}
以下叙述中正确的是________。
( B )
4、若有说明:int a[][3]={{1,2,3},{4,5},{6,7}};则数组a的第一维的大小为: ( )
( B )
5、当调用函数时,实参是一个数组名,则向函数传送的是 _______ 。
( D )
6、已有定义:int i,a[10],*p; 则合法的赋值语句是________。
( C )
7、有定义语句:int*p[4]; 以下选项中与此语句等价的是________。
( D )
8、合法的数组定义是________。
( C )
9、下面程序的运行结果是
#include<stdio.h>
main()
{
int a=28,b;
char s[10],*p;
p=s;
do
{
b=a%16;
if(b<10) *p=b+48;
else *p=b+55;
p++;
a=a/5;
}
while(a>0);
*p='\0';
puts(s);
}
( A )
10、设有数组定义:char array[]="china"; 则数组array所占的空间为________。
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( A )
1、下述程序用来输出两个字符串前7个字符中对应相等的字符及其位置号,则程序空白上应该填写的是________。
main()
{
char s1[]="chinese",s2[]="japanese";
int i;
for(i=0;s1[i]='\0'&&s2[i]!='\0';i++) if(s1[i]==s2[i]&&i<7) ________;
}
( B )
2、若输入字符串:abcde<回车>,则以下while循环体将执行多少次。 while((ch=getchar())!='e') printf("*");
( D )
3、如果在一个运算表达式中包含有逻辑运算、关系运算和算术运算,并且其中未用圆括号规定这些运算的先后顺序,那么这样的综合型表达式的运算顺序是______。
( A )
4、下列哪个是c语言的有效标识符
( B )
5、下列关于串的叙述中,哪一条是正确的( )
( D )
6、下列字符串中可以用作c标识符的是________。
( D )
7、宏定义是最常用的预处理功能之一,它用于将一个标识符定义为一个______
( B )
8、下列数据中属于"字符串常量"的是________。
( B )
9、字符串指针变量中存入的是________。
( A )
10、下面程序段输出两个字符串中对应相等的字符。请分析程序填空。
char x[]="programming";
char y[]="fortran";
int i=0;
while (x[i]!='\0'&&y[i]!='\0')
if (x[i]==y[i]) printf("%c", _____);
else i++;
六、函数/函数指针 (共10题,每题1分,共计10分)
( B )
1、若函数中有定义语句:int k; 则
( A )
2、假设有语句sizeof(double),则它是________。
( B )
3、在下列叙述中,错误的一条是________。
( C )
4、下列关于形参的说法,正确的是________。
( B )
5、在函数说明时,下列不必要的是________项。
( A )
6、通常适用于从被调用函数中将一个值传回主调函数的参数传递方式是________。
( D )
7、c语言程序的三种基本结构是________。
( C )
8、下面说法正确的是________。
( D )
9、对于 if(表达式)语句,以下说法正确的是________。
( D )
10、下列叙述中正确的是________。
七、指针 (共10题,每题1分,共计10分)
( D )
1、若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是________。
( B )
2、c语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为________.
( B )
3、有以下定义 char a[10],*b=a; 不能给数组a输入字符串的语句是________。
( C )
4、已知int a[3][4]; 则对数组元素引用正确的是____
( B )
5、下面程序输出数组中的最大值,由 s 指针指向该元素 .
void main ()
{
int a[10]={6 , 7 , 2 , 9 , 1 , 10 , 5 , 8 , 4 , 3 , } , *p , *s ;
for ( p=a , s=a ; p-a<10 ; p++ )
if (________) s=p ;
printf ( "the max : %d" , *s ):
}
则在 if 语句中的判断表达式应该是______。
( C )
6、定义如下变量和数组 : int i;
int x[4][4]= { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };
则下面语句的输出结果是 __________.
for(i=0;i<4;i++)
printf("%3d",x[i][3-i]);
( B )
7、设矩阵a是一个n×n对称矩阵.即a[i,j]=a[i,j],为了节省存储空间,将其下三角部分按行序为主序存放在一维数b[1...n(n+1)/2]中,对任一下三角元素aij(i≥j),在一维数组b的下标位置k的值是______。
( B )
8、有以下程序: int*f(int*x,int*y)
{
if(*x<*y) return x;
else return y;
}
main()
{
int a=7,b=8,*p,*q,*r;
p=&a;
q=&b;
r=f(p,q);
print("% d,% d,% d\n",*p,*q,*r);
}
执行后的输出结果是 ______。
( B )
9、若有说明:inta,b=2,*p=&a; 则能完成a=b赋值功能的语句是______。
( D )
10、以下对一维整型数组a的正确说明是________。
八、结构体 (共10题,每题1分,共计10分)
( B )
1、有以下结构体说明和变量的定义,且指针p指向变量a’指针q指向变量b,则不能把结点b连接到结点a之后的语句是________。
struct node
{
char data;
struct node*next;
}
a,b,*p=&a,*q=&b;
( A )
2、有以下程序
struct stu
{
char name[10];
int num;
};
void f(char *name, int num)
{
struct stu s[2]={{"sundan",20044},{"penghua",20045}};
num = s[0].num;
strcpy(name, s[0].name);
}
main()
{
struct stu s[2]={{"yangsan",20041},{"lisiguo",20042}},*p;
p=&s[1];
f(p->name, p->num);
printf("%s %d\n", p->name, p->num);
}
程序运行后的输出结果是________。
( A )
3、有以下程序 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);
}
执行后的输出结果是________。
( C )
4、以下对 c 语言中共用体类型数据的叙述正确的是______。
( D )
5、设有下面的定义:
struct st
{
int a;
float b;
} d;
int*p;
要使p指向结构变量d中的a成员,正确的赋值语句是________。
( C )
6、设
struct data
{
int a;
float b;
} c,*p=&c;
,引用正确的是________。
( D )
7、若有以下定义的语句
struct student
{
int age;
int num;
};
struct student stu[3]={{1001,20},{1002,19},{1003,21}};
main()
{
struct student *p;
p=stu;
…
}则以下不正确的引用是________。
( C )
8、若定义下列结构体,结构体变量p的出生年份赋值正确的语句是________。
struct st
{
int x;
int y;
int z;
}
struct worker
{
char name[20];
char sex;
struct st birth;
} p;
( B )
9、有如下定义
struct person
{
char name[9];
int age;
}
;
struct person class[10] = {"john",17, "paul",19, "mary",18, "adam",16};
根据上述定义,能输出字母a的语句是______。
( C )
10、在c语言中,系统为一个结构体变量分配的内存是________。
九、程序题 (共10题,每题1分,共计10分)
( B )
1、下列程序的运行结果是________。
#define ADD(x)X+X
main()
{
int m=1,n=2,k=3: int s=ADD(m+n)*k;
printf("s=%d",s):
}
( A )
2、有以下程序
#include<stdio.h>
void fun (char*c,int d)
{
*c=*c+1;
d=d+1;
printf("%c,%c,",*c,d);
}
main()
{
char b=’a’,a=’a’;
fun(&b,a);
printf("%c,%c\n",b,a);
}
程序运行后的输出结果是________。
( D )
3、有以下程序 fun(int a, int b)
{
if(a>b) return(a);
else return(b);
}
main()
{
int x=3, y=8, z=6, r;
r=fun(fun(x,y), 2*z);
printf("%d\n", r);
}
程序运行后的输出结果是________。
( C )
4、有以下程序
#include <stdio.h>
int f(int x)
{
int y;
if(x==0||x==1) return (3);
y=x*x-f(x-2);
return y;
}
main()
{
int z;
z=f(3);
printf("%d\n",z);
}
程序的运行结果是________。
( B )
5、执行下面的一段c程序后,变量sum的值应为______。 char chr=127; int sum=300; chr +=1; sum +=chr;
( C )
6、有以下程序
main()
{
int x,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
程序运行后的输出结果是______。
( D )
7、有以下程序
main()
{
int a[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++) p[i]=i;
for(i=0;i<3;i++) printf("%d",a[1][i]);
}
程序运行后的输出结果是______。
( C )
8、有以下程序
#include <stdio.h>
#include <stdlib.h>
int fun(int n)
{
int *p;
p=(int*)malloc(sizeof(int));
*p=n;
return *p;
}
main()
{
int a;
a=fun(10);
printf("%d\n",a+fun(10));
}
程序的运行结果是______。
( C )
9、有以下程序
#include <string.h>
main()
{
char p[20]={'a','b','c','d'},q[]="abc",r[]="abcde";
strcpy(p+strlen(q),r);
strcat(p,q);
printf("%d\n", strlen(p));
}
程序运行后的输出结果是______。
( B )
10、下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。请分析程序填空。
#include<stdio.h>
main()
{
char s[80],c1,c2=' ';
int i=0,num=0;
gets(s);
while(s[i]!='\0')
{
c1=s[i];
if( ) num++;
i++;
c2=c1;
}
printf("there are %d words.\n",num);
}
相关标签:
- C语言
- 湖北工业大学
- 期末