c - C语言for循环中的问题

标签 c for-loop

程序编译完美,问题是循环,没有显示位置

这里是库 stdio.h 的包含

int main(void)
{ int x, i=0,j=0, a[100];
  char sal;

    printf("Este programa lee un arreglo de numeros enteros y un numero x, y muestra en pantalla los indices de las posiciones en donde se encuentra ese numero x\n");
    do
    {
        printf("Ingrese un numero: ");
        scanf("%i", &a[i]);
        i++;
        printf("Si desea salir presione s: ");
        scanf(" %c", &sal);
    }while(sal!='s');   

    printf("Ingrese el valor de la variable x: ");
    scanf("%i", &x);

    for (j; j<=i; j++)
    {
        if(a[i]==x) 
            printf("%i",i);
    }
    printf("\n");
}

最佳答案

您的 for 状况循环应该是 j<i , 不是 j<i+1 .当 while 循环退出,i具有下一个输入的值,但尚未设置,因为 循环退出。

您还使用索引 i而不是 jfor -环形。 j是个 运行索引,不是 i :

for (j; j<i; j++)
{
    if(a[j]==x) 
        printf("%i", j);
}

是正确的。

你的 while循环还可以,但有点笨拙。首先你不检查你是否 写入超过 a 的限制.条件应该是

while(sal!='s' && i < (sizeof a / sizeof *a));

这样用户不能输入超过a的值可以坚持。

退出循环的方式也很尴尬,用户必须输入一些东西 不同于 s继续并且它只能是一个字符。这将是 更好:

int c;
char line[100] = { 0 };
do
{
    printf("Ingrese un numero: ");
    scanf("%i", &a[i]);
    while((c = getchar()) != '\n' && c != EOF); // to clear the input buffer
    i++;

    printf("Si desea salir ingrese SALIR. Para continuar presione ENTER: ");
    fgets(line, sizeof line, stdin);

} while(strcmp(line, "SALIR\n") && strcmp(line, "salir\n") && i < (sizeof a / sizeof *a));

请注意 strcmp当字符串相等时返回 0,否则返回非零值。

关于c - C语言for循环中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48858100/

相关文章:

c - 如何用C语言制作世界地图?

c - 免费 - SP16 缓冲器

java - for 循环如何遍历数组?

r - R中for循环和ifelse的组合

r - "for"循环只添加最后的 ggplot 层

c++ - 使用循环遍历目录

c - Cello 库如何能够引入运算符和关键字的使用,即使它们不是 C 库的一部分?

C访问结构中的结构

在 OpenGL 中使用 GTK2+ 时出现编译错误?

swift - 在 Xcode 的 UILabel 上显示 Double 类型的数组