| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2691 人关注过本帖, 1 人收藏
标题:一道C语言题
只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 10楼 小李探花
原来要把ASCII码考虑进去这题有得搞了~有时间我再做做看~看上去不简单欸~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-18 01:14
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
先讲讲思路:从头开始,每次把子串位置移动1个字符单位,然后判断~其是否是"可回收"字符串,一共要移动S-M*L次~重点在判断方法上面~我先酝酿一下,有时间再敲~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-18 01:20
小李探花
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-12-17
收藏
得分:0 
回复 12楼 九转星河
明天白天能敲出来吗,我明天晚上有急用,然后自己手头上还有其他题目要做,只能靠版主你帮我这个忙了
2016-12-18 01:23
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 13楼 小李探花
不一定要我来敲啊,可以集众智,看看有哪位能帮上忙当然,有时间我还是会敲的~
囧,别看我晚睡我要连夜赶网页设计,要交的,只能回一些能一针见血指出问题的贴~


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-18 01:29
小李探花
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-12-17
收藏
得分:0 
回复 14楼 九转星河
可是只有版主你回了我啊
2016-12-18 01:30
小李探花
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-12-17
收藏
得分:0 
回复 14楼 九转星河
版主再帮我看看这个代码问题在哪里
图片附件: 游客没有浏览图片的权限,请 登录注册

44到46行那里出了问题

原题是用一个数组存放图书信息,每本包含书名,作者,出版年月,出版社,借出数目,库存数目等信息。编写程序输入若干本图书的信息,再按出版年月排序后输出。
2016-12-18 01:33
小李探花
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-12-17
收藏
得分:0 
程序代码:
#include <stdio.h>  
#include <stdlib.h>  
struct Data {  

 int year;  

 int month;  

 int day;  
};  
  
struct library {  

 char booktitle[50];  

 char author[10];  

 struct Data data;  

 char publishunit[100];  

 int lendnum;  

 int stocknum;  
};  
  
int main() {  

 int i, j, n, temp = 0;  

 struct library book[n];  

 printf("请输入要处理的图书数量:\n");  

 fflush(stdout);  

 scanf("%d", &n);  

 for (i = 0; i < n; i++) {  
  printf("请输入第%d本书的信息:\n", i + 1);  
  printf("书名:");  
  fflush(stdout);  
  scanf("%s", &book[i].booktitle);  
  printf("作者:");  
  scanf("%s", &book[i].author);  
  printf("出版年月:");  
  scanf("%s", &book[i].data);  
  printf("出版社:");  
  scanf("%s", &book[i].publishunit);  
  printf("借出数:");  
  scanf("%s", &book[i].lendnum);  
  printf("库存数:");  
  scanf("%s", &book[i].stocknum);  

 }  

 for (i = 0; i < n - 1; i++) {  
  for (j = i + 1; j < n; j++) {  
   if (book[i].publishunit < book[j].publishunit) 
   {  
    temp = book[i];  
    book[i] = book[j];  
    book[j] = temp;  
   }  
  }  
  printf("\n排序后的图书信息:");  
  for (i = 0; i < n; i++) {  
   printf("\n书名:  %s\n, 作者:  %s\n, 出版年月:  %s\n, 出版社:  %s\n, 借出数:  %s\n, 库存数:%s\n",  book[i].booktitle, book[i].author, book[i].data,  book[i].publishunit, book[i].lendnum, book  [i].stocknum);  
  }  

 }  

 return EXIT_SUCCESS;  
}  
2016-12-18 01:34
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 15楼 小李探花
这个看看,临时工程,感觉没有优化,做得比较粗糙~

