По сути, я проходил урок по программированию на C, в котором мы используем Linux-машины для написания и компиляции нашего кода.
Приведенная ниже программа является частью нашего первого задания, я скомпилировал ее и запустил на Linux во время урока без проблем, но, забрав ее домой, я не могу на всю жизнь заставить ее скомпилировать в Visual Studio 2010 Ultimate или Eclipse IDE с компилятором MinGW.
Существует ли типичная проблема с переключением между двумя операционными системами, которая приводит к сбою моего кода? или я, будучи новичком, написал какой-то ужасный код, который просто не согласуется с VS 2010 или Eclipse?
Попытки исправить сообщения об ошибках, которые я получаю от VS 2010, кажутся бесполезными, поэтому я склоняюсь к тому, чего не хватает моему компьютеру. Я также настроил VS 2010 для компиляции кода на C, так что я не думаю, что это проблема.
ошибок от VS2010:
project1a.c (38): ошибка C2143: синтаксическая ошибка: отсутствует ';' перед «типом»
project1a.c (41): ошибка C2065: 'i': необъявленный идентификатор
project1a.c (44): ошибка C2065: 'userArray': необъявленный идентификатор
project1a.c (44): ошибка C2065: 'i': необъявленный идентификатор
project1a.c (44): ошибка C2109: для индекса требуется массив или тип указателя
project1a.c (51): ошибка C2065: 'userArray': необъявленный идентификатор
Между этими ошибками существует несколько случаев ошибки 'i': необъявленный идентификатор.
#include <stdio.h>
#include <stdlib.h>
int n;
float total, avg;
int sumavg(void);
int main(void)
{
//First time scan for the value to be assigned to n.
printf("Hey, Enter a number or 999 to exit:> ");
scanf("%d", &n);
//if n == 999 then exit the program
while(n != 999)
{
//enter the sumavg function.
sumavg();
//Try to run the program again.
printf("Hey, Enter a number or 999 to exit:> ");
scanf("%d", &n);
}
//exit program.
return EXIT_SUCCESS;
}
int sumavg(void)
{
//Define a number that will be used for the array size.
printf("Hey, now enter %d more numbers:>\n", n);
//Define the size of array using the number assigned to the variable "n".
int userArray[n], i;
//Construct the array, one position at a time using the for loop.
for (i = 0; i < n; i++)
{
//Assign a value to userArray[i] while i < n(the size of the array).
scanf("%d", &userArray[i]);
}
//Calculate the sum by looping through each position in the userArray[i].
for (i = 0; i < n; i++)
{
//Take the current position in the array and add it to the variable: "total"
total += userArray[i];
}
//Calculate the average
avg = total / n;
//Print the sum followed by the average
printf("Sum is: %.1lf\n", total);
printf("The average is: %.1lf\n", avg);
//reset total and avg in case future iterations are performed.
total = 0;
avg = 0;
}