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

目录

一维数组

一、数组的特点

二、定义数组

三、数组的初始化

四、数组引用

五、数组元素的赋值

六、冒泡排序

七、回文数

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

2.引入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("%d\n",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.引入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("%d\n",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("%d\n",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("下标是:%d\n",mid);
			break;
		}
	} 
}

你可能感兴趣的:(c语言)