文档章节

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

南风末
 南风末
发布于 2016/11/02 22:13
字数 1709
阅读 36
收藏 0

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  数组的应用举例

 

 

 

 

 

 

 

© 著作权归作者所有

南风末
粉丝 6
博文 228
码字总数 313035
作品 0
南昌
程序员
私信 提问
微软面试、经典算法、编程艺术、红黑树4大系列总结

无私分享,造福天下 以下是本blog内的微软面试100题系列,经典算法研究系列,程序员编程艺术系列,红黑树系列4大经典原创系列作品与一些重要文章的集锦。 一、微软面试100题系列 横空出世,席...

长平狐
2013/01/06
299
0
做游戏,学编程(C语言) 网易云课堂MOOC视频

应一些同学的要求,把这学期上C语言编程课的讲课视频录制剪辑,上传到网易云课堂,感兴趣的朋友可以在线观看,欢迎多提宝贵意见。 MOOC视频链接:http://study.163.com/course/introduction....

童晶
2017/11/07
0
0
Python数据处理从零开始----第三章(pandas)③数据标准化(1)

目录 第三章(pandas) Python数据处理从零开始----第三章(pandas)①删除列 Python数据处理从零开始----第三章(pandas)②处理缺失数据 Python数据处理从零开始----第三章(pandas)③数据...

夜神moon
2018/11/23
0
0
Python数据处理从零开始----第四章(可视化)(11)多分类ROC曲线

目录 Python数据处理从零开始----第四章(可视化)① Python数据处理从零开始----第四章(可视化)② Python数据处理从零开始----第四章(可视化)③ Python数据处理从零开始----第四章(可视...

夜神moon
2018/11/25
0
0
【备忘】2018年最新FFmpeg音视频教程视频

百度网盘 第一章 音视频行业的前景及应用场景第二章 FFmpeg处理流程及常用命令第三章 FFmpeg之C语言及VIM第四章 FFmpeg之C语言基础第五章 FFmpeg多媒体文件处理第六章 FFmpeg编解码案例第七章...

javail
2018/11/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

centos7 新手阿里云服务器安装mongodb

简介 MongoDB 是一个基于分布式 文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 MongoDB特点 模式自由 :可以把不同结构的文档存...

醉雨
18分钟前
1
0
sql注入漏洞,应屏蔽SQL注入攻击

注:SQL注入好比是前端URL传参数请求时参数以SQL 做为参数传入,如 select 1 from dual where 1=1 or 1=1 and 1=2;(类似这样的SQL语句) 防御方法 如果自己编写防注代码,一般是先定义一个函...

颜丽
18分钟前
1
0
装饰者模式

 代理模式与装饰者模式看起来很像,都实现基础对象实现的接口,在其自身对象中都保存着对被代理/被装饰者的对象引用。   先来看看装饰者模式的定义:动态的将责任附加到被装饰者对象上,用...

铁骨铮铮
23分钟前
0
0
我为什么飞行 10000 公里去西班牙参加 KubeCon?

2019 年 5 月 20 日至 23 日, 由 Cloud Native Computing Foundation (CNCF) 主办的云原生技术大会 KubeCon + CloudNativeCon EU(欧洲场)即将在热情洋溢的巴塞罗那盛装启幕。 作为云计算领...

zhaowei121
41分钟前
0
0
Node.getTextContent() not found 解决办法【不需要调整builder path下面包顺序】

新导入的工程,w3c的getTextContent找不到,response的setCharacterEncoding找不到,网上很多教程都是“调整工程builder path的lib包顺序把jre、tomcat调到上面即可”,但是进入项目的build...

嘿嘿嘿IT
48分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部