-3

我为课堂练习做了部分代码并且代码正在运行,但我并不真正理解特定部分中发生了什么。

谁能解释一下这部分:

if(scanf("%d%c", &num1, &term1) != 2 || term1 != '\n'){

    printf("ERROR! You should type an integer e.g 5, 80, 100\n");

} else { ....

完整的代码是:

#include <stdio.h>

int main(){

int num1,num2;

char term1,term2;

printf("Type your first integer\n");

if(scanf("%d%c", &num1, &term1) != 2 || term1 != '\n'){

    printf("ERROR! You should type an integer e.g 5, 80, 100\n");

} else {

    printf("Type your second integer\n");

    if (scanf("%d%c", &num2, &term2) != 2 || term1 != '\n'){

        printf("ERROR! You should type an integer e.g 5, 80, 100\n");

    } 

    printf("\n%d", num1);
    for (int i=0; i<num1; i++) {
        printf(" *");
    }

    printf("\n");

    printf("%d", num2);
    for (int j=0; j<num2; j++) {
        printf(" *");
    }
}
}

练习是制作一个请求 2 个整数值的程序,并用这两个值制作一个水平条形图。

谢谢。

4

1 回答 1

3

scanf()返回它成功接收的术语数。您要求两个术语,因此您正在比较结果以确保两者都已收到。然后,您将检查字符术语以确保它是回车,因此您知道用户在输入数字术语后没有键入任何其他文本。

我非常同意@Vlad 关于阅读文档的评论。如果您针对无需任何实际努力即可自行解决的问题发帖寻求帮助,那么当您接触到更复杂的事情时,您注定要失败。

于 2012-09-27T17:25:39.757 回答