实验答案--函数

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

1、编一个带有函数得程序。在main()函数中输入一个字符串(长度<20),调用函数fun将该字符串中得所有字符按ASCII码升序排序,然后再输出排序后得字符串.例如,输入edcba,则应输出abcde、。

#include〈stdio、h〉

#include <string、h>

int main()

{

void fun(char x[],inty);

int i;

char c[20];

printf("Please input chars:\n”);

gets(c);

i=strlen(c);

fun(c,i);

return0;

}

voidfun(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).

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

#include”stdio、h"

main()

{ char s[15];int i,j;

scanf("%s",s);

for (i=0,j=0;s[i]!='\0';i++)

if(s[i]>='0’ && s[i]〈=’9’)

{s[j]=s[i];j++; }

s[j]=’\0';

printf("\nThe result:");

printf(”%s",s);

#include〈stdio、h〉

intmain()

{

void fun(char x[]);

chars[15];

printf("Input charsto fills[15]:\n”);

scanf(”%s",s);

fun(s);

return 0;

voidfun(charx[])

{

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所指得存储单元中。

例如:输入如下整数876675896 101301401 980431 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()

inta[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〈stdio、h〉

void fun (ints[],int m)

{

inti,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()

{

ints[8]={4,6,8,41,56,77,102};

inti,m;

puts("Pleaseinput m:");

scanf("%d”,&m);

fun(s,m);

for(i=0;i<8;i++)

printf("%d ”,s[i]);

putchar('\n’);

return0;

5、下面程序得功能就是将字符数组s2中得全部字符拷贝到字符数组s1中。拷贝时,’\0’也拷贝过去,但’\0’后面得字符不拷贝。

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

main()

char s1[80],s2[80];

int i;

scanf("%s”,s2);

for(i=0;s2[i]!=’\0’;i++)

s1[i]=s2[i];

s1[i]=’\0’;

printf("s1:%s\n",s1);

}

#include<stdio、h>

void xp(chars1[],char s2[])

inti;

for(i=0;s2[i]!='\0';i++)

s1[i]=s2[i];

s1[i]='\0';

int main()

{

char s1[80],s2[80];

puts("Input charsof s2[]:");

相关文档
最新文档