C语言总结_数组全方位练习

网友投稿 639 2022-05-28

C语言数组的练习题:涉及到数组插入、数组删除、数组下标数据的左移右移、数组排序、数组排序优化、数组的数据拼接等等。

(1)函数基本使用: 函数基本定义、封装、传参、调用、局部变量、全局变量、只读变量、静态变量

(2)数组基本使用: 数组基本定义、使用赋值、字符串。

1. 数组基本知识

1. 概念: 同一个类型的集合。 2. 定义: int data[100]; //数组data里可以存放100个int类型 100必须是常量(C89)。定义数组时,如果没有赋初始值[]一定要填大小。 int data[]={1}; 3.数组赋值: 只有在定义的使用才可以整体赋值。int data[10]={12,34,56,7,89}; 4.数组下标[]访问从0开始。 比如: buff[100]; 下标范围: 0~99 5.数组的名称就是首地址。int buff[100]; 1.2 字符串数组 1. 字符串录入: scanf(“%s”); gets() fgets 2. 头文件: string.h 3. 从键盘录入字符串的方法 scanf("%s",str); //从键盘上录入字符串,字符串结尾: '

1. 概念: 同一个类型的集合。 2. 定义: int data[100]; //数组data里可以存放100个int类型 100必须是常量(C89)。定义数组时,如果没有赋初始值[]一定要填大小。 int data[]={1}; 3.数组赋值: 只有在定义的使用才可以整体赋值。int data[10]={12,34,56,7,89}; 4.数组下标[]访问从0开始。 比如: buff[100]; 下标范围: 0~99 5.数组的名称就是首地址。int buff[100]; 1.2 字符串数组 1. 字符串录入: scanf(“%s”); gets() fgets 2. 头文件: string.h 3. 从键盘录入字符串的方法 scanf("%s",str); //从键盘上录入字符串,字符串结尾: '\0' gets(str); //从键盘上录入字符串 fgets(str,100,stdin); //从键盘上录入字符串 (标准输入) #include int main(int argc,char **argv) { int int_data[100]={12,34,56,78}; //整型数组 char char_data[]={'A','B','C'}; //字符数组 char str1_data[]={'A','B','C','\0'}; //字符串数组 char str2_data[]="ABC";//字符串数组 printf("char_data=%d\n",sizeof(char_data)); //3 printf("str1_data=%d\n",sizeof(str1_data)); //4 printf("str2_data=%d\n",sizeof(str2_data)); //4 return 0; } 字符串数组特性: 结尾有’\0’

' gets(str); //从键盘上录入字符串 fgets(str,100,stdin); //从键盘上录入字符串 (标准输入) #include int main(int argc,char **argv) { int int_data[100]={12,34,56,78}; //整型数组 char char_data[]={'A','B','C'}; //字符数组 char str1_data[]={'A','B','C','

1. 概念: 同一个类型的集合。 2. 定义: int data[100]; //数组data里可以存放100个int类型 100必须是常量(C89)。定义数组时,如果没有赋初始值[]一定要填大小。 int data[]={1}; 3.数组赋值: 只有在定义的使用才可以整体赋值。int data[10]={12,34,56,7,89}; 4.数组下标[]访问从0开始。 比如: buff[100]; 下标范围: 0~99 5.数组的名称就是首地址。int buff[100]; 1.2 字符串数组 1. 字符串录入: scanf(“%s”); gets() fgets 2. 头文件: string.h 3. 从键盘录入字符串的方法 scanf("%s",str); //从键盘上录入字符串,字符串结尾: '\0' gets(str); //从键盘上录入字符串 fgets(str,100,stdin); //从键盘上录入字符串 (标准输入) #include int main(int argc,char **argv) { int int_data[100]={12,34,56,78}; //整型数组 char char_data[]={'A','B','C'}; //字符数组 char str1_data[]={'A','B','C','\0'}; //字符串数组 char str2_data[]="ABC";//字符串数组 printf("char_data=%d\n",sizeof(char_data)); //3 printf("str1_data=%d\n",sizeof(str1_data)); //4 printf("str2_data=%d\n",sizeof(str2_data)); //4 return 0; } 字符串数组特性: 结尾有’\0’

