栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言基础-06利用数组处理批量数据(一维数组)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言基础-06利用数组处理批量数据(一维数组)

目录

一维数组

一、数组的特点

二、定义数组

三、数组的初始化

四、数组引用

五、数组元素的赋值

六、冒泡排序

七、回文数

1.判断一个五位数是否为回文数

2.字符数组的函数

八、数组中常用的函数

1.strlen

2.strcat、strncat

3.strcmp 

4.strcpy 、strncpy

5.sprintf

6.sscanf

7.引入ctype.h头文件

ctype.h

九、数组的查找

1.普通循环查找

2.二分法查找


一维数组

一、数组的特点
  1. 数组的数据类型都是一样的
  2. 数组不可变(一旦定义了大小就不能更改了)
  3. 数组中的数据是连续的
  4. 数组中的数据访问是从零开始的

二、定义数组

int num[5]

  • 定义数组的标志就是[ ] ,[ ] 中的数值是数组的最多能存放的元素的个数。
  • 变量在数组中称元素

三、数组的初始化

int num [5] = {0} // 数组元素为0 0 0 0 0

1.数组定义时:

  • 如果{ 0 }表示数组中的所有元素都初始化为零;
  • 如果 { 1 },表示第一个元素初始化为1,其他为零;
  • 如果{ 1 ,2} ,表示数组中第一个和第二个元素初始化为1,2 ,其他元素为零;

2.如果只定义了数组,没有初始化,元素的值是随机的。

char ch[10];               //数组的定义

char str[10]="hello";  //数组的初始化

四、数组引用
  • 数组引用:数组元素
  • 数组元素表示方法:数组名[下标]
  • 访问数组中的元素num[index],index表示正整数0开始到数组的最大索引位

注:数组元素引用时,下标不能越界

五、数组元素的赋值

1.常规赋值

int a[6]={1,20};
a[3]=15;         //指定元素赋值,数组元素相当于变量

int a[6]={1,20};
a=10;           //不能一次给整个数组赋值,可以给一个元素赋值
//a是数组名

2.利用循环给数组赋值

#include

int main(){
     int i,a[6];
     for(i=0;i<6;i++)      //对数组元素a[0]~a[5]赋值
        a[i]=i+1;    

     for(i=0;i<6;i++)      //循环输出数组元素a[0]~a[5] 
        printf("%dn",a[i]);
        
     return 0;

}

六、冒泡排序

代码如下(示例):

#include

