版权声明:转载请注明出处 https://blog.csdn.net/nanhuaibeian/article/details/87611227
问题(一)
- 问题
输入一行字符,统计其中有多少个单词,单词之间使用空格分隔开输入一行字符,统计其中有多少个单词,单词之间使用空格分隔开 - 代码
题目要求单词之间使用空格分隔开,所以只能,使用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;
}
问题(二)
- 问题
输入一行字符,统计其中有多少个单词,单词之间使用空格分隔开输入一行字符,统计其中有多少个单词,同时将所有单词首字母大写 - 代码
#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;
}