C语言之int k,j,s; for (k=2;k<6;k++,k++)/*for(k=2;k<6;k=k+2)*/ {s=1; for(j=k;j<6;j++) s+=j; }输出结果为10

#include <stdio.h>
int main(){
int k,j,s;
for (k=2;k<6;k++,k++)/*for(k=2;k<6;k=k+2)*/
{s=1;
for(j=k;j<6;j++) s+=j;

}



/*第一个for循环时k=2,进入内循环,因为s在内循环中初始化=1,所以每次循环时s=1;
 执行k=2时
  输出 k j s
       2 2 3
       2 3 6
       2 4 10
       2 5 15
    执行最外层循环时k=4时 ,s的初始化值为s=1
       k j s   
       4 4 5   
       4 5 10
    所以最后是输出结果为10
*/
printf("%d\n",s);

}


  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码有几个错误: 1.在input函数中,scanf函数的参数应该是&stu_inf->studentID和stu_inf->studentName,因为它们是指向long和char数组的指针,而不是实际的变量。 2.在average函数中,变量i应该从0开始,而不是从N开始。另外,在计算平均分时应该使用float类型的变量,而不是int类型的指针。 3.在max函数中,变量i应该从0开始,而不是从N开始。在查找最高分时,变量k应该初始化为0,而不是为i。 4.在max函数中,返回的是指向STUDENT结构体的指针,而不是STUDENT结构体本身。因此,在main函数中,应该使用*号来解引用指针。 5.在main函数中,变量inf没有分配内存空间,因此无法使用。应该使用malloc函数来分配内存空间,并将返回的指针赋值给inf。另外,变量ave应该是float类型的数组,而不是指针。 以下是修改后的代码: ```c #include <stdio.h> #include <stdlib.h> #define N 10 typedef struct student { long studentID; char studentName[20]; float score[3]; } STUDENT; void input(STUDENT* stu_inf, int n) { int j; for (j = 0; j < n; j++) { scanf("%ld", &stu_inf->studentID); scanf("%s", stu_inf->studentName); for (int k = 0; k < 3; k++) scanf("%f", &stu_inf->score[k]); stu_inf++; } } void average(STUDENT* stu_inf, int n, float* ave_course) { int i, j; for (i = 0; i < N; i++) { float s = 0; for (j = 0; j < 3; j++) s += stu_inf->score[j]; *ave_course = s / 3; ave_course++; stu_inf++; } } STUDENT* max(STUDENT* stu_inf, int n) { STUDENT* top; int i, j, k = 0; float sumscore[10] = { 0 }; for (i = 0; i < N; i++) { for (j = 0; j < 3; j++) sumscore[i] += stu_inf->score[j]; stu_inf++; } for (i = 0; i < 9; i++) { if (sumscore[i] > sumscore[k]) k = i; } stu_inf -= N; for (j = 0; j < 10; j++) { if (j == k) { top = stu_inf; break; } stu_inf++; } return top; } int main() { int i; float av[10]; STUDENT* inf = (STUDENT*)malloc(N * sizeof(STUDENT)); float* ave = av; for (i = 0; i < N; i++) { input(inf, N); } average(inf, N, ave); STUDENT* m = max(inf, N); printf("总平均分是%f\n最高分学生数据如下:\n", *ave); printf("%ld %s ", m->studentID, m->studentName); int su = 0; for (i = 0; i < 3; i++) { printf("%f ", m->score[i]); su += m->score[i]; } printf("%f", su / 3.0); free(inf); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值