| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 803 人关注过本帖
标题:此题最好能用struct和指针,有注释就更好啦!实在指针和struct在一起就会乱 ...
只看楼主 加入收藏
Vsnow
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:124
专家分:145
注 册:2015-1-3
结帖率:95%
收藏
已结贴  问题点数:10 回复次数:13 
此题最好能用struct和指针,有注释就更好啦!实在指针和struct在一起就会乱……拜托了
产品的记录由产品名称,编号,价格,产家构成,n个产品的数据(由键盘输入)由主函数中放入结构体数组中,编写函数fun1, 功能为把价格最高的产品(可能不止一个)放在一个指定的数组中,并返回价格最高的产品个数。并编写函数fun2, 功能为把某种产品的价格降价30%。
搜索更多相关主题的帖子: 结构体 最好 产品 记录 键盘 
2015-03-24 20:26
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:1 
整体思路你已经写出来了,接下来要做的就是实现那两个函数,你顺着写就是了,没有尝试就直接问是学不到东西的

一片落叶掉进了回忆的流年。
2015-03-24 20:35
lxmaint
Rank: 2
等 级:论坛游民
威 望:1
帖 子:20
专家分:74
注 册:2015-3-15
收藏
得分:1 
定义好数组后,由于产品个数是键盘输入的,只能是动态申请(或是申请个超大的数组,笨办法)
这个时候可能会有结构体字节对齐的问题(看你怎么输入了,有可能不需要),这个问题是编程需要注意的地方。其他的就没啥了。
另外别忘了适当的地方释放内存。
2015-03-24 20:36
lxmaint
Rank: 2
等 级:论坛游民
威 望:1
帖 子:20
专家分:74
注 册:2015-3-15
收藏
得分:0 
以下是引用lxmaint在2015-3-24 20:36:20的发言:

定义好数组后,由于产品个数是键盘输入的,只能是动态申请(或是申请个超大的数组,笨办法)
这个时候可能会有结构体字节对齐的问题(看你怎么输入了,有可能不需要),这个问题是编程需要注意的地方。其他的就没啥了。
另外别忘了适当的地方释放内存。

定义好结构体后,晕,

2015-03-24 20:37
Vsnow
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:124
专家分:145
注 册:2015-1-3
收藏
得分:0 
#include <stdio.h>
#include <string.h>
struct product
{    char name[30];
    int num;
    float price;
    char producers[30];
};
struct product pro[10];
void fun1(float *p1[10],char *p2[10])
{
    int i,j=0;
    float *max,*t;
    for(i=0;i<10;i++)
    {
        if(p1[0]<p1[i+1])    max=p1[0];
        p1[0]=p1[i+1];        p1[i+1]=max;
    }
    t=p1[0];
    for(i=0;i<10;i++)
    {
        if(t==p1[i])   
        {
            j++;
            printf("%-20s\n%d\n",pro[i].name,j);
        }
    }
}
void fun2(char *p2[10])
{
    char *m;
    scanf("%s",&m);
    int i;
    for(i=0;i<10;i++)
    {   
        if(m==p2[i])
            printf("%-10d%-20g%-30s",pro[i].num,pro[i].price,pro[i].producers);
    }
   
}
void main()
{   
    int i;
    float *p1[10];
    char *p2[10];
    for(i=0;i<10;i++)
        scanf("%-20s%-10d%-20g%-30s",pro[i].name,pro[i].num,pro[i].price,pro[i].producers);
    p1[10]=&pro[i].price;        
    p2[10]=&pro[i].name;  //想把十个名字存放p2[10]中,以顺序调用   
    fun1(p1,p2);
    fun2(p2);

}
求改错,求指教,如果指出哪里能改变一下思路使得程序简洁易懂就更好了
2015-03-24 22:58
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
这个东东  我觉得应该循序渐进比较好  (比如 我想考初中,还是先学小学的课程,想考高中,要把小学和初中都学习到很好的程度)

就编程的课题来讲,不要拿过来就把所有的要求的代码全部罗列出来,有可能编译没错误 但是实现可能有bug

DO IT YOURSELF !
2015-03-25 09:10
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:1 
图片附件: 游客没有浏览图片的权限,请 登录注册

