| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 755 人关注过本帖
标题:谁帮我看看哪里错了
只看楼主 加入收藏
yedeyao
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-7-21
收藏
 问题点数:0 回复次数:7 
谁帮我看看哪里错了
输入N个字符串 比较大小 从小到大输出 #include<stdio.h> void main() { char (*q)[20],a[20]; int i,j,m; scanf("%d",&m); q=(char*)malloc(m*20); for(i=0;i<m;i++) { scanf("%s",q+i); } for(i=1;i<m;i++) { for(j=0;j<m-j;j++) { if(strcmp(q[j],q[j+1])>0) { strcpy(a,q[j]); strcpy(q[j],q[j+1]); strcpy(q[j+1],q); } } } for(i=0;i<m;i++) { printf("%s",q[i]); printf("\n"); } getch(); }
要是在输入一个后 显示"是""否"接着输入 点"是"接着输入 点"否"退出 用函数做 哪个高手可以指点一二否
搜索更多相关主题的帖子: quot strcpy char scanf printf 
2005-07-28 18:54
cosixu
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2004-10-11
收藏
得分:0 

#include<stdio.h> yesorno() {char ch; printf("enter ch:\n"); scanf("%c",&ch); if (strcmp(ch,'y')==0) return 'y'; else return 'n'; } void main() { char *q[20],a[20],ch; int i,j,m; scanf("%d",&m); q=(char*)malloc(m*20); for(i=0;i<m;i++) {scanf("%s",q+i); ch=yesorno(); if (strcmp(ch,'y')==0) scanf("%s",q+i); else break; }

for(i=1;i<m;i++) { for(j=0;j<m-j;j++) { if(strcmp(q[j],q[j+1])>0) { strcpy(a,q[j]); strcpy(q[j],q[j+1]); strcpy(q[j+1],q); } } }

for(i=0;i<m;i++) { printf("%s",q[i]); printf("\n"); } getch(); }

2005-07-29 14:05
anycall628
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2005-2-18
收藏
得分:0 
q=(char*)malloc(m*20);
同样是这一句,运行一楼的程序时提示警告,运行2楼的时候提示错误,倒底问题在哪里呢?

爱生活,爱编程。
2005-07-29 21:59
cosixu
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2004-10-11
收藏
得分:0 
char *q;
q=(char *)malloc(m*sizeof(char *));
去掉后面的20;
2005-07-30 06:27
yedeyao
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-7-21
收藏
得分:0 
不是那里错  我自己改好了

#include&lt;stdio.h&gt;
#include&lt;string.h&gt;
void main()
{
char (*q)[20],a[20];
int i,j,m;
scanf("%d",&amp;m);
q=(char*)malloc(m*20);
for(i=0;i&lt;m;i++)
{
  scanf("%s",q+i);
}

  for(i=1;i&lt;m;i++)
  {
   for(j=0;j&lt;m-i;j++)
     {
      if(strcmp(q[j],q[j+1])&gt;0)
        {
         strcpy(a,q[j]);
         strcpy(q[j],q[j+1]);
         strcpy(q[j+1],a);
         }
     }
  }

for(i=0;i&lt;m;i++)
{
  printf("%s",q[i]);
  printf("\n");
}
getch();
}
2005-07-31 10:02
anycall628
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2005-2-18
收藏
得分:0 
还是有个警告啊

爱生活,爱编程。
2005-07-31 12:45
anycall628
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2005-2-18
收藏
得分:0 
q=(char(*)[20])malloc(m*20);
这样改就对了

爱生活,爱编程。
2005-07-31 12:51
musicml
Rank: 1
等 级:新手上路
帖 子:273
专家分:0
注 册:2005-4-2
收藏
得分:0 

帮你改了下 //输入N个字符串 比较大小 从小到大输出 //要是在输入一个后 显示"是""否"接着输入 点"是"接着输入 点"否"退出 //用函数做

#include<stdio.h> #include<string.h> #include<stdlib.h>

int Is_quit();

int Is_quit() { char judge; printf("Will you go on to start another sorting ? \nIf you go on press 'y' , or 'n'\n"); fflush(stdin); scanf("%c",&judge); if(judge=='y') return 1; else return 0; } int main() { char a[20],(*q)[20];//(*q)[20] 表示q是指针类型变量,指向一个包含20个元素的一维数组,数组元素类型为字符型 int i,j,m; int k; Label: printf("please enter the string's num:\n"); scanf("%d",&m); q=(char(*)[20])malloc(m*20*sizeof(char)); for(i=0;i<m;i++) { printf("please enter the th%d string:\n",i+1); scanf("%s",*(q+i)); } for(i=0;i<m;i++) { k=i; for(j=i;j<m;j++) { if(strcmp(q[k],q[j])>0) { k=j; } } if(k!=i) { strcpy(a,q[i]); strcpy(q[i],q[k]); strcpy(q[k],a); } } printf("\nthe strings after sorting are as following:\n"); for(i=0;i<m;i++) { printf("%s",q[i]); printf("\n"); } if(Is_quit()) goto Label; return 0; }


Every thing is possible.
2005-08-01 20:52
快速回复:谁帮我看看哪里错了
数据加载中...
 
   



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

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