题目要求为把第一个数组里面的元音字母提出放到第二个数组里面
switch语句不能走case里面,一直走default,而且一直不停止。
#include
int main()
{
char str[1000];
char vowel[1000];
int i,l=0;
gets(str);
for(i=0;str[i]!='\0';i++)
printf("%c",str[i]);
for(i=0;str[i]=!'\0';i++)
{
switch(str[i])
{
case'a':vowel[l]=str[i];l++;break;
case'e':vowel[l]=str[i];l++;break;
case'i':vowel[l]=str[i];l++;break;
case'o':vowel[l]=str[i];l++;break;
case'u':vowel[l]=str[i];l++;break;
case'A':vowel[l]=str[i];l++;break;
case'E':vowel[l]=str[i];l++;break;
case'I':vowel[l]=str[i];l++;break;
case'O':vowel[l]=str[i];l++;break;
case'U':vowel[l]=str[i];l++;break;
default:continue;
}
}
return 0;
}
for(i=0;str[i]=!'\0';i++)
=!
是
!=
真是=_=!
#include <stdio.h>
int main()
{
char str[1000];
char vowel[1000];
int i, l = 0;
printf("请输入一个字符串:");
fgets(str, 1000, stdin); // 更改使用 fgets 函数读入字符串
for (i = 0; str[i] != '\0'; i++)
{
if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u' ||
str[i] == 'A' || str[i] == 'E' || str[i] == 'I' || str[i] == 'O' || str[i] == 'U')
{
vowel[l] = str[i];
l++;
}
}
vowel[l] = '\0'; // 在 vowel 数组末尾添加 NULL 结尾符
printf("元音字母为:%s\n", vowel);
return 0;
}
在上述代码中,我们使用了 fgets() 函数来代替原先的 gets() 函数,以避免可能的缓冲区溢出漏洞。
同时,在提取元音字母的部分,我们使用 if 语句(而非原先的 switch 语句)。对于每一个字符,我们分别判断它是否是元音字母,如果是,则将其添加进新数组 vowel 中。
最后,我们在 vowel 数组末尾添加了一个 NULL 结尾符,以便后面输出。 最后得到的元音字母组成的字符串将会被输出到控制台上。
1.for循环有一个=!应该修改!=;
2.case 语句后面的参数需要空格。为了美观稍微调整下格式,修改后的代码如下所示:
#include <stdio.h>
#include <string.h>
int main()
{
char str[50];
char vowel[1000];
int i,l=0;
printf("输入字符串:");
gets(str);
for(i=0;str[i]!='\0';i++)
printf("%c",str[i]);
for(i=0;str[i]!='\0';i++)
{
printf("%c",str[i]);
switch(str[i])
{
case 'a':
vowel[l]=str[i];
l++;
break;
case 'e':
vowel[l]=str[i];
l++;
break;
case 'i':
vowel[l]=str[i];
l++;
break;
case 'o':
vowel[l]=str[i];
l++;
break;
case 'u':
vowel[l]=str[i];
l++;
break;
case 'A':
vowel[l]=str[i];
l++;
break;
case 'E':
vowel[l]=str[i];
l++;
break;
case 'I':
vowel[l]=str[i];
l++;
break;
case 'U':
vowel[l]=str[i];
l++;
break;
default:
continue;
}
}
printf("l=%d",l);
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
char str[1000];
char vowel[1000];
int i,l=0;
int vowels[10];
int a_vowels=0, e_vowels=0, i_vowels=0, o_vowels=0, u_vowels=0;
gets(str);
for(i=0;str[i]!='\0';i++)
printf("%c",str[i]);
for(i=0;str[i]=!'\0';i++)
{
switch(str[i])
{
case'a':vowels[a_vowels]=str[i];a_vowels++;break;
case'e':vowels[e_vowels]=str[i];e_vowels++;break;
case'i':vowels[i_vowels]=str[i];i_vowels++;break;
case'o':vowels[o_vowels]=str[i];o_vowels++;break;
case'u':vowels[u_vowels]=str[i];u_vowels++;break;
case'A':vowels[a_vowels]=str[i];a_vowels++;break;
case'E':vowels[e_vowels]=str[i];e_vowels++;break;
case'I':vowels[i_vowels]=str[i];i_vowels++;break;
case'O':vowels[o_vowels]=str[i];o_vowels++;break;
case'U':vowels[u_vowels]=str[i];u_vowels++;break;
default:continue;
}
}
vowels[a_vowels]='\0';
vowels[e_vowels]='\0';
vowels[i_vowels]='\0';
vowels[o_vowels]='\0';然后,我们使用for循环遍历字符串中的每个字符,并使用switch语句来根据字符的值来更新vowels数组中的元素。
最后,我们输出vowels数组中的所有元素,以便用户可以看到每个元音字母的值。
语法:
switch(整型变量)
{
case 整型数字:
// 执行语句
break; // 必须加,否则会向下执行
default:
// 上面没有匹配到时,默认执行这里的语句
}
#include <stdio.h>
int main()
{
int i;
for (i = 0; i < 5; i++)
{
switch (i/3)
{
case 0:
printf("%d\n", i);
case 1:
printf("%d\n", i);
case 2:
printf("%d\n", i);
break;
default:
printf("this is default\n");
}
}
}
因为没加 break 会导致 switch case 贯穿,输出如下:
0
0
0
1
1
1
2
2
2
3
3
4
4