实验答案--函数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 for(j=i+1;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 { 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] 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; }