Member 13211362 Ответов: 1

Как правильно запустить программу? Всякий раз, когда я запускаю программу, она говорит, что файл .exe перестал работать. Пожалуйста помочь


#include<stdio.h>
#include<conio.h>
int main()
{
	int a,b,c;
	
	printf("\nEnter the value of a : ");
	scanf("%d",a);
	
	printf("\nEnter the value of b : ");
	scanf("%d",b);
	
	printf("\nEnter the value of c : ");
	scanf("%d",c);
	
    if(a>b)
	{
		if(a>c)
		printf("\n%d is the largest number",a);
		else
		printf("\n%d is the largest number",c);
	}
	else
	{
		if(b>c)
		printf("\n%d is the largest number",b);
		else
		printf("\n%d is the largest number",c);
	}
}


Что я уже пробовал:

Когда я запускаю программу, после ввода значения a она говорит ,что. exe перестал работать.
Пожалуйста, помогите мне.

[no name]

Я предполагаю, что ваша проблема заключается в том, чтобы либо изменить свой спецификатор в scanf, либо изменить объявление a, b, c

1 Ответов

Рейтинг:
2

OriginalGriff

scanf требует адреса переменных, в которых вы хотите хранить значения teh, а не содержимое teh. Итак, когда вы пишете это:

int a,b,c;
...
scanf("%d",a);
Вы передаете случайное значение (так как вы ничего не выделили a тем не менее) как адрес, по которому вы хотите поместить результат. Так оно и есть, обнаруживает, что его не существует, и ваше приложение выходит из строя.

Когда вы вызываете функцию в C или C++, все параметры передаются по значению, а не по ссылке - создается копия содержимого, и оно передается, а не что-то, что говорит, откуда оно взялось. Если подумать, это чертовски хорошая идея:
void DoSomething(int i)
   {
   i = 1 + 1;
   }
Это нормально, когда вы называете это так:
int val = 666;
DoSomething(val);
Так или иначе, но если вы называете это так:
DoSomething(666);
Тогда любой вызов "pass by reference" вызовет у вас реальные проблемы, так как значение постоянного числа должно было бы измениться!

Попробуйте передать адрес a вместо значения:
scanf("%d",&a);
И не забывай b и c либо!


Maciej Los

5ед!