标题:这怎么回事啊,不会改,大佬帮帮忙
只看楼主
lbjmvp
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2020-5-1
结帖率:0
 问题点数:0 回复次数:8 
这怎么回事啊,不会改,大佬帮帮忙
#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;}
搜索更多相关主题的帖子: include person for stu name 
2020-05-04 02:36
fulltimelink
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:171
专家分:752
注 册:2020-4-1
得分:0 
这个位置好奇怪,main函数没有结构体参数,所以不是老c的参数形式,放错位置了吧
2020-05-04 06:33
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:554
专家分:3690
注 册:2019-7-29
得分:0 
程序代码:
#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;
}

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2020-05-04 08:19
chxchxkkk
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:12
专家分:102
注 册:2020-2-9
得分:0 
typedef  不能直接用数组,楼上是正解
2020-05-04 10:15
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
动宾搭配不当
这种说法熟悉吧?

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-05-04 10:23
lbjmvp
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2020-5-1
得分:0 
改了还是错误,第五行
2020-05-04 19:23
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
三楼蓝版给出正确写法了呀,
为什么你要坚持把可怜的主函数的头给卸掉呢?

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-05-04 20:19
qing_yx
Rank: 2
等 级:论坛游民
威 望:1
帖 子:25
专家分:70
注 册:2020-4-26
得分:0 
#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;
}
2020-05-07 17:27
qing_yx
Rank: 2
等 级:论坛游民
威 望:1
帖 子:25
专家分:70
注 册:2020-4-26
得分:0 
回复 楼主 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编辑过]

2020-05-08 08:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-501413-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.104332 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved