资源描述
类型一:调整一个数的个、十、百、千位
1.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12,调用该函数后c=4152。
*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10);
STYPE FILE Fp
for( i=0; i<=sl; i ++)
t[2*sl] = '\0';
2.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。例如,当a=45,b=12,调用该函数后c=1524。
*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);
*fw str str
void fun(long s,long *t)
sl=sl*10;
3.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12,调用该函数后c=2514。
*c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10);
fp fclose(fp) fname
for ( i=j+1; i<=n-1 ; i++ )
p=i;
4.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12,调用该函数后c=5142。
*c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10);
*n next head
a=NULL;
if(*r==*p)
6.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12,调用该函数后c=2415。
*c = (b%10)*1000+(a/10)*100+(b/10)*10+a%10;
struct student *
a->score[i]
a
char *fun(char (*sq)[M])
return sp;
类型二:与*号有关的操作
13.请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。
删除串尾*号
char *p = a ;
while(*p) p++ ; p-- ;
while(*p == '*') p-- ;
p++ ;
*p = 0 ;
N i -1
a2=k/10;
return i;
14.请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。
除前导*外其他删除*
if(a[i] != '*') a[k++]=a[i]; i++;
N k ss[i]
int k=0;
while( *p || *q )
15.请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。
删除前导和尾部*
char *p=a ; int j=0,len=0;
while(*p) {p++; len++;}
while(j<len-h-e) { a[j]=a[h+j]; j++; } a[j]=0;
N substr 0
fun(int x,int y, int z)
return j;
17.请编写函数fun,它的功能是:使字符串的前导*号不得多于n个
前导*不多于n个
for(; a[j] !=0 ; j++) a[i++]=a[j];
a[i] = 0;
M N 0
t=1;
return(2*s);
18.请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。
串前*移至串尾
while(*p) { *q=*p; p++;q++; }
a b.name score[i]
s[j++]=s[i];
s[j]=0;
19.编写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址
(用****作为结束输入的标志)。
if(strlen(a[i]) > maxlen)
{ maxlen = strlen(a[i]) ; k = i ; }
[N] i i+1
aa[i]=m%k;
printf("%d",aa[i-1]);
类型三:与下标或ASCII码有关
21.请编写—个函数void fun(char *ss),其功能是:将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
下标奇数位置子母改大写
char *p = ss ; int i = 0 ;
while(*p) {
if((i % 2) && (*p >= 'a' && *p <= 'z')) *p -= 32 ;
p++ ; i++ ; }
return ss ;
NULL n head,ch
for (i = 0,t = 0; p[i] ; i++)
c[t]= '\0';
22.请编写函数fun,其功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。
下标为偶数字符删除
int i, j = 0 ;
for(i=1; i<strlen(s); i+=2) t[j++]=s[i] ;
t[j] = 0 ;
data next head
while(*r)
*a = *r; a++; r++;
23.编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。
除首尾外其余ASCII码降序
char ch ; int i, j ;
for(i = 1 ; i < 6 ; i++)
for(j = i + 1 ; j < 6 ; j++)
{ if(*(s + i) < *(s + j))
{ ch = *(s + j) ; *(s + j) = *(s +i) ; *(s + i) = ch ; } }
ss[i] n+j 1
if(* p == ' ' )
*(p-1) = toupper( *( p - 1 ) );
24.请编写函数fun,其功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
ASCII码值为偶数删除
int i, j = 0 ;
for(i = 0 ; i < strlen(s); i++)
if(s[i] % 2) t[j++] = s[i] ;
t[j] = 0 ;
STU std[i].num std[i]
r++; p++;
if(*r==0)
26.请编写函数fun,其功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除
除下标偶数同时ASCII码值偶数之外其余全部删除
int i, j = 0 ;
for(i = 0 ; i < strlen(s) ; i += 2)
if(s[i] % 2 == 0) t[j++] = s[i] ;
t[j] = 0 ;
"r" fs ft
if (d%2==0)
s /= 10;
28.请编写函数fun,其功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。
将下标为偶数同时ASCII码为奇数删除
int i, j = 0 ;
for(i = 0 ; i < strlen(s) ; i++)
if(!((i % 2) ==0 && (s[i] % 2))) t[j++] = s[i] ;
t[j] = 0 ;
j k p
while(i<j)
if (*a)
类型四:数组和矩阵操作
33.请编写函数fun(inta[][N],int n),该函数的功能是:使数组左下半三角元素中的值乘以n。
左下三角元素乘n
int i, j;
for(i = 0 ; i < N ; i++)
for(j = 0 ; j <= i; j++) a[i][j] *= n ;
STU score[i] &std
if(k>0)
else if(k==0)
34.请编写函数fun(int a[][N],int n),该函数的功能是:使数组右上半三角元素中的值乘以m。
右上三角元素同乘m
int i, j;
for(i = 0 ; i < N ; i++)
for(j = i ; j < N ; j++) a[i][j] *= m ;
*av i x[j]
float fun(int n)
for (i=2; i<=n; i++)
35.请编写函数fun(int a[][N]),该函数的功能是:使数组左下半三角元素中的值全部置成0。
左下三角元素置0
int i, j;
for(i = 0 ; i < N ; i++)
for(j = 0 ; j <= i; j++) a[i][j] = 0 ;
*std PERSON std
int k,q,i;
pt[i] = str[k][i] ;
36.请编一个函数求出二维数组每列中最小元素,并依次放入pp所指一维数组中。
二维数组每列最小元素
int i,j, min, k ;
for(i = 0 ; i < N ; i++)
{ min = tt[0][i] ; k = 0 ;
for(j = 1 ; j < M ; j++)
if(min > tt[j][i]) {min=tt[j][i] ; k = j ; }
pp[i] = tt[k][i] ; }
*std std[i].age max.name
void fun ( int*a, int*b )
t=*b;*b=*a;*a=t;
38.编写程序,实现矩阵(3行3列)的转置(即行列互换)。
矩阵转置
int i,j,arr[3][3] ;
memcpy(arr, array, 9*sizeof(int)) ;
for(i = 0 ; i < 3 ; i++)
for(j = 0 ; j < 3 ; j++)
array[i][j] = arr[j][i] ;
N break n
sum=0;
scanf("%d",&a[i][j]);
42.请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。
数组周边元素的平均值
int i, j, n=0; double sum=0;
for ( i =0; i<N; i++ ) {
sum+=w[0][i]+w[N-1][i]; n+=2; }
for ( i =1; i<N - 1; i++ )
{ sum +=w[i][0]+w[i][N-1]; n+=2; }
return sum/n;
s/N j++ -1
# include <stdio.h>
upfst(char *p)
43.请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。
二维数组周边元素之和
int tot = 0, i, j ;
for(i = 0 ; i < N ; i++)
{tot += a[0][i] ; tot += a[M-1][i] ; }
for(i = 1 ; i < M - 1 ; i++)
{tot += a[i][0] ; tot += a[i][N-1] ; }
return tot ;
x[i]/N j++ i++
num[k]=0;
switch(*s)
类型五:学生分数操作
45.请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为71.80。
n门课程平均分71.8
int i;
float ave=0.0;
for(i=0; i<n; i++) ave=ave+a[i] ;
ave=ave/n;
return ave;
x p s
long k=1;
num/=10 ;
46.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。
N名学生的成绩的平均分,78.625
STREC *p=h->next;
double av=0.0; int n = 0 ;
while(p!=NULL)
{ av = av + p->s ; p=p->next; n++; }
av /= n ; return av ;
char ch<='9' '0'
b[k]=*p;
b[k++]= ‘ ’;
48.请编写函数fun,该函数的功能是:找出成绩最高的学生记录。
找出成绩最高学生纪录(规定只有一个最高分)
int i, max = a[0].s, j = 0;
for(i = 1 ; i < N ; i++)
if(max < a[i].s) { j = i ; max = a[i].s ; }
*s = a[j] ;
std[i].year std[i] n
IsPrime ( int n )
if(!( n%i ))
53.请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。
高于等于平均分的学生数据
double t=0 ; int i ;
*n = 0 ;
for(i = 0 ; i < N ; i++) t = t + a[i].s ;
t = t / N ;
for(i = 0 ; i < N ; i++) if(a[i].s > t) b[(*n)++] = a[i] ;
return t ;
->sno ->name &t
double fun(double a, double x0)
if( fabs(x1-x0)>0.00001 )
54.请编写函数fun,它的功能是:把分数最低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。
分数最低学生数据放在b所指数组
int i, j = 0, min=a[0].s ;
for(i = 0 ; i < N; i++) { if(min > a[i].s) {
j = 0 ; b[j++] = a[i] ; min = a[i].s ; }
else if(min == a[i].s)
b[j++] = a[i] ; }
return j ;
struct student a.name a.score[i]
if(p==n) return -1;
a[i]=a[i+1];
55.请编写函数fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。
找出成绩最低学生纪录
int i, min = a[0].s, j = 0;
for(i = 1 ; i < N ; i++)
if(min > a[i].s) { j = i ; min = a[i].s ; }
*s = a[j] ;
0 x[i]/N j++
double fun(int m)
for( i = 100;i <= m;i += 100 )
类型六:字符和字符串操作
59.请编写一个函数fun,它的功能是:比较两个字符串的长度,返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。
返回较长字符串
int i; char *p=s, *q=t;
for(i=0;*p && *q; i++) { p++; q++; }
if(*p == 0 && *q == 0) return s ;
if(*p) return s ;
else return t ;
next t->data t
fun (char *a)
printf("%c" ,*a) ;
60.编写函数fun,该函数的功能是:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。
删除给定的字符
char *p = s ; int i = 0 ;
while(*p)
{ if(*p != c) s[i++] = *p ;
p++ ; }
s[i] = 0 ;
k len ss[i][j]
result *=n--;
result
68.请编写一个函数,用来删除字符串中的所有空格。
删除字符串中所有空格
char *p = str ;
int i = 0 ;
while(*p) {
if(*p != ' ') str[i++] = *p ;
p++ ; }
str[i] = 0 ;
0 || 1
t-=1.0/i;
return t;
69.请编一个函数fun(char *s),该函数的功能是把字符串中的内容逆置。
字符串逆置
strrev(s);
i+1 k=j t
void fun(char *str, char ch)
if(*str!=ch)
str[1] = 0;
72.编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。
统计子串出现的次数
int cnt = 0 ; char *p = str, *q ;
while(*p) { q = strstr(p, substr) ;
if(q == NULL) break;
p = q + strlen(substr) ; cnt++ ; } return cnt ;
N len *n=len
t += 1.0/i;
return t;
类型七:套用公式计算型
76.请编写函数fun,其功能是:计算并输出下列多项式值: Sn=1+1/1!+1/2!+1/3!+1/4!+…+1/n!
若主函数从键盘给n输入15,则输出为s=2.718282。
double s=1 ; long t=1; int i;
for(i=1; i<=n; i++)
{ t=t*i; s+=1./t; } return s;
1 -1 t
for(i=1; i<=3; i++)
if(k>=0 && k<=6)
77.请编写函数fun,其功能是:计算并输出当x<0.97时下列多项式的值,直到|Sn-S(n-1)|<0.000001为止。Sn=1+0.5x+0.5(0.5-1)/2!x(2)+...+ 0.5(0.5-1)(0.5-2)
.....(0.5-n+1)/n!x(n)
输入0.21后,则输出为s=1.100000。
double s1=1.0,p=1.0,sum=0.0,s0,t=1.0; int n=1;
do{s0=s1;sum+=s0; t*=n;p*=(0.5-n+1)*x; s1=p/t;
n++;}while(fabs(s1-s0)>1e-6);
return sum;
x n fabs(t)
for(i=1; i<=y; i++)
t=t%1000;
78.请编写函数fun,其功能是:计算并输出下列多项式值: Sn=(1-1/2)+(1/3-1/4)+...+(1/(2n-1)1/2n)
若输入8后,则输出为S=0.662872。
int i;
double sum=0.0;
if (n>1 && n<=100)
{ for(i=1; i<=n; i++)
sum+=1.0/(2*i-1)-1.0/(2*i); }
return sum;
j=2 i j
sum=j=0;
if(sum%4==2)
79.请编写函数fun,其功能是:计算并输出
S=1+(1+2^0.5)+(1+2^0.5+3^0.5)+……+
(1+2^0.5+3^0.5+……+n^0.5)
输入20后,则输出为s=534.188884。
int i; double fac=1.0; double sum=1.0;
for(i=2;i<=n;i++)
{ fac+=sqrt(i); sum+=fac; }
return sum;
a
a
b
c=c+32;
c=c+5;
84. 请编写函数fun,其功能是:计算并输出下列多项式值:s=1+1/(1*2)+1/(1*2*3)+..1/(1*2*3...*50)
例如,若主函数从键盘给n输入50后,则输出为S=1.718282。
double t,sn=1.0; int i,j;
for(i=1;i<n;i++)
{t=1.0; for(j=1;j<=i;j++) t*=j;sn+=1.0/t;}
return sn;
n%10 break break
if(t==0)
*zero=count;
类型八:求整除
86.请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
能被7或11整除
int i ;
*n=0 ;
for(i=7 ; i<=m; i++)
if((i % 7 == 0) || (i % 11 == 0)) a[(*n)++]=i ;
q next next
p = j;
p = i;
89.请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。
N以内能被5或9整除的所有自然数倒数之和 0.583333
int i; double sum=0.0;
for(i=1; i<=n; i++)
if(i%5 == 0 || i%9 == 0) sum+=1.0/i;
return sum;
a[i] a[i] 0
y=1;
d=a-i;
类型九:其它各类计算
92.请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。sum=148.874270。
3到n之间所有素数平方根之和
int i,j=0; double s=0;
for (i=3; i<=n; i++)
{ for (j=2; j<i; j++)
if (i%j == 0) break;
if (j == i) s=s+sqrt(i); }
return s;
i t++ count
int fun(int a,int b,int c)
else retrun 1;
93.编写函数int fun(int lim,int aa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中
小于或等于lim所有素数
for(j = 2 ; j <= (i/2) ; j++)
if(i % j == 0) break;
if(j > (i/2)) aa[k++] = i;
a[0][i] < x,y
int fun(int *x,int *y)
t=*x;*x=*y;*y=t;
95.请编写一个函数 unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n≥2)位的整数,则函数求出w的后n-1位的数作为函数值返回
5923=〉923
if(w>10000) w %= 10000 ;
else if(w>1000) w %= 1000 ;
else if(w>100) w %= 100 ;
else if(w>10) w %=10 ;
return w ;
tt tt.score[i] std
m=i;
if(a[k]>a[m]) m=k;
96.请编写函数fun,其功能是:计算并输出给定10个数的方差:
方差S=11.730729
int i; double avg=0.0, sum=0.0, abs=0.0, fc;
for (i=0;i<10;i++) sum+=x[i];
avg=sum/10;
for (i=0;i<10;i++) abs+=(x[i]-avg)*(x[i]-avg);
fc=sqrt(abs/10) ;
return fc;
1 1 i
k=i;
c=k%10;
97.请编写函数fun,其功能是:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。s=35.951014
相邻两元素平均值平方根之和
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;
x n t
d=1; s=0;
d=d/10;
98.请编一个函数float fun(double h),函数的功能是对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值为正数)。
保留2位小数
long w ;
w = h * 100 + 0.5 ;
return (float) w / 100 ;
48 s++ ctod(a)+ctod(b)
void fun ( char *s, int* a, int *b )
*a=*a+1 ;
*b=*b+1;
99.请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。sum=763
整数n的所有因子
int s = 0, i ;
for(i = 2 ; i < n ; i++) if(n % i == 0) s +=i ;
return s ;
&& ‘A’ ch
void fun(int *a)
a[j]=a[j-1];
请编函数fun,其功能是将一个数字字符串转换成与其面值相同的长整型整数。可调strlen函数求字符串长度。例如:在键盘输入字符串2345210,函数返回长整型数2345210。
数字字符串转换为整数
int len, t; long x=0; len=strlen(s);
if(s[0]=='-') { t=-1; len--; s++; } else t=1;
while(*s) x = x*10-48+(*s++);
return x*t;
0 t (t-1)*(t+2)/2
b[i]=0;
b[a[i] - 'a']++;
if (b[max] <b[i])
请编写函数fun,其功能是:将一组得分中,去掉一个最高分和一个最低分,然后求平均值,并通过函数返回。函数形参a指向存放得分的数组,形参n中存放得分个数(n>2)。8.687500
double max,min,pjz;
int i;
max = min=a[0];
for(i=1;i<n;i++)
{if(max<a[i]) max=a[i];
if(min>a[i]) min=a[i]; }
for(i=0,pjz=0;i<n;i++) pjz+=a[i];
return (pjz-max-min)/(n-2);
a[i] m%10 m/10
b[i]=a[i][0];
for (j=1; j<N; j++)
if ( b[i] >a[i][j] )
6
展开阅读全文