DO IT YOURSELF !
2015-03-25 09:11
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:3 
我在完成7楼示例的过程中,就分了4步走:
1、保证能够录入数据
2、能够准确的看到我刚刚录入的数据
3、从刚刚录入的数据中筛选出价格最大值的数据
4、当价格最大值不是唯一的时候 要把所有的最大值都筛选出来

下面附我的代码:

程序代码:
#include <stdio.h>

#define N 5

struct product
{  
    char name[30];
    int num;
    double price;
    char producers[30];
};
struct product pro[N];

int main()
{    
    int i;
    printf("请您输入产品信息,请按下列格式输入:\n");
    printf("名称  编号  价格  厂家\n");
    for(i=0;i<N;i++)
    {
        scanf("%20s%10d%20lf%30s",pro[i].name,&pro[i].num,&pro[i].price,pro[i].producers);
    }
    printf("-------------------------------------------\n");
    printf("-------您录入的产品信息如下-------\n");
    printf("名称             编号    价格               厂家    \n\n");
    for(i=0;i<N;i++)
    {
        printf("%-20s%-4d%-20.2lf%-30s\n",pro[i].name,pro[i].num,pro[i].price,pro[i].producers);
    }
    double pri=0.0;
    int xh=0;
    int ixh=0;
    int sxh[N]={0};
    for(i=0;i<N;i++)
    {
        if(pro[i].price>=pri) 
        {
            pri=pro[i].price;
            xh=i;
        }
    }

    for(i=0;i<N;i++)
    {
        if(pro[i].price==pri) 
        {
            sxh[ixh]=i;
            ixh++;
        }
    }
    printf("-------------------------------------------\n");
    printf("-----您录入的产品中,价格最高的产品如下:------\n");
    printf("名称             编号    价格               厂家    \n\n");
    for(i=0;i<ixh;i++)
    {
        printf("%-20s%-04d%-20.2lf%-30s\n",pro[sxh[i]].name,pro[sxh[i]].num,pro[sxh[i]].price,pro[sxh[i]].producers);
    }
    return 0;
}

DO IT YOURSELF !
2015-03-25 09:14
Vsnow
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:124
专家分:145
注 册:2015-1-3
收藏
得分:0 
好的,谢谢!我先对照着看一下。
2015-03-25 09:53
Vsnow
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:124
专家分:145
注 册:2015-1-3
收藏
得分:0 
#include <stdio.h>

#define N 5

struct product
{  
    char name[30];
    int num;
    double price;
    char producers[30];
};
struct product pro[N];

int main()
{   
    int i;
    printf("请您输入产品信息,请按下列格式输入:\n");
    printf("名称  编号  价格  厂家\n");
    for(i=0;i<N;i++)
    {
        scanf("%20s%10d%20lf%30s",pro[i].name,&pro[i].num,&pro[i].price,pro[i].producers);
        //为什么&pro[i].num,&pro[i].price,前面必须得有&,把这个&去掉之后,程序无错,但是不能继续运行
        //如果说&pro[i].price是方便下面的程序取地址,但&pro.[i].num前面得有&就不能理解了
        //求讲解
    }
    printf("-------------------------------------------\n");
    printf("-------您录入的产品信息如下-------\n");
    printf("名称             编号    价格               厂家    \n\n");
    for(i=0;i<N;i++)
    {
        printf("%-20s%-4d%-20.2lf%-30s\n",pro[i].name,pro[i].num,pro[i].price,pro[i].producers);
    }
    double pri=0.0;
    int xh=0;
    int ixh=0;
    int sxh[N]={0};
    for(i=0;i<N;i++)
    {
        if(pro[i].price>=pri)
        {
            pri=pro[i].price;
            xh=i;
        }
    }

    for(i=0;i<N;i++)
    {
        if(pro[i].price==pri)
        {
            sxh[ixh]=i;
            ixh++;
        }
    }
    printf("-------------------------------------------\n");
    printf("-----您录入的产品中,价格最高的产品如下:------\n");
    printf("名称             编号    价格               厂家    \n\n");
    for(i=0;i<ixh;i++)
    {
        printf("%-20s%-04d%-20.2lf%-30s\n",pro[sxh[i]].name,pro[sxh[i]].num,pro[sxh[i]].price,pro[sxh[i]].producers);
    }
    return 0;
}
2015-03-25 10:46
快速回复:此题最好能用struct和指针,有注释就更好啦!实在指针和struct在一起就 ...
数据加载中...
 
   



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

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