当我执行这个程序时,k值应该像0,1,2,3,而是显示k的一些随机值。 在执行for循环后,' i'的值没有变化。如果' i'的初始值执行for循环100次后,该值为' i'仍然是0。
输入-asd
输出-12345678910111213
#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);
}
}
}
答案 0 :(得分:0)
以下内容可行。
#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;
}
答案 1 :(得分:0)
不要使用for循环到99.你只想继续输入字符串的结尾,即直到找到零终止。
永远不要scanf("%s", array);
,因为输入的长度没有限制。用户可以通过键入长于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");
}