我现在正在阅读C ++,并被困在以下程序中。
当我提供带小写字母的字符串时,它提供了一个很好的输出,但是当我使用大写字母时,它会在输入后卡住。
以下是代码:
`#include <iostream>`
#include <stdio.h>
#include "string.h"
using namespace std;
class base {
public:
int array(){
int i, n, p, z = 0;
char g[50];
string c[50];
char abc;
cout << "Enter the name :" << endl;
cin >> g;
i = 0;
while (g[i] != 0)
if ((g[i] >= 'a' && g[i] <= 'z') || (g[i] <= 'A' && g[i] >= 'Z')){
z++;
i++;
}
cout << "name is of " << z << " elements" << endl;
{
for (p = 0; p < z; p++)
cout << "a[" << p + 1 << "]=" << g[p] << endl;
}
cout << "enter the element no.:";
cin >> n;
if(n >0 && n <= z){
cout << "a[" << n << "]=" << g[n-1] << endl;
}
for (p = 0; p < z; p++){
char integer_string[50];
int integer = p+1;
sprintf(integer_string, "%d", integer);
char other_string[50] = "g[";
strcat(other_string, integer_string);
strcat(other_string, "]");
c[p]= other_string;
}
cout << "Enter the character :";
cin >> abc;
for (p = 0; p < z; p++){
if(g[p] == abc){
cout <<abc<< "=a[" << p + 1 << "]"<< endl;
break;
}
}
return 0;
}
};
//--------------------------------------------------------------
int main(){
base b;
b.array();
return 0;
}
你能告诉我我的课程有什么问题吗?
答案 0 :(得分:1)
尝试更改
if ((g[i] >= 'a' && g[i] <= 'z') || (g[i] <= 'A' && g[i] >= 'Z'))
到
if ((g[i] >= 'a' && g[i] <= 'z') || (g[i] >= 'A' && g[i] <= 'Z'))
并删除三个`,第一行有两个,最后一行有一个。
<强>更新强>
将#incude <cctype>
添加到代码的头部并使用
if (islower(g[i]) || isupper(g[i]))
更好。避免依赖字符代码。
if (isalpha(g[i]))
也可以。