程序来自配套的习题解答一书
8.5写一函数,使输入的字符串反序存放,在主函数中输入和输出字符串
#include <stdio.h>
#include <string.h>
void main()
{
void inverse(char str[]);
char str[100];
printf("Input String:");
scanf("%s",str);
inverse(str);
printf("Inverse string:%s/n",str);
}
void inverse(char str[])
{
char t;
int i,j;
for(i=0,j=strlen(str);i<strlen(str)/2;i++,j--)
{
t=str[i];
str[i]=str[j-1];
str[j-1]=t;
}
}
8.8写一函数,输入一个4位数,要求输出这4个数字字符,但每两个数字间有一个空格。例:输入1990输出1 9 9 0
#include <stdio.h>
#include <string.h>
void main()
{
char str[80];
void insert(char str[]);
printf("/nInput four digit:");
scanf("%s",str);
insert(str);
}
void insert(char str[])
{
int i;
for(i=strlen(str);i>0;i--)
{
str[2*i]=str[i];
str[2*i-1]=' ';
}
printf("/nOutput:%s/n",str);
}
8.10写一函数,输入一行字符,将此字符串中最长的单词输出
#include <stdio.h>
#include <string.h>
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)//flag表示新单词是否已开始,flag=0表示未开始,flag=1表示开始
{
point=i;//point代表当前单词的起始位置(用下标表示)
flag=0;
len++;//len表示当前单词已累计的字母个数
}
else
len++;
}
else
{
flag=1;
if(len>=length