'}; //字符串数组 char str2_data[]="ABC";//字符串数组 printf("char_data=%d\n",sizeof(char_data)); //3 printf("str1_data=%d\n",sizeof(str1_data)); //4 printf("str2_data=%d\n",sizeof(str2_data)); //4 return 0; } 字符串数组特性: 结尾有’

1. 概念: 同一个类型的集合。 2. 定义: int data[100]; //数组data里可以存放100个int类型 100必须是常量(C89)。定义数组时,如果没有赋初始值[]一定要填大小。 int data[]={1}; 3.数组赋值: 只有在定义的使用才可以整体赋值。int data[10]={12,34,56,7,89}; 4.数组下标[]访问从0开始。 比如: buff[100]; 下标范围: 0~99 5.数组的名称就是首地址。int buff[100]; 1.2 字符串数组 1. 字符串录入: scanf(“%s”); gets() fgets 2. 头文件: string.h 3. 从键盘录入字符串的方法 scanf("%s",str); //从键盘上录入字符串,字符串结尾: '\0' gets(str); //从键盘上录入字符串 fgets(str,100,stdin); //从键盘上录入字符串 (标准输入) #include int main(int argc,char **argv) { int int_data[100]={12,34,56,78}; //整型数组 char char_data[]={'A','B','C'}; //字符数组 char str1_data[]={'A','B','C','\0'}; //字符串数组 char str2_data[]="ABC";//字符串数组 printf("char_data=%d\n",sizeof(char_data)); //3 printf("str1_data=%d\n",sizeof(str1_data)); //4 printf("str2_data=%d\n",sizeof(str2_data)); //4 return 0; } 字符串数组特性: 结尾有’\0’

2. 数组相关的题目(分析)

2.1 数组的数据插入

int a[]={1,2,3,4,5,6,7}; 在第2位数据后插入一个888 结果: 1,2,888,3,4,5,6,7 #include int main(int argc,char **argv) { int data[10]={1,2,3,4,5,6,7,8,9}; //1,2,3,4,4,5,6,7,8,9 int addr; int i; printf("输入插入的位置:"); scanf("%d",&addr); /*1. 向后移动数据,空出位置*/ for(i=8;i>=addr;i--) { data[i+1]=data[i]; } /*2. 查看移动之后的效果*/ for(i=0;i<10;i++)printf("%d ",data[i]); printf("\n"); data[addr]=888; //插入的数据 /*3. 最终效果*/ for(i=0;i<10;i++)printf("%d ",data[i]); printf("\n"); return 0; }

2.2 数组数据的删除

int a[]={1,2,3,4,2,6,7}; 将第2位数据删除掉 结果: 1,3,4,5,6,7 示例: #include int main(int argc,char **argv) { int data[10]={1,2,3,4,5,6,7,8,9,10}; //1,2,4,5,6,7,8,9,10,10 int addr; int i; printf("输入删除的位置:"); scanf("%d",&addr); //2 /*1. 向前移动,将数据覆盖掉*/ for(i=addr-1;i<10-1;i++) { data[i]=data[i+1]; } /*2. 查看移动之后的效果*/ for(i=0;i<9;i++)printf("%d ",data[i]); printf("\n"); return 0; }

2.3 变量排序

数组数据排序。从键盘上输入一串数据(整数),从大到小排序,再输出。

int a[]={12,67,45,13,1,5}; 排序之后: 67,45,13,12,5,1

排序: 计算平均数。班级成绩、温度数据…

例子: 从键盘上随机输入3个数,将3个数按照从大到小的顺序输出。

#include int main(int argc,char **argv) { int a,b,c; int tmp; //存放临时数据 printf("请输入3个数:"); scanf("%d%d%d",&a,&b,&c); //以回车作为结束符号,以空格作为间隔符号 printf("源数据:%d,%d,%d\n",a,b,c); //从大到小 if(a

2.4 数组冒泡排序

#include int main(int argc,char **argv) { int data[10]; int tmp; //存放临时数据 int i,j; int cnt=0; //排序比较的总次数 /*1. 录入数据*/ printf("请输入10个数:"); for(i=0;i<10;i++)scanf("%d",&data[i]); /*2. 打印源数据:*/ printf("源数据:"); for(i=0;i<10;i++)printf("%d ",data[i]); printf("\n"); /*3. 冒泡排序*/ for(i=0;i<10-1;i++) //比较轮数 { for(j=0;j<10-1-i;j++) //每一轮比较的次数 { if(data[j]>data[j+1]) //从小到大 { tmp=data[j]; data[j]=data[j+1]; data[j+1]=tmp; } cnt++; } } /*4. 打印结果数据:*/ printf("排序之后的数据:"); for(i=0;i<10;i++)printf("%d ",data[i]); printf("\n"); printf("排序的总次数:%d\n",cnt); return 0; }

分析:

/* data[]={1,2,3} 第一轮: [0]和[1] [1]和[2] 2 3 1 每一轮保证最小的数在最后 第二轮: [0]和[1] 3 2 1 */ 排序: 从大到小 1 2 3 4 5 第一轮: (1) 2 1 3 4 5 (2) 2 3 1 4 5 (3) 2 3 4 1 5 (4) 2 3 4 5 1 第二轮: (1) 3 2 4 5 1 (2) 3 4 2 5 1 (3) 3 4 5 2 1 (4) 3 4 5 2 1 第三轮: (1) 4 3 5 2 1 (2) 4 5 3 2 1 (3) 4 5 3 2 1 (4) 4 5 3 2 1 第四轮: (1) 5 4 3 2 1 (2) 5 4 3 2 1 (3) 5 4 3 2 1 (4) 5 4 3 2 1

2.5 冒泡排序优化

#include int main(int argc,char **argv) { int data[10]; int tmp; //存放临时数据 int i,j; int cnt=0; //排序比较的总次数 45: int flag=0; //标志位置 /*1. 录入数据*/ printf("请输入10个数:"); for(i=0;i<10;i++)scanf("%d",&data[i]); /*2. 打印源数据:*/ printf("源数据:"); for(i=0;i<10;i++)printf("%d ",data[i]); printf("\n"); /*3. 冒泡排序*/ for(i=0;i<10-1;i++) //比较轮数 { for(j=0;j<10-1-i;j++) //每一轮比较的次数 { if(data[j]>data[j+1]) //从小到大 { tmp=data[j]; data[j]=data[j+1]; data[j+1]=tmp; flag=1; } cnt++; } if(flag==0) //不需要继续排序 { break; //跳出最外层循环 } flag=0; //清除标志位,方便第2次判断 } /*4. 打印结果数据:*/ printf("排序之后的数据:"); for(i=0;i<10;i++)printf("%d ",data[i]); printf("\n"); printf("排序的总次数:%d\n",cnt); return 0; }

分析:

data[]={1,2,3} 第一轮: [0]和[1] [1]和[2] 2 3 1 每一轮保证最小的数在最后 第二轮: [0]和[1] 3 2 1

C语言总结_数组全方位练习

2.6 数组数据的拼接(整数)

int a[]={1,3,4,5,6,7}; int b[]={11,13,14,15,16,17}; 将a和b拼接到c数组里。 最终int c[]={1,3,4,5,6,7, 11,13,14,15,16,17} 必须保证c数组空间足够大。

示例代码:

#include int main(int argc,char **argv) { int src_data[10]={1,2,3,4,5}; int new_data[]={6,7,8,9}; // int i; for(i=0;i

C 语言 数据结构

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【产品介绍】GaussDB(for Redis) VS 开源Redis
下一篇:微云云桌面网络配置
相关文章