|
学习中心/函授站_
姓 名 . 学 号
西安电子科技大学网络与继续教育学院
2017学年上学期
《高级语言程序设计(C)》期末考试试题
(综合大作业)
题号 一 二 三 四 总分
题分 40 20 20 20
得分
考试说明:
1、大作业于2017年4月20日下发,2017年5月6日交回;
2、考试必须独立完成,如发现抄袭、雷同均按零分计;
3、资料须手写完成,要求字迹工整、卷面干净。
一、选择题(每题2分,共40分)
注意:须将本题的资料填入下表,否则不计分数。
题号 1 2 3 4 5 6 7 8 9 10
资料
题号 11 12 13 14 15 16 17 18 19 20
资料
1、以下程序运行后,输出结果是
main( )
{
char *s="abcde";
s+=2;
printf("%ld\n",s);
}
A.cde B.字符c的ASCII码值 C.字符c的地址 D.出错
2、下面程序的运行结果是
main()
{
char ch[7]={"65ab21"};
int i,s =0
for(i=0;ch[i]>='0'&&ch[i]<'9';i+=2)
s=10*s+ch[i]-'0'
printf("%d\n",s);
}
A.12ba56 B.6521 C.6 D.62
3、若有说明,double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是
A.*p=&a; scanf("%lf",p); B.p=(double*)malloc(8);scanf("%f",p);
C.p=&a;scanf("%lf",a); D.p=&a; scanf("%lf",p);
4、若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元:
int *p;
p=__________ malloc( sizeof(int));
则应填入
A.int B.int * C.(*int) D.(int *)
5、若k是int型变量,且有下面的程序片段:
k=-3
if(k<=0) printf("####")
else printf("&&&&");
上面程序片段的输出结果是
A.#### B.&&&& C.####&&&& D.有语法错误
6、以下程序运行后,输出结果是
#include<stdio.h>
#define PT 5.5
#define S(x) PT*x*x
main( )
{
int a=1,b=2;
printf("%4.1f\n",S(a+b))
}
A.49.5 B.9.5 C.22.0 D.45.0
7、设有以下语句:
struct st {int n; struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,'\0'}, *p;
p=&a[0];
则表达式_____的值不是6。
A.p++ ->n B.p->n++ C.(*p).n++ D.(++p)->n
8、当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为
if(a<b)
if(c<d)x=1;
else if(a<c)
if(b<d)x=2;
else x=3;
else x=6;
else x=7;
A.1 B.2 C.3 D.6
9、下面程序的输出是
main()
{ char *p1="abc",*p2="ABC",str[50]="xyz";
strcpy(str+2,strcat(p1,p2));
printf("%s\n", str);}
A.xyzabcABC B.zabcABC C.yzabcABC D.xyabcABC
10、执行以下程序后,y的值是
main ( )
{ int a[]={2,4,6,8,10};
int y=1,x,*p;
p=&a[1];
for(x=0;x<3;x++) y + = * (p + x);
printf("%d\n",y); }
A.17 B.18 C.19 D.20
11、设已有定义: char *st="how are you"; 下列程序段中正确的是
A.char a[11], *p; strcpy(p=a+1,&st[4]);
B.char a[11]; strcpy(++a, st);
C.char a[11]; strcpy(a, st);
D.char a[], *p; strcpy(p=&a[1],st+2);
12、若有说明:int i,j=7, *p=&i;,则与i=j;等价的语句是
A.I= *P; B.*P=*&J; C.i=&j; D.i=* *p;
13、执行语句:for(i=1;i++<4;)后;变量i的值是
A.3 B.4 C.5 D.不定
14、两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是
main( )
{ int x;
scanf("%d",&x);
if(x + + >5) printf("%d",x);
else printf("%d\n",x --); }
A.7和5 B.6和3 C.7和4 D.6和4
15、有以下程序
void fun(int x,int y,int *cp,int *dp)
{*cp=x+y; *dp=x-y;}
main()
{
int a,b,c,d;
a=30;b=50;
fun(a,b,&c,&d);
printf("%d,%d\n",c,d);
}
输出结果是
A.50,30 B.30,50 C.80,-20 D.80,20
16、设有数组定义: char array [ ]="China"; 则数组 array所占的空间为
A.4个字节 B.5个字节 C.6个字节 D.7个字节
17、以下程序运行后,输出结果是
fut(int **s, int p[2][3])
{
**s=p[1][1];
}
main()
{
int a[2][3]={1,3,5,7,9,11},*p;
p=(int *)malloc(sizeof(int));
fut(&p,a);
printf("%d\n",*p);
}
A.1 B.7 C.9 D.11
18、设j为int型变量,则下面for循环语句的执行结果是
for(j=10;j>3;j--)
{
if(j%3)j--;
--j;--j;
printf("%d",j);
}
A.6 3 B.7 4 C.6 2 D.7 3
19、设C语言中,一个int 型数据在内存中占2个字节,则unsigned int 型数据的取值范围为:
A.0-255 B.1-32767 C.0-65535 D.0-2147483647
20、设有如下定义:
int (*ptr)*();
则以下叙述中正确的是
A.ptr是指向一维组数的指针变量
B.ptr是指向int型数据的指针变量
C.ptr是指向函数的指针,该函数返回一个int型数据
D.ptr是一个函数名,该函数的返回值是指向int型数据的指针
二、判断题(每小题2分,共20分)
判断对错,并给出解析(判对错占1分,解析占1分)
1、若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数。( )
2、全局变量使得函数之间的"耦合性"更加紧密,不利于模块化的要求。( )
3、若调用一个有类型函数,而此函数中没有return语句,则返回一个不确定的值。( )
4、用户若需要调用标准库函数,调用前必须重新定义。( )
5、函数调用:strcat(strcpy(str1,str2),str3)的功能是将串str2复制到串str1中后再将串str3连接到串str1之后。( )
6、在实际编程中,do-while循环完全可以用for循环替换。( )
7、C程序的注释只能是一行。( )
8、自增运算符(++)或自减运算符(--)只能用于变量,不能用于常量或表达式。( )
9、在函数内的复合语句中定义的变量在本函数范围内有定义。( )
10、一个变量在内存中占据一定的存储单元。( )
三、程序分析题(20分)
说明:按表格相应项的要求,填出相应内容,运算无相应项或结果时,填“无”或“结束”。
1、(7分)
main( )
{
int num[26]={0},i; char c;
while((c=getchar())!='#')
{
if( isupper(c)) num[c-'A']+=1;
}
for(i=0; i<26; i++)
if(num[i]) printf("%c:%d\n,i +'A' , num[i]);
}
注:isupper(int c)为库函数,功能为判断字符c是否为大写英文字母,当参数c为大写英文字母时,返回非零值,否则返回零。
输入 A B C A C a b c
num[c-'A'] 1 无
程序功能
2、(3分)
int a, b, k=4, m=6, *p1=&k, *p2=&m;
a=(pl==&m);
b=(*p1)/(*p2)+7;
表达式 结果
pl==&m
*p1
*p2
(*p1)/(*p2)
a
b
3、(10分)
#define N 10
void invert(int *s,int i,int j)
{
int t;
if(i<j)
{
t=*(s+i);
*(s+i)=*(s+j);
*(s+j)=t;
invert(s,i+1,j-1);
}
}
int main()
{
int a[N]={1,2,3,4,5,6,7,8,9,0};
int i;
invert(a,0,N-1);
for(i=0; i<N; i++ ) printf("%d ",a[i]);
printf("\n");
return 0;
}
事项 值
i 0 1 2 3 4 5
j 9
i<j no
invert完成操作 a[0],a[9]
值互换 结束
invert函数功能
四、编程题(每小题10分,共20分)
编程题要求:
(1)先给出伪代码,然后再写出源码,重要变量和语句要加注释;
(2)若有子函数,则要给出函数框架设计(函数名、形参、返回类型)。
1、计算1-1/2+1/3-1/4-...+1/99-1/100的值,并显示出来。
2、从键盘输入一个5*5整型数组赋值,找出其中的最小值并显示出来。
|
|