scanf("%s %d %d %d",s.name,&s.g1,&s.g2,&s.g3)==4 “==4”是什么意思
时间: 2024-04-20 13:26:13 浏览: 13
在这个代码中,"==4"是一个比较运算符,用于判断条件是否为真。在这种情况下,它判断`scanf`函数的返回值是否等于4。`scanf`函数返回成功匹配并读取的输入项的数量。因此,如果`scanf`成功读取了4个输入项(即字符串`s.name`、`s.g1`、`s.g2`和`s.g3`),条件就会为真。这通常用于确保`scanf`正确读取了预期的输入项。
相关问题
#include<stdio.h> struct student { char num[20]; char name [20]; int a; }; int main() { int n,i=0, struct stdent g[i]; scanf("%d",&n) for(i=0;i<n;i++) { scanf("%s %s %d",g[i].num,g[i].name,&g[i].a) } double b; for(i=0;i<n;i++) { b+=g[20].a; } double c=b/n; printf("%lf\n",c); for(i=0;i<n;i++) { if(g[i].a<c) { printf("%s %S\n",g[i].name,g[i].num); } } return 0; } }
这段代码有一些问题,我帮你指出来:
1. 在 `int n, i=0, struct stdent g[i]` 这一行中,你在定义 `g` 数组时使用了变量 `i`,但是此时 `i` 还没有被赋值,因此 `g` 数组的大小为 0,这是不合法的。
2. 在 `scanf("%d",&n)` 这一行中,你没有加分号。
3. 在 `scanf("%s %s %d",g[i].num,g[i].name,&g[i].a)` 这一行中,你没有加分号。
4. 在 `for(i=0;i<n;i++) { b+=g[20].a; }` 这一行中,你应该使用 `i` 作为数组下标,而不是固定使用 `20`。
5. 在 `printf("%s %S\n",g[i].name,g[i].num);` 这一行中,你错误地使用了大写字母 `S`,导致编译错误。
6. 在最后的大括号 `}` 处,多余了一个。
修正后的代码如下:
```c
#include <stdio.h>
struct student {
char num[20];
char name[20];
int a;
};
int main() {
int n, i;
scanf("%d", &n);
struct student g[n];
for (i = 0; i < n; i++) {
scanf("%s %s %d", g[i].num, g[i].name, &g[i].a);
}
double b = 0;
for (i = 0; i < n; i++) {
b += g[i].a;
}
double c = b / n;
printf("%lf\n", c);
for (i = 0; i < n; i++) {
if (g[i].a < c) {
printf("%s %s\n", g[i].name, g[i].num);
}
}
return 0;
}
```
将C风格的语句改为C++ printf(" 用户姓名: "); scanf("%s", &in[i].G_Name); printf(" 用户编号: "); scanf("%d", &in[i].G_num); printf(" 用户电话: "); scanf("%ld", &in[i].iphone); printf(" 用户余额: "); scanf("%f", &in[i].balance); printf("\n");}
cout << " 用户姓名: ";
cin >> in[i].G_Name;
cout << " 用户编号: ";
cin >> in[i].G_num;
cout << " 用户电话: ";
cin >> in[i].iphone;
cout << " 用户余额: ";
cin >> in[i].balance;
cout << "\n";