西安电子科技大学网络与继续教育学院 2022学年上学期 《高级语言程序设计(C) ...奥鹏作业答案-
第 1 页 (共 5 页)
学习中心/函授站_
姓 名 学 号
西安电子科技大学网络与继续教育学院
2022学年上学期
《高级语言程序设计(C) 》期末考试试题
(综合大作业)
题号 一 二 三 四 总分
题分 40 20 23 17
得分
考试说明:
1、大作业试题公布时间:2022年4月22日;
2、考试必须独立完成,如发现抄袭、雷同均按零分计;
3、 答案须用 《西安电子科技大学网络与继续教育学院2022春期末考试答题纸》 (个
人专属答题纸)手写完成,要求字迹工整、卷面干净、整齐;
4、拍照要求完整、清晰,一张图片对应一张个人专属答题纸(A4纸) ,正确上传。
一、选择题( 2 分,共 40 分)
1、有下列程序
union
{
int k;
char i[2];
}*s,a;
s=&a;
s->i[0]=0x39;s->i[1]=0x38;
printf("%x\n",s->k);
输出结果是( ) 。
A、3839 B、3938 C、380039 D、390038
2、设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:
scanf("i=%d,f=%f",&i,&f);
为了把 100和765.12分别赋给i和f,则正确的输入为( ) 。
A、100<空格>765.12<回车> B、i=100,f=765.12<回车>
C、100<回车>765.12<回车> D、x=100<回车>,y=765.12<回车>
3、设已有定义: 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); 第 2 页 (共 5 页)
D、 char a[], *p; strcpy(p=&a[1],st+2);
4、设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
5、以下程序的输出结果是( ) 。
int i,k,a[10],p[3]:
K=5;
for (i=0;i<10;i++) a[i]=i;
for (i=0;i<3;i++) p[i]=a[i*(i+1)];
for (i=0;i<3;i++) k=p[i]*2;
printf("%d\n",k);
A、20 B、21 C、22 D、23
6、若有以下说明:
int w[3][4]o={{0,1},{2,4},{5,8}};
int(*p)[4]=w;
则数值为 4的表达式是( ) 。
A、*w[1]+1 B、p++,*(p+1) C、w[2][2] D、p[1][1]
7、若k是int型变量,且有下面的程序片段:
k=-3;
if(k<=0) printf("####")
else printf("&&&&");
上面程序片段的输出结果是( ) 。
A、#### B、&&&& C、####&&&& D、有语法错误,无输出结果
8、以下程序运行后,输出结果是( ) 。
int y=18,i=0,j,a[8];
do
{
a[i]=y%2;i++;
y=y\2;
} while(y>1=1);
for(j=i-1;j>=0;j--) printf("%d",a[j]);
printf("\n");
A、10000 B、10010 C、00110 D、10100
9、以下叙述中不正确的是( ) 。
A、在不同的函数中可以使用相同名字的变量
B、函数中的形式参数是局部变量
C、在一个函数内定义的变量只在本函数范围内有效
D、在一个函数内的复合语句中定义的变量
10、
func( int a, int b)
{
int c;
c=a+b;
return c;
}
int main()
{
int x=6, y=7, z=8, r;
r=func( x--,y==,x+y),z--);
printf("%d\n",r);
return 0;
}
上面程序的输出结果是( ) 。 第 3 页 (共 5 页)
A、11 B、20 C、21 D、31
11、
int a=2,c=5;
printf("a=%%d,b=%%d\n",a,c);
以上程序的输出结果是( ) 。
A、a=%2,b=%5 B、a=2,b=5 C、a=%%d,b=%%d D、a=%d,b=%d
12、设a=1,b=2,c=3,d=4,则表达式:a<b?a:c<d?a:d 的结果为( ) 。
A、4 B、3 C、2 D、1
13、
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);
执行以下程序后,y的值是( ) 。
A、17 B、18 C、19 D、20
14、下面四个选项中,全是不合法的用户标识符的是( ) 。
A、 A P_0 do B、 float la0 _A C、 b-a goto int D、 _123 temp INT
15、 int n=4;
while(n--) printf("%d ",--n);
程序的输出结果是( ) 。
A、2 0 B、3 1 C、3 2 1 D、2 1 0
16、设有如下的变量定义:
int i=8,k,a,b;
unsinged long w=5
double x=1,42,y=5.2
则以下符合 C语言语法的表达式是( ) 。
A、a+=a-=(b=4)*(a=3) B、x%(-3); C、a=a*3=2 D、y=float(i)
17、
int x;
scanf("%d",&x);
if(x + + >5) printf("%d",x);
else printf("%d\n",x - -);
两次运行上面的程序,如果从键盘上分别输入6和4,则输出结果是( ) 。
A、7和5 B、6和3 C、7和4 D、6和4
18、若有以下定义:
char a;int b;
float c;double d;
则表达式 a*b+d-c值的类型为( ) 。
A、float B、int C、char D、double
19、设有以下定义:
int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*prt)[3]=a,*p=a[0];
则下列能够正确表示数组元素a[1][2]的表达式是( ) 。
A、 *((*prt+1) [2]) B、 *(*(p+5)) C、 (*prt+1)+2 D、 *(*(a+1)+2)
20、给出以下定义:
char x[]="abcdefg";
char y[]={'a','b','c','d','e','f','g'};
则正确的叙述为( ) 。
A、数组X和数组Y等价 B、数组x和数组 Y的长度相同
C、数组X的长度大于数组Y的长度 D、数组X的长度小于数组 Y的长度
二、( 2 分,共 20 分)
1、若 a是实型变量,C程序中允许赋值 a=10,因此实型变量中允许存放整型数。
( )
2、函数中的局部变量都是动态存储。 ( ) 第 4 页 (共 5 页)
3、自增运算符(++)或自减运算符(--)只能用于变量,不能用于常量或表达式。
( )
4、函数的定义可以嵌套,但函数的调用不可以嵌套。 ( )
5、do-while循环中,根据情况可以省略while。 ( )
6、形参是虚拟的,不占用存储单元。( )
7、用户若需要调用标准库函数,调用前必须重新定义。 ( )
8、全局变量使得函数之间的相关性更加紧密,不利于模块化的要求。 ( )
9、在实际编程中,do-while循环完全可以用for循环替换。 ( )
10、if语句、switch语句可以嵌套,而且嵌套的层数没有限制。 ( )
三、程序分析题(每空 1 分,共 23 分)
要求:读程序,填出表格中的数据。
1、 (4分)
double fun( double x, int y)
{
int i;
double z;
for(i=1, z=x; i<y;i++) z=z*x;
return z;
}
i 1 2 3 ... y-1
z=z*x x的平方 ...
程序功能:
2、 (9分)
键盘输入:abcde
#include"ctype.h"
#include"stdio.h"
int main()
{
char str[81],*sptr;
gets(str);
sptr=str;
while(*sptr)
{
putchar(*sptr+1);
sptr++;
}
return 0;
}
循环次数 1 2 3 4 5
str "abcde"
*sptr 'a'
putchar(*sptr+1) 'b'
函数功能:
3、 (10分)
#include<stdio.h>
#define N 5
void sub( int n,int uu[])
{
int t;
t=uu[n-1]+uu[n]; 第 5 页 (共 5 页)
uu[n]=t;
}
int main( )
{
int i, aa[N]={1,2,3,4,5};
for(i=1; i<N; i++) sub(i,aa);
for(i=0; i<N; i++) printf("%d_",aa[i]);
printf("\n");
return 0;
}
n 1 2 3 4
(1) aa[n] 1,2,3,4,5,6
t 1+2
(2) uu[n] uu[1]=3
程序输出:
四、编程题(17 分)
1、 (9分)一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+
3.编程找出1000以内的所有完数。
2、(8分)编写一函数fun,实现矩阵(3行3列)的转置(即行列互换) 。
相关练习题:
国外专家对学科体系的研究非常重视。
学习中心/函授站_
姓 名 学 号
西安电子科技大学网络与继续教育学院
2022学年上学期
《高级语言程序设计(C) 》期末考试试题
(综合大作业)
题号 一 二 三 四 总分
题分 40 20 23 17
得分
考试说明:
1、大作业试题公布时间:2022年4月22日;
2、考试必须独立完成,如发现抄袭、雷同均按零分计;
3、 答案须用 《西安电子科技大学网络与继续教育学院2022春期末考试答题纸》 (个
人专属答题纸)手写完成,要求字迹工整、卷面干净、整齐;
4、拍照要求完整、清晰,一张图片对应一张个人专属答题纸(A4纸) ,正确上传。
一、选择题( 2 分,共 40 分)
1、有下列程序
union
{
int k;
char i[2];
}*s,a;
s=&a;
s->i[0]=0x39;s->i[1]=0x38;
printf("%x\n",s->k);
输出结果是( ) 。
A、3839 B、3938 C、380039 D、390038
2、设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:
scanf("i=%d,f=%f",&i,&f);
为了把 100和765.12分别赋给i和f,则正确的输入为( ) 。
A、100<空格>765.12<回车> B、i=100,f=765.12<回车>
C、100<回车>765.12<回车> D、x=100<回车>,y=765.12<回车>
3、设已有定义: 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); 第 2 页 (共 5 页)
D、 char a[], *p; strcpy(p=&a[1],st+2);
4、设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
5、以下程序的输出结果是( ) 。
int i,k,a[10],p[3]:
K=5;
for (i=0;i<10;i++) a[i]=i;
for (i=0;i<3;i++) p[i]=a[i*(i+1)];
for (i=0;i<3;i++) k=p[i]*2;
printf("%d\n",k);
A、20 B、21 C、22 D、23
6、若有以下说明:
int w[3][4]o={{0,1},{2,4},{5,8}};
int(*p)[4]=w;
则数值为 4的表达式是( ) 。
A、*w[1]+1 B、p++,*(p+1) C、w[2][2] D、p[1][1]
7、若k是int型变量,且有下面的程序片段:
k=-3;
if(k<=0) printf("####")
else printf("&&&&");
上面程序片段的输出结果是( ) 。
A、#### B、&&&& C、####&&&& D、有语法错误,无输出结果
8、以下程序运行后,输出结果是( ) 。
int y=18,i=0,j,a[8];
do
{
a[i]=y%2;i++;
y=y\2;
} while(y>1=1);
for(j=i-1;j>=0;j--) printf("%d",a[j]);
printf("\n");
A、10000 B、10010 C、00110 D、10100
9、以下叙述中不正确的是( ) 。
A、在不同的函数中可以使用相同名字的变量
B、函数中的形式参数是局部变量
C、在一个函数内定义的变量只在本函数范围内有效
D、在一个函数内的复合语句中定义的变量
10、
func( int a, int b)
{
int c;
c=a+b;
return c;
}
int main()
{
int x=6, y=7, z=8, r;
r=func( x--,y==,x+y),z--);
printf("%d\n",r);
return 0;
}
上面程序的输出结果是( ) 。 第 3 页 (共 5 页)
A、11 B、20 C、21 D、31
11、
int a=2,c=5;
printf("a=%%d,b=%%d\n",a,c);
以上程序的输出结果是( ) 。
A、a=%2,b=%5 B、a=2,b=5 C、a=%%d,b=%%d D、a=%d,b=%d
12、设a=1,b=2,c=3,d=4,则表达式:a<b?a:c<d?a:d 的结果为( ) 。
A、4 B、3 C、2 D、1
13、
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);
执行以下程序后,y的值是( ) 。
A、17 B、18 C、19 D、20
14、下面四个选项中,全是不合法的用户标识符的是( ) 。
A、 A P_0 do B、 float la0 _A C、 b-a goto int D、 _123 temp INT
15、 int n=4;
while(n--) printf("%d ",--n);
程序的输出结果是( ) 。
A、2 0 B、3 1 C、3 2 1 D、2 1 0
16、设有如下的变量定义:
int i=8,k,a,b;
unsinged long w=5
double x=1,42,y=5.2
则以下符合 C语言语法的表达式是( ) 。
A、a+=a-=(b=4)*(a=3) B、x%(-3); C、a=a*3=2 D、y=float(i)
17、
int x;
scanf("%d",&x);
if(x + + >5) printf("%d",x);
else printf("%d\n",x - -);
两次运行上面的程序,如果从键盘上分别输入6和4,则输出结果是( ) 。
A、7和5 B、6和3 C、7和4 D、6和4
18、若有以下定义:
char a;int b;
float c;double d;
则表达式 a*b+d-c值的类型为( ) 。
A、float B、int C、char D、double
19、设有以下定义:
int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*prt)[3]=a,*p=a[0];
则下列能够正确表示数组元素a[1][2]的表达式是( ) 。
A、 *((*prt+1) [2]) B、 *(*(p+5)) C、 (*prt+1)+2 D、 *(*(a+1)+2)
20、给出以下定义:
char x[]="abcdefg";
char y[]={'a','b','c','d','e','f','g'};
则正确的叙述为( ) 。
A、数组X和数组Y等价 B、数组x和数组 Y的长度相同
C、数组X的长度大于数组Y的长度 D、数组X的长度小于数组 Y的长度
二、( 2 分,共 20 分)
1、若 a是实型变量,C程序中允许赋值 a=10,因此实型变量中允许存放整型数。
( )
2、函数中的局部变量都是动态存储。 ( ) 第 4 页 (共 5 页)
3、自增运算符(++)或自减运算符(--)只能用于变量,不能用于常量或表达式。
( )
4、函数的定义可以嵌套,但函数的调用不可以嵌套。 ( )
5、do-while循环中,根据情况可以省略while。 ( )
6、形参是虚拟的,不占用存储单元。( )
7、用户若需要调用标准库函数,调用前必须重新定义。 ( )
8、全局变量使得函数之间的相关性更加紧密,不利于模块化的要求。 ( )
9、在实际编程中,do-while循环完全可以用for循环替换。 ( )
10、if语句、switch语句可以嵌套,而且嵌套的层数没有限制。 ( )
三、程序分析题(每空 1 分,共 23 分)
要求:读程序,填出表格中的数据。
1、 (4分)
double fun( double x, int y)
{
int i;
double z;
for(i=1, z=x; i<y;i++) z=z*x;
return z;
}
i 1 2 3 ... y-1
z=z*x x的平方 ...
程序功能:
2、 (9分)
键盘输入:abcde
#include"ctype.h"
#include"stdio.h"
int main()
{
char str[81],*sptr;
gets(str);
sptr=str;
while(*sptr)
{
putchar(*sptr+1);
sptr++;
}
return 0;
}
循环次数 1 2 3 4 5
str "abcde"
*sptr 'a'
putchar(*sptr+1) 'b'
函数功能:
3、 (10分)
#include<stdio.h>
#define N 5
void sub( int n,int uu[])
{
int t;
t=uu[n-1]+uu[n]; 第 5 页 (共 5 页)
uu[n]=t;
}
int main( )
{
int i, aa[N]={1,2,3,4,5};
for(i=1; i<N; i++) sub(i,aa);
for(i=0; i<N; i++) printf("%d_",aa[i]);
printf("\n");
return 0;
}
n 1 2 3 4
(1) aa[n] 1,2,3,4,5,6
t 1+2
(2) uu[n] uu[1]=3
程序输出:
四、编程题(17 分)
1、 (9分)一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+
3.编程找出1000以内的所有完数。
2、(8分)编写一函数fun,实现矩阵(3行3列)的转置(即行列互换) 。
相关练习题:
国外专家对学科体系的研究非常重视。