奥鹏答案网-奥鹏作业答案-奥鹏在线作业答案-奥鹏离线作业答案-奥鹏毕业论文-专业奥鹏作业答案辅导网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2869|回复: 0

西安电子科技大学网络与继续教育学院 2019 学年下学期 《高级语言程序设计(C)

[复制链接]

9485

主题

9485

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
28607
发表于 2019-11-14 15:35:17 | 显示全部楼层 |阅读模式
第 1 页 (共 6 页)

学习中心/函授站_



姓 名 学 号



西安电子科技大学网络与继续教育学院
2019 学年下学期
《高级语言程序设计(C)》期末考试试题
(综合大作业)
题号 一 二 三 四 五 总分
题分 20 10 10 40 20
得分





考试说明:
1、大作业试题于2019 年10 月17 日公布,2019 年10 月18 日至2019 年11 月3 日
在线上传大作业答卷(最多上传10 张图片,一张图片对应一张A4 纸答题纸),要求拍照清晰、
上传完整;
2、考试必须独立完成,如发现抄袭、雷同均按零分计;
3、答案须用《西安电子科技大学网络与继续教育学院标准答题纸》手写完成,要
求字迹工整、卷面干净。



一、选择题(每题 1 分,共 20 分)
1. 有下列程序
main()
{
   union
   {
      

int k;
      

char i[4];
   }*s,a;
  s=&a;
  s->k=0x38;
  s->i[0]=0x39;  
  printf("%x\n",s->k);
}
输出结果是  A)38   B)39    C)3839    D)3938
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"; 下列程序段中正确的是


第 2 页 (共 6 页)

     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);
说明:char *strcpy(char* dest, char *src);
功能:把从 src地址开始的字符串复制到以dest开始的地址空间
4. 设 j为 int型变量,则下面 for循环语句的执行结果是
for(j=10;j>3;j--)
{
if(j%3) j--;
j-=2;
printf("%d",j);
}
A)6 3     B)7 4      

C)6 2      

D)7 3

5. 以下程序的输出结果是
main()
{  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)22    B)23     C)25      

D)26

6. 若有以下说明:
   int w[3][4]={{0,1},{2,4},{5,8}};
   int(*p)[4]=w;
则取 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. 以下程序运行后,输出结果是  
main()
{  
int i=0,j, y=18, a[8];
do
{  
   a[i]=y%6;  
   i++;
   y=y/2;
} while(y>1);
for(j=i-1;j>=0;j--)
printf("%d ",a[j]);
printf("\n");
}
A)2450     B)2430     C)3240      

D)2320

9. 以下叙述中不正确的是
A)在不同的函数中可以使用相同名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效  
D)空类型函数返回值为 0
10. 程序的输出结果是
int func( int a, int b)
{   int c;
    c=a+b;


第 3 页 (共 6 页)

    return c;
}
main()
{  int x=6, y=7, z=8, r;
   r=func(x+y,z);
   printf("%d\n",r);
}
A) 11 B) 20

C) 31         

D) 21

11.程序的输出结果是
main()
{  int a=2,c=5;
   printf("a=%d,b=%d\n",a,c);   
}
A) a=%2,b=%5   B) a=%d,b=%d    C) 2,5    D) a=2,b=5
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. 执行以下程序后,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
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) 无输出    B) 4 3 2 1     C) 3  2  1 0   D) 2  1  0 0
16. 设有如下的变量定义:
int i=8,k,a,b;
unsinged long w=5
double x=1,42,y=5.2
则以下符合 C语言语法的表达式是
A) a+=(b=4)*(k=3)         

B) x%(-3)      
C) a*3=2                    

D) y=float(i)

17. 以下程序的输出结果是
main( )
{ int k=17;
   printf("%d,%o,%x\n",k,k,k);
}
A) 17,21,11       B)17,17,17
B)17,0x11,021     D) 17,021,0x11
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. 给出以下定义:


第 4 页 (共 6 页)

char x[]="abcdefg";
char y[]={'a','b','c','d','e','f','g'};
则正确的叙述为
A)数组 X和数组 Y等价

