C++问题:输入一个英文句子,将每个单词的第一个字母改成大写字母。

#include<stdio.h>
#include<string.h>
int main(int argc,char *argv[])
{
int i;
char a[100];
while (scanf("%c",&a[0])!=EOF)
{
a[0]=a[0]-32;
for(i=1;i<100;i++)
{
scanf("%c",&a[i]);
if(a[i]=='\n') break;
else if(a[i-1]==' ') a[i]=a[i]-32;
}
for(i=0;i<strlen(a);i++)
printf("%c",a[i]);
strcpy(a, "");
}
return 0;
}
请问有什么问题么、、为什么后面总会多输出几个字符

第1个回答  2016-06-25
if(k==0&&a[i]<97&&a[i]>122)
这句有逻辑错误。a[i]不可能同时小于97和大雨122.后面那个&&应该是||。
应该是这句引起的。追问

哪来的这句话.........

C语言问题 输入一个英文句子 将每个单词的第一个字母改成大写字母。
include <string.h> include <stdio.h> int main(int argc, char* argv[]){ char str[100 + 1];int isfirst = 1;char ch;int i = 0;while((ch = getchar()) != EOF){ if(isalpha(ch)){ if(isfirst == 1){ ch = toupper(ch);isfirst = 0;} } else { isfirst = 1;...

C语言问题 输入一个英文句子,将每个单词的第一个字母改成大写字母
if(k==0&&a[i]<97&&a[i]>122)这句有逻辑错误。a[i]不可能同时小于97和大雨122.后面那个&&应该是||。include <ctype.h> char str[100 + 1];int isfirst = 1;char ch;int i = 0;while((ch = getchar()) != EOF)ch = toupper(ch);isfirst = 0;else str[i] = '\\0';pri...

输入一个英语句子,输出句子中每个单词的首字母(大写),应该怎样做啊?(c...
将整个句子作为字符串读入,如果某个字母前面是空格或标点符号话就说明他是首字母,将其变成大写输出就行了。变大写的方法是根据他的ASCII码进行判断和调整

...输入一个英文句子,将每个英文单词的头字母变为大写,单词之间用空 ...
程序已在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...

C++输入一个句子,使每个单词首字母大写,并输出.
include<iostream> include<string> using namespace std;int main(){ string str;while(cin>>str){ int size=str.length();str[0]=str[0]-32;\/\/查看size数据 cout << "size = " << size << endl;for(int i=0;i<size;++i){ if(str[i]=='\\t'){ str[i+1]=str[i+1]-32;...

C语言编程 输入一个英文句子,把每个单词的第一个字母变大写后输出来
首先判断第一个字母,之后给第一个字母的asc减去32。然后通过printf输出。就可以了

c语言输入一行英文,把每个单词的第一个字母改成大写字母。
include<stdio.h>int isLetter(char c){if(c>='a'&&c<='z')return 1;return 0;}char s[999],i,k;int main(){scanf("%[^\\n]",s+1);s[0]=32;for(i=0;s[i];i++){if(s[i]==32&&(isLetter(s[i+1]))){s[i+1]=s[i+1]-'a'+'A';}}printf("%s",s+1);} ...

c语言:输入一行英文字符串,把每个单词第一个字母变为大写,输出修改后的...
int main(int argc,char*argv[]){ char str[100+1];int isfirst=1;char ch;int i=0;while((ch=getchar())!=EOF){ if(isalpha(ch)){ if(isfirst==1){ ch=toupper(ch);isfirst=0;} } else { isfirst=1;} str[i++]=ch;} str='\\0';printf("%s\\n",str);return 0;} ...

输入一行字符,要求将每个单词第一个英文字母改成大写后输出,原来已是大...
include<stdio.h> void main(){ char a[255];char *s=&a[0];scanf("%[^\\n]",s);if (*s<='z' && *s>='a') *s-=32;while(*(++s)){ if (*(s-1)==' ' && *s<='z' && *s>='a')s-=32;} s=&a[0];printf("%s",s);} ...

输入一个英文句子,要求将每个单词的第一个字母改写成大写字母。
才10分 擦

相似回答