注册 登录
编程论坛 C语言论坛

这怎么回事啊,不会改,大佬帮帮忙

lbjmvp 发布于 2020-05-04 02:36, 2653 次点击
#include<stdio.h>
#include<string.h>
main()
typedef struct person
{char name;
int p;}stu[3];   错误就在这行:(5) : error C2143: syntax error : missing ';' before '<class-head>  (5) : fatal error C1004: unexpected end of file found
{char a[10];
stu person[3]={{"白",0},{"李",0},{"木",0}};
int i,j;
for(i=0;i<10;i++)
{scanf("%3s",&a[i]);}
for(j=0;j<3;j++)
{if(stu person[j].name==a[i])
{stu person[j].p++;}}
for(j=0;j<3;j++)
printf("%s:%d\n",stu person[j].p);
return 0;}
8 回复
#2
fulltimelink2020-05-04 06:33
这个位置好奇怪,main函数没有结构体参数,所以不是老c的参数形式,放错位置了吧
#3
纯蓝之刃2020-05-04 08:19
程序代码:
#include<stdio.h>
#include<string.h>
typedef struct
{
    char name[10];
    int p;
} Person;

int main()
{
    char a[10];
    Person person[3]= {{"abc",0},{"def",0},{"ser",0}};
    int j;
    scanf("%s",a);
    for(j=0; j<3; j++)
    {
        if(strcmp(person[j].name,a)==0)
            person[j].p++;
    }
    for(j=0; j<3; j++)
        printf("%s:%d\n",person[j].name,person[j].p);
    return 0;
}
#4
chxchxkkk2020-05-04 10:15
typedef  不能直接用数组,楼上是正解
#5
forever742020-05-04 10:23
动宾搭配不当
这种说法熟悉吧?
#6
lbjmvp2020-05-04 19:23
改了还是错误,第五行
#7
forever742020-05-04 20:19
三楼蓝版给出正确写法了呀,
为什么你要坚持把可怜的主函数的头给卸掉呢?
#8
qing_yx2020-05-07 17:27
#include<stdio.h>
#include<string.h>
#include<windows.h>

typedef struct person
{
    char name;
    int p;
}stu;

int main()
{
    char a[10];
    stu person1[3] = { { 'a', 0 }, { 'b', 0 }, { 'c', 0 } };
    int i, j;
    for (i = 0; i<10; i++)
    {
        scanf("%c", &a[i]);
    }
    for (j = 0; j<3; j++)
    {
        for (i = 0; i < 10; i++)
        {
            if (person1[j].name == a[i])
            {
                person1[j].p++;
            }
        }
    }
    for (j = 0; j<3; j++)
        printf("%c:%d\n", person1[j].name, person1[j].p);

    system("pause");
    return 0;
}
#9
qing_yx2020-05-08 08:55
回复 楼主 lbjmvp
你的错误主要有几点:
1,结构体变量定义在main()函数的外面,typedef是类型定义,就是给数据类型换个名字,比如你定义的结构体struct person,typedef之后用stu就能代替struct person。另外使用typedef定义之后,stu是个数据类型了(stu就等于struct person),不是变量名,不能当成数组用。
2,结构体初始化:如果你用"",那就是个字符串,你在定义结构体的时候就该定义成char name[20]; 如果你用''那就是一个字符,定义结构体的时候才是char name;
3,person[3]是你定义的结构体变量名,应用的时候前面不需要再加stu重复定义了
4,再有就是逻辑错误。字符之间比较的时候用==;字符串比较要用strcmp(),是个库函数,可以网上搜一搜用法

[此贴子已经被作者于2020-5-8 09:06编辑过]

1