| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1746 人关注过本帖
标题:C语言综合题目.求高手解决.
只看楼主 加入收藏
WJbobo
Rank: 1
等 级:新手上路
帖 子:85
专家分:3
注 册:2008-4-10
结帖率:76.92%
收藏
 问题点数:0 回复次数:8 
C语言综合题目.求高手解决.
紧急求助
//用结构体输入数据,输入1继续输入,2结束,并按照书名排序输出。
#include"stdio.h"
#include"string.h"
//结构体
struct Book{
    char name[20];
    int price;
    int num;
    int amout;
}book[20];
int count=3;
//输出
void output(struct Book book[],int sum  )
{
    int i;
    for(i=0;i<sum;i++)
    {
        printf("书名是:\t");printf("单价是:\t");printf("数量是:\t");printf("该书的总价是:\t");
        printf("\n");
        printf("%s\t\t",book[i].name);
        
        printf("%d\t\t",book[i].price);
        
        printf("%d\t\t",book[i].num);
        
        printf("%d,%d,%d\t",book[i].amout=book[i].num*book[i].price);
        printf("\n");
    }
    return;
}
//排序
void sort(struct Book book[], int sun)
{
   struct Book zemp;
   int i;
   for(i=0;i<sun;i++)
   {
       if(strcmp(book[i].name,book[i+1].name)<0)
       {
           zemp=book[i];
           book[i]=book[i+1];
           book[i+1]=zemp;
       }
   }
    output(book,count);
   return;

}
void main()
{
    int i,y;//i 变量
     
   for(i=0;i<count;i++)
    {   
      printf("请输入图书的书名:\n");
      scanf("%s",book[i].name);
      printf("请输入图书的价格:\n");
      scanf("%d",&book[i].price);
      printf("请输入图书的数量:\n");
      scanf("%d",&book[i].num);
       do{
      
      printf("是否继续增加一本书的信息:(1/2)");
      scanf("%d",&y);

      
      
          }while(y==1);
   
}
      printf("***********************************************\n");
      printf("排序前\n");
      output(book,count);
      printf("***********************************************\n");
      printf("按书名排序后为:\n");
      //printf("按书名排序为:\n");
      sort(book,count);
      //printf("***********************************************\n");
      //printf("按书名排序后为:\n");
      //output(book,count);



}
有几个问题我控制不住.
1.count 不应该是具体的值。它是当输入2时,结束并统计count的值。输出
2。排序,好像没什么错啊。可是排不出来
3。就是输入1继续,输入2结束,
搜索更多相关主题的帖子: C语言 
2008-09-10 10:54
shaoyuan
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2008-9-7
收藏
得分:0 
C中1表示永真,break让程序退出一个循环语句,可以再定义一个变量来作为退出多重循环的标示。
2008-09-10 23:26
WJbobo
Rank: 1
等 级:新手上路
帖 子:85
专家分:3
注 册:2008-4-10
收藏
得分:0 
那是当然啊.1是在条件成立的前提下才为真啊.如果不成立不就推出了吗.
2008-09-11 19:43
zhong0711101
Rank: 2
等 级:论坛游民
帖 子:156
专家分:25
注 册:2008-7-15
收藏
得分:0 
count为何不声明,也不处理?
2008-09-14 15:19
zhong0711101
Rank: 2
等 级:论坛游民
帖 子:156
专家分:25
注 册:2008-7-15
收藏
得分:0 
void sort(Book book[], int sun)
{
   struct Book temp;
   int i,j;
   int numberOfBook=sun;
   for(i=0;i<numberOfBook-1;i++)
   {
       for(j=0;j<numberOfBook-1;j++)
       {
           if(strcmp(book[j].name,book[j+1].name)>0)
           {
              temp=book[j];
              book[j]=book[j+1];
              book[j+1]=temp;
           }
       }
   }
}
排序算法
2008-09-14 16:23
xieguoyong888
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-10-11
收藏
得分:0 
高手们都来了
2008-10-11 14:13
kakaqq
Rank: 1
等 级:新手上路
威 望:1
帖 子:48
专家分:0
注 册:2008-10-7
收藏
得分:0 
[bo][un]WJbobo[/un] 在 2008-9-11 19:43 的发言:[/bo]

那是当然啊.1是在条件成立的前提下才为真啊.如果不成立不就推出了吗.

如果输入1表示while成立然后回到do{}这个语句。如果输入2的话就是说while不成立就回到了for(){}。我想说的是不管是输入1 还是2。你都逼着让人必须输入三次然后程序才能继续执行。那你这个“是否继续曾加一本书的信息”有什么意义?
2008-10-13 10:04
kakaqq
Rank: 1
等 级:新手上路
威 望:1
帖 子:48
专家分:0
注 册:2008-10-7
收藏
得分:0 
你说count不是具体的值。哪么你为什么在前面定义int count=3呢?搞个全局变量?
2008-10-13 10:10
kakaqq
Rank: 1
等 级:新手上路
威 望:1
帖 子:48
专家分:0
注 册:2008-10-7
收藏
得分:0 
给你该了你看下功能估计和你想的差不多吧。

#include"stdio.h"
#include"string.h"
//结构体
struct Book{
    char name[20];
    int price;
    int num;
    int amout;
}book[20];
int count=100;
//输出
void output(struct Book book[],int sum  )
{
    int i;
    for(i=0;i<sum;i++)
    {
        printf("书名是:\t");printf("单价是:\t");printf("数量是:\t");printf("该书的总价是:\t");
        printf("\n");
        printf("%s\t\t",book[i].name);
        
        printf("%d\t\t",book[i].price);
        
        printf("%d\t\t",book[i].num);
        
        printf("%d\t",book[i].amout=book[i].num*book[i].price);
        printf("\n");
    }
    return;
}
//排序
void sort(struct Book book[], int sun)
{
   struct Book zemp;
   int i;
   for(i=0;i<sun;i++)
   {
       if(strcmp(book[i].name,book[i+1].name)<0)
       {
           zemp=book[i];
           book[i]=book[i+1];
           book[i+1]=zemp;
       }
   }
 
   return;

}
void main()
{
    int i,y;//i 变量
     
   for(i=0;i<count;i++)
    {   
      printf("请输入图书的书名:\n");
      scanf("%s",book[i].name);
      printf("请输入图书的价格:\n");
      scanf("%d",&book[i].price);
      printf("请输入图书的数量:\n");
      scanf("%d",&book[i].num);
      printf("是否继续增加一本书的信息:(1/2)");
      scanf("%d",&y);
      if(y==1);
      else {count=i+1;
      break;}         //仔细看这里的判断啊,你说的count作计数也是在这完全不知道为什么你在前面定义一个全局count是为什么·····排序应该没问题。
     
   
}
      printf("***********************************************\n");
      printf("排序前\n");
      output(book,count);
      printf("***********************************************\n");
      printf("按书名排序后为:\n");
      //printf("按书名排序为:\n");
      sort(book,count);
      //printf("***********************************************\n");
      //printf("按书名排序后为:\n");
      output(book,count);

}
2008-10-13 10:35
快速回复:C语言综合题目.求高手解决.
数据加载中...
 
   



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

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