if(i%2!
=0&&s[i]%2!
=0)
{t[j]=s[i];
j++;
}
t[j]='\0';}
32、实现B=A+’A’,即将矩阵A加上A的转置,存放在矩阵B中。
voidfun(inta[3][3],intb[3][3])
{inti,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
b[i][j]=a[i][j]+a[j][i];}
33、将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。
voidfun(int(*s)[10],int*b,int*n,intmm,intnn)
{inti,j;
for(j=0;jfor(i=0;i{
b[*n]=*(*(s+i)+j);
*n=*n+1;
}
}
34、将两个两位数的正整数a,b合并成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。
voidfun(inta,intb,long*c)
{
*c=a/10+(b%10)*10+(a%10)*100+(b/10)*1000;
}
35、将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并成一个新的字符串。
voidfun(chara[M][N],char*b)
{inti,j,k=0;
for(i=0;ifor(j=0;a[i][j]!
='\0';j++)
b[k++]=a[i][j];
b[k]='\0';
}
36、删除一个字符串中指定下标的字符。
a指向原字符后的字符串存放在b所指的数组中,n中存指定的下标。
voidfun(chara[],charb[],intn)
{inti,k=0;
for(i=0;a[i]!
='\0';i++)
if(i!
=n)
b[k++]=a[i];
b[k]='\0';
}
37、移动一维数组中的内容,若数组中有n个整数,要求把下标从0~p(含p,p小于等于n-1)的数组元素平移到数组的最后。
voidfun(int*w,intp,intn)
{intx,j,ch;
for(x=0;x<=p;x++)
{ch=w[0];
for(j=1;j{
w[j-1]=w[j];
}
w[n-1]=ch;
}
}
38、将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
voidfun(char(*s)[N],char*b)
{inti,j,k=0;
for(i=0;ifor(j=0;jb[k++]=s[j][i];
b[k]='\0';
}
39、计算
floatfun(intn)
{inti,s1=0;
floats=;
for(i=1;i<=n;i++)
{s1=s1+i;
s=s+s1;
}
returns;
}
40、将s所指字符串中ASCCII值为奇数的字符删除,剩余字符形成的新串放在t所指数组中
voidfun(char*s,chart[])
{inti,j=0,n;
n=strlen(s);
for(i=0;iif(s[i]%2==0)
{t[j]=s[i];
j++;
}
t[j]='\0';
}
42、删除一维数组中所有相同的数使之只剩一个。
数组中的数已按由小到大的顺序排列函数返回删除后数组的数据。
intfun(inta[],intn)
{inti,j=1;
for(i=1;iif(a[j-1]!
=a[i])
a[j++]=a[i];
returnj;
}
43、除了字符串前导和尾部的*号外,将串中其他的*号全部删除。
voidfun(char*a,char*h,char*p)
{inti=0;
char*q=a;
while(q{a[i]=*q;q++;i++;}
while(q
{if(*q!
='*')
{a[i]=*q;
i++;
}
q++;
}
while(*q)
{a[i]=*q;i++;q++;}
a[i]='\0';
}
44、将a,b的两个两位正整数合并成一个新的整数放在c中,合并方式是:
将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上。
voidfun(inta,intb,long*c)
{
*c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000;
}
45、使字符串的前导*号不得多于n个,若多于n个,则删除多余的*号,若少于或等于n个,则不做处理,字符串中间和尾部的*号不删除。
voidfun(char*a,intn)
{inti=0;
intk=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';
}
}
46、将两个两位数的正整数a,b合并成一个整数放在c中,合并方式是:
将a数的十位和个位数依次在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。
voidfun(inta,intb,long*c)
{
*c=a/10+(b/10)*10+(a%10)*100+(b%10)*1000;
}
47、将一个数字字符串转换为一个整数。
答案:
ongfun(char*p)
{longn=0;
intflag=1;
if(*p=='-')
{p++;flag=-1;}
elseif(*p=='+')
p++;
while(*p!
='\0')
{n=n*10+*p-'0';
p++;
}
returnn*flag;
}
48、求Fibonacc数列中大于t的最小的数,结果由函数返回。
Fibonacc数列F(n)定义为
intfun(intt)
{intf0=0,f1=1,f;
do{
f=f0+f1;
f0=f1;
f1=f;
}while(freturnf;
}
49、把低于平均分的学生数据放入b所指的数组中低于平均分的学生人数通过形参n返回,平均分通过函数值返回
doublefun(STREC*a,STREC*b,int*n)
{inti,j=0;
doubleav=;
for(i=0;iav=av+a[i].s;
av=av/N;
for(i=0;iif(a[i].s*n=j;
returnav;
}
50、将ss所指字符串所有下标为奇数位上的字母转换为大写。
voidfun(char*ss)
{inti;
for(i=0;ss[i]!
='\0';i++)
if(i%2==1&&ss[i]>='a'&&ss[i]<='z')
ss[i]=ss[i]-32;
}
51、将a,b两个正整数合并成一个新的整数放在c中。
合并方式:
将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上。
voidfun(inta,intb,long*c)
{*c=b/10+(a%10)*10+(b%10)*100+(a/10)*1000;
}
52、使字符串中尾部的*号不多于n个,若多于n个,则删除多余的*号,若少于或等于n个,则不做任何操作,字符中间的*不删除。
voidfun(char*a,intn)
{inti=0,k=0;
char*p,*t;
p=t=a;
while(*t)
t++;
t--;
while(*t=='*')
{k++;t--;}
if(k>n)
{while(*p&&p{a[i]=*p;
i++;p++;
}
a[i]='\0';
}
}
53、将a,b两个正整数合并成一个新的整数放在c中。
合并方式:
将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的百位和个位上。
voidfun(inta,intb,long*c)
{*c=b%10+(a/10)*10+(b/10)*100+(a%10)*1000;
}
54、将a,b两个正整数合并成一个新的整数放在c中。
合并方式:
将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的十位和个位上。
voidfun(inta,intb,long*c)
{
*c=b%10+(a%10)*10+(b/10)*100+(a/10)*1000;
}
55、把指定分数范围内的学生数据放在b