安徽工业大学历年C语言程序设计期末精选样卷

本试卷为安徽工业大学历年C语言程序设计期末精选样卷,题目包括:单项选择题,填空题,编程题。

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

C语言程序设计期末精选样卷

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

(  D  )
1、当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是________。
A、k%2
B、k%2==1
C、(k%2)!=0
D、!k%2==1
(  B  )
2、当调用函数时,实参是一个数组名,则向函数传送的是 _______ 。
A、数组的长度
B、数组的首地址
C、数组每一个元素的地址
D、数组每个元素中的值
(  D  )
3、有如下定义
struct person
{
char name[9] ;
int age ;
};
struct person class[10]={" johu" , 17 , "paul" , 19 , "mary" , 18 , "adam" , 16};
根据上述定义,能输出字母 m 的语句是______。
A、prinft ( " %c\n" , class[3].name );
B、printf ( " %c\n" , class[3].name[1] );
C、prinft ( " %c\n" , class[2].name[1] );
D、printf ( " %c\n" , class[2].name[0] );
(  B  )
4、若有说明int a[3][4]; 则a数组元素的非法引用是________。
A、123
B、2.5
C、-12
D、1563
(  B  )
5、在下面关于指针的说法中,错误的一条是________。
A、变量的指针就是变量的地址
B、可以将一个整型量或任何其他非地址类型的数据赋给一个指针变量
C、一个指针变量只能指向同一个类型的变量
D、指针变量中只能存放地址(指针)
(  D  )
6、已知3个字符为:a、x和5,按它们的ascii码值升序排序,结果是________。
A、5<a<X
B、a<5<X
C、X<a<5
D、5<X<a
(  C  )
7、以下程序的输出结果是________。
#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(1%d %d , *p, *q);
}
A、23
B、34
C、35
D、45
(  C  )
8、若变量c为char类型,则能正确判断出c为大写字母的表达式是________。
A、(c>= ’A’)||(c
B、’A’
C、(c>= ’A’)&&(c
D、(’A’=c)
(  C  )
9、若定义下列结构体,结构体变量p的出生年份赋值正确的语句是________。
struct st
{
int x;
int y;
int z;
}
struct worker
{
char name[20];
char sex;
struct st birth;
} p;
A、x=1987
B、birth.x=1987;
C、p.birth.x=1987;
D、x=1987;
(  D  )
10、在64位高档微机中,一个字长所占的二进制位数为________。
A、8
B、16
C、32
D、64
(  A  )
11、有以下程序:
#define P 3
void F(int x)
{
return(P*x*x);
}
main()
{
printf("%d\n",F(3+5));
}
程序运行后的输出结果是______。
A、192
B、29
C、25
D、编译出错
(  B  )
12、设a为整型变量,下列选项中不能正确表达数学关系:10<a<15________。
A、10<a<15
B、a==11 || a==12
C、a>10 && a<15
D、!(a<=10)&&!(a>=15)
(  B  )
13、设ch是char型变量,其值为a,且有下面的表达式ch=(ch>='a'&&ch<='z')?(ch-32):ch上面表达式的值是______。
A、a
B、A
C、Z
D、z
(  C  )
14、以下程序的输出结果是______。
#include <stdio.h>
main()
{
int i;
for(i=1;i<5;i++)
{
if(i%2) printf("*");
else continue;
printf("#");
}
printf("$\n");
}
A、*#*#*#$
B、#*#*#*$
C、*#*#$
D、#*#*$
(  C  )
15、以下for语句构成的循环执行了______次。
#include <stdio.h>
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main()
{
int i,n=0;
for(i=1;i<=NUM;i++)
{
N++;
printf("%d",n);
}
printf("\n");
}
A、5
B、6
C、8
D、9
(  A  )
16、在c语言中,如果下面的变量都是int类型,则输出的结果是________。 sum=5,p=5;
p=sum++,p++,++p;
printf("%d\n",p);
A、7
B、6
C、5
D、4
(  B  )
17、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,请选择填空。
#include <stdio.h>
main()
{
int a, b, t;
scanf("%d%d", &a, &b);
while (_________)
{
if (a > b)
{
t = a;
a = b;
b = t;
}
printf("%d,%d\n", a, b);
scanf("%d%d", &a, &b);
}
}
A、!a=b
B、a!=b
C、a==b
D、a=b
(  A  )
18、程序段如下int k=0;
while(k++<=2) printf ("%d\n", k);
则执行结果是________ 。
A、1
B、2
C、0
D、无结果
(  D  )
19、在说明一个结构体变量时系统分配给它的存储空间是________ 。
A、该结构体中第一个成员所需存储空间
B、该结构体中最后一个成员所需存储空间
C、该结构体中占用最大存储空间的成员所需存储空间
D、该结构体中所有成员所需存储空间的总和
(  B  )
20、设 p1 和 p2 是指向同一个字符串的指针变量,c 为字符变量,则以下不能正确执行的赋值语句是()。
A、c=*p1+*p2;
B、p2=c;
C、p1=p2;
D、c=*p1*(*p2);

二、填空题 (共10题,每题2分,共计20分)

1、有定义int a=-1;则pirntf("%d,%o",a,a")的输出结果是________。
2、下列程序段的运行结果是_____。
main()
{
int m=1,t=1;
for(;;)
{
m=m*t;
t++;
if(t>4)break;
}
printf("%d\n",m);
}
3、下列程序段的运行结果是_____。
main()
{
int n,s=0;
for(n=1;n<=6;n++)
{
if(n%3==0)continue;
s=s+n;
}
printf("%d\n",s);
}
4、int a = 3; a+=a-=a*a; 求a的最后结果
5、实参与形参占用独立的(   )
6、执行以下语句段
int i;
int fun(int x)
{
return ((x>0)?fun(x-1)+fun(x-2):1);
}
i=fun(3);
i的值为________。
7、int w=1, x=2, y=3, z=4;
则条件表达式w>x?w:y<z?y:z的结果为________。
8、要调用数学处理函数时,在
#include命令中应包含()头文件。
9、下面程序根据以下函数关系,对输入的每个x 值,计算出y值。请分析程序填空。
main()
{
int x,y;
scanf("%d",&x);
if(【1】________) y=x*(x+2);
else if(【2】________) y=x-1;
else 【3】________;
if(y!=-1) printf("%d",y);
else printf("error");
}
10、C 语言中,一个函数一般由两个部分组成,它们是______和函数体。

三、编程题 (共3题,每题0分,共计40分)

1、编写程序:判断输入字符的字母的个数,以*结束输出。
2、编写程序:从键盘输入 n (n<10)个学生的学号(学号为4位的整数,从1000开始)、成绩并存入结构数组中,查找并输出成绩最高的学生信息。
输入输出示例:括号内为说明,无需输入输出
输入样例:
3 (n=3)
1000 85
1001 90
1002 75
输出样例:
1001 90
3、编写程序:查找n在数组a中最后一次出现的位置
例如:如果a数组中的元素为:[0,5,0,5,6,8,0,4,3,0],当n=5时,程序的输出结果为:5 is no.3 当n=10时,程序的输出结果应为:10 not found