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