大学C程序上机考试题和答案.docx
《大学C程序上机考试题和答案.docx》由会员分享,可在线阅读,更多相关《大学C程序上机考试题和答案.docx(31页珍藏版)》请在冰豆网上搜索。
大学C程序上机考试题和答案
1
《C程序设计》课程期末上机考试
考试时间:
50分钟
考试方式:
从下面的20题中随机抽取一题,再附加一题,共需完成2道题。
分值分配:
第一题60分,第二题40分,共100分
第十八周
1.请编写函数longfun(longintx),功能是:
将长整型数x中每一位上为奇数的
数依次取出,并逆序构成一个新数返回。
例如:
程序运行时输入123456789,输
出:
b=97531。
#include
longfun(longintx)
{
longm,n,i;
n=x;
m=0;
while(n!
=0)
i=n%10;
if(i%2==1)
m*=10;
m+=i;
}
n-=i;
n=n/10;
returnm;
voidmain()
longa,b;
printf("Pleaseinputalongintnum:
");
scanf("%ld",&a);
b=fun(a);
printf("b=%ld\n",b);
2.编写函数voidfun(char*s,char*t,char*p)将未在字符串s中出现、而在字
符串t中出现的字符,形成一个新的字符串放在p中,p中字符按原字符串中字符顺序
排列,但去掉重复字符。
例如:
当s为"12345",t为"8624677"时,p中的字符为:
"867";
当s为”goodluck”,t为”thankyouverymuch”时,输出:
”thanyverm”
2
voidfun(char*s,char*t,char*p)
inti,j,n;
intflag;
char*x,*y,*z;
y=t;
z=p;
n=0;
for(i=0;i<50;i++)
if(*y==0)
*z=0;
break;
x=s;
flag=0;
for(j=0;j<50;j++)
if(*x==0)
if(*x==*y)
flag=1;
x++;
if(flag==0)
x=p;
for(j=0;j{if(*x==*y){flag=1;break;}x++;}if(flag==0){*z=*y;z++;n++;}}y++;}}voidmain(){chars1[50],s2[50],s3[50];gets(s1);gets(s2);fun(s1,s2,s3);puts(s3);}3.编写函数intfun(intm),计算并返回满足表达式:1+(1+2)+(1+2+3)+(1+2+3+4)+……+(1+2+3+……+n)<=m最大的n。例如,当m=10000时,程序输出:n=38。#includeintfun(intm){intn=0,s=0,t=0;while(s<=m){n++;t+=n;s+=t;}returnn-1;}voidmain(){intx;scanf("%d",&x);printf("n=%d\n",fun(x));}4.编写函数voidfun(int*x,intn),它的功能是:删除数组x中所有包含数字6的数据,后续的剩余元素赋值为-1。规定x中数据都为正数。如程序运行时若输入:12214616234161166391126713816删除后输出:12211911381-1-1-1-1-1-1#defineN10#includevoidfun(int*x,intn){inti,j,s=0; for(i=0;i<10;i++)//查找含6的数据 { for(j=x[i];j!=0;j/=10) { if(6==j%10) { x[i]=-1; s++; break; } } } for(i=0;i<10&&s!=0;i++)//更改数据 { if(-1==x[i]) { for(j=i;j<10;j++) { if(-1!=x[j]) break; } x[i]=x[--j]; x[j]=-1; s--; } }}voidmain(){inta[N],i;for(i=0;iscanf("%d",a+i);fun(a,N);for(i=0;iprintf("%d",a[i]);printf("\n");}5.编写函数longfun(inthigh,intn),功能是:计算并返回high以内(不包含high)最大的n个素数之和。若不足n个,则到最小素数2为止。例如:若high=100,n=10,则函数的返回值为:732;若high=11,n=10,则函数返回:17。#include#includelongfun(inthigh,intn){inti,f;longmax,s,m;if(high%2==1)max=high-2;elsemax=high-1;s=0;m=0;while(m2){f=0;for(i=3;i<=sqrt(max);i+=2){if(max%i==0){f=1;break;}}if(f==0){s+=max;m++;}max-=2;}if(ms+=2;6returns;}voidmain(){intk,n;scanf("%d%d",&k,&n);printf("sum=%ld\n",fun(k,n));}6.请编写函数intfun(int*a,intn),它的功能是:把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把奇数从数组中删除,偶数个数通过函数值返回,以-1作为有效数据的结束标志。例:若输入:123456789101112131415,输出:2468101214n=7#includeintfun(int*a,intn){inti,j;i=0;for(j=0;j{if(*(a+j)%2==1)*(a+j)=-1;else{*(a+i)=*(a+j);if(j>i)*(a+j)=-1;i++;}}returni;}voidmain(){intx[15],i,n;for(i=0;i<15;i++)scanf("%d",x+i);n=fun(x,15);for(i=0;x[i]!=-1;i++)printf("%d",x[i]);printf("n=%d\n",n);7}7.给定程序中,函数fun的功能是:有M×N二维数组,分别将每一行的最大值与本行的最后一个数据(第N-1列数据)对调,其余数据保持不变。然后按每一行的最大值对二维数据各行降序排序。例如,有右侧数组数据:11524342522求最大值并对调后:1122434255222334658164722334647165883425426470042542647834567894567894596171839245217183996排序后最终输出:452171839960425426478322334647165811224342552456789#defineN6#defineM5#includevoidfun(inta[M][N]){inti,j,k,m,t;for(i=0;i{k=0;for(j=1;jif(a[i][k]k=j;t=a[i][k];a[i][k]=a[i][N-1];a[i][N-1]=t;}for(i=0;i{k=i;for(j=i+1;jif(a[k][N-1]k=j;if(i!=k){for(m=0;m{t=a[k][m];a[k][m]=a[i][m];a[i][m]=t;}}}}voidmain(){intx[M][N]={{11,52,43,4,25,22},{22,33,46,58,16,47},{83,42,54,26,47,0},{4,5,6,7,8,9},{45,96,17,18,39,2}},i,j;fun(x);for(i=0;i{for(j=0;jprintf("%3d",x[i][j]);printf("\n");}}88.函数voidfun(intx,char*p)实现十进制整数x到二进制的转换。转换后的二进制数以字符串的方式放置于p所指向的数组中。如输入13,输出1101,输入-13,输出-1101。#includevoidfun(intx,char*p){intm=0x40000000;unsignedinti=0;if(x<0){*(p+i)='-';i++;x=-x;}while((m&x)==0)m=m>>1;while(m!=0){if((m&x)==0){*(p+i)='0';i++;}else{*(p+i)='1';i++;}m=m>>1;}*(p+i)=0;}main(){inta;charc[18];scanf("%d",&a);fun(a,c);printf("%d'SBINARYIS:%s\n",a,c);}9.编写函数intfun(char(*ss)[N],intm,char*s),功能是:形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。求出最大的字符串,复制到s9所指的字符数组中,然后返回此最大字符串的长度。#include#defineN30intfun(char(*ss)[N],intm,char*s){intlen[20];inti,j,t,n;char*p;n=N;p=ss;for(i=0;i{len[i]=0;while(*(p+i*n+len[i])!=0)len[i]++;}t=len[0];j=0;for(i=1;iif(len[i]>t){t=len[i];j=i;}for(i=0;i*(s+i)=*(p+j*n+i);*(s+t)=0;returnt;}main(){chara[8][N],b[N];inti,len;for(i=0;i<8;i++)gets(a[i]);len=fun(a,8,b);printf("len=%d,str=%s\n",len,b);}10.给定程序中,函数voidfun(char*s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。10#include#include#includevoidfun(char*s){charstr[80];inti,j;i=0;j=0;while(*(s+i)!=0){str[j]=*(s+i);j++;if(*(s+i)>=0x30&&*(s+i)<0x40){str[j]='*';j++;}i++;}str[j]=0;for(i=0;i<80;i++)*(s+i)=str[i];}voidmain(){charstr[80];gets(str);fun(str);puts(str);}11.给定程序中,函数voidfun(char*s)的功能是:把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21#includevoidfun(char*s){intlen=0;inti;11chart,r;while(*(s+len)!=0)len++;t=*(s);for(i=0;i{r=*(s+i);*(s+i)=t;t=r;}*s=t;}voidmain(){charstr[80];gets(str);fun(str);puts(str);}12.编写函数voidfun(char*s1,char*s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:TheCProgrammingLanguage,输出:□□LTaegghmnor。(□表空格)#includevoidfun(char*s1,char*s2){chart[80],c;inti,j,len=0;while(*(s1+len)!=0){t[len]=*(s1+len);len++;}for(i=len-1;i>0;i--)for(j=0;j{if(t[j]>t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}j=0;for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
*z=*y;
z++;
n++;
y++;
chars1[50],s2[50],s3[50];
gets(s1);gets(s2);
fun(s1,s2,s3);
puts(s3);
3.编写函数intfun(intm),计算并返回满足表达式:
1+(1+2)+(1+2+3)+(1+2+3+4)
+……+(1+2+3+……+n)<=m最大的n。
例如,当m=10000时,程序输出:
n=38。
intfun(intm)
intn=0,s=0,t=0;
while(s<=m)
t+=n;
s+=t;
returnn-1;
intx;
scanf("%d",&x);
printf("n=%d\n",fun(x));
4.编写函数voidfun(int*x,intn),它的功能是:
删除数组x中所有包含数字6的数据,后续的剩余元素赋值为-1。
规定x中数据都为正数。
如程序运行时若输入:
12214616234161166391126713816
删除后输出:
12211911381-1-1-1-1-1-1
#defineN10
voidfun(int*x,intn)
{inti,j,s=0;
for(i=0;i<10;i++)//查找含6的数据
for(j=x[i];j!
=0;j/=10)
if(6==j%10)
x[i]=-1;
s++;
for(i=0;i<10&&s!
=0;i++)//更改数据
if(-1==x[i])
for(j=i;j<10;j++)
if(-1!
=x[j])
x[i]=x[--j];
x[j]=-1;
s--;
{inta[N],i;
for(i=0;iscanf("%d",a+i);fun(a,N);for(i=0;iprintf("%d",a[i]);printf("\n");}5.编写函数longfun(inthigh,intn),功能是:计算并返回high以内(不包含high)最大的n个素数之和。若不足n个,则到最小素数2为止。例如:若high=100,n=10,则函数的返回值为:732;若high=11,n=10,则函数返回:17。#include#includelongfun(inthigh,intn){inti,f;longmax,s,m;if(high%2==1)max=high-2;elsemax=high-1;s=0;m=0;while(m2){f=0;for(i=3;i<=sqrt(max);i+=2){if(max%i==0){f=1;break;}}if(f==0){s+=max;m++;}max-=2;}if(ms+=2;6returns;}voidmain(){intk,n;scanf("%d%d",&k,&n);printf("sum=%ld\n",fun(k,n));}6.请编写函数intfun(int*a,intn),它的功能是:把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把奇数从数组中删除,偶数个数通过函数值返回,以-1作为有效数据的结束标志。例:若输入:123456789101112131415,输出:2468101214n=7#includeintfun(int*a,intn){inti,j;i=0;for(j=0;j{if(*(a+j)%2==1)*(a+j)=-1;else{*(a+i)=*(a+j);if(j>i)*(a+j)=-1;i++;}}returni;}voidmain(){intx[15],i,n;for(i=0;i<15;i++)scanf("%d",x+i);n=fun(x,15);for(i=0;x[i]!=-1;i++)printf("%d",x[i]);printf("n=%d\n",n);7}7.给定程序中,函数fun的功能是:有M×N二维数组,分别将每一行的最大值与本行的最后一个数据(第N-1列数据)对调,其余数据保持不变。然后按每一行的最大值对二维数据各行降序排序。例如,有右侧数组数据:11524342522求最大值并对调后:1122434255222334658164722334647165883425426470042542647834567894567894596171839245217183996排序后最终输出:452171839960425426478322334647165811224342552456789#defineN6#defineM5#includevoidfun(inta[M][N]){inti,j,k,m,t;for(i=0;i{k=0;for(j=1;jif(a[i][k]k=j;t=a[i][k];a[i][k]=a[i][N-1];a[i][N-1]=t;}for(i=0;i{k=i;for(j=i+1;jif(a[k][N-1]k=j;if(i!=k){for(m=0;m{t=a[k][m];a[k][m]=a[i][m];a[i][m]=t;}}}}voidmain(){intx[M][N]={{11,52,43,4,25,22},{22,33,46,58,16,47},{83,42,54,26,47,0},{4,5,6,7,8,9},{45,96,17,18,39,2}},i,j;fun(x);for(i=0;i{for(j=0;jprintf("%3d",x[i][j]);printf("\n");}}88.函数voidfun(intx,char*p)实现十进制整数x到二进制的转换。转换后的二进制数以字符串的方式放置于p所指向的数组中。如输入13,输出1101,输入-13,输出-1101。#includevoidfun(intx,char*p){intm=0x40000000;unsignedinti=0;if(x<0){*(p+i)='-';i++;x=-x;}while((m&x)==0)m=m>>1;while(m!=0){if((m&x)==0){*(p+i)='0';i++;}else{*(p+i)='1';i++;}m=m>>1;}*(p+i)=0;}main(){inta;charc[18];scanf("%d",&a);fun(a,c);printf("%d'SBINARYIS:%s\n",a,c);}9.编写函数intfun(char(*ss)[N],intm,char*s),功能是:形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。求出最大的字符串,复制到s9所指的字符数组中,然后返回此最大字符串的长度。#include#defineN30intfun(char(*ss)[N],intm,char*s){intlen[20];inti,j,t,n;char*p;n=N;p=ss;for(i=0;i{len[i]=0;while(*(p+i*n+len[i])!=0)len[i]++;}t=len[0];j=0;for(i=1;iif(len[i]>t){t=len[i];j=i;}for(i=0;i*(s+i)=*(p+j*n+i);*(s+t)=0;returnt;}main(){chara[8][N],b[N];inti,len;for(i=0;i<8;i++)gets(a[i]);len=fun(a,8,b);printf("len=%d,str=%s\n",len,b);}10.给定程序中,函数voidfun(char*s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。10#include#include#includevoidfun(char*s){charstr[80];inti,j;i=0;j=0;while(*(s+i)!=0){str[j]=*(s+i);j++;if(*(s+i)>=0x30&&*(s+i)<0x40){str[j]='*';j++;}i++;}str[j]=0;for(i=0;i<80;i++)*(s+i)=str[i];}voidmain(){charstr[80];gets(str);fun(str);puts(str);}11.给定程序中,函数voidfun(char*s)的功能是:把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21#includevoidfun(char*s){intlen=0;inti;11chart,r;while(*(s+len)!=0)len++;t=*(s);for(i=0;i{r=*(s+i);*(s+i)=t;t=r;}*s=t;}voidmain(){charstr[80];gets(str);fun(str);puts(str);}12.编写函数voidfun(char*s1,char*s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:TheCProgrammingLanguage,输出:□□LTaegghmnor。(□表空格)#includevoidfun(char*s1,char*s2){chart[80],c;inti,j,len=0;while(*(s1+len)!=0){t[len]=*(s1+len);len++;}for(i=len-1;i>0;i--)for(j=0;j{if(t[j]>t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}j=0;for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
scanf("%d",a+i);
fun(a,N);
for(i=0;iprintf("%d",a[i]);printf("\n");}5.编写函数longfun(inthigh,intn),功能是:计算并返回high以内(不包含high)最大的n个素数之和。若不足n个,则到最小素数2为止。例如:若high=100,n=10,则函数的返回值为:732;若high=11,n=10,则函数返回:17。#include#includelongfun(inthigh,intn){inti,f;longmax,s,m;if(high%2==1)max=high-2;elsemax=high-1;s=0;m=0;while(m2){f=0;for(i=3;i<=sqrt(max);i+=2){if(max%i==0){f=1;break;}}if(f==0){s+=max;m++;}max-=2;}if(ms+=2;6returns;}voidmain(){intk,n;scanf("%d%d",&k,&n);printf("sum=%ld\n",fun(k,n));}6.请编写函数intfun(int*a,intn),它的功能是:把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把奇数从数组中删除,偶数个数通过函数值返回,以-1作为有效数据的结束标志。例:若输入:123456789101112131415,输出:2468101214n=7#includeintfun(int*a,intn){inti,j;i=0;for(j=0;j{if(*(a+j)%2==1)*(a+j)=-1;else{*(a+i)=*(a+j);if(j>i)*(a+j)=-1;i++;}}returni;}voidmain(){intx[15],i,n;for(i=0;i<15;i++)scanf("%d",x+i);n=fun(x,15);for(i=0;x[i]!=-1;i++)printf("%d",x[i]);printf("n=%d\n",n);7}7.给定程序中,函数fun的功能是:有M×N二维数组,分别将每一行的最大值与本行的最后一个数据(第N-1列数据)对调,其余数据保持不变。然后按每一行的最大值对二维数据各行降序排序。例如,有右侧数组数据:11524342522求最大值并对调后:1122434255222334658164722334647165883425426470042542647834567894567894596171839245217183996排序后最终输出:452171839960425426478322334647165811224342552456789#defineN6#defineM5#includevoidfun(inta[M][N]){inti,j,k,m,t;for(i=0;i{k=0;for(j=1;jif(a[i][k]k=j;t=a[i][k];a[i][k]=a[i][N-1];a[i][N-1]=t;}for(i=0;i{k=i;for(j=i+1;jif(a[k][N-1]k=j;if(i!=k){for(m=0;m{t=a[k][m];a[k][m]=a[i][m];a[i][m]=t;}}}}voidmain(){intx[M][N]={{11,52,43,4,25,22},{22,33,46,58,16,47},{83,42,54,26,47,0},{4,5,6,7,8,9},{45,96,17,18,39,2}},i,j;fun(x);for(i=0;i{for(j=0;jprintf("%3d",x[i][j]);printf("\n");}}88.函数voidfun(intx,char*p)实现十进制整数x到二进制的转换。转换后的二进制数以字符串的方式放置于p所指向的数组中。如输入13,输出1101,输入-13,输出-1101。#includevoidfun(intx,char*p){intm=0x40000000;unsignedinti=0;if(x<0){*(p+i)='-';i++;x=-x;}while((m&x)==0)m=m>>1;while(m!=0){if((m&x)==0){*(p+i)='0';i++;}else{*(p+i)='1';i++;}m=m>>1;}*(p+i)=0;}main(){inta;charc[18];scanf("%d",&a);fun(a,c);printf("%d'SBINARYIS:%s\n",a,c);}9.编写函数intfun(char(*ss)[N],intm,char*s),功能是:形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。求出最大的字符串,复制到s9所指的字符数组中,然后返回此最大字符串的长度。#include#defineN30intfun(char(*ss)[N],intm,char*s){intlen[20];inti,j,t,n;char*p;n=N;p=ss;for(i=0;i{len[i]=0;while(*(p+i*n+len[i])!=0)len[i]++;}t=len[0];j=0;for(i=1;iif(len[i]>t){t=len[i];j=i;}for(i=0;i*(s+i)=*(p+j*n+i);*(s+t)=0;returnt;}main(){chara[8][N],b[N];inti,len;for(i=0;i<8;i++)gets(a[i]);len=fun(a,8,b);printf("len=%d,str=%s\n",len,b);}10.给定程序中,函数voidfun(char*s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。10#include#include#includevoidfun(char*s){charstr[80];inti,j;i=0;j=0;while(*(s+i)!=0){str[j]=*(s+i);j++;if(*(s+i)>=0x30&&*(s+i)<0x40){str[j]='*';j++;}i++;}str[j]=0;for(i=0;i<80;i++)*(s+i)=str[i];}voidmain(){charstr[80];gets(str);fun(str);puts(str);}11.给定程序中,函数voidfun(char*s)的功能是:把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21#includevoidfun(char*s){intlen=0;inti;11chart,r;while(*(s+len)!=0)len++;t=*(s);for(i=0;i{r=*(s+i);*(s+i)=t;t=r;}*s=t;}voidmain(){charstr[80];gets(str);fun(str);puts(str);}12.编写函数voidfun(char*s1,char*s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:TheCProgrammingLanguage,输出:□□LTaegghmnor。(□表空格)#includevoidfun(char*s1,char*s2){chart[80],c;inti,j,len=0;while(*(s1+len)!=0){t[len]=*(s1+len);len++;}for(i=len-1;i>0;i--)for(j=0;j{if(t[j]>t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}j=0;for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
printf("%d",a[i]);
printf("\n");
5.编写函数longfun(inthigh,intn),功能是:
计算并返回high以内(不包含
high)最大的n个素数之和。
若不足n个,则到最小素数2为止。
若
high=100,n=10,则函数的返回值为:
732;若high=11,n=10,则函数返回:
17。
longfun(inthigh,intn)
inti,f;
longmax,s,m;
if(high%2==1)
max=high-2;
else
max=high-1;
s=0;
while(m2)
f=0;
for(i=3;i<=sqrt(max);i+=2)
if(max%i==0)
f=1;
if(f==0)
s+=max;
m++;
max-=2;
if(ms+=2;6returns;}voidmain(){intk,n;scanf("%d%d",&k,&n);printf("sum=%ld\n",fun(k,n));}6.请编写函数intfun(int*a,intn),它的功能是:把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把奇数从数组中删除,偶数个数通过函数值返回,以-1作为有效数据的结束标志。例:若输入:123456789101112131415,输出:2468101214n=7#includeintfun(int*a,intn){inti,j;i=0;for(j=0;j{if(*(a+j)%2==1)*(a+j)=-1;else{*(a+i)=*(a+j);if(j>i)*(a+j)=-1;i++;}}returni;}voidmain(){intx[15],i,n;for(i=0;i<15;i++)scanf("%d",x+i);n=fun(x,15);for(i=0;x[i]!=-1;i++)printf("%d",x[i]);printf("n=%d\n",n);7}7.给定程序中,函数fun的功能是:有M×N二维数组,分别将每一行的最大值与本行的最后一个数据(第N-1列数据)对调,其余数据保持不变。然后按每一行的最大值对二维数据各行降序排序。例如,有右侧数组数据:11524342522求最大值并对调后:1122434255222334658164722334647165883425426470042542647834567894567894596171839245217183996排序后最终输出:452171839960425426478322334647165811224342552456789#defineN6#defineM5#includevoidfun(inta[M][N]){inti,j,k,m,t;for(i=0;i{k=0;for(j=1;jif(a[i][k]k=j;t=a[i][k];a[i][k]=a[i][N-1];a[i][N-1]=t;}for(i=0;i{k=i;for(j=i+1;jif(a[k][N-1]k=j;if(i!=k){for(m=0;m{t=a[k][m];a[k][m]=a[i][m];a[i][m]=t;}}}}voidmain(){intx[M][N]={{11,52,43,4,25,22},{22,33,46,58,16,47},{83,42,54,26,47,0},{4,5,6,7,8,9},{45,96,17,18,39,2}},i,j;fun(x);for(i=0;i{for(j=0;jprintf("%3d",x[i][j]);printf("\n");}}88.函数voidfun(intx,char*p)实现十进制整数x到二进制的转换。转换后的二进制数以字符串的方式放置于p所指向的数组中。如输入13,输出1101,输入-13,输出-1101。#includevoidfun(intx,char*p){intm=0x40000000;unsignedinti=0;if(x<0){*(p+i)='-';i++;x=-x;}while((m&x)==0)m=m>>1;while(m!=0){if((m&x)==0){*(p+i)='0';i++;}else{*(p+i)='1';i++;}m=m>>1;}*(p+i)=0;}main(){inta;charc[18];scanf("%d",&a);fun(a,c);printf("%d'SBINARYIS:%s\n",a,c);}9.编写函数intfun(char(*ss)[N],intm,char*s),功能是:形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。求出最大的字符串,复制到s9所指的字符数组中,然后返回此最大字符串的长度。#include#defineN30intfun(char(*ss)[N],intm,char*s){intlen[20];inti,j,t,n;char*p;n=N;p=ss;for(i=0;i{len[i]=0;while(*(p+i*n+len[i])!=0)len[i]++;}t=len[0];j=0;for(i=1;iif(len[i]>t){t=len[i];j=i;}for(i=0;i*(s+i)=*(p+j*n+i);*(s+t)=0;returnt;}main(){chara[8][N],b[N];inti,len;for(i=0;i<8;i++)gets(a[i]);len=fun(a,8,b);printf("len=%d,str=%s\n",len,b);}10.给定程序中,函数voidfun(char*s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。10#include#include#includevoidfun(char*s){charstr[80];inti,j;i=0;j=0;while(*(s+i)!=0){str[j]=*(s+i);j++;if(*(s+i)>=0x30&&*(s+i)<0x40){str[j]='*';j++;}i++;}str[j]=0;for(i=0;i<80;i++)*(s+i)=str[i];}voidmain(){charstr[80];gets(str);fun(str);puts(str);}11.给定程序中,函数voidfun(char*s)的功能是:把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21#includevoidfun(char*s){intlen=0;inti;11chart,r;while(*(s+len)!=0)len++;t=*(s);for(i=0;i{r=*(s+i);*(s+i)=t;t=r;}*s=t;}voidmain(){charstr[80];gets(str);fun(str);puts(str);}12.编写函数voidfun(char*s1,char*s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:TheCProgrammingLanguage,输出:□□LTaegghmnor。(□表空格)#includevoidfun(char*s1,char*s2){chart[80],c;inti,j,len=0;while(*(s1+len)!=0){t[len]=*(s1+len);len++;}for(i=len-1;i>0;i--)for(j=0;j{if(t[j]>t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}j=0;for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
s+=2;
6
returns;
intk,n;
scanf("%d%d",&k,&n);
printf("sum=%ld\n",fun(k,n));
6.请编写函数intfun(int*a,intn),它的功能是:
把形参a所指数组中的偶数
按原顺序依次存放到a[0]、a[1]、a[2]、……中,把奇数从数组中删除,偶数个
数通过函数值返回,以-1作为有效数据的结束标志。
例:
若输入:
1234567
89101112131415,输出:
2468101214n=7
intfun(int*a,intn)
inti,j;
i=0;
for(j=0;j{if(*(a+j)%2==1)*(a+j)=-1;else{*(a+i)=*(a+j);if(j>i)*(a+j)=-1;i++;}}returni;}voidmain(){intx[15],i,n;for(i=0;i<15;i++)scanf("%d",x+i);n=fun(x,15);for(i=0;x[i]!=-1;i++)printf("%d",x[i]);printf("n=%d\n",n);7}7.给定程序中,函数fun的功能是:有M×N二维数组,分别将每一行的最大值与本行的最后一个数据(第N-1列数据)对调,其余数据保持不变。然后按每一行的最大值对二维数据各行降序排序。例如,有右侧数组数据:11524342522求最大值并对调后:1122434255222334658164722334647165883425426470042542647834567894567894596171839245217183996排序后最终输出:452171839960425426478322334647165811224342552456789#defineN6#defineM5#includevoidfun(inta[M][N]){inti,j,k,m,t;for(i=0;i{k=0;for(j=1;jif(a[i][k]k=j;t=a[i][k];a[i][k]=a[i][N-1];a[i][N-1]=t;}for(i=0;i{k=i;for(j=i+1;jif(a[k][N-1]k=j;if(i!=k){for(m=0;m{t=a[k][m];a[k][m]=a[i][m];a[i][m]=t;}}}}voidmain(){intx[M][N]={{11,52,43,4,25,22},{22,33,46,58,16,47},{83,42,54,26,47,0},{4,5,6,7,8,9},{45,96,17,18,39,2}},i,j;fun(x);for(i=0;i{for(j=0;jprintf("%3d",x[i][j]);printf("\n");}}88.函数voidfun(intx,char*p)实现十进制整数x到二进制的转换。转换后的二进制数以字符串的方式放置于p所指向的数组中。如输入13,输出1101,输入-13,输出-1101。#includevoidfun(intx,char*p){intm=0x40000000;unsignedinti=0;if(x<0){*(p+i)='-';i++;x=-x;}while((m&x)==0)m=m>>1;while(m!=0){if((m&x)==0){*(p+i)='0';i++;}else{*(p+i)='1';i++;}m=m>>1;}*(p+i)=0;}main(){inta;charc[18];scanf("%d",&a);fun(a,c);printf("%d'SBINARYIS:%s\n",a,c);}9.编写函数intfun(char(*ss)[N],intm,char*s),功能是:形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。求出最大的字符串,复制到s9所指的字符数组中,然后返回此最大字符串的长度。#include#defineN30intfun(char(*ss)[N],intm,char*s){intlen[20];inti,j,t,n;char*p;n=N;p=ss;for(i=0;i{len[i]=0;while(*(p+i*n+len[i])!=0)len[i]++;}t=len[0];j=0;for(i=1;iif(len[i]>t){t=len[i];j=i;}for(i=0;i*(s+i)=*(p+j*n+i);*(s+t)=0;returnt;}main(){chara[8][N],b[N];inti,len;for(i=0;i<8;i++)gets(a[i]);len=fun(a,8,b);printf("len=%d,str=%s\n",len,b);}10.给定程序中,函数voidfun(char*s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。10#include#include#includevoidfun(char*s){charstr[80];inti,j;i=0;j=0;while(*(s+i)!=0){str[j]=*(s+i);j++;if(*(s+i)>=0x30&&*(s+i)<0x40){str[j]='*';j++;}i++;}str[j]=0;for(i=0;i<80;i++)*(s+i)=str[i];}voidmain(){charstr[80];gets(str);fun(str);puts(str);}11.给定程序中,函数voidfun(char*s)的功能是:把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21#includevoidfun(char*s){intlen=0;inti;11chart,r;while(*(s+len)!=0)len++;t=*(s);for(i=0;i{r=*(s+i);*(s+i)=t;t=r;}*s=t;}voidmain(){charstr[80];gets(str);fun(str);puts(str);}12.编写函数voidfun(char*s1,char*s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:TheCProgrammingLanguage,输出:□□LTaegghmnor。(□表空格)#includevoidfun(char*s1,char*s2){chart[80],c;inti,j,len=0;while(*(s1+len)!=0){t[len]=*(s1+len);len++;}for(i=len-1;i>0;i--)for(j=0;j{if(t[j]>t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}j=0;for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
if(*(a+j)%2==1)
*(a+j)=-1;
*(a+i)=*(a+j);
if(j>i)
i++;
returni;
intx[15],i,n;
for(i=0;i<15;i++)
scanf("%d",x+i);
n=fun(x,15);
for(i=0;x[i]!
=-1;i++)
printf("%d",x[i]);
printf("n=%d\n",n);
7
7.给定程序中,函数fun的功能是:
有M×N二维数组,分别将每一行的最大值与本行的最后一个数据(第N-1列数据)对调,其余数据保持不变。
然后按每一行的最大值对二维数据各行降序排序。
例如,有右侧数组数据:
11524342522求最大值并对调后:
11224342552
223346581647223346471658
8342542647004254264783
456789456789
4596171839245217183996
排序后最终输出:
45217183996
04254264783
223346471658
456789
#defineN6
#defineM5
voidfun(inta[M][N])
{inti,j,k,m,t;
for(i=0;i{k=0;for(j=1;jif(a[i][k]k=j;t=a[i][k];a[i][k]=a[i][N-1];a[i][N-1]=t;}for(i=0;i{k=i;for(j=i+1;jif(a[k][N-1]k=j;if(i!=k){for(m=0;m{t=a[k][m];a[k][m]=a[i][m];a[i][m]=t;}}}}voidmain(){intx[M][N]={{11,52,43,4,25,22},{22,33,46,58,16,47},{83,42,54,26,47,0},{4,5,6,7,8,9},{45,96,17,18,39,2}},i,j;fun(x);for(i=0;i{for(j=0;jprintf("%3d",x[i][j]);printf("\n");}}88.函数voidfun(intx,char*p)实现十进制整数x到二进制的转换。转换后的二进制数以字符串的方式放置于p所指向的数组中。如输入13,输出1101,输入-13,输出-1101。#includevoidfun(intx,char*p){intm=0x40000000;unsignedinti=0;if(x<0){*(p+i)='-';i++;x=-x;}while((m&x)==0)m=m>>1;while(m!=0){if((m&x)==0){*(p+i)='0';i++;}else{*(p+i)='1';i++;}m=m>>1;}*(p+i)=0;}main(){inta;charc[18];scanf("%d",&a);fun(a,c);printf("%d'SBINARYIS:%s\n",a,c);}9.编写函数intfun(char(*ss)[N],intm,char*s),功能是:形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。求出最大的字符串,复制到s9所指的字符数组中,然后返回此最大字符串的长度。#include#defineN30intfun(char(*ss)[N],intm,char*s){intlen[20];inti,j,t,n;char*p;n=N;p=ss;for(i=0;i{len[i]=0;while(*(p+i*n+len[i])!=0)len[i]++;}t=len[0];j=0;for(i=1;iif(len[i]>t){t=len[i];j=i;}for(i=0;i*(s+i)=*(p+j*n+i);*(s+t)=0;returnt;}main(){chara[8][N],b[N];inti,len;for(i=0;i<8;i++)gets(a[i]);len=fun(a,8,b);printf("len=%d,str=%s\n",len,b);}10.给定程序中,函数voidfun(char*s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。10#include#include#includevoidfun(char*s){charstr[80];inti,j;i=0;j=0;while(*(s+i)!=0){str[j]=*(s+i);j++;if(*(s+i)>=0x30&&*(s+i)<0x40){str[j]='*';j++;}i++;}str[j]=0;for(i=0;i<80;i++)*(s+i)=str[i];}voidmain(){charstr[80];gets(str);fun(str);puts(str);}11.给定程序中,函数voidfun(char*s)的功能是:把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21#includevoidfun(char*s){intlen=0;inti;11chart,r;while(*(s+len)!=0)len++;t=*(s);for(i=0;i{r=*(s+i);*(s+i)=t;t=r;}*s=t;}voidmain(){charstr[80];gets(str);fun(str);puts(str);}12.编写函数voidfun(char*s1,char*s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:TheCProgrammingLanguage,输出:□□LTaegghmnor。(□表空格)#includevoidfun(char*s1,char*s2){chart[80],c;inti,j,len=0;while(*(s1+len)!=0){t[len]=*(s1+len);len++;}for(i=len-1;i>0;i--)for(j=0;j{if(t[j]>t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}j=0;for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
k=0;
for(j=1;jif(a[i][k]k=j;t=a[i][k];a[i][k]=a[i][N-1];a[i][N-1]=t;}for(i=0;i{k=i;for(j=i+1;jif(a[k][N-1]k=j;if(i!=k){for(m=0;m{t=a[k][m];a[k][m]=a[i][m];a[i][m]=t;}}}}voidmain(){intx[M][N]={{11,52,43,4,25,22},{22,33,46,58,16,47},{83,42,54,26,47,0},{4,5,6,7,8,9},{45,96,17,18,39,2}},i,j;fun(x);for(i=0;i{for(j=0;jprintf("%3d",x[i][j]);printf("\n");}}88.函数voidfun(intx,char*p)实现十进制整数x到二进制的转换。转换后的二进制数以字符串的方式放置于p所指向的数组中。如输入13,输出1101,输入-13,输出-1101。#includevoidfun(intx,char*p){intm=0x40000000;unsignedinti=0;if(x<0){*(p+i)='-';i++;x=-x;}while((m&x)==0)m=m>>1;while(m!=0){if((m&x)==0){*(p+i)='0';i++;}else{*(p+i)='1';i++;}m=m>>1;}*(p+i)=0;}main(){inta;charc[18];scanf("%d",&a);fun(a,c);printf("%d'SBINARYIS:%s\n",a,c);}9.编写函数intfun(char(*ss)[N],intm,char*s),功能是:形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。求出最大的字符串,复制到s9所指的字符数组中,然后返回此最大字符串的长度。#include#defineN30intfun(char(*ss)[N],intm,char*s){intlen[20];inti,j,t,n;char*p;n=N;p=ss;for(i=0;i{len[i]=0;while(*(p+i*n+len[i])!=0)len[i]++;}t=len[0];j=0;for(i=1;iif(len[i]>t){t=len[i];j=i;}for(i=0;i*(s+i)=*(p+j*n+i);*(s+t)=0;returnt;}main(){chara[8][N],b[N];inti,len;for(i=0;i<8;i++)gets(a[i]);len=fun(a,8,b);printf("len=%d,str=%s\n",len,b);}10.给定程序中,函数voidfun(char*s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。10#include#include#includevoidfun(char*s){charstr[80];inti,j;i=0;j=0;while(*(s+i)!=0){str[j]=*(s+i);j++;if(*(s+i)>=0x30&&*(s+i)<0x40){str[j]='*';j++;}i++;}str[j]=0;for(i=0;i<80;i++)*(s+i)=str[i];}voidmain(){charstr[80];gets(str);fun(str);puts(str);}11.给定程序中,函数voidfun(char*s)的功能是:把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21#includevoidfun(char*s){intlen=0;inti;11chart,r;while(*(s+len)!=0)len++;t=*(s);for(i=0;i{r=*(s+i);*(s+i)=t;t=r;}*s=t;}voidmain(){charstr[80];gets(str);fun(str);puts(str);}12.编写函数voidfun(char*s1,char*s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:TheCProgrammingLanguage,输出:□□LTaegghmnor。(□表空格)#includevoidfun(char*s1,char*s2){chart[80],c;inti,j,len=0;while(*(s1+len)!=0){t[len]=*(s1+len);len++;}for(i=len-1;i>0;i--)for(j=0;j{if(t[j]>t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}j=0;for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
if(a[i][k]k=j;t=a[i][k];a[i][k]=a[i][N-1];a[i][N-1]=t;}for(i=0;i{k=i;for(j=i+1;jif(a[k][N-1]k=j;if(i!=k){for(m=0;m{t=a[k][m];a[k][m]=a[i][m];a[i][m]=t;}}}}voidmain(){intx[M][N]={{11,52,43,4,25,22},{22,33,46,58,16,47},{83,42,54,26,47,0},{4,5,6,7,8,9},{45,96,17,18,39,2}},i,j;fun(x);for(i=0;i{for(j=0;jprintf("%3d",x[i][j]);printf("\n");}}88.函数voidfun(intx,char*p)实现十进制整数x到二进制的转换。转换后的二进制数以字符串的方式放置于p所指向的数组中。如输入13,输出1101,输入-13,输出-1101。#includevoidfun(intx,char*p){intm=0x40000000;unsignedinti=0;if(x<0){*(p+i)='-';i++;x=-x;}while((m&x)==0)m=m>>1;while(m!=0){if((m&x)==0){*(p+i)='0';i++;}else{*(p+i)='1';i++;}m=m>>1;}*(p+i)=0;}main(){inta;charc[18];scanf("%d",&a);fun(a,c);printf("%d'SBINARYIS:%s\n",a,c);}9.编写函数intfun(char(*ss)[N],intm,char*s),功能是:形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。求出最大的字符串,复制到s9所指的字符数组中,然后返回此最大字符串的长度。#include#defineN30intfun(char(*ss)[N],intm,char*s){intlen[20];inti,j,t,n;char*p;n=N;p=ss;for(i=0;i{len[i]=0;while(*(p+i*n+len[i])!=0)len[i]++;}t=len[0];j=0;for(i=1;iif(len[i]>t){t=len[i];j=i;}for(i=0;i*(s+i)=*(p+j*n+i);*(s+t)=0;returnt;}main(){chara[8][N],b[N];inti,len;for(i=0;i<8;i++)gets(a[i]);len=fun(a,8,b);printf("len=%d,str=%s\n",len,b);}10.给定程序中,函数voidfun(char*s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。10#include#include#includevoidfun(char*s){charstr[80];inti,j;i=0;j=0;while(*(s+i)!=0){str[j]=*(s+i);j++;if(*(s+i)>=0x30&&*(s+i)<0x40){str[j]='*';j++;}i++;}str[j]=0;for(i=0;i<80;i++)*(s+i)=str[i];}voidmain(){charstr[80];gets(str);fun(str);puts(str);}11.给定程序中,函数voidfun(char*s)的功能是:把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21#includevoidfun(char*s){intlen=0;inti;11chart,r;while(*(s+len)!=0)len++;t=*(s);for(i=0;i{r=*(s+i);*(s+i)=t;t=r;}*s=t;}voidmain(){charstr[80];gets(str);fun(str);puts(str);}12.编写函数voidfun(char*s1,char*s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:TheCProgrammingLanguage,输出:□□LTaegghmnor。(□表空格)#includevoidfun(char*s1,char*s2){chart[80],c;inti,j,len=0;while(*(s1+len)!=0){t[len]=*(s1+len);len++;}for(i=len-1;i>0;i--)for(j=0;j{if(t[j]>t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}j=0;for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
k=j;
t=a[i][k];
a[i][k]=a[i][N-1];
a[i][N-1]=t;
for(i=0;i{k=i;for(j=i+1;jif(a[k][N-1]k=j;if(i!=k){for(m=0;m{t=a[k][m];a[k][m]=a[i][m];a[i][m]=t;}}}}voidmain(){intx[M][N]={{11,52,43,4,25,22},{22,33,46,58,16,47},{83,42,54,26,47,0},{4,5,6,7,8,9},{45,96,17,18,39,2}},i,j;fun(x);for(i=0;i{for(j=0;jprintf("%3d",x[i][j]);printf("\n");}}88.函数voidfun(intx,char*p)实现十进制整数x到二进制的转换。转换后的二进制数以字符串的方式放置于p所指向的数组中。如输入13,输出1101,输入-13,输出-1101。#includevoidfun(intx,char*p){intm=0x40000000;unsignedinti=0;if(x<0){*(p+i)='-';i++;x=-x;}while((m&x)==0)m=m>>1;while(m!=0){if((m&x)==0){*(p+i)='0';i++;}else{*(p+i)='1';i++;}m=m>>1;}*(p+i)=0;}main(){inta;charc[18];scanf("%d",&a);fun(a,c);printf("%d'SBINARYIS:%s\n",a,c);}9.编写函数intfun(char(*ss)[N],intm,char*s),功能是:形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。求出最大的字符串,复制到s9所指的字符数组中,然后返回此最大字符串的长度。#include#defineN30intfun(char(*ss)[N],intm,char*s){intlen[20];inti,j,t,n;char*p;n=N;p=ss;for(i=0;i{len[i]=0;while(*(p+i*n+len[i])!=0)len[i]++;}t=len[0];j=0;for(i=1;iif(len[i]>t){t=len[i];j=i;}for(i=0;i*(s+i)=*(p+j*n+i);*(s+t)=0;returnt;}main(){chara[8][N],b[N];inti,len;for(i=0;i<8;i++)gets(a[i]);len=fun(a,8,b);printf("len=%d,str=%s\n",len,b);}10.给定程序中,函数voidfun(char*s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。10#include#include#includevoidfun(char*s){charstr[80];inti,j;i=0;j=0;while(*(s+i)!=0){str[j]=*(s+i);j++;if(*(s+i)>=0x30&&*(s+i)<0x40){str[j]='*';j++;}i++;}str[j]=0;for(i=0;i<80;i++)*(s+i)=str[i];}voidmain(){charstr[80];gets(str);fun(str);puts(str);}11.给定程序中,函数voidfun(char*s)的功能是:把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21#includevoidfun(char*s){intlen=0;inti;11chart,r;while(*(s+len)!=0)len++;t=*(s);for(i=0;i{r=*(s+i);*(s+i)=t;t=r;}*s=t;}voidmain(){charstr[80];gets(str);fun(str);puts(str);}12.编写函数voidfun(char*s1,char*s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:TheCProgrammingLanguage,输出:□□LTaegghmnor。(□表空格)#includevoidfun(char*s1,char*s2){chart[80],c;inti,j,len=0;while(*(s1+len)!=0){t[len]=*(s1+len);len++;}for(i=len-1;i>0;i--)for(j=0;j{if(t[j]>t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}j=0;for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
k=i;
for(j=i+1;jif(a[k][N-1]k=j;if(i!=k){for(m=0;m{t=a[k][m];a[k][m]=a[i][m];a[i][m]=t;}}}}voidmain(){intx[M][N]={{11,52,43,4,25,22},{22,33,46,58,16,47},{83,42,54,26,47,0},{4,5,6,7,8,9},{45,96,17,18,39,2}},i,j;fun(x);for(i=0;i{for(j=0;jprintf("%3d",x[i][j]);printf("\n");}}88.函数voidfun(intx,char*p)实现十进制整数x到二进制的转换。转换后的二进制数以字符串的方式放置于p所指向的数组中。如输入13,输出1101,输入-13,输出-1101。#includevoidfun(intx,char*p){intm=0x40000000;unsignedinti=0;if(x<0){*(p+i)='-';i++;x=-x;}while((m&x)==0)m=m>>1;while(m!=0){if((m&x)==0){*(p+i)='0';i++;}else{*(p+i)='1';i++;}m=m>>1;}*(p+i)=0;}main(){inta;charc[18];scanf("%d",&a);fun(a,c);printf("%d'SBINARYIS:%s\n",a,c);}9.编写函数intfun(char(*ss)[N],intm,char*s),功能是:形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。求出最大的字符串,复制到s9所指的字符数组中,然后返回此最大字符串的长度。#include#defineN30intfun(char(*ss)[N],intm,char*s){intlen[20];inti,j,t,n;char*p;n=N;p=ss;for(i=0;i{len[i]=0;while(*(p+i*n+len[i])!=0)len[i]++;}t=len[0];j=0;for(i=1;iif(len[i]>t){t=len[i];j=i;}for(i=0;i*(s+i)=*(p+j*n+i);*(s+t)=0;returnt;}main(){chara[8][N],b[N];inti,len;for(i=0;i<8;i++)gets(a[i]);len=fun(a,8,b);printf("len=%d,str=%s\n",len,b);}10.给定程序中,函数voidfun(char*s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。10#include#include#includevoidfun(char*s){charstr[80];inti,j;i=0;j=0;while(*(s+i)!=0){str[j]=*(s+i);j++;if(*(s+i)>=0x30&&*(s+i)<0x40){str[j]='*';j++;}i++;}str[j]=0;for(i=0;i<80;i++)*(s+i)=str[i];}voidmain(){charstr[80];gets(str);fun(str);puts(str);}11.给定程序中,函数voidfun(char*s)的功能是:把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21#includevoidfun(char*s){intlen=0;inti;11chart,r;while(*(s+len)!=0)len++;t=*(s);for(i=0;i{r=*(s+i);*(s+i)=t;t=r;}*s=t;}voidmain(){charstr[80];gets(str);fun(str);puts(str);}12.编写函数voidfun(char*s1,char*s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:TheCProgrammingLanguage,输出:□□LTaegghmnor。(□表空格)#includevoidfun(char*s1,char*s2){chart[80],c;inti,j,len=0;while(*(s1+len)!=0){t[len]=*(s1+len);len++;}for(i=len-1;i>0;i--)for(j=0;j{if(t[j]>t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}j=0;for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
if(a[k][N-1]k=j;if(i!=k){for(m=0;m{t=a[k][m];a[k][m]=a[i][m];a[i][m]=t;}}}}voidmain(){intx[M][N]={{11,52,43,4,25,22},{22,33,46,58,16,47},{83,42,54,26,47,0},{4,5,6,7,8,9},{45,96,17,18,39,2}},i,j;fun(x);for(i=0;i{for(j=0;jprintf("%3d",x[i][j]);printf("\n");}}88.函数voidfun(intx,char*p)实现十进制整数x到二进制的转换。转换后的二进制数以字符串的方式放置于p所指向的数组中。如输入13,输出1101,输入-13,输出-1101。#includevoidfun(intx,char*p){intm=0x40000000;unsignedinti=0;if(x<0){*(p+i)='-';i++;x=-x;}while((m&x)==0)m=m>>1;while(m!=0){if((m&x)==0){*(p+i)='0';i++;}else{*(p+i)='1';i++;}m=m>>1;}*(p+i)=0;}main(){inta;charc[18];scanf("%d",&a);fun(a,c);printf("%d'SBINARYIS:%s\n",a,c);}9.编写函数intfun(char(*ss)[N],intm,char*s),功能是:形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。求出最大的字符串,复制到s9所指的字符数组中,然后返回此最大字符串的长度。#include#defineN30intfun(char(*ss)[N],intm,char*s){intlen[20];inti,j,t,n;char*p;n=N;p=ss;for(i=0;i{len[i]=0;while(*(p+i*n+len[i])!=0)len[i]++;}t=len[0];j=0;for(i=1;iif(len[i]>t){t=len[i];j=i;}for(i=0;i*(s+i)=*(p+j*n+i);*(s+t)=0;returnt;}main(){chara[8][N],b[N];inti,len;for(i=0;i<8;i++)gets(a[i]);len=fun(a,8,b);printf("len=%d,str=%s\n",len,b);}10.给定程序中,函数voidfun(char*s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。10#include#include#includevoidfun(char*s){charstr[80];inti,j;i=0;j=0;while(*(s+i)!=0){str[j]=*(s+i);j++;if(*(s+i)>=0x30&&*(s+i)<0x40){str[j]='*';j++;}i++;}str[j]=0;for(i=0;i<80;i++)*(s+i)=str[i];}voidmain(){charstr[80];gets(str);fun(str);puts(str);}11.给定程序中,函数voidfun(char*s)的功能是:把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21#includevoidfun(char*s){intlen=0;inti;11chart,r;while(*(s+len)!=0)len++;t=*(s);for(i=0;i{r=*(s+i);*(s+i)=t;t=r;}*s=t;}voidmain(){charstr[80];gets(str);fun(str);puts(str);}12.编写函数voidfun(char*s1,char*s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:TheCProgrammingLanguage,输出:□□LTaegghmnor。(□表空格)#includevoidfun(char*s1,char*s2){chart[80],c;inti,j,len=0;while(*(s1+len)!=0){t[len]=*(s1+len);len++;}for(i=len-1;i>0;i--)for(j=0;j{if(t[j]>t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}j=0;for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
if(i!
=k)
for(m=0;m{t=a[k][m];a[k][m]=a[i][m];a[i][m]=t;}}}}voidmain(){intx[M][N]={{11,52,43,4,25,22},{22,33,46,58,16,47},{83,42,54,26,47,0},{4,5,6,7,8,9},{45,96,17,18,39,2}},i,j;fun(x);for(i=0;i{for(j=0;jprintf("%3d",x[i][j]);printf("\n");}}88.函数voidfun(intx,char*p)实现十进制整数x到二进制的转换。转换后的二进制数以字符串的方式放置于p所指向的数组中。如输入13,输出1101,输入-13,输出-1101。#includevoidfun(intx,char*p){intm=0x40000000;unsignedinti=0;if(x<0){*(p+i)='-';i++;x=-x;}while((m&x)==0)m=m>>1;while(m!=0){if((m&x)==0){*(p+i)='0';i++;}else{*(p+i)='1';i++;}m=m>>1;}*(p+i)=0;}main(){inta;charc[18];scanf("%d",&a);fun(a,c);printf("%d'SBINARYIS:%s\n",a,c);}9.编写函数intfun(char(*ss)[N],intm,char*s),功能是:形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。求出最大的字符串,复制到s9所指的字符数组中,然后返回此最大字符串的长度。#include#defineN30intfun(char(*ss)[N],intm,char*s){intlen[20];inti,j,t,n;char*p;n=N;p=ss;for(i=0;i{len[i]=0;while(*(p+i*n+len[i])!=0)len[i]++;}t=len[0];j=0;for(i=1;iif(len[i]>t){t=len[i];j=i;}for(i=0;i*(s+i)=*(p+j*n+i);*(s+t)=0;returnt;}main(){chara[8][N],b[N];inti,len;for(i=0;i<8;i++)gets(a[i]);len=fun(a,8,b);printf("len=%d,str=%s\n",len,b);}10.给定程序中,函数voidfun(char*s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。10#include#include#includevoidfun(char*s){charstr[80];inti,j;i=0;j=0;while(*(s+i)!=0){str[j]=*(s+i);j++;if(*(s+i)>=0x30&&*(s+i)<0x40){str[j]='*';j++;}i++;}str[j]=0;for(i=0;i<80;i++)*(s+i)=str[i];}voidmain(){charstr[80];gets(str);fun(str);puts(str);}11.给定程序中,函数voidfun(char*s)的功能是:把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21#includevoidfun(char*s){intlen=0;inti;11chart,r;while(*(s+len)!=0)len++;t=*(s);for(i=0;i{r=*(s+i);*(s+i)=t;t=r;}*s=t;}voidmain(){charstr[80];gets(str);fun(str);puts(str);}12.编写函数voidfun(char*s1,char*s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:TheCProgrammingLanguage,输出:□□LTaegghmnor。(□表空格)#includevoidfun(char*s1,char*s2){chart[80],c;inti,j,len=0;while(*(s1+len)!=0){t[len]=*(s1+len);len++;}for(i=len-1;i>0;i--)for(j=0;j{if(t[j]>t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}j=0;for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
t=a[k][m];
a[k][m]=a[i][m];
a[i][m]=t;
{intx[M][N]={{11,52,43,4,25,22},{22,33,46,58,16,47},{83,42,54,26,47,0},
{4,5,6,7,8,9},{45,96,17,18,39,2}},i,j;
fun(x);
for(i=0;i{for(j=0;jprintf("%3d",x[i][j]);printf("\n");}}88.函数voidfun(intx,char*p)实现十进制整数x到二进制的转换。转换后的二进制数以字符串的方式放置于p所指向的数组中。如输入13,输出1101,输入-13,输出-1101。#includevoidfun(intx,char*p){intm=0x40000000;unsignedinti=0;if(x<0){*(p+i)='-';i++;x=-x;}while((m&x)==0)m=m>>1;while(m!=0){if((m&x)==0){*(p+i)='0';i++;}else{*(p+i)='1';i++;}m=m>>1;}*(p+i)=0;}main(){inta;charc[18];scanf("%d",&a);fun(a,c);printf("%d'SBINARYIS:%s\n",a,c);}9.编写函数intfun(char(*ss)[N],intm,char*s),功能是:形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。求出最大的字符串,复制到s9所指的字符数组中,然后返回此最大字符串的长度。#include#defineN30intfun(char(*ss)[N],intm,char*s){intlen[20];inti,j,t,n;char*p;n=N;p=ss;for(i=0;i{len[i]=0;while(*(p+i*n+len[i])!=0)len[i]++;}t=len[0];j=0;for(i=1;iif(len[i]>t){t=len[i];j=i;}for(i=0;i*(s+i)=*(p+j*n+i);*(s+t)=0;returnt;}main(){chara[8][N],b[N];inti,len;for(i=0;i<8;i++)gets(a[i]);len=fun(a,8,b);printf("len=%d,str=%s\n",len,b);}10.给定程序中,函数voidfun(char*s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。10#include#include#includevoidfun(char*s){charstr[80];inti,j;i=0;j=0;while(*(s+i)!=0){str[j]=*(s+i);j++;if(*(s+i)>=0x30&&*(s+i)<0x40){str[j]='*';j++;}i++;}str[j]=0;for(i=0;i<80;i++)*(s+i)=str[i];}voidmain(){charstr[80];gets(str);fun(str);puts(str);}11.给定程序中,函数voidfun(char*s)的功能是:把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21#includevoidfun(char*s){intlen=0;inti;11chart,r;while(*(s+len)!=0)len++;t=*(s);for(i=0;i{r=*(s+i);*(s+i)=t;t=r;}*s=t;}voidmain(){charstr[80];gets(str);fun(str);puts(str);}12.编写函数voidfun(char*s1,char*s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:TheCProgrammingLanguage,输出:□□LTaegghmnor。(□表空格)#includevoidfun(char*s1,char*s2){chart[80],c;inti,j,len=0;while(*(s1+len)!=0){t[len]=*(s1+len);len++;}for(i=len-1;i>0;i--)for(j=0;j{if(t[j]>t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}j=0;for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
{for(j=0;jprintf("%3d",x[i][j]);printf("\n");}}88.函数voidfun(intx,char*p)实现十进制整数x到二进制的转换。转换后的二进制数以字符串的方式放置于p所指向的数组中。如输入13,输出1101,输入-13,输出-1101。#includevoidfun(intx,char*p){intm=0x40000000;unsignedinti=0;if(x<0){*(p+i)='-';i++;x=-x;}while((m&x)==0)m=m>>1;while(m!=0){if((m&x)==0){*(p+i)='0';i++;}else{*(p+i)='1';i++;}m=m>>1;}*(p+i)=0;}main(){inta;charc[18];scanf("%d",&a);fun(a,c);printf("%d'SBINARYIS:%s\n",a,c);}9.编写函数intfun(char(*ss)[N],intm,char*s),功能是:形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。求出最大的字符串,复制到s9所指的字符数组中,然后返回此最大字符串的长度。#include#defineN30intfun(char(*ss)[N],intm,char*s){intlen[20];inti,j,t,n;char*p;n=N;p=ss;for(i=0;i{len[i]=0;while(*(p+i*n+len[i])!=0)len[i]++;}t=len[0];j=0;for(i=1;iif(len[i]>t){t=len[i];j=i;}for(i=0;i*(s+i)=*(p+j*n+i);*(s+t)=0;returnt;}main(){chara[8][N],b[N];inti,len;for(i=0;i<8;i++)gets(a[i]);len=fun(a,8,b);printf("len=%d,str=%s\n",len,b);}10.给定程序中,函数voidfun(char*s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。10#include#include#includevoidfun(char*s){charstr[80];inti,j;i=0;j=0;while(*(s+i)!=0){str[j]=*(s+i);j++;if(*(s+i)>=0x30&&*(s+i)<0x40){str[j]='*';j++;}i++;}str[j]=0;for(i=0;i<80;i++)*(s+i)=str[i];}voidmain(){charstr[80];gets(str);fun(str);puts(str);}11.给定程序中,函数voidfun(char*s)的功能是:把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21#includevoidfun(char*s){intlen=0;inti;11chart,r;while(*(s+len)!=0)len++;t=*(s);for(i=0;i{r=*(s+i);*(s+i)=t;t=r;}*s=t;}voidmain(){charstr[80];gets(str);fun(str);puts(str);}12.编写函数voidfun(char*s1,char*s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:TheCProgrammingLanguage,输出:□□LTaegghmnor。(□表空格)#includevoidfun(char*s1,char*s2){chart[80],c;inti,j,len=0;while(*(s1+len)!=0){t[len]=*(s1+len);len++;}for(i=len-1;i>0;i--)for(j=0;j{if(t[j]>t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}j=0;for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
printf("%3d",x[i][j]);
8
8.函数voidfun(intx,char*p)实现十进制整数x到二进制的转换。
转换后的二
进制数以字符串的方式放置于p所指向的数组中。
如输入13,输出1101,输入
-13,输出-1101。
voidfun(intx,char*p)
intm=0x40000000;
unsignedinti=0;
if(x<0)
*(p+i)='-';
x=-x;
while((m&x)==0)
m=m>>1;
while(m!
if((m&x)==0)
*(p+i)='0';
*(p+i)='1';
*(p+i)=0;
main()
inta;
charc[18];
scanf("%d",&a);
fun(a,c);
printf("%d'SBINARYIS:
%s\n",a,c);
9.编写函数intfun(char(*ss)[N],intm,char*s),功能是:
形参ss指向一个
m行N列的二维字符数组,每行存放一个字符串。
求出最大的字符串,复制到s
9
所指的字符数组中,然后返回此最大字符串的长度。
#defineN30
intfun(char(*ss)[N],intm,char*s)
intlen[20];
inti,j,t,n;
char*p;
n=N;
p=ss;
for(i=0;i{len[i]=0;while(*(p+i*n+len[i])!=0)len[i]++;}t=len[0];j=0;for(i=1;iif(len[i]>t){t=len[i];j=i;}for(i=0;i*(s+i)=*(p+j*n+i);*(s+t)=0;returnt;}main(){chara[8][N],b[N];inti,len;for(i=0;i<8;i++)gets(a[i]);len=fun(a,8,b);printf("len=%d,str=%s\n",len,b);}10.给定程序中,函数voidfun(char*s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。10#include#include#includevoidfun(char*s){charstr[80];inti,j;i=0;j=0;while(*(s+i)!=0){str[j]=*(s+i);j++;if(*(s+i)>=0x30&&*(s+i)<0x40){str[j]='*';j++;}i++;}str[j]=0;for(i=0;i<80;i++)*(s+i)=str[i];}voidmain(){charstr[80];gets(str);fun(str);puts(str);}11.给定程序中,函数voidfun(char*s)的功能是:把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21#includevoidfun(char*s){intlen=0;inti;11chart,r;while(*(s+len)!=0)len++;t=*(s);for(i=0;i{r=*(s+i);*(s+i)=t;t=r;}*s=t;}voidmain(){charstr[80];gets(str);fun(str);puts(str);}12.编写函数voidfun(char*s1,char*s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:TheCProgrammingLanguage,输出:□□LTaegghmnor。(□表空格)#includevoidfun(char*s1,char*s2){chart[80],c;inti,j,len=0;while(*(s1+len)!=0){t[len]=*(s1+len);len++;}for(i=len-1;i>0;i--)for(j=0;j{if(t[j]>t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}j=0;for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
len[i]=0;
while(*(p+i*n+len[i])!
len[i]++;
t=len[0];
j=0;
for(i=1;iif(len[i]>t){t=len[i];j=i;}for(i=0;i*(s+i)=*(p+j*n+i);*(s+t)=0;returnt;}main(){chara[8][N],b[N];inti,len;for(i=0;i<8;i++)gets(a[i]);len=fun(a,8,b);printf("len=%d,str=%s\n",len,b);}10.给定程序中,函数voidfun(char*s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。10#include#include#includevoidfun(char*s){charstr[80];inti,j;i=0;j=0;while(*(s+i)!=0){str[j]=*(s+i);j++;if(*(s+i)>=0x30&&*(s+i)<0x40){str[j]='*';j++;}i++;}str[j]=0;for(i=0;i<80;i++)*(s+i)=str[i];}voidmain(){charstr[80];gets(str);fun(str);puts(str);}11.给定程序中,函数voidfun(char*s)的功能是:把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21#includevoidfun(char*s){intlen=0;inti;11chart,r;while(*(s+len)!=0)len++;t=*(s);for(i=0;i{r=*(s+i);*(s+i)=t;t=r;}*s=t;}voidmain(){charstr[80];gets(str);fun(str);puts(str);}12.编写函数voidfun(char*s1,char*s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:TheCProgrammingLanguage,输出:□□LTaegghmnor。(□表空格)#includevoidfun(char*s1,char*s2){chart[80],c;inti,j,len=0;while(*(s1+len)!=0){t[len]=*(s1+len);len++;}for(i=len-1;i>0;i--)for(j=0;j{if(t[j]>t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}j=0;for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
if(len[i]>t)
t=len[i];
j=i;
for(i=0;i*(s+i)=*(p+j*n+i);*(s+t)=0;returnt;}main(){chara[8][N],b[N];inti,len;for(i=0;i<8;i++)gets(a[i]);len=fun(a,8,b);printf("len=%d,str=%s\n",len,b);}10.给定程序中,函数voidfun(char*s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。10#include#include#includevoidfun(char*s){charstr[80];inti,j;i=0;j=0;while(*(s+i)!=0){str[j]=*(s+i);j++;if(*(s+i)>=0x30&&*(s+i)<0x40){str[j]='*';j++;}i++;}str[j]=0;for(i=0;i<80;i++)*(s+i)=str[i];}voidmain(){charstr[80];gets(str);fun(str);puts(str);}11.给定程序中,函数voidfun(char*s)的功能是:把形参s所指字符串中下标为偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21#includevoidfun(char*s){intlen=0;inti;11chart,r;while(*(s+len)!=0)len++;t=*(s);for(i=0;i{r=*(s+i);*(s+i)=t;t=r;}*s=t;}voidmain(){charstr[80];gets(str);fun(str);puts(str);}12.编写函数voidfun(char*s1,char*s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:TheCProgrammingLanguage,输出:□□LTaegghmnor。(□表空格)#includevoidfun(char*s1,char*s2){chart[80],c;inti,j,len=0;while(*(s1+len)!=0){t[len]=*(s1+len);len++;}for(i=len-1;i>0;i--)for(j=0;j{if(t[j]>t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}j=0;for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
*(s+i)=*(p+j*n+i);
*(s+t)=0;
returnt;
chara[8][N],b[N];
inti,len;
for(i=0;i<8;i++)
gets(a[i]);
len=fun(a,8,b);
printf("len=%d,str=%s\n",len,b);
10.给定程序中,函数voidfun(char*s)的功能是:
在形参s所指字符串中的每个
数字字符之后插入一个*号。
例如,形参s所指的字符串为:
def35adh3kjsdf7。
执行
结果为:
def3*5*adh3*kjsdf7*。
10
voidfun(char*s)
charstr[80];
while(*(s+i)!
str[j]=*(s+i);
j++;
if(*(s+i)>=0x30&&*(s+i)<0x40)
str[j]='*';
str[j]=0;
for(i=0;i<80;i++)
*(s+i)=str[i];
gets(str);
fun(str);
puts(str);
11.给定程序中,函数voidfun(char*s)的功能是:
把形参s所指字符串中下标为
偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数
位置,下标为奇数的字符不动(注:
字符串的长度大于等于2)。
abcd123,
输出:
3badc21
intlen=0;
inti;
11
chart,r;
while(*(s+len)!
len++;
t=*(s);
for(i=0;i{r=*(s+i);*(s+i)=t;t=r;}*s=t;}voidmain(){charstr[80];gets(str);fun(str);puts(str);}12.编写函数voidfun(char*s1,char*s2),功能是:对形参s1所指字符串升序排序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:TheCProgrammingLanguage,输出:□□LTaegghmnor。(□表空格)#includevoidfun(char*s1,char*s2){chart[80],c;inti,j,len=0;while(*(s1+len)!=0){t[len]=*(s1+len);len++;}for(i=len-1;i>0;i--)for(j=0;j{if(t[j]>t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}j=0;for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
r=*(s+i);
*(s+i)=t;
t=r;
*s=t;
12.编写函数voidfun(char*s1,char*s2),功能是:
对形参s1所指字符串升序排
序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一
个新串。
例如,下面程序若输入:
TheCProgrammingLanguage,输出:
□□LTaegghmnor。
(□表空格)
voidfun(char*s1,char*s2)
chart[80],c;
inti,j,len=0;
while(*(s1+len)!
t[len]=*(s1+len);
for(i=len-1;i>0;i--)
for(j=0;j
if(t[j]>t[j+1])
c=t[j];
t[j]=t[j+1];
t[j+1]=c;
for(i=0;i{*(s2+j)=t[i];j++;}*(s2+j)=0;}voidmain(){chara[80],b[80];gets(a);fun(a,b);puts(b);}13.函数voidfun(chars[])的功能是:将s所指字符串中ASCII值为奇数的字符删除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。最后s中内容是:“BDF24”。#includevoidfun(chars[]){inti,j;i=0;j=0;while(s[i]!=0){if(s[i]%2==0){s[j]=s[i];j++;}elses[i]=0;i++;}s[j]=0;}voidmain(){13chara[80];gets(a);fun(a);puts(a);}14.请编写一个函数intfun(longintx),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出"Yes"。要求x的值不大于10000。#include#includeintfun(longintx){intn;longy;y=x*x;n=log10(x)+1;n=pow(10,n);if(y%n==x)return1;elsereturn0;}voidmain(){intx;scanf("%d",&x);if(fun(x)==1)puts("Yes");elseputs("No");}15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。#includevoidfun(chars1[],chars2[],intm,intn){inti;for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
*(s2+j)=t[i];
*(s2+j)=0;
chara[80],b[80];
gets(a);
fun(a,b);
puts(b);
13.函数voidfun(chars[])的功能是:
将s所指字符串中ASCII值为奇数的字符删
除。
例如,若s所指字符串中的内容为:
“ABCDEFG12345”,其中字符A的ASCII
码值为奇数、…、字符1的ASCII码值也为奇数、…都应当删除,其它依此类推。
最后s中内容是:
“BDF24”。
voidfun(chars[])
while(s[i]!
if(s[i]%2==0)
s[j]=s[i];
s[i]=0;
s[j]=0;
13
chara[80];
fun(a);
puts(a);
14.请编写一个函数intfun(longintx),它的功能是:
判断整数x是否是同构数。
若是同构数,函数返回1;否则返回0。
所谓“同构数”是指这样的数,它出现
在它的平方数的右边。
输入整数5,5的平方数是25,5是25中右侧的数,
所以5是同构数,输出"Yes"。
要求x的值不大于10000。
intfun(longintx)
intn;
longy;
y=x*x;
n=log10(x)+1;
n=pow(10,n);
if(y%n==x)
return1;
return0;
if(fun(x)==1)
puts("Yes");
puts("No");
15.编写取子字符串函数voidfun(chars1[],chars2[],intm,intn),其作用是将
字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余
字符不足n个,则取到尾部。
程序运行时,当输入"abcd123"、4,3时应输出"d12";
当我们输入"abcd123"、4,6时应输出"d123"。
注意,这里是将1作为起始计数。
voidfun(chars1[],chars2[],intm,intn)
for(i=0;is1[i]=s2[m+i-1];s1[n]=0;}main(){staticchara[100],b[100];ints,len;voidfun(chars1[],chars2[],intm,intn);puts("ENTERASTRING:");gets(a);puts("ENTERSTARTINGPOSITIONANDLENGTH:");scanf("%d,%d",&s,&len);fun(b,a,s,len);printf("THESRBSTINGIS:%s\n",b);}16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字母变小写。输入输出在main中实现。如输入"youHAVE10books,don'tyou?"输出"YouHave10Books,Don'tYou?"。单词以空格、逗号、句号分隔。#includevoidfun(char*str){inthf=1;char*p=str;while(*p!=0){if(*p>='A'&&*p<='Z')if(hf==0){*p+=32;p++;continue;}else{hf=0;p++;continue;}if(*p>='a'&&*p<='z')if(hf==0){p++;continue;}else{*p-=32;hf=0;p++;continue;}switch(*p){case'.':case',':case'':hf=1;default:p++;continue;}}}voidmain(){chara[100];gets(a);fun(a);puts(a);}17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函数voidfun(int*p,intn,intm),实现上述功能。在main()中输入与输出。如下面程序输出78910123456。注意,m可能大于n。#includevoidfun(int*p,intn,intm){inta[80];inti;for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
s1[i]=s2[m+i-1];
s1[n]=0;
staticchara[100],b[100];
ints,len;
voidfun(chars1[],chars2[],intm,intn);
puts("ENTERASTRING:
puts("ENTERSTARTINGPOSITIONANDLENGTH:
scanf("%d,%d",&s,&len);
fun(b,a,s,len);
printf("THESRBSTINGIS:
%s\n",b);
16.编写函数voidfun(char*str),将参数字符串中各单词首字母变大写,其余字
母变小写。
输入输出在main中实现。
如输入"youHAVE10books,don'tyou?
"
输出"YouHave10Books,Don'tYou?
"。
单词以空格、逗号、句号分隔。
voidfun(char*str)
inthf=1;
char*p=str;
while(*p!
if(*p>='A'&&*p<='Z')
if(hf==0)
*p+=32;
p++;
continue;
hf=0;
if(*p>='a'&&*p<='z')
*p-=32;
switch(*p)
case'.':
case',':
case'':
hf=1;
default:
chara[100];
17.n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。
写函
数voidfun(int*p,intn,intm),实现上述功能。
在main()中输入与输出。
如下面程序输出78910123456。
注意,m可能大于n。
voidfun(int*p,intn,intm)
inta[80];
for(i=0;ia[i]=*(p+i);for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
a[i]=*(p+i);
for(i=0;i*(p+(i+m)%10)=a[i];}voidmain(){voidfun(int*,int,int);intx[10]={1,2,3,4,5,6,7,8,9,10},i;fun(x,10,14);for(i=0;i<10;i++)printf("%d",x[i]);printf("\n");}18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接后得到的新字符串放在s1中。如输入abc12345,输出a1b2c345,若输入abcde123,则输出a1b2c3de。#include#includevoidfun(char*s1,char*s2){char*p1,*p2;charc[100];inti;p1=s1;p2=s2;i=0;while(*p1!=0||*p2!=0){if(*p1!=0){c[i]=*p1;i++;p1++;}if(*p2!=0){c[i]=*p2;i++;p2++;}}c[i]=0;i=0;p1=s1;while(c[i]!=0){*p1=c[i];p1++;i++;}*p1=0;}main(){chara[100],b[100];voidfun(char*,char*);gets(a);gets(b);fun(a,b);pu
*(p+(i+m)%10)=a[i];
voidfun(int*,int,int);
intx[10]={1,2,3,4,5,6,7,8,9,10},i;
fun(x,10,14);
for(i=0;i<10;i++)
18.编写函数voidfun(char*s1,char*s2),实现字符串s1与s2的交叉连接,连接
后得到的新字符串放在s1中。
如输入abc12345,输出a1b2c345,若输
入abcde123,则输出a1b2c3de。
char*p1,*p2;
charc[100];
p1=s1;
p2=s2;
while(*p1!
=0||*p2!
if(*p1!
c[i]=*p1;
p1++;
if(*p2!
c[i]=*p2;
p2++;
c[i]=0;
while(c[i]!
*p1=c[i];
*p1=0;
chara[100],b[100];
voidfun(char*,char*);
gets(b);
pu
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1