第五题:
解题思路:要将输入的字符串按反序存放,只需要定义一个反序函数,它为空类型。要注意对函数进行声明,在主函数中定义一个字符型的一维字符数组,调用反序函数,将字符串的字符按倒序输出。
流程图:
程序代码:
#include
#include
int main()
{
void FAN(char str[]);
char str[50];
gets(str);
FAN(str);
puts(str);
return 0;
}
void FAN(char str[])
{
int i,j,t;
char m;
t=strlen(str);
for(i=0,j=t-1;i
{
m=str[i];
str[i]=str[j];
str[j]=m;
}
}
程序运行结果:
第十题:
解题思路:输出一行字符中最长的单词,首先要确定当前的字符是否为字母,还要确定最长单词的起始位置,然后将当前单词已累积的字母个数与先前单词中最长的单词的长度进行比较,从而找出最长的单词,并输出。
流程图:、
Len=0 length=0 flag=0 place=0
For( i=0;i<=字符串长度;i++)
返回place
程序代码:
#include
#include
int main()
{
int alphabetic(char);
int longest(char []);
int i;
char line[100];
printf("input one line:\n");
gets(line);
printf("The longest word is :");
for (i=longest(line);alphabetic(line[i]);i++)
printf("%c",line[i]);
printf("\n");
return 0;
}
int alphabetic(char c)
{
if ((c>='a' && c<='z')||(c>='A'&&c<='z'))
return(1);
else
return(0);
}
int longest(char string[])
{
int len=0,i,length=0,flag=1,place=0,point;
for (i=0;i<=strlen(string);i++)
if (alphabetic(string[i]))
if (flag)
{
point=i; flag=0;
} else
len++;
else
{
flag=1;
if (len>=length)
{
length=len;
place=point;
len=0;
}
}
return(place);
}
程序运行结果:
声明FAN函数
定义一维数组str[50]
输出字符串
调用FAN函数
输出FAN函数
定义FAN(char str[]) int i,j,t char m t=strlen(str)
char m
for(i=0,j=t-1;i
m=str[i]
str[i]=str[j]
str[j]=m
T
第i个字符是否为字母
F
Flag=0
Flag=1
Len>=length
F
T
F
T
Point=1
Flog=0
Len++
Length=len
Place=point
Len=0