60、数列中,第一项值为3,后一项都比前一项的值增5;给定程序中fun函数的功能是:计算前n项(4<n<50)项的累加和,在累加过程中把那些被4除后余2的当前累加值放入数组中,符合条件的累加值的个数作为函数值返回主函数。例如,当n的值为20时,该数列为3,8,13,18,23,28…93,98。符合此条件的累加值应为42,126,366,570,1010。
#include <stdio.h>
#define N 20
int fun(int n,int *a)
{ int i,j,k,sum;
/**************found**************/
sum=j==0; 改为:sum=j=0;
for(k=3,i=0;i<n;i ,k =5)
{ sum=sum k;
/**************found**************/
if(sum%4=2) 改为:if(sum%4==2)
a[j ]=sum; }
return j;
}
main( )
{ int a[N],d,n,i;
printf("\nEnter n (4<n<=50): ");scanf("%d",&n);
d=fun(n,a);
printf("\n\nThe result :\n");
for(i=0; i<d; i )printf("%6d",a[i]);printf("\n\n"); }
61、给定程序中fun函数的功能是:计算S=f(-n) f(-n 1) … f(0) f(1) f(2) …f(n)的值。例如,当n为5时,函数值应为:10.407143。f(x)函数定义如下:
#include <stdio.h>
#include <math.h>
/************found************/
f( double x) 改为:double f( double x)
{ if (x == 0.0 || x == 2.0) return 0.0;
else if (x < 0.0) return (x -1)/(x-2);
else return (x 1)/(x-2); }
double fun( int n )
{ int i; double s=0.0, y;
for (i= -n; i<=n; i )
{y=f(1.0*i); s = y;}
/************found************/
return s 改为:return s;
}
main ( )
{ printf("%f\n", fun(5) ); }
62、给定程序中fun函数的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调,次最大数和a[1]中的数对调。
#include <stdio.h>
#define N 20
/**********found**********/
int fun ( int * a, int n ) 改为:void fun ( int * a, int n )
{ int i, m, t, k ;
for(i=0;i<2;i ) {
/**********found**********/
m=0; 改为:m=i 1;
for(k=i 1;k<n;k )
/**********found**********/
if(a[k]>a[m]) k=m; 改为:if(a[k]>a[m]) m=k;
t=a[i];a[i]=a[m];a[m]=t; }
}
main( )
{ int x, b[N]={11,5,12,0,3,6,9,7,10,8}, n=10, i;
for ( i=0; i<n; i ) printf("%d ", b[i]);
printf("\n");
fun ( b, n );
for ( i=0; i<n; i ) printf("%d ", b[i]);
printf("\n"); }
63、给定程序中fun函数的功能是:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。
#include <stdio.h>
int fun(int m)
{ int i, k ;
for (i = m 1 ; ; i ) {
for (k = 2 ; k < i ; k )
/**************found**************/
if (i % k != 0) 改为:if (i % k == 0)
break ;
/**************found**************/
if (k < i) 改为:if (k >= i)
return(i); }
}
main( )
{ int n;
clrscr( ); printf(“\n please enter n: “);
scanf(“%d”,&n); printf(“%d\n”,fun(n)); }
64、给定程序中fun函数的功能是:将p所指字符串中的所有字符复制到b中,要求复制三个字符之后插入一个空格。例如,在调用fun函数之前给a输入字符串:ABCDEFGHIJK,调用函数之后,字符数组b中的内容则为:ABC DEF GHI JK。
#include <stdio.h>
void fun(char *p, char *b)
{ int i, k=0;
while(*p)
{
/**********found**********/
i=1; 改为:i=0;
/**********found**********/
while( i<=3 ||*p ) 改为:while( i<3 && *p )
{
/**********found**********/
b[k]=p; 改为:b[k]=*p;
k ; p ; i ;
}
if(*p)
{
/**********found**********/
b[k ]=" "; 改为:b[k ]=’ ‘;
}
}
b[k]='\0';
}
main( )
{ char a[80],b[80];
printf("Enter a string: "); gets(a);
printf("The original string: "); puts(a);
fun(a,b);
printf("\nThe string after insert space: "); puts(b); printf("\n\n"); }
65、给定程序中fun函数的功能是:计算小于形参k的最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。
#include <stdio.h>
int fun( int k )
{ int m=0, mc=0, j ;
while ((k >= 2) && (mc < 10))
{
/************found************/
if ((k%13 = 0) || (k%17 = 0)) 改为:if ((k%13 == 0) || (k%17 == 0))
{ m = m k; mc ; }
k--;
}
return m;
/************found************/
_____ 改为:}
main ( )
{ printf("%d\n", fun (500)); }
66、给定程序中fun函数的功能是:将长整形数中每一位上为奇数的数依次取出,构成一个新书放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:87653142时,t中的数为:7531。
#include <stdio.h>
void fun (long s, long *t)
{ int d;
long sl=1;
/************found************/
t = 0; 改为:*t = 0;
while ( s > 0)
{ d = s%10;
/************found************/
if (d%2 == 0) 改为:if (d%2 != 0)
{ *t = d * sl *t; sl *= 10; }
s /= 10; }
}
main( )
{ long s, t;
clrscr();
printf("\nPlease enter s:"); scanf("%ld", &s);
fun(s, &t);
printf("The result is: %ld\n", t); }
67、给定程序中fun函数的功能是:交换主函数中两个变量的值。例如:若变量a中的值原为8,b中的值为3。程序运行后a中的值为3,b中的值为8。
#include <stdio.h>
/*********found**********/
int fun(int x,int y) 改为:int fun(int *x,int *y)
{ int t;
/*********found**********/
t=x;x=y;y=t; 改为:t=*x;*x=*y;*y=t;
}
main( )
{ int a,b;
a=8;b=3; fun(&a,&b); printf("%d, %d\n",a,b); }
68、给定程序中fun函数的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序。然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中,……。待排序的字符串已在主函数中赋予。
#include <stdio.h>
#include <string.h>
#define N 80
void insert(char *aa)
{ int i,j,n; char ch;
/**********found**********/
n=strlen[ aa ]; 改为:n=strlen(aa);
for( i=1; i<n ;i ) {
/**********found**********/
c=aa[i]; 改为:ch=aa[i];
j=i-1;
while ((j>=0) && ( ch<aa[j] ))
{ aa[j 1]=aa[j];
j--; }
aa[j 1]=ch; }
}
main( )
{ char a[N]="QWERTYUIOPASDFGHJKLMNBVCXZ";
int i ;
printf ("The original string : %s\n", a);
insert(a) ;
printf("The string after sorting : %s\n\n",a ); }