C语言中请高手帮忙修改下下面程序,结果能使单词排序时,不区分大小写。(排序已经完成)。

来自:    更新日期:早些时候
C语言程序设计中区不区分大小写?~

1。C语言程序设计中区不区分大小写?
区分大小写.
例如:abc,Abc,aBc,abC,ABc,aBC,AbC 它们是不同的量。
例如系统保留字和函数 float, double, int, if, for, sin, cos, EOF, NULL 大小写不能错。

2。格式很重要吗?例如有的需要前面空两格,不空会不会有严重后果?

程序书写中的空格符很重要, 例如: *b 是指针b的值,
而 a * b 是变量a乘变量b. 空格符是C语言中基本元素与基本元素(token) 的分隔符。
至于“需要前面空两格”,应当不是重要问题,也许需要一个空格,也许可以两个都不要,要看具体情况。

标准库好像没有。但正则匹配就有。如果用的 unix 类系统,可以 man 一下 regcomp 这个函数。

写一个函数,返回一个字母的大写字母的ASCII码,如果本身是大写字母,则返回自身的ASCII码,然后在判断函数外面增加这个函数就可以了.
不过估计strcmp是不能用的.

还有一种方法,就是把你的字符串放到临时串里面转大写,然后再排序.

这么多解决办法,为什么自己没想到还来问呢?
=================
stricmp是非标准函数~~

用strcmp(str1,str2)呀,如果str1>str2返回正值,若str1<str2返回负值,若str1==str2返回值为0.
希望对你有帮助。满意分给俺呀

用stricmp函数比较字符串,很简单
比较字符串小写时候的大小,当然不会把你原来字符串变成小写

想到过把字符串放到临时字符串里先保存,怎么转换呢?
我现在刚学,属于菜鸟。请在指点一下
#include
#include

char up_ascii(char tmp)
{
if(tmp = 'a')
return tmp - 32;
return tmp;
}

/* 这个函数源自linux的LIB库的源代码 */
int my_strcmp1(const char * cs,const char * ct)
{
register signed char __res;

while (1) {
if ((__res = up_ascii(*cs) - up_ascii(*ct++)) != 0 || !*cs++)
break;
}

return __res;
}

/* 这个是使用临时字符串。当然也可以不用上述的函数。
如果你愿意可以用MALLOC函数来定义长度。
但是别忘记了要判断返回指针是否为NULL,并且结束时候FREE指针 */
#define BUFF_LEN 1000
int my_strcmp2(const char * cs,const char * ct)
{
char buff1[BUFF_LEN];
char buff2[BUFF_LEN];
int i;

i=0;
do
buff1[i] = up_ascii(cs[i]);
while(cs[i++]);

i=0;
do
buff2[i] = up_ascii(ct[i]);
while(ct[i++]);

return strcmp(buff1,buff2);
}

int main(void)
{
char buff1[100];
char buff2[100];

strcpy(buff1,"abcd");
strcpy(buff2,"aBCD");

printf("[%s,%s]%d,%d,%d\n",buff1,buff2,my_strcmp1(buff1,buff2),my_strcmp2(buff1,buff2),strcmp(buff1,buff2));

strcpy(buff1,"azcd");
strcpy(buff2,"aBCD");

printf("[%s,%s]%d,%d,%d\n",buff1,buff2,my_strcmp1(buff1,buff2),my_strcmp2(buff1,buff2),strcmp(buff1,buff2));

strcpy(buff1,"abcd");
strcpy(buff2,"zBCD");

printf("[%s,%s]%d,%d,%d\n",buff1,buff2,my_strcmp1(buff1,buff2),my_strcmp2(buff1,buff2),strcmp(buff1,buff2));

return 0;
}

你没有看明白我的问题,是没有变成小写?但是排序的时候,不能排在小写的行列,比如输出时想要得到:
abc
ABD
abe
但是我输出的时候总是:
abc
abe
ABD
先排列小写,之后才出来大写。我希望得到是,大小写不区分。
stricmp(ABD,abe)结果是小于0;
这个函数不同于strcmp
stricmp内部先吧ABD,abe都转化成小写再比较大小


C语言中请高手帮忙修改下下面程序,结果能使单词排序时,不区分大小写。(排序已经完成)。视频