int main (){
	int num [5] = {14,8,27,0,89};
	int temp = 0;
	
	// 冒泡排序开始
	// 外循环
	for (int i = 0; i< 5;i++){
		// 内循环
		for(int j = 0;j<5;++j){    //从小到大排序,j<4
		 	// 从大到小 
 			if(num[j] 

七、回文数

1.判断一个五位数是否为回文数

代码如下(示例):

#include

int main(){
	char s[5]={0};//语法是正确的
	printf("请输入一个五位数:") ;
	gets(s);
	if(s[0] == s[4] && s[1]==s[3]){
		printf("是回文数n"); 
	} else{
		printf("不是回文数n"); 
	}
} 

2.字符数组的函数

gets() 进行输入;puts()进行输出

八、数组中常用的函数

(需要添加 string.h 头文件)

1.strlen
  • strlen计算数组的长度
  • strlen和sizeof的区别:strlen返回的是数组的元素个数;sizeof返回的是数组的长度
#include
#include 
int main(){
	char s[5]={0};//语法是正确的
	printf("请输入一个五位数:") ;
	gets(s);
	size_t len = strlen(s);
	printf("数组的长度是%dn",len);
	printf("数组的长度是%dn",sizeof(s));
} 

2.strcat、strncat
  • strcat、strncat进行字符串的拼接
  • strcat(x,y);将y字符串拼接到x字符串的后面
  • strncat(x,y,n);其中n表示y数组在追加到x后面,需要添加几个字母

注:字符数组中遇到 表示结束位

#include
#include 
int main(){
	char a[50]="hello";
	char b[50]="world";
    //strcat(a,b);
	strncat(a,b,5);
	puts(a);
}//运行结果为helloworld

3.strcmp 
  • strcmp 对两个字符串进行比较
  • strcmp(a,b); 先比较字符串的第一个元素
  • 若a字符串的第一个元素>b字符串的第一个元素,则返回一个大于零的值
  • 若a字符串的第一个元素
  • 若第一个元素相同,就比较第二个元素,直到结束如果都相同,则返回0
void main(void){
	char a[50]="h";
	char b[50]="H";

	int x = strcmp(a,b);
	printf(_Format:"%dn",x);  // h的ASCII码比H大, 结果为:1
}

4.strcpy 、strncpy
  • strcpy 、strncpy 字符数组的拷贝
  • strcpy(x,"aaa"); 将字符串aaa赋值到数组x中去
  • strncpy(x,"012345678",n);将指定的字符串按照指定的个数n拷贝到数组x中去
#include
#include 
int main(){
	    char a[50]="a";
	    char b[50]="h";
	    strcpy(a,"aaa");  
		puts(a);  // 结果:aaa
		strncpy(b,"0123456789",5);  
		puts(b);  //结果:01234
}

5.sprintf
  • 将任意数字转成字符串
#include
#include 
int main(){
	    char a[50]="a";
		char b[50]="123456";
		sprintf(a,"%d",1234);
		puts(a); //结果为1234
}

6.sscanf
  • 将字符串转成任意类型的数字
#include
#include 
int main(){
	    char a[50]="a";
		char b[50]="123456";
		int num =0;
			sscanf(b,"%d",&num);
			printf("num = %d ",num);
			// 结果为num = 123456  
}

注:还有fputs、fgetsstrstr、strrchr、strchr函数(后面章节具体介绍)

7.引入ctype.h头文件
#include
#include 
int main(){
	char c;
	int letter=0;
	int number=0;
	int space=0;
	while((c=getchar())!='Q'){           //输入:
		if(isalpha(c)!=0){               //q
			letter++;                    //1
		}                                //
		if(isdigit(c)!=0){               //Q
			number++;                    //输出:字母=1,空格=1,数字=0
		}
		if(isblank(c)!=0){
			space++;
		}
	}
	printf("字母=%d,空格=%d,数字=%d",letter,number,space);
}

ctype.h
  • ctype.h中提供一些列的方法用来对字符串进行判断
  • isalpha() 只要不返回0表示是字母
  • isdigit  () 只要不返回0表示是数字
  • isblank() 只要不返回0表示是空格
  • isupper() 只要不返回0表示是大写
  • islower() 只要不返回0表示是小写
  • iscntrl  () 只要不返回0表示是控制键

九、数组的查找

1.普通循环查找
#include
int main ()
{
	int a[ ] = {1,2,3,4,12,21,13,4,5,6,77,43,21,14,15};
	// 如何计算数组中有多少元素
	int n = sizeof(a)/sizeof(a[0]);
	printf("%dn",n);
	int num = 0;
	printf("请输入需要查找的值:");
	scanf("%d",&num);
	int i = 0;
	for( ; i 

2.二分法查找
#include
int main(){
	int a []={ 5,12,32,7,9,10};
	int n=sizeof(a)/sizeof(a[0]);
	int low=0; //数组下标的最低位
	int high=sizeof(a)/sizeof(a[0])-1;//数组下标的最高位
	int mid = 0;//数组的中间位
	int key =0; //用户输入的数据
	int temp = 0;
	//数组必须要排序
	for(int i =0;ia[j+1]){
				temp=a[j+1];
				a[j+1]=a[j];
				a[j]=temp;
			}
		}
	}
	printf("%dn",a[5]);
	printf("请输入需要查找的数字:");
	scanf("%d",&key);

	//二分查找
	while(low <= high){
		mid = (low+high)/2;
		if(key < a[mid]){
			high = mid - 1;
		} else if(key > a[mid]){
			low = mid +1;
		}else{
			printf("下标是:%dn",mid);
			break;
		}
	} 
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/879086.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号