西北民族大学历年C语言程序设计专升本精选样卷

本试卷为西北民族大学历年C语言程序设计专升本精选样卷,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

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

C语言程序设计专升本精选样卷

一、单项选择题 (共20题,每题2分,共计40分)

(  A  )
1、以下关于typedef的叙述错误的是________。
A、用typedef可以增加新类型
B、typedef只是将已存在的类型用一个新的名字来代表
C、用typede{可以为各种类型说明一个新名,但不能用来为变量说明一个新名
D、用typedef为类型说明一个新名,通常可以增加程序的可读性
(  A  )
2、两个或两个以上模块之间联系的紧密程度称为( )。
A、耦合性
B、内聚性
C、复杂性
D、数据传输特性
(  B  )
3、下列定义数组的语句中,正确的是________。
A、int N=10;
B、#define N 10
int x[N]; int x[N];
C、int x[0..10];
D、int x[];
(  A  )
4、若有下面的说明和定义:
struct test
{
int ml;
char m2;
float m3;
union uu
{
char ul[5];
int u2[2];
}
ua;
}
myaa;
则sizeof(struct test )的值是________。
A、12
B、16
C、14
D、9
(  B  )
5、若 x 为 int 型变量 , 则执行以下语句后 ,x 的值为 。 x=6; x+=x-=x*x;
A、36
B、-60
C、60
D、-24
(  D  )
6、若有说明int a[3][4]; 则a数组元素的非法引用是________。
A、a[0][2*1]
B、a[1][3]
C、a[4-2][0]
D、a[0][4]
(  A  )
7、一个c程序由函数a( ),b( ),c( )和函数p( )构成,在函数a( )中分别调用了函数b( )和函数c ( ),在函数b( )中调用了函数a( ),且在函数p( )中也调用了函数a( ),则可以说
A、函数B( )中调用的函数A( )是函数A( )的间接递归调用
B、函数A( )被函数B( )调用是直接递归调用
C、函数P( )直接递归调用了函数A( )
D、函数P( )中调用的函数A( )是函数P( )的嵌套
(  B  )
8、下列赋值语句错误的是________。
A、A
B、i==0;
C、i=i+1:
D、i+=1:
(  C  )
9、逗号表达式"(a=3*5,a*4),a+15"的值是________。
A、15
B、60
C、30
D、不确定
(  A  )
10、有以下程序:
main()
{
int a=3,b=4,c=5,d=2;
if(a>b) if(b>c) printf("%d",d+++ 1);
else printf("%d",++d+1);
printf("%d\n",d);
}
程序运行后的输出结果是 ______。
A、2
B、3
C、43
D、44
(  B  )
11、宏定义用于将一个标识符定义为一个
A、常量
B、字符串
C、整数
D、长整数
(  D  )
12、下面有关for循环的正确描述是________。
A、for循环只能用于循环次数已经确定的情况
B、for循环是先执行循环体语句,后判断表达式
C、在for循环中,三个表达式都不能省略
D、for循环的循环体语句中,可以包含多条语句,但必须用大括号括起来
(  B  )
13、有以下程序
main( )
{
int c=5,x;
scanf("%d",&x);
switch(x+1)
{
case 6: c++;
case 8: ++c;
break;
default:c+=3;
}
printf("%d",c);
}
程序运行时,从键盘输入: 5<回车>,程序执行后的输出结果是________。
A、6
B、7
C、8
D、语法错
(  C  )
14、用冒泡排序对4,5,6,3,2,1进行从小到大排序,第三趟排序后的状态为________。
A、4 5 3 2 1 6
B、4 3 2 1 5 6
C、3 2 1 4 5 6
D、2 1 3 4 5 6
(  A  )
15、设有如下定义:
struct sk
{
int a;
float b;
}
data,*p;
若要使p指向data中的a域,正确的赋值语句是________。
A、p=(struct sk*)&data.a;
B、p=(struct sk*) data.a;
C、p=&data.a;
D、*p=data.a;
(  C  )
16、下列程序段的输出结果为________。 int a=7,b=9,t; t=a*=a>b?a:b; printf("%d",t);
A、7
B、9
C、63
D、49
(  D  )
17、int a[10];
合法的数组元素的最小下标值为____
A、10
B、9
C、1
D、0
(  D  )
18、下述程序段的输出结果是________。
main( ){
int x=10, y=10;
printf(''%d, %d\n'', x++, ++y);
}
A、10,10
B、11,11
C、11,10
D、10,11
(  A  )
19、以下函数调用语句中实参的个数是()。
func((e1,e2),(e3,e4,e5));
A、2
B、3
C、5
D、语法错误
(  D  )
20、以下程序段的输出结果是()。
char *alp[]={"ABC","DEF","GHI"}; int j; puts(alp[1]);
A、A
B、B
C、D
D、DEF

二、判断题 (共10题,每题2分,共计20分)

(   F  )
1、在c程序中,abc与ABC是两个相同的变量。 
(   T  )
2、比较两个字符串是否相等不能通过条件运算符"=="。 
(   T  )
3、do…while循环语句中的循环体至少会执行一次。 
(   F  )
4、函数调用时,如果把数组名作实参,则形参数组元素的值发生变化时,实参数组元素的值不发生变化。 
(   T  )
5、共用体变量所占的内存长度等于最长的成员的长度。 
(   F  )
6、在c语言程序设计中函数是允许嵌套定义的。 
(   F  )
7、全局变量的作用域是整个源程序文件。 
(   T  )
8、c语言函数默认的返回值类型是 int 。( ) 
(   T  )
9、逻辑表达式的值只能为1或0。 
(   T  )
10、数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。 

三、填空题 (共5题,每题4分,共计20分)

1、在c语言的循环语句for,while,do-while语句中,用于直接中断最内层循环的语句是________。 我的答案: break
2、八进制数37转换成二进制数是________ 。
3、#include <stdio.h>
void main()
{
int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for (i=1;i<3;i++) for (j=0;j<i;j++) s+=a[i][j];
printf("%d\n",s);
}
4、对于文件末尾检测函数feof,如果文件指针已到文件末尾,则函数返回值是________。
5、函数的形参在未被调用前不分配空间,函数形参的____要和实参相同。

四、程序分析题 (共4题,每题5分,共计20分)

1、下列程序运行时,若输入1abcedf2df<回车> 输出结果为 ________ 。
#include <stdio.h>
main()
{
char a=0,ch;
while((ch=getchar())!=‘\n’)
{
if(a%2!=0&&(ch>=‘a’&&ch<=‘z’)) ch=ch-‘a’+‘a’;
a++;
putchar(ch);
}
printf("\n");
}
2、以下程序的输出结果是 ________。
#include<stdio.h>
void swap(int *a,int *b)
{
int *t;
t=a;
a=b;
b=t;
}
main()
{
int i=3,j=5,*p=&i,*q=&j;
swap(p,q);
printf("%d %d\n",*p,*q);
}
3、下列程序段的运行结果是_____。
char s1[20]="abcdef", s2[5]="abc";
strcpy(s1,s2);
printf("%c", s1[2]);
4、下面程序可求出矩阵两条对角线上的元素之和。请分析程序填空。
main()
{
int a[3][3]={1,3,6,7,9,11,14,15,17},sum1=0,sum2=0,i,j;
for(i=0;i<3;i++)for(j=0;j<3;j++)
if(i==j) sum1+=a[i][j];
for(i=0;i<3;i++)
for( 【1】________;【2】________;j--)
if(i+j==2) sum2+=a[i][j];
printf("sum1=%d,sum2=%d\n",sum1,sum2);
}

五、编程题 (共3题,每题0分,共计50分)

1、编写程序:从键盘上输入一个数字组成的字符串(字符串长度小于8),将该字符串转换成一个十进制数
例如:从键盘上输入2345,则程序运行的结果应当为:n=2345()
2、编程: 从键盘上输入一个正整数n,计算并输出n的阶乘
例如: 如果从键盘上输入8, 程序的运行结果应为:the result is: 40320()
3、有以下职工信息,使用结构体数组存储这些信息,从键盘输入5条记录,
之后在屏幕上依次输出职工信息。
struct stuff{
int stuffID;//职工编号
float bonus; //工资
};
【输入形式】5条职工信息,分行输入,数据间空格隔开
【输出形式】分行输出5条职工信息和最低工资,每行数据均使用1个空格分隔
【输入样例】
1001 8540.59
1002 6345.45
1003 3500.65
1004 4898.86
1005 5345.80
【输出样例】每行数据均使用一个空格分割,分五行输出
1001 8540.59
1002 6345.45
1003 3500.65
1004 4898.86
1005 5345.80
minBonus = 3500.65