全国
专业选择 政策信息 时间日期 条件要求 方法流程

收起

自考本科 > 网站地图 > 备考资料 > 模拟试题 > 工学类 > C语言程序设计

2022年自学考试《C语言程序设计》练习题及答案7

发布时间: 2022-07-12

2022年自学考试《C语言程序设计》练习题及答案7

【3.31】输入n值,输出高度为n的等边三角形。例如当n=4时的图形如下:

*

***

*****

*******

#include

void prt(char c,int n)

{if(n>0)

{printf('%c',c);

①;

}

}

main()

{int i,n;

scanf('%d',&n);

for(i=1;i<=n;i++)

{②;

③;

printf('n');

}

}

【3.32】下面的函数实现N层嵌套平方根的计算。

double y(double x,int n)

{if(n==0)

return(0);

else return(sqrt(x+(①)));

}

【3.33】函数revstr(s)将字符串s置逆,如输入的实参s为字符串'abcde',则返回时s为字符串'edcba'。递归程序如下:

revstr(char*s)

{char*p=s,c;

while(*p)p++;

①;

if(s

{c=*s;

*s=*p;

②;

revstr(s+1);

③;

}

}

如下是由非递归实现的revstr(s)函数:

revstr(s)

char*s;

{char*p=s,c;

while(*p)p++;

④;

while(s

{c=*s;

⑤=*p;

*p--=c;

}

}

【3.34】下面函数用递归调用的方法,将str中存放的长度为n的字符串反转过来,例如原来是'ABCDE',反序为'EDCBA'。

void invent(char*str,int n)

{char t;

t=*str;*str=*(str+n-1);*(str+n-1)=t;if(n>2)invent(①,n-2);

else②;

}

【3.35】从键盘上输入10个整数,程序按降序完成从大到小的排序。

#include

int array[10];

sort(int*p,int*q)

{int*max,*s;

if(①)

return;

max=p;for(s=p+1;s<=q;s++)

if(*s>*max)

②;swap(③);

sort(④);}

swap(int*x,int*y){int temp;

temp=*x;

*x=*y;

*y=temp;

}

main()

{int i;printf('Enter data:n');for(i=0;i<10;i++)

scanf('%d',&array<i>);sort(⑤);

printf('Output:');

for(i=0;i<10;i++)

printf('%d',array<i>);

}

【程序填空题参考答案】

【3.31】答案:①prt(c,n-1)②prt('',n-i)③prt('*',i)

注释:函数prt的功能是输出n个字符c。

【3.32】答案:①y(x,n-1)

注释:这显然是一个递归问题,首先要对原来的数学函数定义形式进行变形,推导出原来函数的等价递归定义。可以推导出原来函数的递归定义如下。

y(x,n)=x当n=0时

y(x,n)=sqrt(x+y(x,n-1))当n>0时

【3.33】答案:①p--②*p=''③*p=c④p--⑤*s++

注释:在递归算法中,指针s指向字符串首部要反向的字符,即要将指针s所指向的字符与指针p所指向的字符串尾的字符('')进行交换,在交换过程中,将尚没有交换的字符串的中间部分作为一个整体,进行递归处理。程序中首先执行'c=*s',将首字符存入临时变量;然后执行'*s=*p',将尾字符存入串首;执行'revstr(s+1)'是递归处理串的中间部分,这时,在②处应当填入'*p=''',即存入串结束标记。这是这一程序中的关键所在。在③处要完成将存在临时变量c中的字符存入串尾的工作,应当填写'*p=c'。

【3.34】答案:①str+1②return①改为n-2

【3.35】答案:①p>=q②max=s③p,max

④p+1,q⑤&array[0],&array[9]

注释:本程序中的排序部分采用的是递归算法。函数sort的两个形参的含义是:对指针p和指针q之间的数据进行排序。由语句'for(s=p+1;s<=q;s++)'中指针p和指针q之间的关系可以得出:指针p不应在指针q之后,因此①处应填'p>=q'、⑤处应填'&array[0],&array[9]'。

由于变量max是指向当前最大值的指针,则当找到新的最大值时,max中保存的应该是新的最大值的指针,因此②处应填'max=s'。

当调用函数swap交换两个变量值的时候,要求实参是变量的地址,因此,③处应填'p,max'将最大值存入指针p所指的单元。

由于问题的要求是'从大到小'排序,通过执行一次函数sort使最大值已经放到了指针p所指的单元中,因此,下一遍排序的时候,只要对指针p之后的元素进行即可,所以④处应填'p+1,q'。

热门推荐:

自考有疑问、不知道如何选择主考院校及专业、不清楚自考当地政策,点击立即了解》》

推荐阅读:

2022年10月各省成人自学考试报名时间及入口汇总

2022年10月全国各省自学考试报考条件汇总

2022年10月全国各省成人自学考试报名官网汇总

你可能感兴趣的试题
>>>查看成考资讯<<< >>>查看远程资讯<<<
院校推荐
1
意向表
2
学习中心老师电话沟通
3
查看评估报告
1、年龄阶段

2、当前学历

3、提升学历目标

4、意向学习方式

报考所在地
*
*
*
相关文章推荐
热门文章

收起

资讯动态

自考资料