else if(a=b),不是else if(a==b)啊
a=b是赋值语句,因为b不为0,所以这个if条件是成立的,因此t=5
a=b是赋值
你基础还需要加强
括号里是a=b,是赋值,不是判断关系的==
它后面还俩else呢
if(a>0) s=s+1;//s这时候是3了
if(a>b) t=s+t;这句没执行
else if a=b 这句,是一个等号啊,赋值了
这道题的迷惑性在于 else if (a=b) 中的=,在C语言中,赋值操作符 = 会返回被赋的值,因此 if(a=b) 语句实际上是把 b 的值赋给 a,然后检查赋值操作的结果是否为0。如果 b 不为0,则条件成立,否则条件不成立。
这是一个常见的错误,通常意图是判断 a 是否等于 b,正确的写法是使用相等操作符 ==: if(a==b)。
不知道你这个问题是否已经解决, 如果还没有解决的话:我的理解
1.输入10个数
2.第一个与最后一个互换,第二个与倒数第二个互换,依次类推
**以下是代码**
// Ada
#include<stdio.h>
int main(){
int a[10], temp;
for(int i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
for(int i = 0; i < 5; i++) {
temp = a[i];
a[i] = a[9 - i];
a[9 - i] = temp;
}
for(int i = 0; i < 10; i++) {
printf("%d\n", a[i]);
}
return 0;
}
**scanf("%d ", &a[i]); 后面有空格输入无结果
原因:scanf会跳过所有空格字符,包括回车符,直到遇到不是空格字符才退出,把%d后的空格删除就可以了**
划重点
别忘scanf后的取地址符!!!已经忘了n次了!!!