C 检查字符串中的数字字母的步骤
当我执行这个程序时,k值应该像0,1,2,3,但是它显示了k的一些随机值。 在执行for循环后,“i”的值不会更改。如果“i”的初始值为0。在执行for循环100次之后,“i”的值仍然是0 输入-asd 输出-1234567891011213C 检查字符串中的数字字母的步骤,c,C,当我执行这个程序时,k值应该像0,1,2,3,但是它显示了k的一些随机值。 在执行for循环后,“i”的值不会更改。如果“i”的初始值为0。在执行for循环100次之后,“i”的值仍然是0 输入-asd 输出-1234567891011213 #include<stdio.h> #include<ctype.h> int main() { int i,k=0; char array[100]; scanf("%s",&array);
#include<stdio.h>
#include<ctype.h>
int main()
{
int i,k=0;
char array[100];
scanf("%s",&array);
for(i=0;i<=99;i++)
{
if(array[i]>='a'&&array[i]<='z')
{
k=k+1;
printf("%d",k);
}
}
}
以下方法可能有效
#include<stdio.h>
#include<ctype.h>
int main()
{
int i,k=0;
char array[100];
scanf("%s", array);
for(i=0;array[i] != '\0';i++)
{
if(array[i]>='a'&&array[i]<='z')
{
k=k+1;
printf("%d",k);
}
}
return 0;
}
不要使用到99的for循环。您只希望继续到输入字符串的末尾,即直到找到零终止
永远不要扫描%s,数组;因为输入的长度没有限制。用户可以通过键入大于100的字符串使数组溢出
对于问题1,可以使用while;对于问题2,可以使用fgets,因为它允许您指定最大字符数
然后,您的代码可能如下所示:
#include<stdio.h>
#include<ctype.h>
int main()
{
int i=0,k=0;
char array[100];
fgets(array, sizeof(array), stdin);
while(array[i])
{
if(array[i]>='a' && array[i]<='z')
{
k=k+1;
printf("%d",k);
}
i = i +1;
}
printf("\n");
}
从数组中删除引用符号这并不重要,但您应该在循环中声明i,就像int i=0。。。。。你应该缩进你的代码。显示一些随机值它们不是随机值-它是1 2 3 4 5 6 7 8 9 10 11 12 13。记住这一点,您应该能够找出哪里出错在重要数据之后打印换行符:printf%d\n,k;