计算字符串中元音和辅音的数量

时间:2014-01-24 01:42:02

标签: c string

我继续收到[链接器错误] C:\ Users etc和collect2:我在程序中返回了1个退出状态代码错误,但我没有看到它有什么问题。这是我的计划:

#include<stdio.h>
#include<string.h>
#include<conio.h>

int main (){
int vowels = 0, cnsnts = 0;
int i, length;
char string[100];

printf("Enter sentence:");
gets(string);
length = strlen(string);

for(i = 0; i < length; i++){
    switch(toUpper(string[i])){
        case 'A':
            vowels++;
            break;
        case 'E':
            vowels++;
            break;
        case 'I':
            vowels++;
            break;
        case 'O':
            vowels++;
            break;
        case 'U':
            vowels++;
            break;
        default:
            cnsnts++;
    }
}

printf("The number of vowels are %d.\n", vowels);
printf("The number of consonants are %d.\n", cnsnts);

system("pause");
return 0;

}

3 个答案:

答案 0 :(得分:5)

更改

toUpper(string[i])  

toupper(string[i])  

添加<ctype.h>标题并打开编译器警告。

答案 1 :(得分:1)

首先添加

#include <ctype.h>

然后像这样改变驼峰案toUpper

toupper(string[i])  

答案 2 :(得分:0)

您必须#include <ctype.h>并错误地将u中的upper大写。您的开关也可以稍微降低

switch(toupper(string[i])) {
    case 'A':
    case 'E':
    case 'I':
    case 'O':
    case 'U':
        vowels++;
        break;
    default:
        cnsnts++;
}

这种风格利用了堕落。如果案例未以break(或returncontinuegoto)结尾,则会在其下方输入案例。这将继续,直到命中控制流改变关键字。上面的开关在功能上与原件相同,但要短得多。

您还可以考虑在string[i]

之前检查isalpha是否为switch的字母
if (!isalpha(string[i])) continue;