编程题:
95.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等手n个,则什么也不做,字符串中间和尾部的*号不删除。
例如,若字符串中的内容为*******A*BC*DEF*G****,假设n的值为4,删除后,字符串中的内容则应当是****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为*******A*BC*DEF*G****。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
void fun( char *a, int n )
{
}
main()
{
char s[81];
int n;
printf(“Enter a string:\n”);
gets (s);
printf(“Enter n: “);
scanf (“%d”,&n);
fun( s,n );
printf(“The string after deleted:\n”);
puts(s);
}
97.请编写函数fun,其功能是:计算并输出下列多项式值:
例如,若主函数从键盘给n输入50后,则输出为S=1.960784。
注意:n的值要求大于1但不大于100。部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
double fun(int n)
{
}
main()
{
int n;
double s;
printf(“\nInput n: “);
scanf(“%d”,&n);
s=fun(n);
printf(“\n\ns=%f\n\n”,s);
}
改错题:
32.下列给定程序中,函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中。
若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前l0个元素进行处理,不对最后的4个元素求平均值。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#define SIZE 20
int fun(double *s,double *w)
{
int k,i;
double sum;
for(k=2,i=0;i
{
s[i]=k;
k+=2;
}
sum=0.0;
for(k=0,i=0;i
{
sum+=s[i];
/********found********/
if(i+1%5==0)
{
w[k]=sum/5;
sum=0;
k++;
}
}
return k;
}
main()
{
double a[SIZE],b[SIZE/5];
int i,k;
k=fun(a,b);
printf(“The original data:\n”);
for(i=0;i
{
if(i%5==0)
printf(“\n”);
printf(“%4.0f”,a[i]);
}
printf(“\n\nThe result :\n”);
for(i=0;i
printf(“%6.2f”,b[i]);
printf(“\n\n”);
}
37.下列给定程序中,函数fun的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。
请改正函数fun中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
#include
#define N 80
int fun(char *s, char *t)
{
int n;
char *p, *r;
n=0;
/********found********/
p=&s[0];
*r=t;
while(*p)
{
if(*r==*p)
{
r++;
if(*r==’\0′)
{
n++;
/********found********/
/*在此行填适当的语句 */
}
}
p++;
}
return n;
}
main()
{
char a[N],b[N];
int m;
clrscr();
printf(“\nPlease enter string a :”);
gets(a);
printf(“\nPlease enter substring b :”);
gets(b);
m=fun(a,b);
m=printf(“\nThe result is:m=%d\n”,m);
}