2017-04-10 64 views
1

我对编码相当陌生,目前正在学习C语言。在我的C编程类中,我的教师给了我们编写程序的任务,该程序使用输入五个整数并打印最大值的函数。该计划即使对我来说也相当简单,但我遇到了一些问题,并希望得到一些建议。函数中的变量初始化

#include <stdio.h> 

int largest(int x); 

int main(void) { 
    int integer1; 

    largest(integer1); 

    return 0; 
} 

int largest(int x) { 
    int i; 

    for (i = 0; i < 5; i++) { 
     printf("Enter an integer: "); 
     scanf_s("%d", &x); 
    } 

    return x; 
} 

这是我写的代码。我遇到的主要问题是,在我的主要方法中,IDE告诉我初始化integer1的值。但是,我不确定如何做,因为我应该通过scanf_s函数在最大()方法内输入值。我该如何解决这个问题?

+0

'写一个程序,它使用一个输入五个整数并打印最大的函数的函数.... umm,那是哪一部分? –

+0

应该做什么参数?你需要一个整数作为参数,然后在函数内请求用户输入。这没有任何意义,这就是为什么你不能编译它。 – Lundin

回答

2

问题出在这里,警告信息是警告您使用未初始化的自动局部变量的值的潜在隐患。你让像

largest(integer1); 

呼叫,但你忽略了返回值,所以integer1仍然未初始化。

记住,鉴于largest()x是传递给函数的实际参数的本地副本,以x所做的任何更改将不会反映给调用者。

也就是说,你的代码远不及你的要求,很抱歉地说。一个简单的想法是

  • 创建一个函数。
  • 创建一个变量(比如,result)中,用最小的可能的整数值初始化,INT_MIN
  • 循环超过5次,取用户输入,比较到result的值,如果输入的值求出大,商店成result,继续除此以外。
  • 返回result
1

我知道,通常帮助分配不应该给,但我不得不说,你可能需要重新考虑你想要做什么。

您正在向名为largest的函数输入一个整数。但是,为什么你只输入一个整数给一个应该返回最大值的函数。在这种情况下,你不能用一个数字做很多事情。

你应该改为输入一个5值的数组(如你的赋值中所述),并让它返回最大值。

订单将被:

  1. 读5个值并保存到一个数组
  2. 调用该函数最大与数组作为输入
  3. 让功能做的工作并返回最大值
  4. 你什么都想要拥有最大价值

但如果你只是想简单地删除警告TY pe

int integer1 = 0;