Chinaunix首页 | 论坛 | 博客
  • 博客访问: 470779
  • 博文数量: 164
  • 博客积分: 4024
  • 博客等级: 上校
  • 技术积分: 1580
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-10 16:27
文章分类

全部博文(164)

文章存档

2011年(1)

2010年(108)

2009年(55)

我的朋友

分类: C/C++

2009-10-14 22:36:49

一、一维数组
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");
}


阅读(688) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~