94.规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和尾部的*号不删除。
例如,若字符串中的内容为*******A*BC*DEF*G****,删除后,字符串中的内容则应当是A*BC*DEF*G****。在编写函数时,不得使用C语言提供的字符串函数。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <stdio.h>
#include <conio.h>
void fun (char *a)
{
char *p=a;
while(*p=='*') p ;
for(;*p!='\0';p ,a )
*a=*p ;
*a='\0';
}
main()
{
FILE *wf;
char s[81],*t="****A*BC*DEF*G*******";
printf("Enter a string :\n");
gets(s);
fun(s);
printf("The string after deleted:\n");puts(s);
wf=fopen("out.dat","w");
fun(t);
fprintf(wf,"%s",t);
fclose(wf);
}
95.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。
例如,若字符串中的内容为*******A*BC*DEF*G****,假设n的值为4,删除后,字符串中的内容则应当是****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为*******A*BC*DEF*G****。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <stdio.h>
#include <conio.h>
void fun(char *a,int n )
{
int i=0, k=0;
char *p, *t;
p=t=a;
while(*t=='*')
{k ; t ;}
if(k>n)
{ while(*p)
{a[i]= *(p k-n) ;
i ;
p ;
}
a[i]='\0';
}
}
main()
{
FILE *wf;
char s[81],*t="****A*BC*DEF*G*******";
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);
wf=fopen("out.dat","w");
fun(t,2);
fprintf(wf,"%s",t);
fclose(wf);
}
96.请编写函数fun,其功能是:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。
例如,若给定数组中的9个元素依次为12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0、11.0,则输出应为s=35.951014。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <stdio.h>
double fun(double x[9])
{
int i ;
double avg=0.0,sum=0.0;
for (i=0;i<8;i )
{avg=(x[i] x[i 1])/2;
sum =sqrt(avg);
}
return sum;
}
main()
{ double s,a[9]={12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0,11.0};
int i;
printf("\\nThe original data is :\\n");
for(i=0;i<9;i )printf("%6.1f",a[i]); printf("\\n\\n");
s=fun(a);
printf("s=%f\\n\\n",s);
NONO();
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *rf, *wf ; int i, j ; double s, a[9] ;
rf = fopen("bc.in", "r") ;
wf = fopen("bc.out", "w") ;
for(i = 0 ; i < 5 ; i ) {
for(j = 0 ; j < 9 ; j ) fscanf(rf, "%lf", &a[j]) ;
s = fun(a) ;
fprintf(wf, "%lf\\n", s) ;
}
fclose(rf) ; fclose(wf) ;
}
97.请编写函数fun,其功能是:计算并输出下列多项式值:
例如,若主函数从键盘给n输入50后,则输出为S=1.960784。
s=1 1/(1 2) 1/(1 2 3) ..1/(1 2 3... 50)
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <stdio.h>
double fun(int n)
{
int i;
double s=0.0,s1=0.0;
for(i=1;i<=n;i )
{ s1=s1 i ;
s=s 1.0/s1;
}
return s;
}
main()
{
FILE *wf;
int n;
double s;
printf("\nInput n: ");
scanf("%d",&n);
s=fun(n);
printf("\n\ns=%f\n\n",s);
wf=fopen("out.dat","w");
fprintf(wf,"%f",fun(50));
fclose(wf);
}
98.请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。
例如,若主函数从键盘给n输入20后,则输出为s=0.583333。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <stdio.h>
double fun(int n)
{
int i;
double sum=0.0;
if(n>0&&n<=100)
{for (i=1;i<=n;i )
if(i%5==0||i%9==0)
sum =1.0/i;
}
return sum;
}
main()
{ int n; double s;
printf("\\nInput n: "); scanf("%d",&n);
s=fun(n);
printf("\\n\\ns=%f\\n",s);
NONO();
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *rf, *wf ; int n, i ; double s ;
rf = fopen("bc.in", "r") ;
wf = fopen("bc.out", "w") ;
for(i = 0 ; i < 10 ; i ) {
fscanf(rf, "%d", &n) ;
s = fun(n) ;
fprintf(wf, "%lf\\n", s) ;
}
fclose(rf) ; fclose(wf) ;
}
99.请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。
例如,若主函数从键盘给n输入100后,则输出为sum=148.874270。
♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣
#include <stdio.h>
double fun(int n)
{
int i,j=0;
double s=0;
for (i=3;i<=n;i )
{ for (j=2;jif (i%j==0) break;
if (j==i) s=s sqrt(i);
}
return s;
}
main()
{ int n; double sum;
printf("\\n\\nInput n: "); scanf("%d",&n);
sum=fun(n);
printf("\\n\\nsum=%f\\n\\n",sum);
NONO();
}
NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *rf, *wf ; int n, i ; double s ;
rf = fopen("bc.in", "r") ;
wf = fopen("bc.out", "w") ;
for(i = 0 ; i < 10 ; i ) {
fscanf(rf, "%d", &n) ;
s = fun(n) ;
fprintf(wf, "%lf\\n", s) ;
}
fclose(rf) ; fclose(wf) ;