在函数中使用结构数组?

妮娜

我正在尝试编写一个函数来更改结构数组中元素的一个值,但它不起作用,该函数什么也不做。我究竟做错了什么?

输入:

300
9
1999
1050
301
5
2000
1200
20

预期输出:

300 1260

实际输出:无

  #include <stdio.h>

typedef struct 
{int codice;
int mese;
int anno;
int stipendio;}
dipendente;

void aumento (dipendente a[], int dim, int n){
int i;
for (i=0; i<dim; i++)
{if (a[i].anno<2000) a[i].stipendio=a[i].stipendio+(a[i].stipendio*n)/100;;
if (a[i].anno==2000)
    {if (a[i].mese<5)
    a[i].stipendio=a[i].stipendio+(a[i].stipendio*n)/100;}}
}

int main () {
int i;
int p;
dipendente a[2];
for (i=0; i<2; i++){
    scanf("%d",&a[i].codice);
    scanf("%d",&a[i].mese);
    scanf("%d",&a[i].anno);
    scanf("%d",&a[i].stipendio);
}
scanf("%d", &p);
aumento (a, 2, p);
for (i=0; i<2; i++)
 {if(a[i].stipendio>1200) 
    printf("%d %d", a[i].codice, a[i].stipendio);}
return 0; }
卡米尔库克

有两个问题。

  1. 正如@nm 在评论中指出的那样:if (a[i].anno=2000)正在执行一项任务并且总是正确的(因为2000是正确的)。你想比较。==为它使用 doubleif (a[i].anno == 2000)

  2. 正如@SamiHult 在评论中指出的那样:n/100对于 any 将始终为 0 0 <= n && n < 100,因为nint使用doublefloat进行浮点数学运算。或者正如@alk 指出的那样,你可以先乘后除,这样你就可以留在整数数学中(a[i].stipendio * n) / 100

  3. 这是好的代码,但缩进只是伤害。

修复这些错误后:

#include <stdio.h>

typedef struct {
    int codice;
    int mese;
    int anno;
    int stipendio;
} dipendente;

void aumento(dipendente a[], int dim, int n) {
    int i;
    for (i = 0; i < dim; i++) {
        if (a[i].anno < 2000) {
            a[i].stipendio = a[i].stipendio + a[i].stipendio * ((double)n / 100);
        }
        if (a[i].anno == 2000) { 
            if (a[i].mese < 5) {
                a[i].stipendio = a[i].stipendio + a[i].stipendio * ((double)n / 100);
            }
        }
    }
}

int main() {
    int i;
    int p;
    dipendente a[2];

    for (i = 0; i < 2; i++){
        scanf("%d", &a[i].codice);
        scanf("%d", &a[i].mese);
        scanf("%d", &a[i].anno);
        scanf("%d", &a[i].stipendio);
    }

    scanf("%d", &p);

    aumento(a, 2, p);

    for (i = 0; i < 2; i++) {
        if (a[i].stipendio > 1200) {
            printf("%d %d", a[i].codice, a[i].stipendio);
        }
    }

    return 0; 
}

您的代码打印预期的输出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在函数中使用结构指针访问结构中的二维数组?

来自分类Dev

在函数或数组中使用变量

来自分类Dev

在结构“函数”中使用指针与复制

来自分类Dev

C ++在函数中使用指向结构的指针

来自分类Dev

在动态结构数组中使用realloc

来自分类Dev

在Systemverilog中使用宏创建结构数组

来自分类Dev

使用结构在函数之间传递数组信息

来自分类Dev

C使用构造函数创建结构数组

来自分类Dev

在函数中的结构数组上使用calloc

来自分类Dev

使用结构指针函数创建结构数组的元素

来自分类Dev

如何在结构数组中使用数组变量?

来自分类Dev

为什么在结构数组中使用点运算符(。)而不是箭头运算符(->)作为函数参数?

来自分类Dev

使用存储在C结构中的函数数组中的函数

来自分类Dev

结构数组的插入函数

来自分类Dev

在Javascript中使用setTimeout从数组调用函数

来自分类Dev

无法在Swift Mailer函数中使用数组

来自分类Dev

缩短多维数组中使用的函数

来自分类Dev

如何在REPLACE()函数中使用数组?

来自分类Dev

在函数参数中使用指针或数组

来自分类Dev

在main函数(C)中使用数组

来自分类Dev

获取在函数中使用的数组“值”的键

来自分类Dev

在基类数组中使用重写函数

来自分类Dev

如何在VBA函数中使用数组?

来自分类Dev

在计算中使用Excel数组函数的结果

来自分类Dev

在主函数中使用类中的数组

来自分类Dev

在函数处理程序参数中使用数组

来自分类Dev

C中使用数组作为参数的函数

来自分类Dev

在函数错误中使用数组

来自分类Dev

如何在point和typedef结构中使用函数