第一类删除或移动星号
1.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。
void fun(char *a )
{ while(*a!='\0') a++;
a--;
while(*a=='*') a--;
*(a+1)='\0';
}
改:[1]a2=k/10 [2]return i;
填:[1]N [2]i [3]-1 2.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。
void fun(char *a)
{ int i=0; char *p=a ;
while(*p&&*p=='*') { a[i]=*p; i++; p++;}
while(*p){ if(*p!=’*’) { a[i]=*p; i++; } p++; }
a[i]= '\0';
}
改:[1]int k=0;[2]while(*p ||*q)
填:[1]i [2]ps[j] [3]tp
3.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。
例如,若字符串中的内容为*******A*BC*DEF*G****,假设n的值为4,删除后,字符串中的内容则应当是
****A*BC*DEF*G****。
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'; }
}
改:[1]t=1.0;[2]return(s*2);
填:[1][M] [2]N [3]'\0' 4.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字
符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。
例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G。void fun(char *a,int n ,int h, int e)
{ int i,j=0;
for(i=h;i< n-e ;i++) a[j++]=a[i];
a[j]=‘\0’ ;
}
改:[1]fun(int x,int y,int z) [2]return j;
填:[1]N [2]substr [3]0
5.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。
void fun(char *a)
{ int i=0,n=0 ; char *p ;
p=a;
while (*p=='*') {n++ ; p++; }
while (*p) { a[i]= *p ; i++; p++ ; }
while(n!=0) { a[i]= '*' ;i++ ;n-- ; }
a[i]= '\0' ;
}
改:[1]s[j++]=s[i];[2]s[j]='\0';
填:[1]a [2]b.name [3]score[i] 6.请编写—个函数void fun(char *ss),其功能是:将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
void fun(char *ss)
{ int i;
for(i=0;ss[i]!='\0';i++)
{ if(i%2 ==1&&ss[i]>='a' && ss[i]<='z')
ss[i]= ss[i] -32;}
}
改:[1]for(i=strlen(t);i>0;i--) [2]if(t[j]>t[j+1]) 填:[1]k [2]N [3]a[k][i]
第二类数据组合
7.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,b=12,调用该函数后c=4152。
void fun( int a, int b, long *c)
{ *c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10 ; } 改:[1]for(i=0;i<sl;i ++) [2]t[2*sl]='\0';
填:[1]STYPE [2]FILE [3]fp 8.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的千位和十位上。
例如,当a=45,b=12,调用该函数后c=1425。
void fun(int a, int b, long *c)
{ *c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10 ; } 改:[1]int i,s1;[2]t[i]=s[sl-i-1];
填:[1]0 [2]x [3]t++
9.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。
例如,当a=45,b=12,调用该函数后c=2415。
void fun(int a,int b, long *c)
{ *c=(b%10)*1000+(a/10)*100+(b/10)*10+a%10 ; } 改:[1]char*fun(char (*sq)[M]) [2]return sp;
填:[1]struct student* [2]a->score [3]a 10.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。
例如,当a=45,b=12,调用该函数后c=1524。
void fun(int a, int b, long *c)
{ *c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10 ; } 改:[1]void fun (long s,long *t) [2]sl=sl*10;
填:[1]*fw [2]str [3]str
11.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。
例如,当a=45,b=12,调用该函数后c=5241。
void fun(int a, int b, long *c)
{ *c= a/10*10+a%10*1000+b/10+b%10*100;}
改:[1]void fun(int (*a)[M],int m)
[2]a[j][k]=(k+1)*(j+1);
填:[1]k [2]N [3]temp 12.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,b=12,调用该函数后c=5142。
void fun ( int a, int b, long *c)
{ *c=(a%10)*1000+(b/10)*100+(a/10)*10+b%10 ; } 改:[1]if (d%2==0) [2]s/= 10;
填:[1]"r" [2]fs [3]ft
13.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。
例如,当a=45,b=12,调用该函数后c=4251。
void fun(int a,int b,long *c)
{ int i,j,k,n;
i=a%10; j=a/10; k=b%10; n=b/10;
*c=j*1000+k*100+i*10+n;}
改:[1]int fun(int n,int xx[M][M])
[2]printf("%4d ",xx[i][j]);
填:[1]1 [2]s!=0 [3]i*10 14.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。
例如,当a=45,b=12,调用该函数后c=2514。
void fun(int a,int b,long *c)
{ *c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10 ; } 改:[1]for(i=j+1;i<n;i++) [2]p=i;
填:[1]fp [2]fclose(fp) [3]fname
第三类删除指定位置字符
15.请编写函数fun,其功能是:将s所指字符串中ASCII 值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为ABCDEFGl2345,其中字符A的ASCII码值为奇数、…字符1的ASCII码值也为奇数、…都应当删除,其他依次类推。最后t所指的数组中的内容应是BDF24。
void fun(char *s,char t[ ])
{ int i, j=0, n ;
n=strlen(s);
for(i=0; i<n; i++)
if (s[i]%2==0) { t[j]=s[i] ; j++ ; }
t[j]= '\0' ;
}
改:[1]while(*w) [2]if(*r == *p)
填:[1]s[i] [2]k [3]'\0' 16.请编写函数fun,其功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。
void fun(char *s,char t[ ])
{ int i,j=0,k= strlen(s);
for(i=1;i<k;i=i+2) t[j++]=s[i];
t[j]='\0';
}
改:[1]while(*r) [2]*a=*r;a++;r++;
填:[1]data [2]next [3]head
17.请编写函数fun,其功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为ABCDEFGl23456,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是246。
void fun(char*s, char t[ ])
{ int i,j=0;
for(i=0;s[i]!= '\0' ;i++)
if(i%2==0 && s[i]%2==0) t[j++]=s[i];
t[j]='\0';}
改:[1]a=NULL;[2]if(*r ==*p)
填:[1]0 [2]p->next [3]&num 18.请编写函数fun,其功能是:将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为ABCDEFG12345,其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是135。
void fun(char *s, char t[ ])
{ int i, j=0, n;
n=strlen(s);
for( i=0; i<n; i++)
if(i%2!=0&&s[i]%2!=0) { t[j]=s[i];j++;}
t[j]= '\0';}
改:[1]void fun (char *s,char *t) [2]t[2*d]='\0';填:[1]3.0 [2]> [3](2*i-1)
19.请编写一个函数void fun(char a[],char b[],int n),其功
能是:删除一个字符串中指定下标的字符。其中,a指向
原字符串,删除后的字符串存放在b所指的数组中,n中
存放指定的下标。例如,输入一个字符串World,然后输
入3,则调用该函数后的结果为Word。
void fun(char a[ ],char b[ ],int n)
{ int i,k=0;
for(i=0;a[i]!='\0';i++)
if(i!=n) b[k++]=a[i];
b[k]='\0';改:[1]while(fabs(t)>=num) [2]t=s/ n;
第三类整除
20.编写函数fun,它的功能是:求出1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。void fun(int *a,int *n)
{ int i,m=0;
for(i=1;i<1000;i++)
if(((i%7==0) || (i%11==0)) &&
!((i%7==0) &&(i%11==0))) { a[m]=i;m+=1;} *n=m;
}
改:[1]t=*x;*x=y;[2]return(t);
填:[1]s[i] [2]'9' [3]n 21.编写函数fun,它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。例如,若n为1000时,函数值应为s=153.909064。double fun(int n)
{ int sum,i;sum=0;
for(i=0;i<n;i++)
{ if(i%3==0&&i%7==0) sum=sum+i;}
return (sqrt(sum));
}
改:[1]if ((k%13 == 0) || (k%17 == 0)) [2]}c语言二维数组转置
填:[1]'0' [2]s++ [3]sum
22.请编写一个函数fun,它的功能是:求出1到m之内(含
m)能被7或11整除的所有整数放在数组a中,通过n返
回这些数的个数。例如,若传送给m的值为50,则程序输
出:7 11 14 21 22 28 33 35 42 44 49
void fun(int m,int *a,int *n )
{ int i,k;
*n=0;
for(i=1,k=0; i<=m; i++)
if((i%7==0)||(i%11==0)) { a[k++]=i; (*n)++; }
}
改:[1]p=j;[2]p=i;
填:[1]q [2]next [3]next
第四类数组排序或矩阵
23.请编写一个函数fun,它的功能是:出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。
void fun(int a[ ],int n, int *max, int *d )
{ int i;
*max=a[0];
*d=0;
for(i=0;i<n;i++)
if(a[i]>*max) { *max=a[i]; *d=i;}
}
改:[1]k++;[2]if (m == k)
填:[1]1 [2]2*i [3]-1 24.请编写一个函数fun,它的功能是:求出—个2×M整型二维数组中最大元素的值,并将此值返回调用函数。fun (int a[ ][M])
{ int i,j,max= a[0][0] ;
for(i=0;i<2;i++)
for(j=0;j<M;j++)
if(max<a[i][j]) max=a[i][j];
return max;
}
改:[1]double fun(int n) [2]s=s+(double)a/b;
填:[1]3.0 [2]> [3](2*i-1)
25.请编写一个函数int fun(int *s,int t,int *k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。例如,输入如下整数:876 675 896 101 301 401 980 431 451 777则输出结果为:6,980。
int fun(int *s,int t,int *k)
{ int i,max;
max=s[0];
for( i=0;i<t;i++) if(s[i]>max){ max=s[i];*k=i;}
}
改:[1]t+=s[k];[2]*aver=ave;
填:[1]n++ [2]0 [3]s++ 26.请编写函数fun,该函数的功能是:实现B=A+A’,即把矩阵A加上矩阵A的转置,存放在矩阵B中。计算结果在main函数中输出。
void fun(int a[3][3],int b[3][3])
{ int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
b[i][j]=a[i][j]+a[j][i];
}
改:[1]for(i=2;i<=m;i++) [2]y+=1.0/ (i*i);
填:[1]&& [2]'\0' [3]s[j]
第五类通项公式求值
27.请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):
double fun(double eps)
{ double s;
float n,t,pi;
t=1;pi=0;n=1.0;s=1.0;
while((fabs(s))>=eps)
{ pi+=s; t=n/(2*n+1); s*=t; n++;}
pi=pi*2;
return pi;
}
改:[1]int fun(char*str,char*substr)
[2]for(i=0;str[i];i++)
填:[1]0 [2]n [3](t*t) 28.编写函数fun,它的功能是:根据以下公式求P的值,结果由函数值带回。m与n为两个正整数且要求m>n。p=m!/n!(m-n)!。
例如:m=12,n=8时,运行结果为495.000000。
float fun( int m,int n)
{ int i,j,k;
long int t=1,s=1,p=1;
float q;
for(i=1;i<=m;i++) t*=i;
for(j=1;j<=n;j++) s*=j;
for(k=1;k<=m-n;k++) p*=k;
q=(float)t/s/p;
return q;}
改:[1]int j,c=0;float xa=0.0;[2]if(x[j]>=xa)
填:[1]*s [2]s++ [3]n
29.编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。s=1+1/(1+2)+1/(1+2+3)+.......+1/(1+2+3+4+......+n),例如:若n的值为11时,函数的值为1.833333。
float fun(int n)
{ int i,sum=1; float s=1;
for(i=2;i<=n;i++)
{ sum=sum+i; s=s+1.0/sum;}
return s;
}
long chsdc(int n)
{ int i,s; s=0;
for(i=0;i<n;i++) s=s+i;
return(s);
}
改:[1]double sum=0.0;[2]sum/= c;
填:[1]'\0' [2]0 [3]i 30.编写函数fun计算:s=(ln(1)+ln(2)+1n(3)+…+ln(m))0.5 s作为函数值返回。在C语言中可调用log(n)函数求ln(n)。log函数的引用说明是:double log(double x)。例如,若m的值为20,则fun函数值为6.506583。
double fun(int m)
{ double (r);double r,s; double log(double i);
for(i=1;i<=m;i++) r=r+log(i);
return (sqrt(r));
}
改:[1]double f(double x) [2]return s;
填:[1]0 [2]j-- [3]j
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论