B)数组 x和数组Y的长度相同
C)数组 X的长度小于数组 Y的长度 D)数组 X的长度大于数组 Y的长度
二、判断题(每题 1 分,共 10 分)
1. 若 a是实型变量,C程序中允许赋值 a=10,因此实型变量中允许存放整型数( )
2. 函数中的局部变量都是动态存储( )
3. if语句、switch语句可以嵌套,而且嵌套的层数没有限制(  )
4. 函数的定义可以嵌套,但函数的调用不可以嵌套( )
5. do-while循环中,根据情况可以省略 while( )
6. 形参是虚拟的,不占用存储单元(  )
7. 用户若需要调用标准库函数,调用前必须重新定义(  )
8. 全局变量使得函数之间的"耦合性"更加紧密,不利于模块化的要求( )
9. 在实际编程中,do-while循环完全可以用 for循环替换( )
10. 自增运算符(++)或自减运算符(--)只能用于变量,不能用于常量或表达式( )
三、填空题(每空 1 分,共 10 分)
1. 假定 p所指对象的值为 25,p+1所指对象的值为 46,
则执行"(*p)++;"语句后,p所指对象的值为___________。
2. 如果变量定义有:int a=9,c=8;
则表达式(a!=c)? --a:++c运算后变量 c的值为________。
3. 假定一个二维数组为 a[M][N],则 a[i]的地址可表示为__________。
4. 已有 int i,j; float x;为将-10赋给 i,12赋给 j,410.34赋给 x;则对应
scanf("%d,%d,%f",&i,&j,&x)调用语句的数据输入形式是__________
5. 若 x=5,y=10,则 x>y和 x<=y的逻辑值分别为________和_______。
6. C语言提供三种逻辑运算符,它们分别是______、_______、_______。
7. 空字符串的长度是_______。
四、程序分析题(每空 1 分,共 40 分)
1.读程序,填出表格内容(6分)
main()
{
    int n,s,sum=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
s=0;
        

for(int j=1;j<=i;j++) s+=j;
        

sum+=s;

    }
    printf("%d",sum);
}
i 1 2 3 ... n
j 1 1~2 ...
s 1 1+2 ...
sum 1 1+(1+2) ...
2. 读程序,填表(13分)
void sub(int n, int uu[ ]) //————○1
{  
if (n%2==0) uu[n]=uu[n]*2;
else uu[n]=uu[n]%5;
}



第 5 页 (共 6 页)

main( )
{  
    int i,aa[10]={0,1,2,3,4,5,6,7,8,9};
    for(i=0; i<10; i++)  
sub(i,aa);
for(i=0; i<10; i++) printf("%d ",aa[i]); //————○2
printf("\n");
}  
i 0 1 2 3 4 5 6 7 8 9
○1 uu[i]
0 1 2 3 4 5 6 7 8
○2aa[i]
0



参数 int n含义:
sub函数 参数 int uu[]含义:
函数功能:

4. 读程序,填表(5分)
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 y
z x ...
fun函数功能:

5. 读程序,填表(16分)
键盘输入一行字符(最后有回车):hello
#include"ctype.h"
#include"stdio.h"
main()
{  char str[81],*sptr;
int i;
for(i=0;i<80;i++)
{  str[i]=getchar();
if(str[i]=='\n') break;
}
str[i]= '\0';
sptr=str;
while(*sptr) putchar(*sptr++);
}
下标i 0 1 2 3 4 5
str[i] 'h'
sptr sptr=&str[0]
*sptr 'h'
程序功能:


第 6 页 (共 6 页)

五、编程题(每题 10,共 20 分)
编程题要求:
(1)先给出伪代码,然后再写出源码,重要变量和语句要加注释;(伪代码 2分)
(2)若有子函数,则要给出函数框架设计(函数名、形参、返回类型)。(函数设计 2分)

1. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如 6=1+2+3,编程找出 1000以内的所有完数。

2. 编写一函数 fun,实现矩阵(3行 3列)的转置(即行列互换)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 价格公开

  • 优质服务

  • 专属客服

  • 信息开放

  • 担保交易

 
 
客服一号
客服二号
客服三号
客服四号
点击这里给我发消息
官方微信扫一扫
快速回复 返回顶部 返回列表