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'。
热门推荐:
自考有疑问、不知道如何选择主考院校及专业、不清楚自考当地政策,点击立即了解》》
推荐阅读: