如何重复遍历字符串数组的元素?

时间:2021-03-21 21:58:57

标签: arrays c traversal

我想计算从2月到1月或12月到7月的月份,如何重复遍历数组以获取从2月到1月或12月到7月的计算月份。


char * months[] = {"Jan", "Feb", "Mar", "April", "May", "Jun", 
    "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};

    char start_m[5];
    char end_m[5];
    float bill, rate;
    float total;

    
    scanf("%s %s %f %f",start_m, end_m,&bill, &rate);

    int i, start, end;
    for(i = 0; i < 12; i++){
        if(strcmp(months[i], start_m) == 0){
            start = i;
        }

        if(strcmp(months[i], end_m) == 0){
            end = i;
        }
    }

    if(end < start) {
        for(i = start; i < start - end; i++){
            total += (bill * rate);
        }
    } else {
        for(i = start; i < end; i++){
            total += (bill * rate);
        }
    }
    total += bill;
    printf("%.2f", total);

1 个答案:

答案 0 :(得分:2)

您可以将模块操作与表达式 pos % size 一起使用。一个例子:

int main()
{
    char * months[] = {"Jan", "Feb", "Mar", "April", "May", "Jun", 
    "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
    int size = 12;
    int start = 1;
    
    for(int i = start; i < start + size; i++)
          printf("%d %s\n",i % size, months[i % size]);

    return 0;
}

输出:

1 Feb                                                                                                                                   
2 Mar                                                                                                                                   
3 April                                                                                                                                 
4 May                                                                                                                                   
5 Jun                                                                                                                                   
6 Jul                                                                                                                                   
7 Aug                                                                                                                                   
8 Sep                                                                                                                                   
9 Oct                                                                                                                                   
10 Nov                                                                                                                                  
11 Dec                                                                                                                                  
0 Jan 

这是有效的,因为对于 0 <= i < size,表达式 i % size 返回 i。对于 i = 大小,返回 0,对于 i = 大小 + 1 返回 1,依此类推。