Рейтинг:
1
CPallini
Типы (и значения), передаваемые в scanf
вызов неверен. Попробуй
#include <stdio.h>
#include <stdlib.h>
void test();
int check_ans(int answer);
int questions();
int main()
{
int a, s;
system("cls");
printf("\t\tC Program Test");
test();
a = questions();
s = check_ans(a);
printf("your score is %d\n", s);
return 0;
}
void test()
{
char name[60];
printf("\n\n");
printf("\nEnter Your Name:");
scanf("%s", name);
}
int questions()
{
int answer;
system("cls");
printf("\t\tC Program Test");
printf("\nQ1. What value is assigned to the type double variable x by the statement: x = 25.0 * 3.0 / 2.5");
printf("\n1. 20.8");
printf("\n2. 30.0");
printf("\n3. 15.5");
printf("\n4. None of the above");
printf("\n\nQ1 answer:");
scanf("%d", &answer);
return answer;
}
int check_ans(int answer)
{
return (answer == 2 ) ? 10 : 0;
}
Member 13396113
Дело в том, что есть 15 вопросов, программа на самом деле не закончена, так что есть много вещей, которых не хватает. Вот почему у меня есть массив для ответов. Но по какой-то причине я не могу позволить пользователю хранить в нем значения. Программа просто заканчивается.
Member 13396113
Кроме того, когда я делал ваш код для массива имен, он печатал только первую сохраненную строку. Я попробовал это сделать
char name[4][40];
printf("Enter your name:");
scanf("%s %s %s %s", name[0], name[1], name[2], name[3]);
printf("Name:%s %s %s %s", name[0], name[1], name[2], name[3]);
но проблема с этим заключалась в том, что пользователь должен был каждый раз вводить 4 имени, иначе это не сработает.
Рейтинг:
0
Richard MacCutchan
Ваш test
функция считывает только один символ, поэтому при следующем вызове scanf
он будет читать следующие символы с клавиатуры. Вы также ничего не делаете с любым входным сигналом, который вы принимаете в name
массив, так что эта функция не служит никакой цели. Кроме того, вы звоните questions
с неинициализированной переменной (a
) так что это будет содержать мусор. Но это на самом деле не имеет значения, так как вы никогда не используете эту переменную в questions
функция.
Вы должны вернуться к своим учебным заметкам и узнать, как правильно обращаться к массивам, как их использовать scanf
, как использовать параметры в вызовах функций и как возвращать информацию из функций.
Member 13396113
Дело в том, что есть 15 вопросов, программа на самом деле не закончена, так что есть много вещей, которых не хватает. Вот почему у меня есть массив для ответов. Но по какой-то причине я не могу позволить пользователю хранить в нем значения. Программа просто заканчивается. А что касается имени, я назову его позже, когда буду готовиться к сдаче анализов. Я все еще возился с переменной (а) ли поставить его на вопросы или check_ans вот почему.
Richard MacCutchan
Забудьте, сколько вопросов существует, так как каждый из них будет рассматриваться точно так же. Вам нужно захватить имя пользователя и сохранить его в переменной в вашем основном методе, иначе оно просто исчезнет. Функция вопросов должна иметь следующий дизайн:
int askquestion(char* question, char** answers)
{
the code should display the question, accept the answer(s) and then return the result.
}
Member 13396113
#include <stdio.h>
#include <stdlib.h>
int name();
int questions(int i);
int main()
{
int a, percentage, s;
system("cls");
printf("\t\tC Program Test");
name();
s = questions(a);
printf("\nYOUR TEST RESULTS:");
printf("\n\n");
printf("\nYou got %d out of 15 score.", s);
percentage = s/15*100;
printf("\nThe percentage of your correct answer is %d%%", percentage);
return 0;
}
int name()
{
char name[100];
printf("\n\n");
printf("\nEnter Your Name:");
gets(name);
}
int questions(int i)
{
int score=0, user_answer[15];
int test_answer[15]= {2, 3, 4, 1};
system("cls");
printf("\t\tC Program Test");
printf("\n\nQ1. What value is assigned to the type double variable x by the statement: x = 25.0 * 3.0 / 2.5");
printf("\n1. 20.8");
printf("\n2. 30.0");
printf("\n3. 15.5");
printf("\n4. None of the above");
printf("\n\nQ1 answer:");
scanf("%d", &user_answer[0]);
printf("\n\n\n");
printf("\nQ2. In which step of the software development method are the problem inputs and outputs identified?");
printf("\n1. Design the algorithm");
printf("\n2. Implementing the algorithm");
printf("\n3. Analyzing the problem");
printf("\n4. Specifying the problem");
printf("\n\nQ2 answer:");
scanf("%d", &user_answer[1]);
printf("\n\n\n");
printf("\nQ3. The relational operator <= means ______");
printf("\n1. Greater than or equal to");
printf("\n2. Is equal to");
printf("\n3. Is not equal to");
printf("\n4. Less than or equal to");
printf("\n\nQ3 answer:");
scanf("%d", &user_answer[2]);
printf("\n\n\n");
printf("\nQ4. What value is assigned to fee by the if statement when speed is 75?");
printf("\nif(speed > 35)\n\tfee = 20.00;\nelse if(speed > 50)\n\tfee = 40.00\nelse if(speed>75)\n\tfee = 60.00;");
printf("\n1. 40.00");
printf("\n2. 60.00");
printf("\n3. 20.00");
printf("\n4. None of the above");
printf("\n\nQ4 answer:");
scanf("%d", &user_answer[3]);
printf("\n\n\n");
for(i=0; i<4; i++)
{
if(user_answer[i] == test_answer[i])
score++;
}
return score;
}
но по какой-то причине процент всегда приходит как 0.00%