目录

  • 数组
  • 字符串

数组

概念

  • 数组是有序数据的集合。
  • 数组中的每一个元素属于同一个数据类型。
  • 通过数组名和下标唯一确定数组中的元素。

一维数组的定义

语法格式

  数据类型   数组名[常量表达式]

  例如:int  arr[10]

  表示定义了一个整型数组,数组名为a,数组中有10个元素。

  数组的下标从0开始。

数组元素的引用

C语言规定只能逐个引用数组元素二不能一次引用整个数组。

数组元素的的表示形式为: 数组名[下标]

示例:

输出结果:

数组初始化

1.在定义数组时初始化

2.初始化部分元素值

输出

3.初始化全部元素值

初始化全部元素时候,可以不指定数组长度

4.所有元素初始化为0

输出

注意:只能限于初始化元素为0值。否则的话只是对第一个元素初始化。

示例

使用数组解决Fibonacci数列。

Fibonacci数列定义:数列由 0 和 1 开始,之后的系数由之前的两数相加。首几个斐波那契系数是:

0,1,1,2,3,5,8,13,21

输出结果:

二维数组的定义

语法格式

  数组名[下标][下标]

二维数组的引用

  同一维数组,通过数组名和下标确定唯一的二维数组元素。

二维数组的初始化

1.分行初始化

输出:

2.全部初始化

3.部分元素初始化

输出:

4.初始化全部数据时候可以不指定第一维长度

示例

将一个二维数组行和列的元素互换,保持到另一个二维数组中。

源码:

字符串

定义

C语言中没有定义字符串类型的数据,所以字符串是作为字符数组来处理的。字符数组的定义和使用同其他基本数据类型数组。

注意:字符数组中,C语言使用’\0’来结束一个字符串。如果一个数组包含1个以上的’\0’,则遇到第一个’\0’的时候输出结束。

使用字符串初始化字符数组

输出:

或者:

使用scanf函数接收信息初始化字符数组

注意,sacnf中,数组作为地址参数不需要添加”&”。

字符串处理函数

注意,字符串处理函数需要包含string.h文件。

例如:

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

  

puts()和gets()

语法格式:

puts(字符数组) :向终端输出字符串

gets(字符数组) :从中断获取字符串

示例:

strcat()

语法格式:

strcat(字符数组1,字符数组2)

作用:

把字符数组2连接到字符数组1后面,结果放在字符数组1中。

示例:

输出:

strcpy()和strncpy()

语法格式:

Strcpy(字符数组1,字符串2)

作用:

将字符串2复制到字符数组1中。

示例:

输出:

注意:

1.字符数组1必须写出数组名形式;字符串2可以是字符数组名,也可以是一个字符串常量。

2.C语言中,不能使用赋值语句将一个字符串常量或者字符数组直接赋值给一个字符数组,例如以下是错误的:

3.strncpy(字符数组1,字符串2,复制长度)可以指定字符串2中的前n个字符复制到字符数组1中。

strcmp()

语法格式

strcmp(字符串1,字符串2)

作用

比较字符串1和字符串2

比较规则:

两个字符串从左向右逐个字符比较(按照ASCII码值比较),直到出现’\0’为止。如果全部字符相同,则两个字符串相等;若出现不同的字符,则以第一个不相同的字符的比较结果为准。

示例:

strlen()

语法格式

strlen(字符数组)

作用

测量字符数组的长度,不包括’\0’。

strlwr()和strupr()

语法格式

  strlwr(字符串)和strupr(字符串)

作用

把字符串转换成小写(或者大写)。

strcspn()

语法格式

  strcspn(字符串1,字符串2)

作用

查找字符串2在字符串1中的位置

示例

数据类型转换

头文件:#include <stdio.h>

sprintf()函数用于将格式化的数据写入字符串,其原型为:

int sprintf(char *str, char * format [, argument, ...]);

  

示例代码:

  sprintf(s, "%d", 123);  //把整数123打印成一个字符串保存在s中
sprintf(s, "%8x", 4567); //小写16进制,宽度占8个位置,右对齐

上机练习

  • 需求描述:设计一个字符二维数组,用来存储学生信息,学生信息包括:学号,姓名、性别(男或者女)、年龄、电话、地址。
  • 提示:二维数组定义 students[10][300],从控制台接收学生信息保持到二维数组,从数组读取学生信息,显示到控制台。
  • 提示代码:
