У меня проблема с кодом на C, и я не вижу ошибки. Это простая программа

#c

#c

Вопрос:

Я новичок в программировании. Для среды я использую Windows PowerShell ISE. Я получаю странную ошибку и не знаю, в чем может быть проблема.

Это код, который я использую:

 #include <stdio.h>

int main(Int argc, char **argv){

int n;
printf ("Enter a number: ");

int seconds = (n % 60);
int minutes = (n % 3600) / 60;
int hours = (n % 86400) / 3600;
int days = (n % (86400 * 30)) / 86400;

printf ("Pretvorjeno število v sekunde, minute, ure ter dneve: ");
printf (%d  " dni "  %d  " ur "  %d  " minut in "  %d  " sekund", days, hours, minutes, seconds);
}
  

Ошибка, которую я получаю:
Сообщение об ошибке

Комментарии:

1. Измените Int argc на int argc . C чувствителен к регистру.

2. Вам нужно прочитать printf документацию, на данный момент вы злоупотребляете ею.

3. итак, где инициализируется n

4. и где введено число?

5. и последним printf должен быть printf («%d dni %d ur %d минута в %d секунд», дни, часы, минуты, секунды);

Ответ №1:

Ваша первая ошибка исходит из того, что вы написали внутри метода main

 
int main(){
  

Вам нужно, чтобы пользователь вводил входные данные, программа не знает, что такое n .

 int n;
printf ("Enter a number: ");
scanf_s("%d", amp;n);
  

в последней строке вам нужно изменить ее на

 printf ("%d dni %d ur %d minut in %d sekund", days, hours, minutes, seconds);
  

Ответ №2:

От

 int main(Int argc, char **argv){
  

Для

 int main(int argc, char **argv) {
  

От

 printf (%d  " dni "  %d  " ur "  %d  " minut in "  %d  " sekund", days, hours, minutes, seconds);
  

Для

 printf ("%d dni %d ur %d minut in %d sekund", days, hours, minutes, seconds);
  

Читайте, читайте, читайте. Документация очень важна. Вот сайт, удобный для начинающих.

Комментарии:

1. Да, это была ошибка. И прежде чем вы спросили меня, уверен ли я, что я компилирую для c. Программа автоматически создает расширение .c для файла, поэтому я предполагаю, что это на самом деле C: D Я сделал еще один комментарий под первым ответом с еще большим количеством ошибок: O

Ответ №3:

Исправленная версия :

 #include <stdio.h>

int main(){
  int n;
  printf ("Enter a number: ");

  if (scanf("%d", amp;n) == 1) {
    int seconds = (n % 60);
    int minutes = (n % 3600) / 60;
    int hours = (n % 86400) / 3600;
    int days = (n % (86400 * 30)) / 86400;

    printf ("Pretvorjeno število v sekunde, minute, ure ter dneve: ");
    printf ("%d dni %d ur %d minut in %d sekund", days, hours, minutes, seconds);
  }
  return 0;
}
  

Я удалил argc / argv, потому что они не используются

Я добавил scanf для чтения числа и, конечно, проверки успешности чтения (проверить, является ли число положительным, тоже может быть интересно)

Я добавил новую строку в printf и исправил формат

Компиляция и выполнение :

 pi@raspberrypi:/tmp $ gcc -Wall -Wextra -pedantic c.c
pi@raspberrypi:/tmp $ ./a.out
Enter a number: 12345678
Pretvorjeno število v sekunde, minute, ure ter dneve: 22 dni 21 ur 21 minut in 18 sekund
  

Комментарии:

1. @Matic1295 вы уверены, что скомпилировали на C?

2. Тот факт, что ваши скриншоты показывают, что вы запускаете его как .ps1 файл, вызывает беспокойство

3. @Matic1295 онлайн компиляция / выполнение: onlinegdb.com/Hy66syB5N

4. @bruno большое вам спасибо за онлайн-решение. Пока это будет работать для меня. Но я все еще не понимаю, почему. Даже если я перейду вручную (через PowerShell), чтобы выполнить файл, он тот же.

5. @Matic1295 Я не думаю, что интегрированная среда сценариев Windows PowerShell (ISE) квалифицируется как компилятор C.