C语言--------------字符串小程序练习(一)

1、判断输入的字符串是否为“回文”(顺读和倒读都一样)字符串

#include <stdio.h>
#include <string.h>

#define N 100

int palindrome(char *s, int n)
{
	char *head, *tail;
	head = s;
	tail = s + n -1;
	int i;

	for(i = 0; i < n / 2; head++, tail--, i++)
	{
		if(*head != *tail)
			return 0;
	}
	return 1;
}

int main(void)
{
	char str[N];
	
	printf("input a string:");
	scanf("%s", str);
	if(palindrome(str, strlen(str)))
		printf("is palindrome\n");
	else
		printf("is not palindrome\n");

	return 0;
}

2、 从键盘接收一个字符串,然后按照字符顺序从小到大进行排序并删除重复字符。 如从键盘输入的内容为“agehiagehp”,执行完程序之后变为:“aeghip”

#include <stdio.h>
#include <string.h>

#define N 100

char *sort_del(char *p, int len)
{
	char tmp;
	int i, j;
	
	for(i = 0; i < len; i++)
	{
		for(j = i+1; j < len; j++)
		{
			if(p[i] > p[j])
			{
				tmp = p[i];
				p[i] = p[j];
				p[j] = tmp;
			}
		}
	}
	j = 0;
	for(i = 0; i < len; i++)
	{
		if(p[i] != p[i + 1])
			p[j++] = p[i];
	}
	p[j] = '\0';

	return p;
}

int main(void)
{
	char str[N];
	int i;

	printf("please input a string:");
	scanf("%s", str);

	sort_del(str, strlen(str));

	printf("%s\n", str);

	return 0;
}

3、编写程序计算一个英文句子中最长单词的长度(字母个数(max)假设该英文句子中只含有字母和空格,在空格之间连续的字母串称为单词。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define N 100

int word_num(char *s)
{
	int cnt = 0;
	
	while(*s)
	{
		if((*s != ' ') && ((*(s + 1) == ' ') || (*(s + 1) == '\0')))
			cnt++;
		s++;
	}
	return cnt;
}

int word_len(char *s)
{
	int a[N];
	int max = 0, i = 0;
	int j = 0;

	while(*s)
	{
		if(*s != ' ')
			a[i] = ++j;
		else 
		{
			a[++i] = 0;
			j = 0;
		}
		s++;
	}

	for(i = 0; i < 5; i++)
		if(a[i] > max)
			max = a[i];

	return max;
}

int main(void)
{
	char str[N];

	printf("please input words:\n");
	fgets(str, N, stdin);

	printf("%d\n", word_num(str));
	printf("%d\n", word_len(str));

	return 0;
}

4、给定程序中,函数fun的功能是:将形参s所指字符串中的所有字母字符顺序前移,其他字符后移,处理后新字符串的首地址作为函数值返回。例如,s所指字符串为:asd123fgh543df,处理后新字符串为:asdfghdf123543

#include <stdio.h>
#include <string.h>

#define N 100

char *fun(char *s, int len)
{
	char b[N];
	int i;
	int j = 0, k = 0;
	char *p = s;

	for(i = 0; i < len; i++, p++)
	{
		if((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z'))
			s[j++] = *p;
		else
			b[k++] = *p;
	}
	s[j] = '\0';
	b[k] = '\0';
	strcat(s, b);

	return s;
}

int main(void)
{
	char str[N];

	printf("input a string:");
	scanf("%s", str);

	puts(fun(str, strlen(str)));

	return 0;
}



你可能感兴趣的:(C语言,小程序)