#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.