关于strlen我不太明白,我用strlen判断输入是3个字母还是6个字母,比如elo nov 和tam,if(strlenc[i]>3)一直不通过,改为if(strlenc[i]>4)就通过了,这是啥原因呀?
下面是代码
// ConsoleApplication22.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include<string.h>
using namespace std;
void dzh1(int a){
switch (a) {
case 0:cout << "tret"; break;
case 1:cout << "jan"; break;
case 2:cout << "feb"; break;
case 3:cout << "mar"; break;
case 4:cout << "apr"; break;
case 5:cout << "may"; break;
case 6:cout << "jun"; break;
case 7:cout << "jly"; break;
case 8:cout << "aug"; break;
case 9:cout << "sep"; break;
case 10:cout << "oct"; break;
case 11:cout << "nov"; break;
case 12:cout << "dec"; break;
}
}
void dzh2(int a) {
switch (a) {
case 1:cout << "tam"; break;
case 2:cout << "hel"; break;
case 3:cout << "maa"; break;
case 4:cout << "huh"; break;
case 5:cout << "tou"; break;
case 6:cout << "kes"; break;
case 7:cout << "hei"; break;
case 8:cout << "elo"; break;
case 9:cout << "syy"; break;
case 10:cout << "lok"; break;
case 11:cout << "mer"; break;
case 12:cout << "jou"; break;
}
}
int hzd(char a[]) {
if (strcmp(a, "tret") == 0) return 0;
if (strcmp(a, "jan") == 0) return 1;
if (strcmp(a, "feb") == 0) return 2;
if (strcmp(a, "mar") == 0) return 3;
if (strcmp(a, "apr") == 0) return 4;
if (strcmp(a, "may") == 0) return 5;
if (strcmp(a, "jun") == 0) return 6;
if (strcmp(a, "jly") == 0) return 7;
if (strcmp(a, "aug") == 0) return 8;
if (strcmp(a, "sep") == 0) return 9;
if (strcmp(a, "oct") == 0) return 10;
if (strcmp(a, "nov") == 0) return 11;
if (strcmp(a, "dec") == 0) return 12;
if (strcmp(a, "tam") == 0) return 13;
if (strcmp(a, "hel") == 0) return 26;
if (strcmp(a, "maa") == 0) return 39;
if (strcmp(a, "huh") == 0) return 52;
if (strcmp(a, "tou") == 0) return 65;
if (strcmp(a, "kes") == 0) return 78;
if (strcmp(a, "hei") == 0) return 91;
if (strcmp(a, "elo") == 0) return 104;
if (strcmp(a, "syy") == 0) return 117;
if (strcmp(a, "lok") == 0) return 130;
if (strcmp(a, "mer") == 0) return 143;
if (strcmp(a, "jou") == 0) return 156;
}
int main()
{
int n,number;
cin >> n;
char c[101][20],ch;
ch = getchar();
for (int i = 0; i < n; i++) {
cin.getline(c[i], 20);
}
for (int i = 0; i < n; i++) {
if (c[i][0] >= '0'&&c[i][0] <= '9') {//地球文的时候
if (strlen(c[i]) == 1) {
number = c[i][0] - '0';
}
if (strlen(c[i]) == 2) {
number = (c[i][0] - '0') * 10 + c[i][1] - '0';
}
if (strlen(c[i]) == 3) {
number = (c[i][0] - '0') * 100 + (c[i][1] - '0')*10+c[i][2]-'0';
}
if (number <= 12) {
dzh1(number);
cout << endl;
}
else if (number > 12) {
int a[2];
a[1] = number%13;
a[0] = (number / 13);
if (a[1] == 0) {
dzh2(a[0]);
cout << endl;
}
else {
dzh2(a[0]);
cout << " ";
dzh1(a[1]);
cout << endl;
}
}
}
else
{
if (strlen(c[i]) > 4) {
char c1[5],c2[5];
int j,k;
for ( j = 0; j < 3; j++)
c1[j] = c[i][j];
c1[j] = '\0';
for( j=4,k=0;j<strlen(c[i]);j++,k++)
c2[k] = c[i][j];
c2[k] = '\0';
number = hzd(c1) + hzd(c2);
cout << number << endl;
}
else {
cout << hzd(c[i])<<endl;
}
}
}
}
// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单
// 入门使用技巧:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件