2

我在我的 WxDev C++ 上编译了这段代码。从理论上讲,它应该输出用户的答案和正确答案。它确实如此,除了 coranswers 数组的数组编号 0 外,只显示一个空格。我尝试在其他 PC 上编译它,但问题不存在。我尝试重新安装 WxDev,甚至用代码块替换它。好像问题出在我的电脑上。我该怎么办?

#include<stdio.h>
int main(){
char coranswers[20] = {'A', 'B', 'C', 'D', 'E', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A'};
char answers[20];
int count;
int grade = 0;

for(count = 0; count < 20; count++){
          printf("No.%d ", count+1);
          scanf("%s", &answers[count]);
          }
for(count = 0; count < 20; count++){
          printf("No.%d ", count+1);
          printf("Your answers : %c\n", answers[count]);
          if(answers[count] == coranswers[count]){
                            grade++;
                            }
          else{
               printf("Wrong answer, correct answer is %c\n", coranswers[count]);
          }
          }
          return 0;
          }
4

3 回答 3

5

您不想将字符串读入 char 数组

scanf("%s", &answers[count]); // the format string should be "%c"
于 2013-01-25T13:19:32.053 回答
0

你没有得到一个角色。

将 scanf 中的格式说明符从%s更改为%c

scanf("%c", &answers[count])

对于不同系统之间的输出差异,这可能是一个原因。

scanf("%s", &answers[count])

由于answers是一个char数组,所以当你得到一个字符串时不需要& 。你可能正在腐败&answers

于 2013-01-25T13:24:27.200 回答
0

通常我%s只用于偶数字符,但有点不同->

char temp[8];

scanf("%s", temp);
answers[count] = temp[0];
于 2013-01-25T13:27:42.343 回答