c语言-C语言比较字符串大小

问题描述

C语言比较字符串大小

#include
#include
void sort(char *name[],int n);
void print(char *name[],int n);
int main()
{
char *name[]={"C programming","BASIC","Java","FORTRAN","Computer"};
int n=5;
sort(name,n);
print(name,n);
return 0;
}
void sort(char *name[],int n)
{
char *temp;
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(name[k],name[i])<0)
k=j;
if(k!=i)
{
temp=name[i];
name[i]=name[k];
name[k]=temp;
}
}
}
void print(char *name[],int n)
{
int i;
for(i=0;i<n;i++)
puts(name[i]);
}

/*
1.程序运行结果:
C programming
BASIC
Java
FORTRAN
Computer
*/
====求教该程序是比较字符串大小吗?为何结果是那样呢?求程序详细解释

解决方案

    //这里是j
            if(strcmp(name[j],name[i]) < 0)
                k=j;

解决方案二:

该程序是字符串排序,并且sort试图用冒泡法排序,但是写的不对。不知道你为什么定义k,直接交换i和i+1就可以了。

解决方案三:

字符串比较 c语言
字符串大小比较
C语言字符串的比较和Switch

解决方案四:

你的sort程序写错了,你的程序都是字符串,但是temp只是一个字符向量,即temp中只能存放一个字符,所以不能进行交换。

解决方案五:

而且字符串也不能用这种形式进行交换啊,temp=name这是错误的语法。

时间: 2024-11-16 20:16:45

c语言-C语言比较字符串大小的相关文章

C语言字符串大小比较_C 语言

C语言字符串大小比较 #include <stdio.h> #include <string.h> int fun(char *a,char *b) { int i = 0,j = 0; while(a[i]&&b[j]) { if(a[i]-b[j]>0) return 1; else if(a[i]-b[j]<0) return -1; i++,j++; } if(strlen(a)==i&&strlen(b)==j) return

iOS开发系列--C语言之数组和字符串

概览 数组在C语言中有着特殊的地位,它有很多特性,例如它的存储是连续的,数组的名称就是数组的地址等.而在C语言中是没有String类型的,那么如果要表示一个字符串,就必须使用字符数组.今天主要就介绍如下三个方面: 一维数组 多维数组 字符串 一维数组 一维数组操作比较简单,但是需要注意,数组长度必须是固定的,长度不能使用变量进行初始化:如果声明的同时进行赋值则数组长度可以省略,编译器会自动计算数组长度:同时数组不能先声明再一次性赋值(当然可以对每个元素一一赋值). #include <stdio

Go程序设计语言3.5 字符串

3.5 字符串 字符串是不可变的字节序列,它可以包含任意数据,包括0值字节,但主要是人类可读的文本.习惯上,文本字符串被解读成按UTF-8编码的Unicode码点(文字符号)序列,稍后将细究相关内容. 内置的len函数返回字符串的字节数(并非文字符号的数目),下标访问操作s[i]则取得第i个字符,其中0i<len(s).   试图访问许可范围以外的字节会触发宕机异常:   字符串的第i个字节不一定就是第i个字符,因为非ASCII字符的UTF-8码点需要两个字节或多个字节.稍后将讨论如何使用字符.

c语言-C语言程序在字符串中查找某字符

问题描述 C语言程序在字符串中查找某字符 #include int main(void) { int i, j; char ab[80]; char x; printf("Input a character: "); scanf("%c",&x); printf("Input a string: "); gets(ab); for(i=0;i<16;i++) if (ab[i]==x) j=i; printf("index

c语言-C语言反转字符串输出,要求使用递归算法实现。

问题描述 C语言反转字符串输出,要求使用递归算法实现. C语言反转字符串输出,要求使用递归算法实现.不用递归很简单,可是用递归怎么实现呢? 解决方案 #include <stdio.h> void foo(char * s) { if (*s != '') foo(s + 1); printf("%c", (char)*s); } int main() { char s[] = "hello world"; foo(s); } 解决方案二: #inclu

c语言中怎么把一个大小不确定的二维数组当作参数传入函数中

问题描述 c语言中怎么把一个大小不确定的二维数组当作参数传入函数中 c语言中怎么把一个大小不确定的二维数组当作参数传入函数中,取大神,取大神,取大神 解决方案 用VC++新建一个程序,默认生成的main函数定义如下 int mian(int argc, char* args[]) 这就是一个例子. 解决方案二: 一个表示长度的参数,一个指向二维数组的指针 解决方案三: fun(args[][],int rows,int cols) 解决方案四: void Func(int array[][10]

c语言关于printf输出字符串以及scanf的一些问题

问题描述 c语言关于printf输出字符串以及scanf的一些问题 代码一 #include <stdio.h> char ch1[] = {'a', 'b', 'c'}; char ch2[] = "abc"; int main(void) { printf("String ch1 is: %sn", ch1); printf("String ch2 is: %sn", ch2); return 0; } 代码二 #include

c语言-C语言中如何把字符串&amp;amp;quot;2A&amp;amp;quot;转换成0x2A?

问题描述 C语言中如何把字符串"2A"转换成0x2A? 如题:C语言中如何把字符串""2A""转换成0x2A?有没有现成的函数,或者提供一直转换思路? 解决方案 思路:对字符串中每个字符判断是 0 到 9,还是 A 到 F对这两种情况进行处理,是第一种减去 0x30 就是对应的数字:第二种减去 'A',再加上 10.如果字母有小写的情况,也需要考虑. 解决方案二: 思路,手写的.int result = 0;for (int i = 0; i &

printf-c语言去除控制台输入字符串的空格

问题描述 c语言去除控制台输入字符串的空格 #include void f(char *); int main(void) { char str[100]; scanf("%s", str); f(str); return 0; } void f(char *str) { char str1[100]; int i = 0, j = 0; while(str[i] != '') { if(str[i] != ' ') { str1[j] = str[i]; j++; } i++; }