程序代码:
#include<stdio.h>
#include<stdlib.h>
void fun(char *str,char *p,int L,int M)
{
    int i=0;
    int j=0;
    int k=0;

    char *p2=p;
    char *p3=NULL;

    for (;k<M;p=p2+i,k++)
    {
        int flag=0;
        p3=p;
        for (j=0;j<L;j++,p+=L)
        {
            p+=L;
            if (*(p+L)=='\0')
            {
                flag=1;
                break;
            }

            if (*p==*p3)
            {
                flag=1;
                break;
            }
        }
        if (flag)
            break;
    }

    if (k==M)
        printf("满足条件的子串:%.*s\n",M*L,p2);

    p=p2;

    if (*(p+L*M))
        fun(str,++p,L,M);


}
int main()
{
    char S[100000];

    int L,M;

    printf("请输入字符串S:");
    gets(S);

    printf("请输入M和L:");
    scanf("%d%d",&L,&M);

    fun(S,S,L,M);

    return 0;
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-18 02:08
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 17楼 小李探花
#include <stdio.h>  
#include <stdlib.h>  
struct Data {  
 int year;  
 int month;  
 int day;  
};  
  
struct library {  
 char booktitle[50];  
 char author[10];  
 struct Data data;  
 char publishunit[100];  
 int lendnum;  
 int stocknum;  
};  
  
int main() {  
 int i, j, n;//
 struct library temp;//数据类型问题,temp应该为结构体变量~
 struct library book[100];//book[n],[]里面不能为变量  
 printf("请输入要处理的图书数量:\n");  
 fflush(stdout);  
 scanf("%d", &n);  
 for (i = 0; i < n; i++) {  
  printf("请输入第%d本书的信息:\n", i + 1);  
  printf("书名:");  
  fflush(stdout);  
  scanf("%s", &book[i].booktitle);  
  printf("作者:");  
  scanf("%s", &book[i].author);  
  printf("出版年月:");  
  scanf("%s", &book[i].data);  
  printf("出版社:");  
  scanf("%s", &book[i].publishunit);  
  printf("借出数:");  
  scanf("%s", &book[i].lendnum);  
  printf("库存数:");  
  scanf("%s", &book[i].stocknum);  
 }  
 for (i = 0; i < n - 1; i++) {  
  for (j = i + 1; j < n; j++) {  
   if (book[i].publishunit < book[j].publishunit)
   {  
    temp = book[i];  
    book[i] = book[j];  
    book[j] = temp;  
   }  
  }  
  printf("\n排序后的图书信息:");  
  for (i = 0; i < n; i++) {  
   printf("\n书名:  %s\n, 作者:  %s\n, 出版年月:  %s\n, 出版社:  %s\n, 借出数:  %s\n, 库存数:%s\n",  book[i].booktitle, book[i].author, book[i].data,  book[i].publishunit, book[i].lendnum, book  [i].stocknum);  
  }  
 }  
 return EXIT_SUCCESS;  
}  
//排序出了问题,要改一改~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-18 02:17
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 17楼 小李探花
这个可以用了~你来看一下~

程序代码:
#include <stdio.h>  
#include <stdlib.h>  
struct Data {  

 int year;  

 int month;  

 int day;  
};  
  
struct library {  

 char booktitle[50];  

 char author[10];  

 struct Data data;  

 char publishunit[100];  

 int lendnum;  

 int stocknum;  
};  
  
int main()
{  
   int i, j, n;//
   struct library temp;//数据类型问题,temp应该为结构体变量~
   struct library book[100];//book[n],[]里面不能为变量  

   printf("请输入要处理的图书数量:\n");  
   fflush(stdout);  
   scanf("%d", &n); 
   
   for (i = 0; i < n; i++)
   {  
       printf("请输入第%d本书的信息:\n", i + 1); 
       
       printf("书名:");  
       fflush(stdout);  
       scanf("%s", &book[i].booktitle);  

       printf("作者:");  
       scanf("%s", &book[i].author);  

       printf("出版年:");  
       scanf("%d", &book[i].data.year);

       printf("出版月:");
       scanf("%d", &book[i].data.month);

       printf("出版日:");
       scanf("%d", &book[i].data.day);
       
       printf("出版社:");  
       scanf("%s", &book[i].publishunit); 
       
       printf("借出数:");  
       scanf("%d", &book[i].lendnum); 
       
       printf("库存数:");  
       scanf("%d", &book[i].stocknum);  
   }  

   for (i = 0; i < n; i++)  
       for (j = 0; j <n-i-1; j++)
           if (book[i].publishunit < book[j].publishunit) 
           {  
                temp = book[j];  
                book[j] = book[j];  
                book[j] = temp;  
           }  

  printf("\n排序后的图书信息:"); 
  
  for (i = 0; i < n; i++) 
  {
      printf("\n");
      printf("书名:      %s\n",book[i].booktitle);
      printf("作者:      %s\n",book[i].author);
      printf("出版年月日:%d-%d-%d\n",book[i].data.year,book[i].data.month,book[i].data.day);
      printf("出版社:    %s\n",book[i].publishunit);
      printf("借出数:    %d\n",book[i].lendnum);
      printf("库存数:    %d\n",book[i].stocknum);
  }

     return EXIT_SUCCESS;  
}  



[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-18 02:41
快速回复:一道C语言题
数据加载中...
 
   



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

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