南京艺术学院计算机C语言期末题目

本试卷为南京艺术学院计算机C语言期末题目,题目包括:单项选择题,填空题,编程题。

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

计算机C语言期末题目

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

(  A  )
1、关于c语言中数的表示,以下叙述中正确的是________。
A、只有整型数在允许范围内能精确无误地表示,实型数会有误差
B、只要在允许范围内整型数和实型数都能精确地表示
C、只有实型数在允许范围内能精确无误地表示,整形数会有误差
D、只有用八进制表示的数才不会有误差
(  A  )
2、下列字符串是标识符的是________。
A、aa
B、a-class
C、int
D、LINE 1
(  D  )
3、若要定义一个具有5个元素的整型数组,以下错误的定义语句是________。
A、int a[5]={0};
B、int b[]={ 0,0,0,0,0 }
C、int c[2+3];
D、int i=5,d[i];
(  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);
}
A、v1=4,v2=2,v3=1,v4=1
B、v1=4,v2=9,v3=3,v4=1
C、v1=5,v2=8,v3=6,v4=1
D、v1=8,v2=8,v3=8,v4=8
(  A  )
5、若有定义:int a=7; float x=2.5, y=4.7; 则表达式: x+a%3*(int)(x+y)%2/4的值是________。
A、2.500000
B、2.7500000
C、3.500000
D、0.000000
(  B  )
6、以下程序的输出结果是
#include <stdio.h>
main()
{
int i=0,a=0;
while(i<20)
{
for(;;)
{
if((i%10)==0) break;
else i--;
}
i+=11;
a+=i;
}
printh("%d\n",a);
}
A、21
B、32
C、33
D、11
(  C  )
7、设有以下说明语句:
typedef struct stu
{
int a;
float b;
} stutype;
则下面叙述中错误的是________。
A、struct是结构类型的关键字
B、struct stu是用户定义的结构类型
C、a和b都是结构成员名
D、stutype是用户定义的结构体变量名
(  C  )
8、在定义 int a[5][6]; 后,数组 a 中的第 10 个元素是__________ (设 a[0][0] 为第一个元素)
A、a[2][5]
B、a[2][4]
C、a[1][3]
D、a[1][5]
(  D  )
9、以下数组定义中不正确的是 __________.
A、int a[2][3];
B、int b[][3]={0,1,2,3};
C、int c[100][100]={0};
D、int a[3][]={{1,2},{1,2,3},{1,2,3,4}};
(  A  )
10、以下叙述中正确的是______。
A、每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元
B、一条语句只能定义一个数组
C、数组说明符的一对方括号中只能使用整型常量,而不能使用表达式
D、在引用数组元素时,下标表达式可以使用浮点数
(  C  )
11、若内存按字节编址,用存储容量为32k×8bit的存储器芯片构成地址编号a0000h至dffffh的内存空间,则至少需要______片。
A、4
B、6
C、8
D、10
(  C  )
12、下面程序段的运行结果是 char a[ ]="lanuage",*p; p=a; while(*p!='u') printf("%c",*p-32); p++;
A、LANGUAGE
B、language
C、LAN
D、langUAGE
(  A  )
13、以下选项中,与 n=i++ 完全等价的表达式是________。
A、n=i,i=i+1
B、n+=i+1
C、i=i+1,n=i
D、n=++i
(  A  )
14、有以下程序
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);
}
程序运行后的输出结果是___________。
A、250.000
B、250
C、270.000
D、270
(  C  )
15、有以下程序
int f1(int x,int y)
{
return x>y?x:y;
}
int f2(int x,int y)
{
return x>y?y:x;
}
main()
{
int a=4,b=3,c=5,d,e,f;
d=f1(a,b);
d=f1(d,c);
e=f2(a,b);
e=f2(e,c);
f=a+b+c-d-e;
printf("%d,%d,%d\n",d,f,e);
}
执行后输出的结果是______。
A、3,4,5
B、5,3,4
C、5,4,3
D、3,5,4
(  C  )
16、以下程序的输出结果是______。
#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  )
17、若x为int型变量,则以下函数fun的类型为________。
fun(x)
{
printf("%d\n",x);
}
A、返回值为void类型
B、无法确定返回值
C、返回值为int类型
D、无返回值
(  C  )
18、有以下程序
#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));
}
程序运行后的输出结果是______。
A、9
B、8
C、11
D、12
(  B  )
19、在c语言中,要求运算数必须是整型或字符型的运算符是________。
A、&&
B、&
C、!
D、||
(  D  )
20、当定义一个结构体变量时,系统为它分配的内存空间是________。
A、结构中一个成员所需的内存容量
B、结构中第一个成员所需的内存容量
C、结构体中占内存容量最大者所需的容量
D、结构中各成员所需内存容量之和

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

1、有以下程序
#include <stdio.h>
main ()
{
int i,j,a[][3]={1,2,3,4,5,6,7,8,9};
for (i=1;i<3;i++) for(j=i;j<3;j++) printtf("%d",a[i][j]);
printf("\n");
}
程序运行后的输出结果是________。
2、符合结构化原则的三种基本控制结构是:选择结构、循环结构和 ________ 。
3、有以下程序
#include<stdio.h>
int*f(int *p,int*q);
main() {
int m=1,n=2,*r=&m;
r=f(r,&n);
printf("%d\n",*r);
}
int*f(int *p, int*q) {
return(*p>*q) ? p : q;
}
程序运行后的输出结果是________。
4、有以下程序
#include < stdio.h >
main()
{
int a=1,b=2,c=3,d=0;
if (a==1) if (b!=2) if(c!=3) d=1;
else d=2;
else if(c!=3) d=3;
else d=4;
else d=5;
printf("%d\n",d);
}
程序运行后的输出结果是: ________。
5、下列程序段的运行结果是________。
main()
{
int n,s=0 ;
for(n=1; n<=5; n++)
{
if(n%2==0) continue;
s=s+n;
}
printf("%d\n", s);
}
6、以下程序的输出结果是________。
main()
{
int x=5,y=6;
printf("%da%d",x――,――y);
}
7、数学表达式x<y<z改写为c语言表达式是___________。注:表达式要在英文半角状态下按原表达式顺序书写,且表达式中不要留空格。
8、C程序的运行需要经过______和链接两步进行。
9、C语言中函数返回值的类型是由______决定的。
10、函数的形参在未被调用前不分配空间,函数形参的____要和实参相同。

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

1、编写一个函数,从传人的m个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。 试题程序:
char*proc(char(*a)[81],int num)
{
}
void main()
{
char ss[l0][81],*max;
int n,i=0;
printf("输入若干个字符串:");
gets(ss[i]);
puts(ss[i]);
while(!strcmp(ss[i],"****")==0)
{
i++;
gets(ssei]);
puts(ss[i]);
}
n=i;
max=proe(ss,n);
printf("\nmax=%s\n",max);
}
2、输入5位同学的一组信息,包括学号、姓名、数学成绩、计算机成绩,求得每位同学的平均分和总分,然后按照总分从高到低排序。
3、输入 n,求下列级数前n项的和。1+1/2-2/3+3/4……