飒恨亦舒 2022-07-26 11:58 采纳率: 71.4%
浏览 56
已结题

当b[j]跳出最里面那个循环后,再次进入b[j]会是最开始那个值,还是上次循环结束时的值

#include<stdio.h>
#define int long long
signed main(){
int n,ans,i,j,a[5005],b[5005];
int sum=0,max=0;
scanf("%lld",&n);
for(i=0;i<n;i++){
scanf("%lld",&a[i]);
sum=0;
while(1){
if(a[i]%2==1)sum++;
if(a[i]%2==0)break;
a[i]=a[i]/2;
}
b[i]=a[i]*sum;
}
for(i=0;i<n;i++){
for(j=0;j<i;j++){
b[j]+=b[i]*0.2;
}
}
if(j==n-1&&i==n-1)b[j]=b[i];
for(j=0;j<n;j++){
if(b[j]>max){
max=b[j];
ans=j+1;
}
}
printf("%lld",ans);
return 0;
}其中的for(i=0;i<n;i++){
for(j=0;j<i;j++){
b[j]+=b[i]*0.2;
}
}

  • 写回答

4条回答 默认 最新

  • qzjhjxj 2022-07-26 14:35
    关注

    注释见代码,供参考:

    #include<stdio.h>
    #define int long long
    signed main() {
        int   n, ans, i, j, a[5005], b[5005];
        int sum = 0, max = 0;
        scanf("%lld", &n);
        for (i = 0; i < n; i++) {
            scanf("%lld", &a[i]);
            sum = 0;
            while (1) {
                if (a[i] % 2 == 1)sum++;
                if (a[i] % 2 == 0)break;
                a[i] = a[i] / 2;
            }
            b[i] = a[i] * sum;
        }
        for (i = 0; i < n; i++) {  // i 是外循环变量因子,i 被初始化一次即:i = 0; 这句只在进入循环时执行一次。  
            for (j = 0; j < i; j++) { // j 是内循环变量因子,j = 0 在外循环因子每 i++ 一次, j = 0;这句就被执行一次。
                //printf("i = %lld, j = %lld\n", i, j);
                b[j] += b[i] * 0.2;   
                // 假如输入n = 5
                //i = 0, 内循环里 j < i 条件不满足,内循环未执行
                //i = 1, j = 0
                //i = 2, j = 0
                //i = 2, j = 1
                //i = 3, j = 0
                //i = 3, j = 1
                //i = 3, j = 2
                //i = 4, j = 0
                //i = 4, j = 1
                //i = 4, j = 2
                //i = 4, j = 3
            }
        }
        if (j == n - 1 && i == n - 1) b[j] = b[i];
        for (j = 0; j < n; j++) {
            if (b[j] > max) {
                max = b[j];
                ans = j + 1;
            }
        }
        printf("%lld", ans);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月6日
  • 已采纳回答 7月29日
  • 修改了问题 7月26日
  • 修改了问题 7月26日
  • 展开全部

悬赏问题

  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?
  • ¥100 需要跳转番茄畅听app的adb命令