编程题:
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); }