C语言-第五章、用数组实现批量数据处理

5_1  数组的概念

注:(1)在定义数组时,数组的元素个数(又称数组长度)必须是确定的,即只能是整型常量表达式。

         (2)完成数组的定义,引用元素时,下标从0开始计数。

5_2  一维数组

2.1   一维数组的定义

2.2  一维数组的使用

1.   两种方法初始化

(1)在定义数组时同时初始化数组元素

注:①可以只部分元素初始化

 

        ②只能给元素逐个赋值,不能整体赋值。

(2)先定义,再初始化:采用循环结构如:

#include<stdio.h>
int main()
{
    int i,score[10];
	for (i=0;i<10;i++)
	{
	    scanf("%d",&score[i]);/*也可以是对元素直接赋值如:score[i]=i+2;*/
	}
    return 0;
}

2.C语言中只能逐个地引用数组元素,而不能对数组进行整体引用。如:

for (i=0;i<50;i++)
printf("%d",score[i]);/*而不是printf("%d",score);*/

3.删除数组元素

简要分析:功能实现   ①查找定位           ②移动

#include<stdio.h>
#define  N  10
int main()
{
    int a[N]={1,2,3,4,5,6,7,8,9,10},x,i,k,flag=0;
	printf("原数组值:");
	for(i=0;i<N;i++)
		printf("%4d",a[i]);
	printf("输入要删除的元素值:");
	scanf("%d",&x);
	for(i=0;i<N;i++)
		if (a[i]==x)   {k=i;flag=1;break;}
		if (flag==0)  printf("不存在为%d的元素值!\n",x);
		else 
		{
		    if (k==N-1) a[N-1]=0;
			else 
			{
				for (i=k;i<N-1;i++)
					a[i]=a[i+1];
			    a[i]=0;
			}
    printf("\n删除元素%d后的数组值:",x);
	for(i=0;i<N;i++)   printf("%4d",a[i]);
	printf("\n");
		}
    return 0;
}

2.一维数组的排序

【5-4】输入N个整数,将其按升序排列

①冒泡排序法:

#include<stdio.h>
#define  N  5
int main()
{
    int a[N],t,i,j;
    printf("请输入%d个数:",N);
	for (i=0;i<N;i++)
		scanf("%d",&a[i]);
	for (i=0;i<N-1;i++)
		for (j=0;j<N-i-1;j++)
			if (a[j]>a[i])
		{
		
				t=a[j];a[j]=a[j+1];a[j+1]=t;
		}
		printf("升序排列结果如下:\n");
		for(i=0;i<N;i++)
			printf("%4d",a[i]);
		printf("\n");
    return 0;
}

 

②选择排序法:

#include<stdio.h>
#define  N  5
int main()
{
    int a[N],t,i,j,k;
    printf("请输入%d个数:",N);
	for (i=0;i<N;i++)
		scanf("%d",&a[i]);
	for (i=0;i<N-1;i++)
	{   k=i;
		for (j=i+1;j<N;j++)
			if (a[j]<a[k])
				k=j;
			if (k!=i)
		{
		
				t=a[k];a[k]=a[i];a[i]=t;
		}
	}
		printf("升序排列结果如下:\n"); 
		for(i=0;i<N;i++)
			printf("%4d",a[i]);
		printf("\n");
    return 0;
}

2.3.数组中递推的应用

【5-5】利用一维数组,输出斐波拉契数列:1,1,2,3,5,8,13,21,34,55,89……

#include<stdio.h>
#define  N  20
int main()
{
    int a[N]={1,1},i;
    for (i=2;i<N;i++)
		a[i]=a[i-1]+a[i-2];
	for(i=0;i<N;i++)
	{
	    printf("%d\t",a[i]);
		if((i+1)%5==0)
			printf("\n");
	}
    return 0;
}

5_3  二维数组

_3-1.二维组的定义

_3-2.二维数组的使用

1.二维数组的初始化

2.二维数组元素的引用

3.二维数组的应用举例

5_4  字符数组

_4-1 字符数组的定义

_4-2 字符数组和字符串

