【发布时间】:2012-03-09 20:11:09
【问题描述】:
对不起,如果标题仍然不明确。
我正在为学校做这个作业,下面是我定义的函数原型、main 函数和 change_array 函数。
这个程序的总体目标是允许用户输入 5 个不同的数字并存储到一个数组中。然后 change_array 函数所做的是将任何低于 10 的数字加倍(乘以 2),但是,它目前没有做它打算做的事情。我真的很困惑,所以我想知道是否有人可以指出我的错误。我不是要一个确切的答案,我只需要一些指示和指导。
问题在于 change_array 函数没有改变用户给出的任何值。例如,如果用户输入“3, 5, 6, 12, 32”,我的程序的输出仍然是“3, 5, 6, 12, 32”。但我真正想要的是,从change_array函数传回数组后的“6、10、12、12、32”。
用完整的程序编辑:
#include <stdio.h>
#define SIZE 5
void fill_array(double x[], int s);
void change_array(double x[], int s);
void print_array(double x[], int s);
main()
{
double x[SIZE];
fill_array(x, SIZE);
printf("The array is as: \n");
print_array(x, SIZE);
change_array(x, SIZE);
printf("After change, the array is: \n");
print_array(x, SIZE);
}
void fill_array(double x[], int s)
{
int i=0;
printf("Please input 5 Non-Negative double numbers\n");
for (i=0; i<s; i++) {
printf("Number %d: ", i+1);
scanf("%d", &x[i]);
printf("\n");
}
}
void change_array(double x[], int s)
{
int i=0;
for (i=0; i<s; i++) {
if (x[i] < 10) {
(x[i] = (x[i] * 2));
}
}
}
void print_array(double x[], int s)
{
int i=0;
for (i=0; i<s; i++) {
printf("%ld \t", x[i]);
}
printf("\n");
}
我的代码是用 C 编写的。
【问题讨论】:
-
change_array确实修改了数组,以便调用者可以看到修改。你需要贴出真实的代码,最好是完整的程序。 -
好的,新代码清楚地表明问题只是printf格式字符串。