我是编程新手,我目前正在学习C语言。这是我的代码。我尝试了不同的修复方法,例如确保我有分号。但是,当我在在线编译器中检查我的代码时,我总是得到未使用的变量,而数据定义没有类型或存储类。我保证,任何信息都会对我有所帮助,所以请告诉我您认为可能的解决方案。
//C code
//This program will calculate the average speed of passing cars using a WHILE-END loop
//Developer: Jasmine Tucker
//Date: 7 Sept 2014
#include <stdio.h>
Int main ()
{
/* define variable */
int average_speed;
int car_count;
int car_speed;
};
/* set variable values */
average_speed= 0;
car_count=0;
car_speed=0;
/*WHILE-END loop */
WHILE (car_count > 0)
{
printf (“Enter the car’s speed %s:”, car_count);
scanf (“%d”, & car_speed);
average_speed= car_speed/ car_count
car_count++;
}
printf (“\n The average speed is %d miles per hour. \n”, (average_speed));
return 0;
}
答案 0 :(得分:3)
少数事情:
Int main()
应该是
int main()
这可能是一个简单的错字,或语法检查的不幸副作用。
通过研究C中的标准类型,你可能做得很好。
除了修饰符之外,并没有很多,除了特殊类型_Bool, _Complex, _Imaginary
,它们都是小写的。 (对于关键字也是如此)。
存储类是指不太常用的东西,或者至少超出了本程序的范围(自动,寄存器,静态,外部)。
以下定义也使用int
类型,因此我将在此处重现它们[原文如此]。
/* define variable */
int average_speed;
int car_count;
int car_speed;
};
/* set variable values */
average_speed= 0;
car_count=0;
car_speed=0;
正如其他人所提到的,在声明三个变量之后会有一个无关的大括号。 };
(注意他看起来多么悲伤。)
如果你来自一种在花括号后需要分号的语言,你就有一些难以打破的习惯。
在任何情况下,注释掉都应该删除几个错误:
/* }; */
因为这有效地关闭了main()
。
正如用户haini指出的那样,您实际上可以将变量定义拉到main()
之外,允许任何函数访问它们。 (跨源文件使用会显示前面提到的extern
)。
一些程序员使用特殊的变量[pre | suf]修正来区分全局变量和局部变量。
int g_average_speed;
int g_car_count;
int g_car_speed;
由于这些变量需要在使用前初始化,您可以在定义中执行此操作:
int g_average_speed = 0;
int g_car_count = 0;
int g_car_speed = 0;
通常不鼓励使用全局变量,而是更喜欢基于参数的变量共享,这在引入多个函数后更有意义。
如前所述,&#39; WHILE&#39;不是关键字,而while
是关键字。与变量类型一样,关键字列表非常短,主要是小写。最好知道关键字,以避免将它们用于变量/函数命名。
就逻辑而言,while-loop
将永远不会开始,因为您已将car_count > 0
初始化为0,因此无法满足表达式car_count
。
虽然很容易对某个值进行硬编码,但您可能希望将另一个变量(例如max_cars
)设置为上限并检查car_count < max_cars
。 (不要忘记你从0开始计算)。
/* define variable */
int max_cars = 10;
/* rest of variables, init */
while( car_count < max_cars )
现在,除了有趣的语录之外&#39>“&#39;这会给你带来麻烦,average_speed = car_speed / car_count
再次指出scanf()
丢失的分号,你应该尝试在心理上逐步完成你的循环。永远不要忘记用户本身就是邪恶的,并且在被允许与程序交互时会尝试不可见的值(int
)。使用%d
和unsigned
时,负值和0不是不可能的,但您可能会期望某些车辆停在&#39;因此速度为0.在该行下,可以使用%u
修饰符和if
。
在任何情况下,养成用户输入消毒和/或给用户选择退出的选择(即&#34; TYPE -1打破...&)是一件好事。 #34;),并使用break
检查无效或退出代码。 (average_speed
可能是在这种情况下要追求的关键字)
您的car_count
计算似乎并不合适。不要忘记你将值存储到整数中,这样你就会有一些舍入错误。
首先想一想当你的初始案件到来时会发生什么 - car_count == 9
是什么,以及当你除以那个值时会发生什么?
然后,考虑最后的情况,(假设你的上边界是10)car_speed / car_count
。您将average_speed
分配给/* define variable */
int total_speed = 0;
。这真的是你想要的吗?
您可以通过“跟踪”来最小化舍入错误和更难计算。总速度,只有一个平均计算。
while
在total_speed += car_speed;
循环中:
total_speed = total_speed + car_speed;
或
average_speed = total_speed / (car_count - 1);
然后在循环之外:
car_count
(调整到average_speed
是必要的,因为值在最后一个循环后递增。)
注意:在此有限示例中,printf()
变量可能不是必需的,除非在{{1}}之外使用。
答案 1 :(得分:1)
我看到您的代码中存在一些问题。
代码永远不会进入while循环。如果将它初始化为0,它将永远不会大于0,因此永远不会进入循环。
即使它进入循环,这也是一个无限循环。继续向变量添加一个将使变量始终大于0,因此永远不会退出循环。
MAJOR ONE:您的变量位于main之内,但您在main之外使用它们!
#include <stdio.h>
Int main ()
{
/* define variable */
int average_speed;
int car_count;
int car_speed;
**};**
(不确定这个)但你在方法声明中的单词int中有一个大写的I,而大写的WHILE应该是while。
答案 2 :(得分:-1)
不在main()函数中的代码会导致错误。
//C code
//This program will calculate the average speed of passing cars using a WHILE-END loop
//Developer: Jasmine Tucker
//Date: 7 Sept 2014
#include <stdio.h>
/* define variable */
//You Can define global variables or local variables. If you want to use them outside your
//function you Need to declare them globally as done here
int average_speed;
int car_count;
int car_speed;
//This is where the Magic happens. If you execute your program it will jump to the main
//function and execute whatever is in there
int main ()
{
/* set variable values */
average_speed= 0;
car_count=0;
car_speed=0;
/*WHILE-END loop */
//The while Loop is not a function, you Need to put it in main() so it gets executed
while(car_count > 0)
{
//You did use very strange signs here. The correct ones are These: ""
printf("Enter the car’s speed %s:", car_count);
scanf("%d", &car_speed);
average_speed= car_speed / car_count; //You Forget a semicolon indeed ;-)
car_count++;
}
printf("\n The average speed is %d miles per hour. \n", average_speed);
return 0;
} //semicolons at the end of a function are not used in C. They are used if you want to define a structure.
我强烈建议你从基础书籍/维基到C编程开始。这是一个很好的(至少对我而言)开始:http://en.wikibooks.org/wiki/C_Programming/Intro_exercise