实验答案--函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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]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;

}

相关文档
最新文档