当我执行这个程序时,k 值应该像 0,1,2,3 一样,但它显示了 k 的一些随机值。执行for循环后'i'的值没有变化。如果'i'的初始值为0。执行100次for循环后'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);
}
}
}
不要使用到 99 的 for 循环。您只想继续到输入字符串的末尾,即直到找到零终止。
永远不要这样做,scanf("%s", array);
因为输入的长度没有限制。用户可以通过键入长度超过 100 的字符串来溢出数组。
对于问题 1) 您可以使用 awhile
并且对于问题 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");
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句