_4-3 字符数组的初始化

 

①逐一赋值:char str[10]={C',' ','p','r','o','g','r','a','m'};

 

②字符串赋给指定的数组:char str[10]={"C progaram"}

_4-4.  字符数组的输入输出

1. 用格式符“%c”逐个输入输出数组中的字符

【例5-8】逐个输入/输出数组中的字符

#include<stdio.h>
#include<stdio.h>
int main()
{
    char c[10];
	int i;
   printf("请输入10个字符:");
   for(i=0;i<10;i++)
	   scanf("%c",&c[i]);
   printf("您输入的10个字符为:");
   for (i=0;i<10;i++);
   printf("%c",c[i]);
   printf("\n");
    return 0;
}

2. 用格式符“%s”将整个字符串一次输出,遇到‘\0’停止输出(停止后不会自动换行)。

(1)【例5-9】 

#include<stdio.h>
int main()
{
    char c[]="Program";
   printf("%s\n",c);
   c[4]='\0';
   printf("%s\n",c);
    return 0;
}

注:数组下标从0开始计数,所以c[4]是第五个数即‘\0’,结束。

(2)用“%s”输出字符时,printf 函数中的输出项为元素的地址如:

char c[]="Program";
printf("%s",&c[1]);   /*结果为:rogram*/

(3)  可用scanf输入一个字符串,系统默认以空格作为一个串的输出结束标志如:

char c[20];
scanf("%s",c);
printf("%s",c);

键盘输入:you are a student.

结果为:you

注:如果要输入的字符串中本来就有空格字符,则不能使用格式控制符“%”将整个字符串输入。此时,通常可采用格式符“%c”逐个输入数组中的字符或字符串处理函数gets来接收字符串。

_4-5  常用的字符串处理函数

头文件stdio.h 包含:输入、输出、合并、修改、比较、转换、复制、搜索等几类。

而其他字符串函数应包含头文件“string.h”

1.字符串输出函数puts

2.字符串输入函数gets

#include<stdio.h>
int main()
{
    char str [15];
    printf("请输入一个字符串:");
    gets (str)
    puts("您输入的字符串如下:");
    puts (str);
    return 0;
}

 

①当输入的字符串中含有空格时,输出仍为全部字符串。使用gets函数接受字符串时,只以回车作为结束标       志。这是与scanf函数不同的。
②使用puts函数输出字符串时,其参数可以是字符数组名,也可以是字符串常量。
③puts函数完全可以由printf函数取代,当需要按比较灵活的格式输出时,通常使用printf函数。

3.字符串连接函数strcat

功能:把字符数组2中的字符串连接到字符数组1中字符串的后面,字符串1的串结束标志'\0'自动删去。字符数组名2可以字符串常量。

   一般调用格式:strcat(字符数组名1,字符数组名2)如:

#include<stdio.h>
#include<string.h>
{   char str1[30]="This a";
    char str2[10]="book";
    strcat(str1,str2);
    puts(str1)
    return 0;
}

4.  字符串复制函数strcpy

 

功能:把字符数组2中的字符串复制到字符数组1中。串结束标志'\0'也一同拷贝。"字符数组名2"可以字符串常量。

格式:strcpy(字符数组名1,字符数组名2)

#include<stdio.h>
#include<string.h>
int main()
{
    char str1[15],str2[]="C Language";
    strcpy (str1,str2);
    puts(str1);
    return 0;
}

5.  字符串比较函数strcmp

 

功能:两个数组(字符串)按照ASC‖码顺次比较,并由函数返回值比较结果。
字符串1=字符串2,函数返回0值;
字符串1>字符串2,函数返回>0值

字符串1<字符串2,函数返回<0值

格式:strcmp (字符数组名1,字符数组名2)

6.求字符串长度的函数strlen

功能:测出字符串的实际长度(不含字符串结束标志‘\0’)并作为函数返回值

格式:strlen(字符数组名)

5_5  数组的应用举例

 

 

 

 

 

 

 

转载于:https://my.oschina.net/8824/blog/780069

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值