目前正在编写一个C程序,提示用户输入五个数字并显示最大数字。所以这就是我想出来的
var services = new ServiceCollection();
services.AddEntityFramework()
.AddInMemoryDatabase()
.AddDbContext<ApplicationDbContext>(options => options.UseInMemoryDatabase());
serviceProvider = services.BuildServiceProvider();
感谢任何帮助。
答案 0 :(得分:2)
对于输入小于0的数字,您的函数不起作用,因为函数没有返回任何内容,因此int类型错误。这是一个更好的版本:
void max_num(float num_arr[], int size)
{
if(size>0) float max = num_arr[0];
for (int k = 0; k <= size; k++) {
if (max < num_arr[k]) {
max = num_arr[k];
}
}
printf("The maximum number is %f\n", max);
}
如果你需要返回max:
float max_num(float num_arr[], int size)
{
if(size>0) float max = num_arr[0];
for (int k = 0; k <= size; k++) {
if (max < num_arr[k]) {
max = num_arr[k];
}
}
return max;
}
答案 1 :(得分:1)
您正在设置
for(int k = 0;k<5;k++)
{
if(num_arr[k] > max)
max = num_arr[k];
}
printf("The maximum number is is %d\n", max);
在每次循环迭代中,每次都丢失最大值并设置它 到数组中的第一个值。
正确的版本是:
<=
条件中=
不正确,但它也不是很易读,
很难错过<
的标志。在这种情况下,使用k<5
总是更好
#include <stdio.h>
float max_num(float *array, size_t len)
{
if(array == NULL)
{
fprintf(stderr, "invalid argument, array == NULL\n");
return 0;
}
if(len == 0)
{
fprintf(stderr, "Invalid array size, cannot be 0\n");
return 0;
}
float max = array[0];
for(size_t i = 0; i < len; ++i)
{
if(array[i] > max)
max = array[i];
}
return max;
}
int main(void)
{
float nums[] = { 1.1, -2.2, 8, 6, 99 , -12 };
float max = max_num(nums, sizeof nums / sizeof *nums);
printf("The maximal number in the array is: %f\n", max);
return 0;
}
。
将数组的大小传递给函数也是一种更好的做法,所以你 不必硬编码要循环的最大项目数(就像你一样) 在你的代码中做了)。像这样:
Date Crime
2015-12-17 07:26:00 Vandalism
2015-12-17 11:04:00 Theft
2015-06-18 12:32:00 Murder
.
.
.
答案 2 :(得分:0)
而不是if(max > num_arr[k])
它应该是if(num_arr[k] > max)