C 字符串’;字符数&;字母顺序

C 字符串’;字符数&;字母顺序,c,string,C,String,开发一个C程序来执行以下操作: 创建两个名为first和second的由25个元素组成的一维字符数组 要求用户输入两个字符串,并将它们存储在第一个和第二个数组中 将这两个数组传递给名为countChars的函数,该函数计算并打印每个字符串中的字符数 将这两个数组传递给另一个名为order的函数,该函数确定并返回一个结果,该结果按字母顺序显示哪个字符串先于另一个字符串。当主函数收到返回的结果时,它将打印一条消息以显示其顺序。例如,如果第一个字符串为“绿色”,第二个字符串为“白色”,则函数将按字母

开发一个C程序来执行以下操作:

  • 创建两个名为first和second的由25个元素组成的一维字符数组
  • 要求用户输入两个字符串,并将它们存储在第一个和第二个数组中
  • 将这两个数组传递给名为countChars的函数,该函数计算并打印每个字符串中的字符数

  • 将这两个数组传递给另一个名为order的函数,该函数确定并返回一个结果,该结果按字母顺序显示哪个字符串先于另一个字符串。当主函数收到返回的结果时,它将打印一条消息以显示其顺序。例如,如果第一个字符串为“绿色”,第二个字符串为“白色”,则函数将按字母顺序确定绿色在白色之前。主函数将打印一条语句,其中说明: “按字母顺序,\绿色\在\白色\之前”
代码:

#包括
#包括
int main(){
第一个字符[25],第二个字符[25];
内部长度1,长度2;
printf(“输入第一个和第二个字符串:”);
scanf(“%s%s”,第一个,第二个);
长度1=strlen(第一个);
长度2=斯特伦(秒);
订单(第一、第二);
返回0;
}
整数顺序(字符*第一,字符*第二){
int i;
对于(i=0;第一[i]&第二[i]&第一[i]==第二[i];i++)
if(第一[i]&第二[i]){
返回1;
}否则
返回0;
}
订单()的目标与strcmp()的功能相匹配

因此,
order()
的快速解决方案是

int order(char *first, char *second) {
  return strcmp(first, second);
}

然而,也许我们的目标是实现这一目标

如注释所示,运行字符串以查找差异

然后使用一个常见的C习惯用法
(a>b)-(a
进行比较。这避免了所有溢出问题,即使当类型为
char
时,这些问题不太可能出现

// return 0 on match
// return 1: first > second
// return -1: first < second
int order(char *first, char *second) {
  while (*first && *second && *first == *second) {
    first++;
    second++;
  }
  return (*first > *second) - (*first < *second);
}

到目前为止你做了什么?你做了什么?给我们看看你的代码。你的问题在哪里?请使用正确的问题格式。#include#include int main(){char first[25],second[25];int length1,length2;printf(“输入第一个和第二个字符串:”);scanf(“%s%s”,first,second);length1=strlen(first);length2=strlen(second);:(:(伙计们,我是这个网站的新手,很抱歉,我只是不知道如何按字母顺序对2个字符串进行排序,我可以对1个字符串进行排序,但不能说你有一个函数
int-inoder(char*first,char*second){…}
第一个
第二个
传递给函数。在
第一个
第二个
中对每个字符进行检查,直到找到一个不同的字符或字符用完为止。(找出哪个排序在另一个之前),然后返回
1
,如果它们被排序,或者返回
0
,如果没有。试一试,例如
int i;for(i=0;first[i]&&second[i]&&first[i]&&first[i]==second[i];i++}
现在计算
if(first[i]&&second[i]){/*检查哪个更大*/}
现在处理字符用完的情况。主函数打印一条语句,上面写着:“按字母顺序,例如,.\green\is before\white\”。该语句会是什么样子?@AmerSyouri
int compare\u result=order(first,second);if(compare\u result<0)do\u this do\u els do\u that;
100/100,非常感谢
// return 0 on match
// return 1: first > second
// return -1: first < second
int order(char *first, char *second) {
  while (*first && *second && *first == *second) {
    first++;
    second++;
  }
  return (*first > *second) - (*first < *second);
}
int order_alt(const char *first, const char *second) {
  while ((*first == *second) && *first) {
    first++;
    second++;
  }
  return ((unsigned char)*first > (unsigned char)*second) - 
         ((unsigned char)*first < (unsigned char)*second);
}