相关评论:
  • 13121195842C语言中请高手帮忙修改下下面程序,结果能使单词排序时,不区分大小写...
    蔺独郑stricmp是非标准函数~~

  • 13121195842请各位C语言高手帮忙解决下面的问题。
    蔺独郑int target = 0;printf("请输入15个数:\\n");for(i=0; i<15; i++){ scanf("%d", a+i);} printf("\\n请输入要查找的数:\\n");scanf("%d", &target);ret = binary_find(a, target, 0, 14);if(-1 != ret){ printf("\\n%d找到了, 它是a[%d]\\n", target, ret);} ...

  • 13121195842C语言程序设计 编程,我是C语言初学者,请高手们帮我为下面这道题编个程 ...
    蔺独郑if(c == 'b'){ printf("本校夜大学生,你的要选修的学分\\n");scanf("%d", &x);if(x <= 12){ printf("本校夜大学生,你的学费是200元\\n");} else { printf("本校夜大学生,你的学费是%d元\\n", 200+(x-12)*20);} } if(c == 'c'){ printf("外校学生,你的要选修的学...

  • 13121195842请高手帮忙修改下C语言代码的错误 有截图!!! 感激不敬
    蔺独郑include <stdio.h> include <stdlib.h> typedef struct BiTNode\/\/定义结构体 { char data;struct BiTNode *lchild,*rchild;}BiTree;void CreateBiTree(BiTree *T) \/\/前序创建树 { char ch;scanf("%c",&ch);if(ch==' ') T=NULL;else { T=(struct BiTNode *)malloc(sizeof(struct Bi...

  • 13121195842请C语言高手帮忙解答一下下列各题的标准答案。此题是我的重要复习题,不...
    蔺独郑C语言老手为你解答:CBCCC CCAC(C)DDDA 。第1题已确定选C,不必怀疑,(只有新手才会错选D);第10题如果是你无意漏掉了C的分号,那么原题选C,如果原题就没分号,那么原题没有答案;第14题出的不太好,因为这个程序的错误有多种纠正方法(纠正的位置不同),因此关于它出错的地方也可以有多种...

  • 13121195842望C语言高手帮忙分析下下面函数的功能,最好每句都加上注释,感激不尽...
    蔺独郑{p->next=q->next;\/\/把q指向的表中next代表的地址赋给p指向的表中next,即表头的next中存放了表1中next的值,此值是表2的地址 free(q);\/\/释放q的存储空间 q=p->next;\/\/q指向p指向的链表中next中表示的地址单元 } else\/\/p,q指向的表里的data不相等时 {p=q;\/\/p指向表1 q=q->...

  • 13121195842...不知哪错了,有三个错误,请高手帮忙修改一下(超级急)
    蔺独郑编译是没有问题,但你代码有错误。1。void output (SCORE*p,int n){ int i;printf("\\n%s%5s%5s%5s","Number","Engl","Math");上句少一个参数。格式符有4,而相应变量只有3个。2。printf("English Mathema Physic plutonomy history:");scanf("%d%d%d",&p->req.english,&p->req....

  • 13121195842请高手帮我解决一下这道C语言题目,谢谢!
    蔺独郑首先从主函数开始看题,sort(&aa[3],5);之前我们已经知道sort函数的功能是进行排序,sort(&aa[3],5)这条语句明确地告诉我们排序的开始位置在aa[3],即从第四个元素开始排序(数组最基本的知识,aa[0]存储第一个元素),接着就调用sort函数进行排序,以第八个元素结束。此排序过程为冒泡(起泡)...

  • 13121195842C语言高手请进!!!
    蔺独郑改后的程序:include "stdio.h"include "stdlib.h"include "time.h"void main(){ int n,i,j,squ[10][10];srand((unsigned)time(0));for(i=0;i<10;i++){ for(j=0;j<10;j++){ \/\/产生随机数,&&&这部分我帮你改了&&& n=rand()%1000;squ[i][j] = n;\/\/显示部分 if(squ...

  • 13121195842C语言高手进,帮忙解答一下下列各题的标准答案。此题是我的重要复习题...
    蔺独郑36.A 45.C 47.C 50.D 58.B 【解析】32.字符串数组除了里面的实际字符,系统还会自动的分配一个结束符"\\0",所以该数组所占空间为6+1=7个。33.一句话说不明白,放心,已经通过程序验证,答案肯定正确。36.括号内的只能算是一个参数。45.因为是static定义的静态变量,所以x的值是无法更改的,...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网