C 您将如何使用函数计算电阻器阵列上的电流和电压? intmain() { int res[10]; 双卷[10]; int i; int n; 对于(i=0;i

C 您将如何使用函数计算电阻器阵列上的电流和电压? intmain() { int res[10]; 双卷[10]; int i; int n; 对于(i=0;i,c,arrays,C,Arrays,如何编写一个函数,使用用户反复输入的电阻和电压值,这些值存储在一个数组中 然后从main函数调用main之外的函数来计算阵列中每个电阻元件上的电流和电压 我试过这个函数 int main() { int res[10]; double vol[10]; int i; int n; for (i = 0; i < 10; i++) { printf("Enter R and V for resistor %d: ", i+

如何编写一个函数,使用用户反复输入的电阻和电压值,这些值存储在一个数组中

然后从main函数调用main之外的函数来计算阵列中每个电阻元件上的电流和电压

我试过这个函数

int main()
{

    int res[10];
    double vol[10];
    int i;
    int n;


    for (i = 0; i < 10; i++)
    {
        printf("Enter R and V for resistor %d: ", i+1);
        n = scanf("%d %lf", res[i], vol[i]);
    }
int-rv(int-i,int*res,double*vol){
整数计数=0;
int n;
同时(计数<10){
对于(i=0;i<10;i++){
cur[i]=(vol[i]/res[i]);
返回电流[i]
}
计数++;
}

根据您的代码,您确实有电压

要查找当前值,您需要使用

R(欧姆)=V(伏特)/A(安培)


响应您的示例函数

决定是为每个电阻器调用一次,还是为阵列调用一次

如果是每个数组,则需要更改参数


如果是每项,则您需要更改功能代码。

根据您的代码,您确实有电压

要查找当前值,您需要使用

R(欧姆)=V(伏特)/A(安培)


响应您的示例函数

决定是为每个电阻器调用一次,还是为阵列调用一次

如果是每个数组,则需要更改参数


如果是每个项目,则需要更改功能代码。

i
在第二个循环中没有更改。为什么不使用另一个
来代替
循环?

i
在第二个循环中没有更改。为什么不使用另一个
来代替
循环?

以下几点:

  • 函数内部定义的变量,在该函数的持续时间内仅为“活动”。通常,定义变量时,它会在与
    匹配的
    }
    处结束{
    在其定义之前。因此,每次调用
    rv
    时,您的
    count
    变量都是一个新计数器,设置为
    0
    。但这可能或多或少是您想要做的,除了
  • 一旦
    return
    ,函数将退出。您正在
    return
    读取
    cur[0]
    的值,但从未有机会继续连接到其他电阻器
以下是一些想法:

  • 具有计算单个电阻器的R值(电阻?)的功能
  • 创建一个循环,重复调用该函数并找到它们的(和?)
下面是一些您可能希望模拟和充实的部分代码:-)

双电阻(整数分辨率,双音量){
返回res/vol;
}
/*我不知道你到底想做什么*/
电阻的双平均值(int num电阻、int*res、double*vol){
int i=0;
双和=0;
而(i20){
printf(“\n有多少个电阻器?”);
scanf(“%d”,多少);
}
对于(int i=0;i<多少;++i){
printf(“\n输入电阻#%d的R和V:,i);
scanf(“%d%lf”,res[i],vol[i]);
}
printf(“\n好的,平均值为%f”,平均值为(多少,分辨率,体积));
退出(退出成功);
}
一些提示:

  • 函数内部定义的变量,在该函数的持续时间内仅为“活动”。通常,定义变量时,它会在与
    匹配的
    }
    处结束{
    在其定义之前。因此,每次调用
    rv
    时,您的
    count
    变量都是一个新计数器,设置为
    0
    。但这可能或多或少是您想要做的,除了
  • 一旦
    return
    ,函数将退出。您正在
    return
    读取
    cur[0]
    的值,但从未有机会继续连接到其他电阻器
以下是一些想法:

  • 具有计算单个电阻器的R值(电阻?)的功能
  • 创建一个循环,重复调用该函数并找到它们的(和?)
下面是一些您可能希望模拟和充实的部分代码:-)

双电阻(整数分辨率,双音量){
返回res/vol;
}
/*我不知道你到底想做什么*/
电阻的双平均值(int num电阻、int*res、double*vol){
int i=0;
双和=0;
而(i20){
printf(“\n有多少个电阻器?”);
scanf(“%d”,多少);
}
对于(int i=0;i<多少;++i){
printf(“\n输入电阻#%d的R和V:,i);
scanf(“%d%lf”,res[i],vol[i]);
}
printf(“\n好的,平均值为%f”,平均值为(多少,分辨率,体积));
退出(退出成功);
}

您如何知道哪些电阻并联,哪些电阻串联?我们不需要知道并联和串联,我们只是使用用户输入的电压和电阻值,使用基本欧姆定律公式计算电流和功率…I=V/R和功率=V*I只是一个旁注:scanf()调用是错误的。您必须向该函数传递指针,而不是值:scanf(“…”、&res[i]、&vol[i])如何知道哪些电阻器是并联的,哪些是
int rv (int i, int *res, double *vol) {

int count = 0;
int n;
while (count < 10) {

  for(i = 0; i < 10; i++) {
    cur[i] = (vol[i]/res[i]);
    return cur[i]
    }
    count++;
 }
 double resistance_of (int res, double vol) {
    return res / vol;
 }

 /* I dunno the math you would actually want to do. */
 double average_of_resistance (int num_resistors, int* res, double* vol) {
    int i = 0;
    double sum = 0;
    while (i < num_resistors) { /* could also use for(;;) here */
         sum = sum + resistance_of (res[i], vol[i]);
         ++i;
    }
    return sum / num_resistors;
 }

 int main (int param_count, char** param) {
    int how_many = 0;
    int res[20];
    double vol[20];
    while (how_many < 1 || how_many > 20) { 
        printf ("\nHow many resistors? ");
        scanf ("%d", how_many);
    }
    for (int i = 0; i < how_many; ++i) {
        printf("\nenter R and V for resistor # %d: ", i);
        scanf ("%d %lf", res[i], vol[i]);
    }
    printf ("\n OK, the average is %f", average_of (how_many, res, vol));
    exit (EXIT_SUCCESS);
 }