当前位置:文档之家› 实验答案--函数

实验答案--函数

1. 编一个带有函数的程序。

在main() 函数中输入一个字符串(长度<20),调用函数fun 将该字符串中的所有字符按ASCII 码升序排序,然后再输出排序后的字符串。

例如,输入edcba,则应输出abcde.。

#include <>#include <>int main(){void fun(char x[],int y);int i;char c[20];printf("Please input chars:\n"); gets(c);i=strlen(c);fun(c,i);return 0;}void fun(char x[],int y){int i,j;char c;for(i=0;i<y-1;i++)for(j=i+1;j<y;j++)if(x[i]>x[j]){ c=x[i]; x[i]=x[j]; x[j]=c; } puts(x);}2. 下面程序的功能是依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串;(如:abcd123efg456变为123456)。

修改该程序,要求将红色部分用一个函数来实现。

#i nclude ""mai n(){ char s[15]; int i,j;scan f("%s",s);for (i=0,j=0; s[i]!='\0'; i++){ s[j]=s[i]; j++; }s[j]='\0';printf("\nThe result:");prin tf("%s",s);}#in clude <> int main() { void fun(char x[]);char s[15];printf("Input chars to fill s[15]:\n"); scanf("%s",s);fun(s);return 0;}void fun(char x[]){int i,j;for(i=0,j=0; x[i]!='\0'; i++) if(x[i]>='0'&&x[i]<='9'){ x[j]=x[i]; j++; }x[j]='\0';puts(x);}3. 编写带有函数的程序(函数名为:int fun(int s[],int *k) ),功能是求出数组的最大元素在数组中的下标并存放在k 所指的存储单元中。

例如:输入如下整数876 675 896 101 301 401 980 431 451 777则输出结果为:6,980。

#include <>void fun(int s[],int *k){int i,max=s[0];for(i=1;i<10;i++)if(max<s[i]){ max=s[i]; *k=i; }}int main(){int a[10]={876,675,896,101,301,401,980,431,451,777};int k;fun(a,&k);printf("%d,%d\n",k,a[6]);return 0;}4. 在main() 函数中,已有一个已排好序的整型数组,今输入一个整数,调用函数fun() ,其功能是按原来排序的规律将它插入数组中。

例如:原来数组的元素依次为4、6、8、41、56、77、102。

若将42 插入数组中,则插入后数组元素依次为4、6、8、41、42、56、77、89、102。

#include <>void fun (int s[],int m){int i,j;for(i=0;;i++)if(s[i]<m&&s[i+1]>m) break;for(j=6;j>i;j--)s[j+1]=s[j];s[i+1]=m;}int main(){int s[8]={4,6,8,41,56,77,102};int i,m;puts("Please input m:");scanf("%d",&m);fun (s,m); for(i=0;i<8;i++) prin tf("%d ",s[i]); putchar('\n'); return 0;}5. 下面程拷贝序的功能是将字符数组s2中的全部字符拷贝到字符数组s1时,’0'也拷贝过去,但’0'后面的字符不拷贝。

修改该程序,要求将红色部分用一个函数来实现。

mai n(){char s1[80],s2[80];int i;sca nf("%s",s2);for(i=0;s2[i]!= ' 0' ;i++)s1[i]= ' 0';printf("s1:%s\n",s1);}#include <>void xp(char s1[],char s2[]) {int i;for(i=0;s2[i]!='\0';i++) s1[i]=s2[i];s1[i]='\0';}int main(){char s1[80],s2[80];puts("Input chars of s2[]:"); gets(s2);xp(s1,s2); printf("s1:%s\n",s1); return 0;}6. 编写带有函数的程序(函数名为:fun()),功能是将ss 所指字符串中下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换,注意下标是从0 开始的)。

例如:输入abbcc45ghNj,则应输出aBbCc45GhN。

#include <>void fun(char x[]){int i;for(i=1;x[i]!='\0';i=i+2) if(x[i]>'a'&&x[i]<'z') x[i]=x[i]-32;}int main(){char ss[80];puts("Input chars to fill ss[]:");gets(ss);fun(ss);puts(ss);return 0;}7. 在main()函数中,先从键盘上输入一个3行3列整型数组的各个元素的值,然后调用函数fun() ,其功能是计算并返回主对角线元素之和。

#include <>int fun(int a[][3]){int i,j,s=O;for(i=0;i<3;i++)for(j=0;j<3;j++)if(i==j) s=s+a[i][j];return s;}int mai n(){int i,j,k,a[3][3];puts(" In put 9 numbers to fill a[3][3]:");for(i=0;i<3;i++)for(j=0;j<3;j++)sca nf("%d",&a[i][j]);k=fu n(a);printf(" 主对角线之和=%d",k);return 0;}8. 下面程序的功能是用冒泡法对10个整数按降序进行排序。

修改该程序,要求将红色部分用一个函数来实现。

mai n(){ int a[11],i,j,t;prin tf("I nput 10 numbers:\n");for(i=1;i<11;i++)scan f("%d",&a[i]); prin tf("\n");for(j=1;j<=9;j++)for(i=1;i<=10-j;i++)if(a[i]<a[i+1])for(i=1;i<11;i++)prin tf("%d ",a[i]);}#in elude <>void fun (i nt a[]){int i,j,t;for(j=1;jv=9;j++)for(i=1;i<=10-j;i++) if(a[i]<a[i+1]){ t=a[i]; a[i]=a[i+1]; a[i+1]=t; }}int mai n(){int a[11],i;prin tf("I nput 10 numbers:\n");for(i=1;i<11;i++)scan f("%d",&a[i]);prin tf("\n");fun( a);prin tf("The sorted nu mbers:\n"); for(i=1;i<11;i++)prin tf("%d ",a[i]);putchar('\n');return 0;9. 编写带有函数的程序(函数名为:int fun()),功能是从整数1到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。

结果应该是:15 45 51 54#in elude <>int fun(int b[]){int i,j=O;for(i=1;i<=55;i++)if(i%3==0)if(i/10==5||i%10==5){ b[j]=i; j++; }return j;}int mai n(){int a[100],k,m;m=fu n(a);prin tf("The result is:\n");for(k=0;k<m;k++)prin tf("%4d",a[k]);prin tf("\n");return 0;}10. 下面程序的功能是将两个字符串连接起来,不要用strcat函数。

修改该程mai n(){char s1[80],s2[80];int i=0,j;sca nf("%s",s1);scanf( “%s‘ ,s2);while(s1[i]!= ' 0' ) i++;for(j=0; s2[j]!= ' 0';)s1[i++]=s2[j++];prin tf("s1:%s\n",s1);#in elude <>void xp(char s1[],char s2[]){int i=0,j;while(s1[i]!='\0')i++;for(j=0; s2[j]!='\0';)s1[i++]=s2[j++];s1[i]='\0';}int mai n(){char s1[80],s2[80];puts(" In put chars to fill s1[]:");gets(s1);puts(" In put chars to fill s2[]:");gets(s2);xp(s1,s2);puts(s1);return 0;}11. 编写带有函数的程序(函数名为fun ),功能是求出ss 所指字符串中指定字符的个数,并返回此值。

相关主题