我是C语言新手,正在做一些基本的事情。 我正在做一个简单的测验,由于某种原因,当我尝试打印问题的选项时,它不起作用。
main.c
#include <stdio.h>
#include "app.h"
int main(void){
startQuiz();
return 0;
}
app.h
#include <stdio.h>
#include <stdlib.h>
int Question(char text[100], char options[4][40], int rightAns);
void startQuiz(void){
char q1[4][40] = {
{'"', 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '"'},
{'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'},
{'p', 'r', 'i', 'n', 't', '(', '\'', 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '\'', ')'},
{'\'', 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '\''}
};
char q2[4][40] = {
{'g', 'e', 't', '_', 't', 'y', 'p', 'e', '(', 'x', ')'},
{'p', 'r', 'i', 'n', 't', '(', 'x', ')'},
{'x', '.', 't', 'y', 'p', 'e'},
{'t', 'y', 'p', 'e', '(', 'x', ')'}
};
char q3[4][40] = {
{'x'},
{'h', 'e', 'l', 'l', 'o', '_', 'w', 'o', 'r', 'l', 'd'},
{'e', 'x', 'e', 'c'},
{'c', 'o', 'm', 'm', 'a', 'n', 'd'}
};
int Q1 = Question("what is the output of `print('hello world')`", q1, 2);
int Q2 = Question("how to get a type of a variable?", q2, 4);
int Q3 = Question("choose a not valid name for argument in python", q3, 3);
printf("you got: %d / 3\n", Q1 +Q2 +Q3);
};
int Question(char text[100], char options[4][40], int rightAns){
int ans;
printf("\n%s.\n", text);
for(int i; i<4; i++){
printf("%d. %s\n", i+1, options[i]);
// I dont want to add to i I just want to print i+1
}printf(">>> ");
scanf("%d", &ans);
if(ans==rightAns){
return 1;
}return 0;
};
应该是一个测验,我得到的输出是:
它不打印我给它的选项:
答案 0 :(得分:2)
for(int i; i<4; i++){
由于您没有为i
分配值,因此它可以有任何值。这就是未定义的行为。您应该始终确保变量在使用之前具有值。
这应该可以解决您的代码...
for(int i=0; i<4; i++){
此外,初始化选项的方式确实很难看懂。您可以输入字符串,而不是列出每个字符。
char q1[4][40] = {
"\"hello world\"",
"hello world",
// etc....
};