精华内容
下载资源
问答
  • 提示:涉及到字符串数组,一个字符串是一个一维字符数组;一个 字符串数组就是一个二维字符数组。 #include <stdio.h>#include <string.h> /*输入5个学生的名字(英文),使用冒泡排序...

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

    /*
    输入5个学生的名字(英文),使用冒泡排序按从大到小排序。
    提示:涉及到字符串数组,一个字符串是一个一维字符数组;一个
    字符串数组就是一个二维字符数组。
    */

    void main()
    {
    char stuNames[5][100];
    char tmp[100];
    int i = 0,j = 0;
    for(i = 0; i < 5; i++)
    {
    printf("请输入第%d个学生的名字:",i+1);
    scanf("%s",stuNames[i]);
    }


    for(i = 0; i < 5; i++)
    {
    for(j = 0; j < 4 - i; j++)
    {
    if(strcmp(stuNames[j],stuNames[j + 1]) == -1)
    {
    strcpy(tmp,stuNames[j]);
    strcpy(stuNames[j],stuNames[j + 1]);
    strcpy(stuNames[j + 1],tmp);
    }
    }
    }



    for(i = 0; i < 5; i++)
    {
    printf("请输入第%d个学生的名字:%s\n",i+1,stuNames[i]);
    }


    }

    posted on 2014-09-22 20:05 不可思议404 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/zhouyi404/p/3986635.html

    展开全文
  • c-一维字符数组

    千次阅读 2018-12-17 11:14:36
    一维字符数组的定义格式为: char 数组名[数组大小]; 例如:   char c[10]; 该语句定义了一个一维字符数组 c,大小为 10,即占 10 个字符变量空间,最大可存储长度为 9 的字符串(第 10 个字符为 '0')。由于...

    一维字符教组的定义及初始化

    一维字符数组的定义格式为:

    char 数组名[数组大小];

    例如:

    
     
    1. char c[10];

    该语句定义了一个一维字符数组 c,大小为 10,即占 10 个字符变量空间,最大可存储长度为 9 的字符串(第 10 个字符为 '0')。由于没有显式给每个字符变量赋值,故每个字符变量为随机值。

    可以采用单个字符逐个赋值的方式初始化,也可以使用字符串初始化的方式。

    采用逐个字符赋值的方式

    1) 当字符个数少于数组空间大小时,例如:

    
     
    1. char c[8] = {'h','e','l','l','o',};//始值个数5小于数组空间个数8

    该语句定义了含 8 个字符变量的一维字符数组,前 5 个字符变量分别显式初始化为 'h','e','l','l','o' 等 5 个字符,后 3 个字符变量为空字符 '\0'。其存储形式如下。



    当字符数组中含有字符串结束字符 '\0' 时,可以使用 printf 函数及格式控制符 %s,输出该字符数组中的字符串,如下所示。

    
     
    1. printf ("%s”,c); //数组名 c 为首字符 'h' 的地址或者为 &c[0]

    注意:使用 printf 函数及格式控制符 %s,输出一个字符串时,输出列表中一定为某个字符的地址,且从该字符开始的串一定有结束标志 '\0'。该语句的功能是:从输出列表中的该地址开始,到第一次遇到 '\0' 为止,这之间的字符全部输出。

    通常一维数组初始化时,其第一维大小可以省略,例如:

    
     
    1. char c[]={'h','e','l','l','o'};

    对应的数组存储形式如下所示。



    由于该数组中不存在 '\0' 字符,故不能使用 printf("%s",c); 输出。

    
     
    1. char c[8] = {'h','e','l','l','o'};

    不等价于

    
     
    1. char c[]={'h','e','l','l','o'};


    2) 当字符个数等于数组空间大小时,例如:

    
     
    1. char c[5]={'h','e','l','l','o'};//初值个数5等于数组大小5

    执行该初始化语句后,数组的存储形式如下所示。



     

    
     
    1. char c[5]={'h','e','l','l','o'};

    等价于

    
     
    1. char c[]={'h','e','l','l','o'};

    由于该字符数组中不包含字符串结束标志 '\0',故不能使用 printf("%s",c); 输出其中的字符串。输出结果中一般含有随机乱码。

    这种情况一般采用循环语句逐个输出该数组中的每个字符。

    
     
    1. int i;
    2. for(i=0;i<5;i++) //循环次数为字符个数或数组大小
    3. printf ("%c",c[i]);//格式控制符为%c,输出列表中为字符变量c[i]


    3) 当字符个数多于空间大小时,编译时报错。例如:

    
     
    1. char c[4] = {'h','e','l','l','o'}; //错误。初值个数5大于数组大小4

    采用字符串初始化的方式

    在 C 语言中,字符串一般是指含有字符串结束符 '\0' 的若干个字符的集合。而使用双引号括起来的字符串常量,默认隐含字符串结束符 '\0'。例如:

    
     
    1. char c[12] = {"C program"}; //注意该数组大小应足够大

    用字符串对字符数组初始化时,一般大括号可以去掉,即:

    
     
    1. char c[12]="C program";

    该初始化语句与以下三条语句均是等价的。

    
     
    1. char c[12]= {'C',' ','p','r','o','g','r','a','m','\0','\0','\0'};

    或者:

    
     
    1. char c[12] = {'C',' ','p','r','o','g','r','a','m','\0'};

    或者:

    
     
    1. char c[12] = {'C',' ','p','r','o','g','r','a','m'};

    以上等价初始化语句有一个共同特点:数组的大小均为指定值 12。

    其数组存储形式均如下所示。



    采用字符串对字符数组进行初始化时,一般省略一维数组空间的大小,即:

    
     
    1. char c[]="C program";

    该数组中除了存储字符串中的 9 个有效字符外,还自动在字符串的结尾存储 '\0' 字符。即该数组的大小为 10。其存储形式如下所示。



    为节省空间及书写方便,当用字符串对字符数组初始化时,一般均省略其一维的大小。

    一维字符数组的引用

    字符数组中的每一个元素都是一个字符,可以使用下标的形式来访问数组中的每一个字符。

    例如

    
     
    1. char c[]="abcd";

    定义了一个一维字符数组 c,用字符串常量对其初始化,该数组大小为 5,前 4 个元素的值分别为 'a'、'b'、'c'、'd',第 5 个元素的值为 '\0'。其存储形式如下所示。



     

    可以使用 c[i] 引用该数组中的每个元素,例如:

    
     
    1. c[2]='f'; //把'f'赋给元素c[2]
    2. scanf("%c",&c[3]); //输入一个字符,保存到元素c[3]对应的地址空间中
    3. printf("%c",c[1]); //输出元素c[1]中的字符值

    如果每次输出一个字符,可使用循环语句输出字符数组中保存的字符串,参考代码如下。

    
     
    1. int i;
    2. for(i=0;c[i]!='\0';i++) //当前i号位置的字符变量只要不是结束符就输出
    3. printf("%c",c[i]);

    一维字符教组的应用举例

    C 语言中的字符串总是以 '\0' 作为结束标志,所以字符串的长度指的是从字符串的首字符开始,到第一次遇到 '\0' 为止,这之间所包含的有效字符的个数,结束符不计算在字符串长度内。

    如字符串”abcd”,C 语言中字符串最后一个有效字符后隐含 '\0' 字符,故该字符串长度为 4。

    【例 1】编写实现求一个字符串长度的程序。

    分析:把字符串保存在一维字符数组中,其长度用 len 表示,初始为 0。算法为:从该数组的首元素(0 号位置)开始,只要当前元素不为 '\0',len 加 1,直到遇到 '\0' 为止,此时 len 的值即为该字符串的长度。

    实现代码:

    
     
    1. #include<stdio.h>
    2. int main (void)
    3. {
    4. char str[]="A good book is a good friend!";
    5. int i, len=0; //len必须初始化为0
    6. for(i=0;str[i]!='\0';i++)
    7. len++;
    8. printf ("The length is: %d\n",len);
    9. return 0;
    10. }

    运行结果为:
    The length is: 29

    【补充】该程序循环部分也可以使用 while 循环,如下所示:

    
     
    1. i=0;
    2. while(str[i]!='\0')
    3. {
    4. len++;
    5. i++;
    6. }
    展开全文
  • 一维字符数组存放字符串

    千次阅读 2020-02-13 17:21:24
    一、用一维字符数组存放字符串 1、C语言对字符串的约定 字符串是借助于字符型一维数组来存放的,并规定以字符‘\0’作为字符串的结束标志,’\0’作为标志占用存储空间,但不计入串的实际常量 2、C语言中表示字符串...

    一、用一维字符数组存放字符串
    1、C语言对字符串的约定
    字符串是借助于字符型一维数组来存放的,并规定以字符‘\0’作为字符串的结束标志,’\0’作为标志占用存储空间,但不计入串的实际常量
    2、C语言中表示字符串常量的约定
    虽然c语言中没有字符串数据类型,但却允许有‘字符窜常量,字符串常量是由双引号括起来的,在表示字符串常量时不需要人为在其末尾加‘\0’.
    3、C语言字符串常量给出的是地址值
    每个字符串在内存中占有一段连续的存储空间,这些连续的存储空间实际上就是字符型一维数组,不同的字符串在内存中占有不同的存储空间,也就是在C语言中,字符串常量被隐含处理成为以‘\0’结尾的无名字符型一维数组。
    若有一下定义:
    char *sp,s[10];
    则以下赋值是不合法的
    s=“hello”;
    因为s相当于一维数组的首地址,是一个不可重新赋值的数组名,因此赋值不合法。
    而以下赋值是合法的
    Sp=“hello”;
    这个语句并不是把字符串的内容收入Sp中而只是把字符串中在所占的首地址赋予了char类型的指针变量Sp,指针变量Sp指向该字符串.
    4、字符数组与字符串的区别
    字符数组的每个元素可存放一个字符,但它并不限定最后一个字符应该是什么,而字符串则要求最后一个必须是‘\0’作为结束标识,在字符数组中可以存放字符串,但不能通过赋值语句将字符串常量或其他字符数组中的字符串直接赋值给字符串常量

    二、通过赋初值的方式给一维字符数组赋字符串
    1、用给一般数组赋初值的相同方式给一维字符组赋初值
    char str[10]={‘s’,‘t’,‘r’,‘i’,‘i’,‘n’,‘j’,’\0’}
    字符数组str共有10个元素,但str作为字符串,其长度为7,虽然最后一个字符是‘\0’,但它并不是结束标识因为系统会自动的给其分配一个结束标识。
    2、在赋值时直接赋字符串常量
    char str[10]={“string”};
    习惯上省略花括号
    char str[10]=“string!”(这种方式会自动给字符串的末尾添加结束标识,但需要注意的是字符串数组的长度一定要比赋值的长度多一个)

    三、在C程序执行中给一维字符数组赋字符串
    1、不可以用赋值语句给字符数组整体赋一串字符
    当做字符串变量是用的字符数组,不能由赋值语句直接赋字符串常量
    如:
    char mark[10];
    mark=“C Program”;
    以上赋值时不允许的
    再如:
    char str[10]=“computer”,str[10];
    Str2=str1;
    2、给数组元素逐个赋值赋值,最后为加入串结束标志

    展开全文
  • 种:用个二维字符数组 #include<stdio.h> #include<string.h> int main() { char str[3][20]; char string[20]; int i; for(i=0;i<3;i++) gets(str[i]); if(strcmp(str[0],str[1]...

    第一种:用一个二维字符数组

    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
    	char str[3][20];
    	char string[20];
    	int i;
    	
    	for(i=0;i<3;i++)
    		gets(str[i]);
    		
    	if(strcmp(str[0],str[1])>0)
    		strcpy(string,str[0]);
    	else
    		strcpy(string,str[1]);
    		
    	if(strcmp(str[2],string)>0)
    		strcpy(string,str[2]);
    		
    	printf("\nthe largest string is:\n%s\n",string);
    	return 0;
    }
    

    第二种:用3个一维字符数组

    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
    	char string1[20];
    	char string2[20];
    	char string3[20];
    	char string[20];
    	
    	gets(string1);
    	gets(string2);
    	gets(string3);
    	
    	if(strcmp(string1,string2)>0)
    		strcpy(string,string1);
    	else
    		strcpy(string,string2);
    		
    	if(strcmp(string3,string)>0)
    		strcpy(string,string3);
    		
    	printf("\nthe largest string is:\n%s\n",string);
    	return 0;
    }
    
    展开全文
  • 假设现在有一个一维数组,我们查找之中的一个特殊字符,随后,将这个一维数组以这个字符为界,将数组分成若干个晓得一维数组,并存入一个二维数组。 (新生成的数组中不含这个字符
  • 定义一个一维字符数组str[50],输入一串字符,输入整数位置信息M(M<50),调用函数char_cp()把指定位置M之后的内容,拷贝到新字符数组ch[50]中,使用指针完成地址传递,主函数完成数组输入和输出。 时间限制 1 ...
  • 掌握C语言的语法并熟练应用 顺利通过等级考试 认识IT大咖,走入IT殿堂
  • 、关于const的应用(以int作为数据类型代表) 1、常量指针(const int* p):指针的指向可以更改,但指针指向的值不可以直接更改。 说白了就是对*p是不能进行赋值操作的,但要注意随着指针指向的改变,*p也是会...
  • #include<stdio.h> #include<malloc.h> int main() { int n,i,sum=0; scanf("%d",&n); getchar(); char *arr; arr = (char*)malloc(sizeof(char)*n); gets(arr); for(i=0;... {.
  • #include<stdio.h> #include<string.h> void main() { char s[10]=" *****"; int i,j; for(i=0;i<5;i++) { for(j=9-i;j>=0;j--) { printf("%c",s[9-j]); } ...}...
  • 如: 二维字符数组a[3][3] : a b c d e f g h l 那么如何将 g h l 追加到 a b c后面?
  •  .NET Framework : 4.7.2        IDE : Visual Studio Community 2019         OS : Windows 10 x64     typesetting : Markdown         blog : blog.csdn.net/...
  • 维字符数组与字符串数组的使用

    千次阅读 2020-03-20 17:34:15
    一维字符数组的定义形式如下: <存储类型>char<数组名>[<常量表达式>]={<初始值>}; 二维字符数组定义的形式是: <存储类型>char<数组名>[<常量表达式e1>] [<常量...
  • 维字符数组与字符串数组

    千次阅读 2019-07-22 10:46:00
    首先,对于一维字符数组:char a[N]={}; 其实最后代表的也是一个字符串 字符数组的初始化有两种方式: 但其实使用字符常量初始化数组的时候,可以不加上这个 '\0',而使用字符串初始化字符数组的时候,是自动...
  • C语言二维字符数组详解

    万次阅读 多人点赞 2019-07-06 23:28:10
    维字符数组一般用于存储和处理多个字符串,二维字符数组中的每一行均可存储表示一个字符串。 二维字符数组的定义 二维字符数组的定义格式为: char 数组名[第一维大小][第二维大小]; 如: char c[3][10]; //...
  • C语言总结第七章、数组一维数组一维数组的定义一维数组的引用一维数组的初始化程序举例二维数组及多维数组二维数组的定义二维数组元素的引用二维数组元素的初始化程序举例字符数组和字符串字符数组 第七章、数组 ...
  • 维字符数组的定义、赋值和使用

    万次阅读 多人点赞 2019-09-04 00:07:43
    二维字符数组一般用于存储和处理多个字符串,二维字符数组中的每一行均可存储表示一个字符串。...由于该二维数组的每一行 c[0]、c[1]、c[2] 均是含有 10 个元素的一维字符数组,即二维数组的每一行均可表示一个字符...
  • 输入一维字符数组str[N](N≤80),查找出其中小写字母并转换成大写字母,按下面方式排序:1、只对大写字母进行排序;2、其他字符原位保持不动;3、转换后的各大写字母由小到大排序。输出排序后的结果。 时间限制 1...
  • 由于该二维数组的每一行 c[0]、c[1]、c[2] 均是含有 10 个元素的一维字符数组,即二维数组的每一行均可表示一个字符串。 二维字符数组的初始化 通常情况下,二维数组的每一行分别使用一个字符串进行初始化。 例如: ...
  • 二维字符数组一般用于存储和处理多个字符串,二维字符数组中的每一行均可存储表示一个字符串。...由于该二维数组的每一行 c[0]、c[1]、c[2] 均是含有 10 个元素的一维字符数组,即二维数组的每一行均可表示一个字符...
  • 展开全部首先说明第点,你这个代码只是给了个片段,无法全局的对你编写32313133353236313431303231363533e78988e69d8331333431346430的代码评估并确认问题。现在可以修改的是获取控制台输入的代码可以修改为:...
  • 二维数组和二维字符数组 二维数组 首先,我们来介绍一下二维数组。 二维数组:int a[5][10]是内含50个int类型值的数组。 可以想象一下:可以是个5行10列的数据表。 输入某个数的行数和列数,就可以查找这个元素...
  • 动态实现二维字符数组存放字符串 思路: 首先建立一维数组,每个元素都是char*型,再给每一个元素分配它的指向,使每一个元素都指向一个一维的char数组。这就实现了动态二维字符数组 分析:程序第4行先建立row个char...
  • 维字符数组的赋值
  • 一维字符数组的输入输出区别与其他类型的变量,字符型变量必须要以'0'结尾,所以定义的实际数组长度至少比有效字符多一个单位。eg: char s[80]; int i; printf("enter a string:"); while((s[i]=gechar())!='...
  • C语言二维字符数组的输入

    万次阅读 多人点赞 2018-11-22 22:32:02
    标题 C语言字符数组的输入输出 定义个字符二数组,输入行数n,与列数m #include &lt;stdio.h&gt; #include &lt;math.h&gt; int main() { int n,m,i,j; scanf("%d %d",&amp;n,&...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,774
精华内容 3,109
关键字:

一维字符数组