提问人:Cadefr6554 提问时间:10/29/2023 最后编辑:il_raffaCadefr6554 更新时间:10/30/2023 访问量:45
C.程序为用户输入两种类型的号码,并给出输出用户输入多少个号码
c program for user to input two type of number and give output how many number user input
问:
用户需要输入2种输入3次,其中1号为合格,2号为失败...程序需要给出用户输入数字 1 和数字 2 的摘要
#include <stdio.h>
int main() {
int result[3];
int pass;
int fail;
for (int i = 1; i <= 3; i++) {
printf("Enter Result (Pass=1 Fail=2) :");
scanf("%d", &result[i]);
}
if (&result == 1) {
pass = pass + 1;
}
if (&result == 2) {
fail = fail + 1;
}
printf("%d", pass);
printf("%d", fail);
}
答:
1赞
Ted Lyngmo
10/29/2023
#1
一些问题:
&result == 1
获取数组的地址,并尝试将其与整数进行比较。如果代码甚至编译,这将很少是真的。您想与 (或 ) 进行比较。result
1
result[index]
1
2
- 您读取循环中的所有输入,但在循环后只进行比较一次。
- 数组是从零开始的。由于是 ,因此只允许访问 和 。
result
int[3]
result[0]
result[1]
result[2]
- 两者都未初始化,并且包含不确定的值。读取 中必需的这些内容将使程序具有未定义的行为。将它们初始化为 。
pass
fail
pass = pass + 1;
0
我建议不要使用数组,然后与循环和循环内部进行比较。1
2
例:
#include <stdio.h>
int main(void) {
int result;
int pass = 0;
int fail = 0;
for (int i = 0; i < 3; i++) {
printf("Enter Result (Pass=1 Fail=2) :");
if (scanf("%d", &result) != 1) {
fputs("Erroneous input\n", stderr);
return 1;
}
if (result == 1) {
pass = pass + 1;
} else if (result == 2) {
fail = fail + 1;
} else {
printf("The invalid input %d will not be counted\n", result);
}
}
printf("pass: %d\n", pass);
printf("fail: %d\n", fail);
}
评论
0赞
Ted Lyngmo
10/29/2023
@Cadefr6554 不客气!很高兴它有所帮助!
评论
&result == 1
result[0]
result[1]
result[2]