山西农业大学历年计算机C语言期末
本试卷为山西农业大学历年计算机C语言期末,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
计算机C语言期末
一、理论基础 (共20题,每题1分,共计10分)
( B )
1、交换两个变量的值,不允许用临时变量,应该使用下列( )位运算符。
( D )
2、以下关于long、int和short类型数据占用内存大小的叙述中正确的是________,
( B )
3、下列一组初始化语句中,正确的是 __________.
( A )
4、59,73,83,94,( )
( C )
5、设以下变量均为int类型,表达式的值不为7的是________。
( B )
6、下列语句中,不正确的一个是______。
( B )
7、如果将布尔常量值true赋值给一个整型变量,则整型变量的值为________。
( A )
8、已知英文字母m的ascii码值为109,那么英文字母p的ascii码值是________。
( D )
9、下列对整型常量定义的解释中正确的是________。
( C )
10、若内存按字节编址,用存储容量为32k×8bit的存储器芯片构成地址编号a0000h至dffffh的内存空间,则至少需要______片。
( A )
11、若有说明语句:char c=‘\72’; 则变量c________。
( B )
12、在c中,合法的字符常量是 ______。
( B )
13、设有定义:double x; 则以下能够正确输入变量x值的语句是______。
( D )
14、可以作为自定义标识符的是________。
( C )
15、若变量已正确说明为int类型,要给a,b,c输入数据,以下正确的输入语句是________。
( C )
16、若a为int类型,且其值为2,则执行完表达式a+=a-=a*a后,a的值是______。
( C )
17、以下数值中,不正确的八进制数或十六进制数是________。
( A )
18、c语言中运算对象必须是整型的运算符是________。
( A )
19、与语句x*=y-1等价的语句是________。
( D )
20、在 C语言中,能代表逻辑值“真”的是()。
二、控制结构 (共10题,每题1分,共计10分)
( D )
1、能正确表示a和b同时为正或同时为负的逻辑表达式是________。
( C )
2、设变量a、b、e、d和y都已正确定义并赋值。若有以下if语句: if(a<b) if(c==d) y=0; else y=1; 该语句所表示的含义是________。
( A )
3、有如下程序:
main ()
{
int x = 1, a = 0, b = 0;
switch (x)
{
case 0:
b++;
case 1:
a++;
case 2:
a++;
b++;
}
printf ("a = %d, b = %d\n", a, b);
}
该程序的输出结果是________。
( C )
4、当从键盘上输入字符"12134211"下面程序的 输出结果是________。
main( )
{
char s;
int v1=0,v2=0,v3=0,v4=0,k;
for(k=0;k<=7;k++)
{
scanf("%c",&s);
switch(s)
{
default: v4++;
case '1': v1++;
case '3': v3++;
case '2': v2++;
}
}
printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);
}
( C )
5、运行以下程序后,如果从键盘上输入china#<回车>, 则输出结果为
#include <stdio.h>
main( )
{
int v1=0,v2=0;
char ch;
while ((ch=getchar( ))!='#') switch(ch)
{
case 'a': case 'h': default: v1++;
case 'o': v2++;
}
printf("%d,%d\n",v1,v2);
}
( A )
6、下列叙述中正确的是________。
( 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、假定所有变量均已正确定义,下列程序段运行后x的值是________。 k1=1; k2=2; k3=3; x=15; if(!k1) x--; else if(k2) x=4; else x=3;
( D )
9、执行下列程序段后,m 的值是________. int w=2,x=3,y=4,z=5,m; m=(w
( C )
10、a,b 为整型变量,二者均不为 0,以下关系表达式中恒成立的是()。
三、循环结构 (共10题,每题1分,共计10分)
( C )
1、在do-while循环中,循环由do开始,用while结束,必须注意的是,在while表达式后面的 不能丢,它表示do-while循环的结束。
( C )
2、以下描述中正确的是________。
( D )
3、c语言中下列叙述正确的是_______。
( A )
4、下列while循环的次数是________。 while (int i=0)i--;
( D )
5、给定下面的代码: int i=1,j=10;
do
{
if(i++>--j) continue;
}
while(i<5) 执行完之后,i与j的值分别是多少 ( )
( B )
6、下列for循环语句的执行次数是________。 for(int x=0,y=0;(y!=0)&&(x<4);x++)
( D )
7、有以下程序:
#include<stdio.h>
main()
{
int x=8;
for(;x>0;x--)
{
if(x%3)
{
printf("%d,",x--);
continue;
}
printf("%d,",--x);
}
}
程序的运行结果是______。
( B )
8、c语言中下面哪个不是循环语句?
( A )
9、以下关于continue语句的描述中正确的是________。
( C )
10、以下是死循环的程序段是________。
四、数组/指针数组 (共10题,每题1分,共计10分)
( D )
1、若有定义:int c[4][5],(*cp)[5]; 和语句cp=c; ,则能正确引用c数组元素的是________。
( C )
2、已有定义:char a[]="xyz",b[]={'x','y','z'}; 以下叙述中正确的是________。
( B )
3、对以下说明语句的正确理解是________。 int a[10]= {6,7,8,9,10 };
( C )
4、若有说明语句:int i,x[3][4]; 则不能将x[1][1]的值赋给变量i的语句是______。
( C )
5、若有下面的程序片段:
int[12]={0},*p[3],**pp,i;
for(i=0;i<3;i) p[i]=&a[i*4];
pp=p
则对数组元素的错误引用是________。
( A )
6、下列对字符数组进行初始化的语句正确的是________。
( B )
7、有以下程序
main()
{
int a[3][2]={0},(*ptr)[2],i,j;
for(i=0;i<2;i++)
{
ptr=a+i;
scanf("%d",ptr);
ptr++;
}
for(i=0;i<3;i++)
{
for(j=0;j<2;j++) printf("%2d",a[i][j]);
printf("\n");
}
}
若运行时输入:1 2 3<回车>,则输出结果是______。
( C )
8、char a[10]; 不能将字符串"abc"存储在数组中的是________。
( D )
9、以下对一维数组a 的正确说明是________。
( D )
10、若有说明:int a[10];则对 a 数组元素的正确引用是()。
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( B )
1、c语言中,下列不合法的字符串常量是________。
( C )
2、以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是________。
( B )
3、下列选项中c语言中不合法的字符串常量的是________。
( A )
4、以下不能将s所指字符串正确复制到t所指存储空间的是______。
( A )
5、下列合法的字符型常量是________。
( B )
6、以下程序段的执行结果为
#define PLUS(X,Y)X+Y
main()
{
int x=1,y=2,z=3,sum;
sum=PLUS(x+y,z)*PLUS(y,z);
printf("SUM=%d",sum);
}
( D )
7、按照c语言规定的用户标识符命名规则,不能出现在标识符中的是________。
( D )
8、下面关于编译预处理命令,正确的是________。
( B )
9、下列数据中属于"字符串常量"的是________。
( B )
10、字符串指针变量中存入的是________。
六、函数/函数指针 (共10题,每题1分,共计10分)
( B )
1、在下列语句中,其含义为"q是一个函数指针,该指针指向整型数据"的定义语句是________。
( D )
2、调用函数时,当实参和形参都是简单变量时,它们之间数据传递的过程是 __________.
( A )
3、对于一个正常运行的c程序,以下叙述中正确的是________。
( C )
4、下列说法不正确的是________。
( C )
5、以下叙述中错误的是________。
( B )
6、下列各项中不属于算法基本特征的是________。
( A )
7、有函数char fun(char *p) { return p; } 该函数的返回值是________。
( A )
8、程序运行过程中常使用参数在函数(过程)间传递信息,引用调用传递的是实参的________。
( C )
9、若x为int型变量,则以下函数fun的类型为________。
fun(x)
{
printf("%d\n",x);
}
( C )
10、sizeof(float)是________。
七、指针 (共10题,每题1分,共计10分)
( D )
1、char *s="\t\\name\\address\n"; 指针 s 所指字符串的长度为: 。
( D )
2、设有语句:"int a=1,b=2,*p1=&a,*p2=&b; ",则使指针p1指向变量b的赋值语句是______。
( B )
3、若有定义:int w[3][5]; 则以下不能正确表示该数组元素的表达式是________。
( D )
4、在函数声明中,下面哪项是不必要的________。
( A )
5、在c语言中,若函数调用时实参是数组名,则传递给对应形参的是______。
( D )
6、下列程序的输出结果是________。
void f(int*x,int*y)
{
int t;
t=*x,*x=*y;
*y=t;
}
main()
{
int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;
p=a;
q=&a[7];
while(p<q)
{
f(p,q);
p++;
q--;
}
for(i=0;i<8;i+)printf("%d,",a[i]);
}
( A )
7、下列程序的运行结果是________。
#include<stdio.h>
void sub(int*s,int*y)
{
static int m=4: *y=s[m];
m--;
}
void main()
{
int a[]={1,2,3,4,5},k,x;
printf("\n");
for(k=0;k<=4;k++)
{
sub(a,&x);
printf("%d,",x);
}
}
( A )
8、下列程序的运行结果是________。
#include<stdio.h>
void fun(int*s,int*p) {
static int t=3;
*p=s[t];
t--;
}
main()
{
int a[]= { 2,3,4,5}, k;
int x;
for(k=0;k<4;k++) {
fun(a,&x);
printf("%d,",x);
}
}
( B )
9、以下叙述中错误的是______。
( C )
10、有以下程序
#include <string.h>
void f(char p[][10],int n) /* 字符串从小到大排序 */
{
char t[10];
int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(p[i],p[j])>0)
{
strcpy(t,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],t);
}
}
main()
{
char p[5][10]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[0]));
}
程序运行后的输出结果是______。
八、结构体 (共10题,每题1分,共计10分)
( B )
1、下面结构体的定义语句中,错误的是________。
( C )
2、设有以下说明语句 struct stu
{
int a ;
float b ;
}
stutype ;
则下面的叙述不正确的是______。
( D )
3、下面程序的输出是______。
main ()
{
struct cmplx
{
int x ;
int y ;
}
cnum[2]={1 , 3 , 2 , 7};
printf ( "%d\n" , cnum[0].y/cnum[0].x*cnum[1].x );
}
( B )
4、以下对枚举类型名的定义中正确的是______。
( B )
5、若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是________。
struct stu {
int i;
int name;
} st,*p; p=&st;
( C )
6、若定义下列结构体,结构体变量p的出生年份赋值正确的语句是________。
struct st
{
int x;
int y;
int z;
}
struct worker
{
char name[20];
char sex;
struct st birth;
} p;
( B )
7、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是 struct node char data; struct node*next; a,b,*p=&a,*q=&b;
( D )
8、有以下程序:
#include <stdio.h>
struct s
{
int a, b;
}
data[2]= {10, 100, 20, 200 };
main()
{
struct s p=data[1];
printf("%d\n", ++(p.a));
}
程序运行后的输出结果是______。
( A )
9、有以下程序
struct stu
{
char num[10];
float score[3];
}
;
main( )
{
struct stu s[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p;
int i;
float sum=0;
p=s+1;
for(i=0;i<3;i++)sum=sum+p->score[i];
printf("%.3f\n",sum);
}
程序运行后的输出结果是___________。
( B )
10、以下对枚举类型名的定义中正确的是________。
九、程序题 (共10题,每题1分,共计10分)
( A )
1、有以下程序:
main()
{
char ch;
ch='a'+'5'-'3';
printf("%d,%c\n",ch,ch);
}
程序的输出结果是________。
( B )
2、有以下程序
main( )
{
int x=0,y=5,z=3;
while(z-->0&&++x<5) y=y-1;
printf("%d,%d,%d\n",x,y,z);
}
程序执行后的输出结果是________。
( D )
3、阅读下面的程序
#include<stdio.h>
void main()
{
int i,j;
i=010;
j=9;
printf("%d,%d",i-j,i+j);
}
则程序的运行结果是 __________.
( C )
4、若有如下定义并赋值: char ch='a', a; 则执行语句"printf("%d",a=ch+2.6); "后的输出结果是________。
( B )
5、下列程序的输出结果是______。
main()
{
int i;
for(i=0;i<2;i++) add();
}
add()
{
int x=0;
static int y=0;
printf("%d,%d\n",x,y);
x++;
y=y+2;
}
( C )
6、请读程序:
# include<stdio.h>
main( ) {
int num=0;
while(num<=2) {
num++;
printf("%d\n",num);
}
}
上面程序的输出结果是________。
( A )
7、以下程序运行后的输出结果是 ______。
main()
{
int a,b,c;
a=10;
b=20;
c=(a%b<1)||(a/b>1);
printf("%d %d %d\n",a,b,c);
}
( B )
8、下面程序的输出结果是______。
main( )
{
int b[]={1,2,3,4,5,6,7,8,9,0},*q;
q=b;
printf("%d\n",*(q+0));
}
( C )
9、下列程序执行后的输出结果是________。
main()
{
char x=0xFFFF;printf(”%d”,x--);
}
( D )
10、下面程序有错误的行是(行前数字表示行号) 。
1 main()
{
2 int a[3]={3*0};
3 int i;
4 for(i=0;i<3;i++)
5 scanf("%d",&a[i]);
6 for(i=1;i<3;i++)
7 a[0]=a[0]+a[i];
8 printf("%d\n",a[0]);
}
相关标签:
- C语言
- 山西农业大学
- 期末