我为这个代码练习做了部分代码,代码正在运行,但我并不真正理解特定部分中发生的事情。
任何人都可以解释这一部分:
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个整数值并使用这两个值制作水平条形图。
感谢。
答案 0 :(得分:3)
scanf()
返回成功收到的字词数。你要求两个术语,所以你要比较结果以确保两者都被收到。然后,您要检查字符术语以确保它是回车符,因此您知道用户在输入数字术语后没有键入任何其他文本。
我非常赞同@ Vlad关于阅读文档的评论。如果您在没有任何实际努力的情况下自行解决问题的帮助,那么当您遇到更复杂的事情时,您就注定要失败。