第1个回答 2011-01-04
我帮你单步调试了。
当你输入的字符到10个的时候,回车后才会执行。否则你的第一个for循环不会结束!
第2个回答 2011-01-04
使用getchar方法,当输入回车时,输入结束
第3个回答 2011-01-04
用cin.get()来处理就可以了
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
char transform(char letter)
{
if(letter>='a'&&letter<='z')
{
letter-=32;
}
else if(letter>='A'&&letter<='Z')
{
letter+=32;
}
return letter;
}
int main()
{
char input[10];
int count=0;
for(int i=0;i<10;i++)
{
input[i]=cin.get();
count++;
if(input[i]=='\n') break;
}
cout<<"原来的字符为:";
for(int i=0;i<count-1;i++)
{
cout<<input[i];
}
cout<<endl;
cout<<"转换后的字符为:";
for (int i=0;i<count-1;i++)
{
cout<<transform(input[i]);
}
cout<<endl;
system("PAUSE");
return 0;
}
第4个回答 2011-01-04
问题出在:cin不能接受回车这个字符,把它改为getchar()就好了!!!如果是输入一个字符串的话,用gets().
#include <iostream>
#include <cstring>
#include <stdio.h>
using namespace std;
char transform(char letter)
{
if(letter>='a'&&letter<='z')
{
letter-=32;
}
else if(letter>='A'&&letter<='Z')
{
letter+=32;
}
return letter;
}
int main()
{
char ch;
char input[10];
int i,count=0;
for(i=0;i<10;i++)
{
ch=getchar();
input[count++]=ch;
if(ch=='\n') break;
}
// cout<<count<<endl;
cout<<"原来的字符为:";
for(i=0;i<count-1;i++)
{
cout<<input[i];
}
cout<<endl;
cout<<"转换后的字符为:";
for (i=0;i<count-1;i++)
{
cout<<transform(input[i]);
}
cout<<endl;
return 0;
}
第5个回答 2011-01-04
for(int i=0;i<10;i++)
{
cin>>input[i];;
count++;
if(input[i]=='\r') break;
}
改成
char cEnter;
for(int i=0;i<10;i++)
{
cEnter = cin.get();
if(cEnter=='\n') break;
input[i] = cEnter;
count++;
cin.get();
}
相当于连按两下回车,开始执行transform函数。