ahmedarifhasan Ответов: 2

Почему это неправильно? Что делать с двумя переменными в условии if? Как это исправить?


#include< stdio.h>
тап_п()
{int c=0, n, k, i=1;
printf ("введите 'n' & ' k ' соответственно:\n");
то scanf("%д %д",&амп;Н&усилителя;к);
int t[n];
printf ("введите %d чисел:\n", n);
для (i=0;i< n; i++)
{scanf ("%d", t[i]);}
printf ("количество чисел, делящихся на %d, равно:\n", k);
для (i=0;i< n; i++)
{ если(t[i]%k==0) /*оба являются переменными, что делать*/
c=c++;
}
printf ("%d", c);
}

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

я попробовал приведенный выше код для поиска чисел, делящихся на k, но в условии if и t[i], и k являются константами, я не знаю, что делать!

Patrice T

Опишите свою проблему, скажите, что все идет не так.
добавьте пример ввода, вывода и фактического результата.

2 Ответов

Рейтинг:
20

OriginalGriff

Они не являются постоянными.
t представляет собой массив целых чисел, содержащий n элементы.
k это целочисленная переменная, значение которой задается пользователем.

Проблема гораздо глубже...
Замените эту строку:

c=c++;
С этим:
c++;
И это может сработать лучше - тогда посмотрите сюда и поймете, почему: Почему x = ++x + x++ дает мне неправильный ответ?[^]

Кстати: сделайте отступ в своем коде!
Гораздо легче понять, что происходит...
#include<stdio.h>
int main()
    {
    int c=0,n,k,i=1;
    printf("Enter 'n'&'k'respectively:\n");
    scanf("%d %d",&n,&k);
    int t[n];
    printf("Enter %d numbers:\n",n);
    for(i=0;i<n;i++)
        {
        scanf("%d",t[i]);
        }
    printf("count of numbers divisible by %d is:\n",k);
    for(i=0;i<n;i++) 
        { 
        if(t[i]%k==0)
            {
            c++;
            }
        }     
    printf("%d",c);
    }


Ravi Bhavnani

Незначительная опечатка: отсутствует ")" в состоянии "если".

/ Рави

OriginalGriff

:вздыхать:
Скопируйте, вставьте и потеряйте что-нибудь...

Исправлено! :большой палец вверх:

Рейтинг:
0

Patrice T

Прежде всего, научитесь правильно делать отступы в вашем коде, это покажет его структуру и поможет чтению и пониманию. Не пытайтесь упаковать вещи в одну строку, это не делает код быстрее, просто его труднее читать.

#include<stdio.h>
int main()
{
	int c=0,n,k,i=1;
	printf("Enter 'n'&'k'respectively:\n");
	scanf("%d %d",&n,&k);
	int t[n];
	printf("Enter %d numbers:\n",n);
	for(i=0;i<n;i++)
	{
		scanf("%d",t[i]);
	}
	printf("count of numbers divisible by %d is:\n",k);
	for(i=0;i<n;i++)
	{
		if(t[i]%k==0)  /*both are variables, what to do*/
			c=c++;
	}
	printf("%d",c);
}

Профессиональные редакторы программистов имеют эту функцию и другие, такие как сопоставление скобок и подсветка синтаксиса.
Notepad++ Home[^]
личные[^]

Правильный синтаксис для
c=c++;

является
c++;

Совет: вам не нужен массив для этой проблемы, каждое значение, которое вы храните в массиве, повторно используется только один раз.
-----
Цитата:
но в условии if и t[i], и k являются константами, я не знаю, что делать!

Отладчик покажет вам, что такое qrored в массиве t.
Отладчик поможет вам понять, что происходит, показав, что он делает.

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик-Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.