You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言如何提取for循环内满足指定条件时的循环变量j的值

解决方案

你可以通过定义数组存储每次符合条件的j值,配合你现有的totalvalid计数变量作为数组下标即可实现需求,修改后的代码如下:

// 循环外定义存储j值的数组,大小取stringnumber即可覆盖所有可能的符合条件的情况
int valid_j_list[stringnumber];
int totalvalid = 0;

for(int j = 0; j < stringnumber; j++){
    int valid = 0;
    if(str[j][10] == '\0'){
        for(int k = 0; k < 10; k++){
            if(str[j][k] >= 'A' && str[j][k] <= 'Z'){
                valid++;
            } 
        }
        if (valid == 10){
            // 触发条件时将当前j存入数组对应位置
            valid_j_list[totalvalid] = j;
            totalvalid++;
        }
  }  
}

后续你需要使用这些j值时,直接遍历valid_j_list的前totalvalid个元素即可,示例用法:

// 打印所有符合条件的j值
for(int i = 0; i < totalvalid; i++){
    printf("第%d次触发条件时的j值为:%d\n", i+1, valid_j_list[i]);
}

如果你的stringnumber数值很大,担心栈上数组溢出,可以改用动态内存分配申请堆空间存储:

// 申请动态内存
int *valid_j_list = (int *)malloc(stringnumber * sizeof(int));
// 这里放上面的循环逻辑,使用方法和数组完全一致

// 使用完成后记得释放内存,避免内存泄漏
free(valid_j_list);
valid_j_list = NULL;

内容的提问来源于stack exchange,提问作者NJClassic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 21:27:04