#include <stdio.h>
#include <string.h> int main()
{
int i;//循环变量
char i_temp[30];//整数转换字符数组临时变量
char stu_temp[300];//学生信息临时数组
char list[10][300];//学生信息数组
char tag[]="$";
//初始化两个学生
strcpy(list[0],"1001$张三$男$23$13122224444$厦门");
strcpy(list[1],"1002$李四$女$21$13322224444$福州"); //从控制台输入学生信息
int id;
char name[50];
char gender[3];
int age;
char tel[14];
char address[50]; printf("请输入学号:");
scanf("%d",&id);
sprintf(i_temp,"%d",id);//学号转成字符数组
strcpy(stu_temp,i_temp);
strcat(stu_temp,tag); printf("请输入姓名:");
scanf("%s",name);
strcat(stu_temp,name);
strcat(stu_temp,tag); printf("请输入性别:");
scanf("%s",gender);
strcat(stu_temp,gender);
strcat(stu_temp,tag); printf("请输入年龄:");
scanf("%d",&age);
sprintf(i_temp,"%d",age);//年龄转成字符数组
strcat(stu_temp,i_temp);
strcat(stu_temp,tag); printf("请输入电话:");
scanf("%s",tel);
strcat(stu_temp,tel);
strcat(stu_temp,tag); printf("请输入地址:");
scanf("%s",address);
strcat(stu_temp,address);
strcat(stu_temp,tag); strcpy(list[2],stu_temp); //输出学生信息
char temp[300];//临时变量
for(i=0;i<3;i++){
strcpy(temp,list[i]);
int length=strlen(temp);
for(int j=0;j<length;j++){
if(temp[j]=='$'){
temp[j]='\t';//使用制表符'\t'替换'$'
}
}
printf("%s\n",temp);
} return 0;
}

  

C05 C语言字符串和数组的更多相关文章

  1. C语言字符串与字符数组

    字符串儿与字符数组 字符数组的定义: Char buffer[]; 字符数组初始化: Char buffer1[]="hello world"; 利用scanf输入一个字符串儿 代 ...

  2. js课程 3-10 js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么

    js课程 3-10  js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么 一.总结 一句话总结:js中是对象点方法的形式,这些方法都是对象的方法,而在php.java中却不是这样. 1.j ...

  3. C语言基础知识-数组和字符串

    C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...

  4. sizeof、strlen、字符串、数组,整到一块,你还清楚吗?

    写在前面 sizeof.strlen.字符串.数组,提到这些概念,相信学过C语言的人都能耳熟能详,也能谈得头头是道,但是,在实际运用中,当这些内容交织在一起时,大家却不一定能搞地清清楚楚,本文的目的正 ...

  5. C语言字符串操作总结大全(超详细)

    本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作  strcpy(p, p1) 复制字符串  strncpy(p, p1, n) 复制指定长度字符串  strcat( ...

  6. 03- Shell脚本学习--字符串和数组

    字符串 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号.单双引号的区别跟PHP类似: 单双引号的区别: 双 ...

  7. C语言学习004:数组与指针

    在C语言中,字符串实际上就是字符数组,在内存中字符串"Shatner"存储的形式是这样的

  8. C语言中的数组的一些笔记

    C语言是面向过程的语言. 计算数组长度: Int count =sizeof(ages)/sizeof(int); C语言里面输出字符串,必须以'\0'结束,如果没有则一直执行下去. Char nam ...

  9. C语言字符串长度(转)

    C语言字符串长度的计算是编程时常用到的,也是求职时必考的一项. C语言本身不限制字符串的长度,因而程序必须扫描完整个字符串后才能确定字符串的长度. 在程序里,一般会用strlen()函数或sizeof ...

随机推荐

  1. Codeforces - 65D - Harry Potter and the Sorting Hat - 简单搜索

    https://codeforces.com/problemset/problem/65/D 哈利波特!一种新思路的状压记忆化dfs,记得每次dfs用完要减回去.而且一定是要在dfs外部进行加减!防止 ...

  2. BlocksKit的使用

    一.引言 众所周知Block已被广泛用于iOS编程.它们通常被用作可并发执行的逻辑单元的封装,或者作为事件触发的回调.Block比传统回调函数有2点优势: 允许在调用点上下文书写执行逻辑,不用分离函数 ...

  3. C++ STL map使用

    Map是c++的一个标准容器,它提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map构造函数:map<string , in ...

  4. 算法学习--Day8

    今天重拾算法复习. 今天学习了两个类型的算法——并查集与最小生成树(MST) 简单记录一下并查集的大致内容. 一.并查集的内容大致作用为查找当前图中的点有几个集合. 该算法起到查询分组的情况.通过给定 ...

  5. java日期时间处理集合

    本文主要介绍java中日期时间的处理,包括获取时间,时间相加减,格式化等操作. 持续更新中... 时间格式化 //时间格式化 SimpleDateFormat dateFormat = new Sim ...

  6. Splay(区间翻转) 模板

    洛谷:P3391 [模板]文艺平衡树(Splay) #include<cstdio> #include<iostream> #include<algorithm> ...

  7. [Xcode 实际操作]九、实用进阶-(11)系统本地通知的创建和使用

    目录:[Swift]Xcode实际操作 本文将演示系统本地通知的创建和使用. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //引入需要 ...

  8. 黑马tomcat学习day01 tomcat项目部署方式 1.webapps方式 2.Context元素方式

  9. Zynq7000开发系列-7(在Zybo上运行Linaro桌面系统)

    目标板:Zybo(7Z010) 主机操作系统:Ubuntu 14.04.5 LTS 64bit 交叉编译链: arm-xilinx-linux-gnueabi-       [gcc version ...

  10. 109 Convert Sorted List to Binary Search Tree 有序链表转换二叉搜索树

    给定一个单元链表,元素按升序排序,将其转换为高度平衡的BST.对于这个问题,一个高度平衡的二叉树是指:其中每个节点的两个子树的深度相差不会超过 1 的二叉树.示例:给定的排序链表: [-10, -3, ...