(c语言高手请进)一个简单的c程序,但不会。c语言高手请教

来源:百度知道 编辑:UC知道 时间:2024/05/23 15:48:25
#include<stdio.h>
void main()
{
int a;
a=1;
printf("%d",a++);
}

上面的程序应该输出2的, 为什么我执行后还输出1?????

还有这个程序:目的是要求用户输入3个学生的成绩,最后算出总成绩.
#include<stdio.h>
void main()
{
int a[3],i,total=0;
for(i=0;i<3;i++)
{
printf("请输入第%d个学生的成绩:",i++);
scanf("%d",&a[i]);
total=total+a[i];
}
printf("总成绩为:%d",total);
}

上面这个程序只能输入2次学生成绩,然后就告诉我内存有溢出.
1楼和2楼说的都很好,刚才我试过了明白了,如果两位能综合一下就完美了,但只能选一个人真为难啊,还是选2楼吧,因为你还告诉我应该怎么改了.但也谢谢1楼,不好意思.

第一题,先执行printf("%d",a),再执行a++;
第二题, printf("请输入第%d个学生的成绩:",i++); 这里不能i++;改为:printf("请输入第%d个学生的成绩:",i+1);

都是因为你不了解 ++ 运算规则造成的

如 printf i++,是先输出i,再对i自加运算
所以第一个你应该改成 ++a或者在a=1后加一句 a++,然后printf a

第2题同样如此,你第一次输入的,其实是a[2],第2次是a[3],再后面自然就溢出了。

二楼说的好

哥们哟,要理解a++,++a的确区别。
a=1;
a++=1,a=2
++a=2,a=2

1.a++是先输出然后在加一;要输出2 要用++a;
2. printf中不用i++;
#include<stdio.h>
void main()
{
int a[3],i,total=0;
for(i=0;i<3;i++)
{
printf("请输入第%d个学生的成绩:");
scanf("%d",&a[i]);
total=total+a[i];
}
printf("总成绩为:%d",total);
}

第一题的a++应改为++a。a++是先输出再自加,所以输出1;++a是先自加,然后输出。