printf("%.0f",a[i]);
printf("\n");
for(i=1;i<=n-2;i++)
ave+=a[i];
returnave/(n-2);
}
main()
{inti;
floatscore[10],average;
printf("pleaseinputscore:
");
for(i=0;i<10;i++)
scanf("%f",&score[i]);
printf("输出原数组元素:
\n");
for(i=0;i<10;i++)
printf("%.0f",score[i]);
printf("\n");
average=aver(score,10);
printf("Theaverageis%f!
",average);}
举一反三
【15-3】任意输入一个长度为8的字符串,使用冒泡法除首尾字符外,将其余6个字符按字符ASCII码值从小到大排序。
部分源程序:
#include"stdio.h"
intfun(chara[])
{/***************begin****************/
/***************end******************/
}
main()
{
chara[80];
printf("pleaseinputa:
");
gets(a);
printf("输出原数组元素:
\n");
puts(a);
fun(a);
printf("输出排好序的数组元素:
\n");
puts(a);
}
【例15-4】任意输入两个字符串,比较它们的长度,输出长度大的字符串。
(用字符串处理函数完成)
源程序:
#include
#include
#include
char*fun(char*str1,char*str2)
{inti,j;
i=strlen(str1);
j=strlen(str2);
if(i>j)
returnstr1;
else
returnstr2;
}
main()
{charstr1[81],str2[81];
printf("Inputtwostring:
");
gets(str1);
gets(str2);
printf("输出两个字符串:
\n");
puts(str1);
puts(str2);
printf("输出长度大的字符串:
%s\n",fun(str1,str2));
}
举一反三
【15-4】任意输入两个字符串,比较它们的大小,输出大的字符串。
(用字符串处理函数完成)
部分源程序:
#include
#include
#include
char*fun(char*str1,char*str2)
{/***************begin****************/
/***************end******************/
}
main()
{charstr1[81],str2[81];
printf("Inputtwostring:
");
gets(str1);
gets(str2);
printf("输出两个字符串:
\n");
puts(str1);
puts(str2);
printf("输出大的字符串:
%s\n",fun(str1,str2));
}
二、程序改错
不允许增加行也不允许删除行,也不得更改程序的结构。
1、下列给定程序中,函数fun的功能是:
将s所指字符串中的字母转换为按字母序列的后继字母(单Z转换为A,z转换为a),其他字符不变。
请改正函数fun中的错误,使它能得出正确的结果。
源程序:
#include
#include
voidfun(char*s)
{
/********found********/
while(*s!
='@')
{
if(*s>='A'&&*s<='Z'||*s>='a'&&*s<='z')
{
if(*s=='Z')
*s='A';
elseif(*s=='z')
*s='a';
else
*s+=1;
}
/********found********/
(*s)++;
}
}
main()
{
chars[80];
printf("\nEnterastringwithlength<80.:
\n\n");
gets(s);
printf("\nThestring:
\n\n");
puts(s);
fun(s);
printf("\n\nTheCords:
\n\n");
puts(s);
}
2、下列给定程序中,函数fun的功能是:
将s所指字符串中的正序和反序进行连接,形成一个新串在t所指的数组中。
例如,当s所指字符串为ABCD时,则t所指字符串中的内容应为ABCDDCBA。
请修改程序中的错误,使它能计算出正确的结果。
源程序:
#include
#include
/********found********/
voidfun(chars,chart)
{
inti,d;
d=strlen(s);
for(i=0;it[i]=s[i];
for(i=0;it[d+i]=s[d-1-i];
/********found********/
t[2*d-1]='\0';
}
main()
{
chars[100],t[100];
printf("\nPleaseenterstringS:
");
scanf("%s",s);
fun(s,t);
printf("\nTheresultis:
%s\n",t);
}
3、输入两个字符串,将第二个字符串拷贝到第一个字符串。
源程序:
#include"stdio.h"
#include
/********found********/
voidfun(chars,char)
{
/********found********/
s=t;
}
main()
{
chars[100],t[100];
printf("\nPleaseenterstringS:
");
scanf("%s%s",s,t);
fun(s,t);
printf("\nTheresultis:
%s\n",s);
}
三、程序填空
1、从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。
源程序:
#include
voidfun(longs,long*t)
{
longsl=10;
s/=10;
*t=s【1】10;
while(s>0)
{
s=【2】;
*t=s%10*sl【3】;
sl=sl【4】10;
}
}
main()
{
longs,t;
printf("\nPleaseenters:
");
scanf("%ld",&s);
fun(s,&t);
printf("Theresultis:
%ld\n",t);
}
2、请编写一个函数,用来删除字符串中的所有空格。
例如,输入asdafaaz67,则输出为asdafaaz67。
源程序:
#include
#include
voidfun(【1】)
{inti,j=0;
for(i=0;str[i]!
='\0';i++)
if(str[i]!
='')str[j++]=str[i];
【2】;
}
main()
{charstr[81];
printf("Inputastring:
");
gets(str);
puts(str);
fun(str);
printf("***str:
%s\n",str);
}
3、输入两个字符串,将第二个字符串连接到第一个字符串的后面。
部分源程序:
#include"stdio.h"
#include
voidfun(【1】)
{
【2】
}
main()
{
chars[100],t[100];
printf("\nPleaseenterstringS:
");
scanf("%s%s",s,t);
fun(s,t);
printf("\nTheresultis:
%s\n",s);
}
【思考题】
1.数组名作实参和数组元素作实参有什么区别?
2.可以给数组名赋值吗?
3.字符数组的长度和数组在内存中占的字节数有区别吗?
分别如何测量?
4.字符串比较函数是比较两个字符串在内存中占字节数的多少吗?
5、下面给出两个程序,比较两个程序代码及结果有何不同?
试分析?
程序1:
/**********程序1***********/
voidswap1(intc[])
{
intt;
t=c[0];c[0]=c[1];c[1]=t;
}
main()
{
inta[2]={3,5};
swap1(a);
printf("\n%5d%5d\n",a[0],a[1]);
}
程序2:
/**********程序2***********/
voidswap1(intc0,intc1)
{
intt;
t=c0;c0=c1;c1=t;
}
main()
{
inta[2]={3,5};
swap1(a[0],a[1]);
printf("%5d%5d\n",a[0],a[1]);
}