1

我一直在用 C 语言编写这个程序,但我不明白为什么它的打印超出了参数状态的范围。这是程序,有人可以帮助我吗?另外,我如何获得输入以拒绝不在指定范围内的数字?提前致谢!

#include <stdlib.h>
#include <stdio.h>
#define LEN 64

int main(){

    char line[LEN];
    printf("Enter a #, 32-127: ");
    fgets(line,LEN,stdin);
    int i = atoi(line);

    printf("Enter a #, %d-127: ",i);
    fgets(line,LEN,stdin);
    int j = atoi(line);

    for(i;j;i++)
        printf("ASCII value of character %d: %c\n",i,i);

    return(EXIT_SUCCESS);
    }
4

2 回答 2

1

您的“for”循环不正确。相反,请尝试以下操作:

while ( i <= j ) {
   printf("ASCII value of character %d: %c\n",i,i);
   i++;
}

或者

   for ( int idx = i; idx <=j; idx++) {
     printf("ASCII value of character %d: %c\n",idx,idx);
    }

对于验证,只需执行“if”语句,并将输入值与您的验证范围进行比较。把它留给你。

于 2013-09-29T21:52:32.113 回答
1

您需要清楚地了解这条线在做什么:

for(i;j;i++)

在此处阅读有关 for 语句的更多信息

for (initialization; condition; increment){
       body
}

在您的代码中,j是您的condition. 在C中,zero == falsedifferent from zero is true。因此,jnever 变为零,因此循环变为无限循环。

试着用 for 语句多解释一下你想达到什么目的,这样我们就能更好地帮助你。

于 2013-09-29T21:52:50.237 回答