一、一维数组
1.数组是有序数据的集合,数组中的每一个元素都属于同种数据类型,用一个统一的数组名和下标来唯一的确定数组中的元素。
2.一维数组定义
(1)【存储类型】类型说明符 数组名【常量表达式】;
(2)在内存分配若干连续空间给数组。
3.一维数组的引用
数组同变量一样,必须先定义后使用
引用方法:数组名 【下标】
输入10个整数,分别按顺序和逆序输出
#include <stdio.h> void main() { int i,a[10]; printf("input 10 numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(i=0;i<10;i++) printf("%d",a[i]); for(i=9;i>=0;i--) printf("%d",a[i]); }
|
4.一位数组的初始化
定义数组时对数组元素赋初值
方法:【static】数组类型 数组名 【数组长度】={数组元素值};
static型数组不进行初始化时,如果是数值类型数组默认值为0;如果是字符型数组默认值为\0
auto型数组不进行初始化时,编译器不为其自动指定初始值,其初始值为系统分配给数组名元素的内存单元原来的值,这个值是不可以预知的。
#include <stdio.h>
void main() { int i,a[5]; static int c[5]; for(i=0;i<5;i++) printf("%d",a[i]); for(i=0;i<5;i++) printf("%d",c[i]); }
|
二、二维数组
1.定义:数组的数组
类型 数组名【表达式1】【表达式2】
二维数组可看做特殊的一维数组。
元素在内存排列顺序为按行存放。
多维数组定义类似于二维数组。
2.引用
数组名【行下标】【列下标】
3.二维数组的初始化
分行初始化(推荐):static int a[2][3]={{1,2,3}{4,5,6}}
4.二维数组元素值的输入与输出
#include <stdio.h>
void main() { int i,j,a[3][4]; printf("input array numbers:\n"); for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",&a[i][j]); printf("output array numbers:\n"); for(i=0;i<3;i++) { for(j=0;j<4;j++) printf("%d",a[i][j]); printf("\n"); } }
|
三、字符数组与字符串
1.这好像少了一些内容:字符数组与字符串的关系
2.字符串处理函数
使用时应在程序头文件中添加声明#include
(1)字符串拷贝函数:char* strcpy (char* dest,const char* src);
将字符串src复制到字符数组dest中,返回被复制的字符串
src可以是字符数组名字符串常量或者字符指针变量
dest可以是字符数组名或者字符指针变量,若是字符指针变量要注意给该指针变量赋初值。
dest的长度大于src
(2)字符串连接函数
char* strcat(char* dest,const char* src);
删去字符串dest的结束标志'\0',将字符串或字符数组src连同末尾的结束标志一起连接到字符数组dest尾部,返回连接以后的字符串。
#include <string.h> void main() { char* s1="123",*s2="abcdef",*s3; s3=strcat(s1,s2); printf("%u,%u,%u\n",s1,s2,s3); puts(s1); puts(s2); puts(s3); }
|
(3)计算字符串长度的函数
unsigned int strlen(const char* str);
求出字符串或字符数组中实际字符个数(不含\0)
#include <stdio.h>
#include <string.h>
void main()
{
static char str[20]="hello\0abc\0e\0";
printf("%d\n",strlen(str));
}
|
结果:5
(4)字符串比较函数
int strcmp(const char* s1,const cha* s2);
从左到右逐个比较两个字符串中各个字符(用ASCII码比较)直到出现不同字符或遇到结束标记为止。
返回值:0 串1=串2
正整数 串1>串2
负整数 串1<串2
输入三个字符串,按英文字母序排列
#include <string.h>
void main()
{
char s1[10]="china",s2[10]="american",s3[10]="japan",t[10];
if(strcmp(s1,s2)>0)
{strcpy(t,s1);strcpy(s1,s2);strcpy(s2,t);}
if(strcmp(s2,s3)>0)
{strcpy(t,s2);strcpy(s2,s3);strcpy(s3,t);}
puts(s1);
put(s2);
put(s3);
}
|
比较用户输入的字符串是否为表示同意的Yes(用户可以用大写或小写)
#include "string.h" #include "stdio.h"
void main() { int k; char s1[5],s2[]="Yes"; printf("input a string:\n"); gets(s1); k=0; while(s1[k]!='\0') { if(s1[k]>='a'&&s1[k]<='z') s1=s1-32;k++;} k=0; while(s2[k]!='\0') { if(s2[k]>='a'&&s2[k]<='z') s2=s2-32;k++;} if(strcmp(s1,s2)!=0) printf("s1!=s2\n"); else printf("s1=s2\n"); }
|
阅读(731) | 评论(0) | 转发(0) |