1.写函数实现:输入一行字符,输出字符串中最长的单词。假定字符串中只含字母和空格,空格用来分隔不同单词。
#include<stdio.h>
int main()
{
void choose(char s[100]);
char str[100];
printf("请输入一段字符:");
gets(str);
printf("\n\n");
choose(str);
return 0;
}
void choose(char s[100])
{
char c;
int i, j, num = 0, start = 0;
for (i = 0, j = 0; i < 100; i++)
{
c = s[i];
if ((c != ' ') && (c != '\0') && (c != '.') && (c != '!') && (c != '?'))
{
j++;
}
else
{
if (num < j)
{
num = j;
start = i - j;
}
j = 0;
if (c == '\0') break;
}
}
printf("最长(%d个)单词为:", num);
for (i = start; i < (start + num); i++)
{
printf("%c", s[i]);
}
printf("\n\n");
}
2.写函数实现:输入一个字符串判断是否是回文串(如”abcba”是回文串)。
#include <stdio.h>
char fun(char a[]);
main()
{
char a[80];
printf("Input a string:\n");
gets(a);
if (fun(a))
{
printf("This string is a plalindrome.\n");
}
else
{
printf("This string is not a plalindrome.\n");
}
}
char fun(char a[])
{
int i, j;
for (i = 0, j = strlen(a) - 1; i < j; i++, j--)//0指的是数组第一个所以减一才是最后一个
{
if (a[i] != a[j])
{
return 0;
}
}
}
3.利用递归函数调用方式,将所输入的9个字符,以相反顺序打印出来
#include <stdio.h>//此代码是若干字符
void reverse_output();
int main()
{
printf("请输入若干个字符,以回车作为结束符\n");
reverse_output();
printf("\n以上为字符串的逆序输出\n");
return 0;
}
//获取若干字符并逆序打印
void reverse_output()
{
char character = getchar(); //0 -> N 顺序输入
if (character != '\n') //如果不是回车,则递归调用
reverse_output();
else //检测到回车,递归结束
return;
printf("%c", character); //N -> 0 逆序输出
}
#include<stdio.h>//此代码是9个字符,中间不用打空格
void func(int n);
void main()
{
printf("please input 9 numbers:\n");
func(9);
}
void func(int n)
{
if (n <= 1)
{
char next = getchar();
putchar(next);
}
else
{
char next = getchar();
func(n - 1);
putchar(next);
}
}
ps:此文章部分代码参考CSDN。