| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1494 人关注过本帖
标题:结构体问题
只看楼主 加入收藏
D2284581470
Rank: 3Rank: 3
来 自:沈阳
等 级:论坛游侠
威 望:2
帖 子:169
专家分:147
注 册:2019-12-8
结帖率:58.33%
收藏
已结贴  问题点数:20 回复次数:6 
结构体问题
【问题描述】警方小滔怀疑小栋在进行非法活动,于是仔细勘察了现场,发现了疑似小栋留给黑暗科学家小圳的坐标地址。

                    样例代码为A 3854751357  4317546873  2333770033(共十个数字)小滔发现小栋是一个极其迷信的人,他非常的讨厌数字3和数字7,

                    请大家编写一个可以存储N个样例代码的程序,并且输出时去掉所有的3和7.
【输入形式】输入N,再输入N个样例代码的名称,再输入三行样样例代码数字。(要求用结构体存放样例代码名称和代码数字串)
【输出形式】输出样例代码名字,输出三行没有3和7 的一串数字。(共N个)。
【样例输入】

3

A 3854751357

4317546873

2333770033

B 1003333333

1007777777

2007777777

C 2777777777

5637777777

2649877777

【样例输出】

A
854515
4154683
200

B
100
100
200

C
2
56
26498
这个结构题中的个数不是确定的,和普通的数组结构体不同。
先面试我定义的(有错误)
程序代码:
#include<stdio.h>
struct student
{

}p[N];
int main()
{
    int N;
    scanf("%d",&N);
    struct student p[N];
    ………………
    return 0;
}
但这样定义有错误(红色的即为错误);
请问真央应该怎么定义???
谢谢
搜索更多相关主题的帖子: 结构体 输出 数字 输入 代码 
2020-04-07 23:09
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:14 
    int N;
    scanf("%d",&N);
    struct student p[N];
编译是 C 还是 CPP ?
2020-04-08 06:57
D2284581470
Rank: 3Rank: 3
来 自:沈阳
等 级:论坛游侠
威 望:2
帖 子:169
专家分:147
注 册:2019-12-8
收藏
得分:0 
回复 2楼 吹水佬
c

2020-04-13 12:52
D2284581470
Rank: 3Rank: 3
来 自:沈阳
等 级:论坛游侠
威 望:2
帖 子:169
专家分:147
注 册:2019-12-8
收藏
得分:0 
我写出来了
程序代码:
#include<stdio.h>
struct date
{
    char a1[30];
}p[3];
struct Student
{
    char name;
    struct date p[3];
}P[50];
int main()
{
    struct Student P[5];
    int i, j;
    int n;
    scanf("%d",&n);
    for (i = 0; i < n; i++)
    {
        scanf("%s",&P[i].name);//在这里,题目输入的每组的名字是单个字符,A,B,C。所以我定义了%c 但是运行结果错误,必须为代码中的%s。但我定义的是单个字符呀,为什么要字符串???
        for (j = 0; j < 3; j++)
        {
            scanf("%s", P[i].p[j].a1);
        }
    }
    for (i = 0; i < n; i++)
    {
        printf("%c\n",P[i].name);
        for (j = 0; j < 3; j++)
        {
            for (int k = 0; P[i].p[j].a1[k] != '\0'; k++)
            {
                if (P[i].p[j].a1[k] != '3' && P[i].p[j].a1[k] != '7')
                {
                    printf("%c",P[i].p[j].a1[k]);
                }
            }
            printf("\n");
        }
    };
    return 0;
}

2020-04-13 12:55
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:570
专家分:3727
注 册:2019-7-29
收藏
得分:0 
scanf("%*[ \n\t\b]%c",&P[i].name);

你可以这样,将回车、空格等字符过滤掉试试

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2020-04-13 14:08
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
以下是引用纯蓝之刃在2020-4-13 14:08:30的发言:


你可以这样,将回车、空格等字符过滤掉试试

如果只是想过滤空白字符
可以在%c前面加一个空格
scanf(" %c",....);
就可以了
不用扫描写这么多

https://zh.
2020-04-13 14:13
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
以下是引用D2284581470在2020-4-13 12:55:29的发言:

我写出来了#include<stdio.h>
struct date
{
    char a1[30];
}p[3];
struct Student
{
    char name;
    struct date p[3];
}P[50];
int main()
{
    struct Student P[5];
    int i, j;
    int n;
    scanf("%d",&n);
    for (i = 0; i < n; i++)
    {
        scanf("%s",&P.name);//在这里,题目输入的每组的名字是单个字符,A,B,C。所以我定义了%c 但是运行结果错误,必须为代码中的%s。但我定义的是单个字符呀,为什么要字符串???
        for (j = 0; j < 3; j++)
        {
            scanf("%s", P.p[j].a1);
        }
    }
    for (i = 0; i < n; i++)
    {
        printf("%c\n",P.name);
        for (j = 0; j < 3; j++)
        {
            for (int k = 0; P.p[j].a1[k] != '\0'; k++)
            {
                if (P.p[j].a1[k] != '3' && P.p[j].a1[k] != '7')
                {
                    printf("%c",P.p[j].a1[k]);
                }
            }
            printf("\n");
        }
    };
    return 0;
}

scanf("%s",&P.name);//在这里,题目输入的每组的名字是单个字符,A,B,C。所以我定义了%c 但是运行结果错误,必须为代码中的%s。但我定义的是单个字符呀,为什么要字符串???
这个做法是错的 %s 写入字符串
因为字符串带结尾0
所以你输入1个字符会写入2个字节
而P.name 只有1个字节 会造成数组越界
是未定义行为 这里只是刚刚好越界操作没出现异常 但还是错的
至于你用%c不行用%s 可以是因为%c会读取空白字符
前面的输入滞留输入缓冲区的数据会干扰%c的执行
你可以通过%c前面添加一个空格过滤空白字符(包括空格/回车/制表符等)

https://zh.
2020-04-13 14:15
快速回复:结构体问题
数据加载中...
 
   



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

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