(C语言编程)输入一个英文句子,将每个英文单词的头字母变为大写,单词之间用空格隔开

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(C语言编程)输入一个英文句子,将每个英文单词的头字母变为大写,单词之间用空格隔开相关的知识,希望对你有一定的参考价值。

(C语言编程)输入一个英文句子,将每个英文单词的头字母变为大写,单词之间用空格隔开

程序已在dev-c++下编译确认:
/*提取用空格分隔的字符串中的单词,并改单词首字母为大写*/
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>

int partition(char *s1,char *s2,int pos)

int i,j;
i=pos;
while(s1[i]==' ')
i++;
if(s1[i]!='\0')

j=0;
while(s1[i]!='\0'&&s1[i]!=' ')

s2[j]=s1[i];
i++;
j++;

s2[j]='\0';
s2[0]=toupper(s2[0]);
return i;

else
return -1;


int main()

char string[256];
char partition_string[20];
int position;
int k;
printf("\nPlease input a string:");
gets(string);
position=0;
printf("\nThe result:\n");
k=0;
while((position=partition(string,partition_string,position))!=-1)

k++;
printf("%s ",partition_string);

printf("\n");

system("pause");
return 0;
参考技术A #include <stdio.h>
#include <string.h>
int main()

char a[1000];
unsigned i,flag=1;
printf("输入字符串:\n");
gets(a);
for(i=0;i<=strlen(a)-1;i++)

if(a[i]>='a'&&a[i]<='z')
if(flag==1)

a[i]-=32;
flag=0;

if(a[i]==' ')
flag=1;

puts(a);
return 0;
参考技术B 程序已在dev-c++下编译确认:
/*提取用空格分隔的字符串中的单词,并改单词首字母为大写*/
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>

int partition(char *s1,char *s2,int pos)

int i,j;
i=pos;
while(s1[i]==' ')
i++;
if(s1[i]!='\0')

j=0;
while(s1[i]!='\0'&&s1[i]!=' ')

s2[j]=s1[i];
i++;
j++;

s2[j]='\0';
s2[0]=toupper(s2[0]);
return i;

else
return -1;


int main()

char string[256];
char partition_string[20];
int position;
int k;
printf("\nPlease input a string:");
gets(string);
position=0;
printf("\nThe result:\n");
k=0;
while((position=partition(string,partition_string,position))!=-1)

k++;
printf("%s ",partition_string);

printf("\n");

system("pause");
return 0;


回答者:匿名 2009-6-29 10:30
检举高手,高手!

回答者: 沸腾的阳光 - 助理 三级 2009-6-29 10:35
检举#include <stdio.h>
#include <string.h>
int main()

char a[1000];
unsigned i,flag=1;
printf("输入字符串:\n");
gets(a);
for(i=0;i<=strlen(a)-1;i++)

if(a[i]>='a'&&a[i]<='z')
if(flag==1)

a[i]-=32;
flag=0;

if(a[i]==' ')
flag=1;

puts(a);
return 0;
参考技术C 用数组存储单词。然后读取首字母。将其转化为大写 参考技术D 高手,高手!

用C或C++编写:输入一段英文句子,输出其中最长的单词

包含标点处理

#include <iostream>
#include <string>
#include <algorithm> 
#include <sstream>


int main()

    std::string t, word, long_word;

    getline(std::cin, t);

    std::istringstream iss(t);
    while (iss >> word)
    
        std::string result;
        std::remove_copy_if(word.begin(), word.end(),
            std::back_inserter(result),         
            ispunct);
        if (result.length() > long_word.length())
        
            long_word = result;
        
    

    std::cout << long_word << std::endl;

    getchar();
    return 0;

参考技术A #include<iostream>
#include<string>
using namespace std;
int main() 
string word,longWord;
cout << "请输入英文句子,按ctrl+z后按下回车结束输入:\\n";
while (cin >> word) 
if (word.length() > longWord.length())
longWord=word;

cout << "最长单词是"<<longWord<<endl;
return 0;

追问

谢谢

请问为什么要按ctrl+z再按回车输入

可不可以做到直接回车输入。。。。萌新一枚,望详细解释

本回答被提问者和网友采纳

以上是关于(C语言编程)输入一个英文句子,将每个英文单词的头字母变为大写,单词之间用空格隔开的主要内容,如果未能解决你的问题,请参考以下文章

C语言:统计输入的一行英文句子中的字母及单词个数,带注解!

翻转句子中单词的顺序 C语言

从控制台输入一个英文句子,用c语言写一个程序判断有几个单词

用C或C++编写:输入一段英文句子,输出其中最长的单词

C++编程问题?输入一个英语句子,输出其中最长的单词,并输出次单词的位置。

ZZNUOJ_用C语言编写程序实现1136:首字母变大写(附完整源码)