2022年自学考试《C语言程序设计》练习题及答案5
【3.21】下面程序的功能是计算S=k!。
k=0
long fun(int n)
{int i;
long s;
for(i=1;i①;i++)
s*=i;
return(②);
}
main()
{int k,n;
long s;
scanf('%d',&n);
s=③;
for(k=0;k<=n;k++)
s+=④;
printf('%ldn',s);
}
【3.22】下面程序的功能是显示具有n个元素的数组s中的最大元素。
#define N 20
main()
{int i,a[N];
for(i=0;i
scanf('%d',&a<i>);
printf('%dn',①);
}
fmax(int s[],int n)
{int k,p;
for(p=0,k=p;p
if(s[p]>s[k])②;
return(k);
}
【3.23】下面程序的功能是由键盘输入n,求满足下述条件的x、y:
nx和ny的末3位数字相同,且x≠y,x、y、n均为自然数,并使x+y为最小。
#include
pow3(int n,int x)
{int i,last;
for(last=1,i=1;i<=x;i++)
last=①;
return(last);
}
main()
{int x,n,min,flag=1;
scanf('%d',&n);
for(min=2;flag;min++)
for(x=1;x
if(②&&pow3(n,x)==pow3(n,min-x))
{printf('x=%d,y=%dn',x,min-x);
③;
}
}
【3.24】下面的程序是用递归算法求a的平方根。求平方根的迭代公式如下:
#include
double mysqrt(double a,double x0)
{double x1,y;
x1=①;
if(fabs(x1-x0)>0.00001)
y=mysqrt(②);
else y=x1;
return(y);
}
main()
{double x;
printf('Enter x:');
scanf('%lf',&x);
printf('The sqrt of%lf=%lfn',x,mysqrt(x,1.0));
}
【3.25】以下程序是计算学生的年龄。已知第一位最小的学生年龄为10岁,其余学生的年龄一个比一个大2岁,求第5个学生的年龄。
#include
age(int n)
{int c;
if(n==1)c=10;
else c=①;
return(c);
}
main()
{int n=5;
printf('age:%dn',②);
}
【程序填空题参考答案】
【3.21】答案:①<=n②s③0④fun(k)
【3.22】答案:①a[fmax(a,N)]②k=p
【3.23】答案:①last*n%1000②x!=min-x③flag=0
【3.24】答案:①(x0+a/x0)/2②a,x1
注释:根据迭代公式,①处应当是计算迭代值x1=(x0+a/x0)/2。按照求平方根的要求,当迭代的精度不能满足'(fabs(x1-x0)>0.00001)'时,则要继续迭代,因此②处应当填写'a,x1'。程序中调用了求绝对值的库函数fabs()。
【3.25】答案:①2+age(n-1)②age(5)
注释:由于程序是递归算法,因此首先要建立问题的递归数学模型。根据原题的描述可以写出如下递归公式:
age(n)=10(n=1)
age(n)=2+age(n-1)(n>1)
对照程序和递归公式可以看出:n的含义是第n位学生。很显然,要求第5位学生的年龄,②处应当是调用函数age,实参的值应当是5。在①处应该是函数的递归调用,根据递归公式,应当填写:2+age(n-1)。
热门推荐:
自考有疑问、不知道如何选择主考院校及专业、不清楚自考当地政策,点击立即了解》》
推荐阅读: