输入一行字符,统计其中有多少个单词,并将每个单词首字母大写

版权声明:转载请注明出处 https://blog.csdn.net/nanhuaibeian/article/details/87611227

问题(一)

  1. 问题
    输入一行字符,统计其中有多少个单词,单词之间使用空格分隔开输入一行字符,统计其中有多少个单词,单词之间使用空格分隔开
  2. 代码
    题目要求单词之间使用空格分隔开,所以只能,使用gets函数接纳字符,因为scanf会依据空格将输入的字符分隔开,得不到整个字符
#include <stdio.h>
#include <string.h>
int main()
{
	char s[1000];
	int i=0,n=0,len;
	printf("请输入一行字符:"); 
	gets(s);
	len = strlen(s);
//	printf("%d",len);
//循环终止条件,可以按照字符串长度,也可依据最后一个字符为'\0'
//	while(i<len)
	while(s[i]!='\0')
	{
		if(s[i]==' ')
			n++;
		i++;
	}
	printf("这行字符共有%d个单词",n+1);
	return 0;
}

问题(二)

  1. 问题
    输入一行字符,统计其中有多少个单词,单词之间使用空格分隔开输入一行字符,统计其中有多少个单词,同时将所有单词首字母大写
  2. 代码
#include <stdio.h>
#include <string.h>
#define max 100
int main(){
	char s[max]; //接受字符串
	int i=0,n,j,a[max];//使用a[max]记录每个单词的首字母
	printf("请输入一句英语:");
	gets(s);
	a[0] = 0;//记录第一个单词的首字母位置
	n=1;
	//使用n记录空格个数,同时a[n]记录每个单词的首字母位置
	while(s[i]!='\0'){
		if(s[i]==' ')	a[n++]=i+1;	//第i个位置是空格,第i+1个位置为首字母位置
		i++;
	}
	printf("共有%d个单词\n",n);
	for(i=0;i<n;i++)
		//将每个单词的首字母变为大写
		if(s[a[i]]>='a'&&s[a[i]]<='z')	s[a[i]] = s[a[i]] - 32;

	puts(s);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/nanhuaibeian/article/details/87611227
今日推荐