输出格式不对是什么鬼

qq_34612167 2016-04-10 09:21:39
编写函数去除字符串中包含的非字母字符(不包括空格),并将小写字母转换成大写字母。
注意,不在函数中输出。输入输出应在主函数中进行。

输入格式:
待转换的字符串,字符串间会包含空格,长度不超过200。

输出格式:
转换后的字符串



#include <iostream>
using namespace std;
void T(char a[],int n)
{
int j,i;
i=0;
char b[200];
j=0;
while(a[i]!='\0')
{
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')||(a[i]=' '))
{
if((a[i]>='a'&&a[i]<='z'))
{
a[i]=a[i]+'A'-'a';
}
b[j]=a[i];
}
i++;
j++;

}

}
int main ()
{
char str[200];
cin.getline(str,200);
T(str,200);
cout<<str;
return 0;
}
...全文
158 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-04-11
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
小灸舞 2016-04-10
  • 打赏
  • 举报
回复
有几个问题:
1.if判断最后一个条件,应该是==楼主少些了一个等号
2.j++;的地方错了,应该是只有满足if条件的时候才使j++
3.数组b应该手动添上'\0',或者初始化的时候这样写char b[200] = {0};
4.应该用strcpy(a, b);不然怎么带回数组b的值?
(我在代码里都标注了这4处)

#include <iostream>
using namespace std;
void T(char a[],int n)
{
int j,i;
i=0;
char b[200];
j=0;
while(a[i]!='\0')
{
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')||(a[i]==' ')) //第1处
{
if((a[i]>='a'&&a[i]<='z'))
{
a[i]=a[i]+'A'-'a';
}
b[j]=a[i];
j++; //第2处
}
i++;
}
b[j] = '\0'; //第3处
strcpy(a, b); //第4处
}
int main ()
{
char str[200];
cin.getline(str,200);
T(str,200);
cout<<str;
return 0;
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