前言:
本文是自学C语言过程中自行总结的学习代码,逐步精讲说明,适合零基础编程学习、基础巩固回忆,不适合高手学习,发这个的目的也是为了交流学习C语言的心得,都说C语言是所有语言的基础语言,一通百通,相信前面无数大佬已经证明的话题,C语言是所有编程语言的基石。编程的学习也不会吝啬自己熬夜总结的知识点,希望能帮到正在阅读的你。
目录
前言:
1.一维数组定义:
1.1基础代码案例:
2.详细代码讲解案例:
2.1详细代码案例+说明
2.2典型案例冒泡排序详细代码+讲解
2.3典型应用代码讲解—递归:
2.4典型应用代码+详细解释:
3.注意事项:
在C语言中使用数组必须先进行定义。
一维数组的定义方式为:类型说明符 数组名 [常量表达式]。
其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。
方括号中的常量表达式表示数据元素的个数,也称为数组的长度。
int a[10]; /* 说明整型数组a,有10个元素 */
float b[10], c[20]; /* 说明实型数组b,有10个元素,实型数组c,有20个元素 */
char ch[20]; /* 说明字符数组ch,有20个元素 */
#include
#include
/*数组:
1.数组具有相同的数据类型,且地址是连续的——为了存储需要
2.数组是有序的——方便我们去使用(存储是按循序存储的)
3.数组元素下标发个数叫做维度。根据维度不同,可以分为一维数组、二维数组、多维数组
[]有几个中括号就有几个维度
定义:
一维数组
1)
定义:类型符 数组名[常量表达式]
类型符 — 指定数组存放什么样的数据
数组名 — 可类似理解为变量名
常量表达式 — 指定数组元素的个数
2)数组名和变量名类似,都需要遵循标识符规则
定义数组时我们需要指定数组中元素的个数,也就是方括号内需要有数字
使用数组时可以是变量,也可以是常量
数组中的元素可以类似于变量使用
使用数组是不要越界(数组下标和常量相等,有多少个元素就有多少个数,下标从0开始)
*/
//定义整型一位数组,数组元素的下标从0开始
/*
问题:int a[10],a[0]—a[9]依次赋值0-9,这个方式如何实现?
int main()
{
int a[10];
int i;
for(i=0;i<10;i++){
a[i] = i;
printf(" %d\n",a[i]);
}
for(i=9;i>=0;i--){
a[i] = i;
printf(" %d\n",a[i]);
}
return 0;
}
*/
/*
1)定义一维数组的同时进行赋值,叫数组初始化
2)全局数组如果不初始化,系统默认认为对其赋值0
3)对全部数组元素赋初值时,可以不指定数组长度
4)局部初始化,前5个元素赋初值,后面的元素有系统默认给赋值为0
一维数组的初始化:
初始化:即在定义的同时赋初值 如: int a=[10]={1,2,3,4,5,6,7,8,9,10}
*/
//1.数组全部初始化(全局初始化)
int main(){
int a[10]= {1,2,3,4,5,6,7,8,9,10};
int i;
for(i=0;i<10;i++){
printf("%d \n",a[i]);
}
}//请多多指正,谢谢!
#include
#include
int main()
{
/*
//问题:
1)给定一个一维数组,求数组中的最大值。
//解决方式:“打擂台”
比武招亲:1人站上擂台——其余上进行比试,
2)实现数组的翻转
1 2 3 4 5 6 7
7 6 5 4 3 2 1
3)如何实现数组的排序
int a[6] {5,7,9,10,3,1} 1,3,5,7,9,10
*/
/*
//1.定义一维数组,同时需要初始化
int a[10]={7,4,9,8,5,34,28,45,56,97};
//2.确定擂主,给定初始最大值
int max=a[0];
//3.循环遍历,依次比较每个元素的值,
//如果元素值比max的值大,则max的值更新为这个数,否则不改变。
int i;
for(i=0;i<10;i++)
{
if(a[i]>max){
max=a[i];
}
}
printf("最大值为:%d\n",max);
*/
//例二:易错方法:运用逆序输出(不可取):
/*
int a[6] = {1,2,3,4,5,6};
//数组注意事项:a[]中括号里面表示有几个元素,
//后面需要进行值定义,否则随即赋值,从“0”开始算第一个数
int i;
for(i=5;i>=0;i--){
printf("%d ",a[i]);//输出:6 5 4 3 2 1
}
printf("\n");
for(i=0;i<6;i++)
{
printf("%d ",a[i]);//输出:1 2 3 4 5 6
}
//此种方法只是改变了输出值的顺序,并没有实现1到6数值间值的翻转
*/
//例二正确解决方法:数组的翻转可以通过元素的交换实现
//1和6换,2和5换,3和4换,
//1 2 3 4 5 6
//6 5 4 3 2 1
//a[0]和a[n-1]换 a
/*
sizeof() 是一种内存容量度量函数,功能是返回一个变量或者类型的大小(以字节为单位);
在C语言中,sizeof()是一个判断数据类型或者表达式长度的运算符。
*/
/*
int a[6]= {1,2,3,4,5,6};
int i=0;
int tmp;//利用一个空闲变量来进行交换
int j=sizeof(a)/sizeof(int)-1;//计算机中元素从0开始数,0是第一个元素
while(ia[j+1]){
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
//输出结果
for(i=0;i
#include
void main()
{
int n[10] = { 25,35,68,79,21,13,98,7,16,62 };//定义一个大小为10的数组
int i, j,k,temp;
for (i = 1; i <= 9; i++)//外层循环是比较的轮数,数组内有10个数,那么就应该比较10-1=9轮
{
for (j = 0; j <= 9 - i; j++)//内层循环比较的是当前一轮的比较次数,例如:第一轮比较9-1=8次,第二轮比较9-2=7次
{
if (n[j] > n[j + 1])//相邻两个数如果逆序,则交换位置
{
temp = n[j];
n[j] = n[j + 1];
n[j + 1] = temp;
}
}
printf("第%d趟排序完成后的数据排序:\n",i);
for (k = 0;k < 10; k++)
printf("%-4d", n[i]);
printf("\n");
}
printf("排序过后的数顺序:\n");
for (i = 0; i < 10; i++)
printf("%-4d", n[i]);
printf("\n");
}
//请多多指正
#include
#include
#include
void PrintN(int N)
{
if (N)
{
PrintN(N-1);
printf("%d\n",N);
}
return;
}
void main()
{
int N;
clock_t start,finish;
double duration;
printf("please input N:\n");
scanf("%d",&N);
start = clock();
PrintN(N);
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf("%f seconds\n",duration );
return;
}
//请多多指正
#include
#include
/*
一维数组初始化
初始化:就是在定义的同时赋初值,如
int a[10] = {1,2,3,4,5,6,7,8,9,10}
如果不赋值就会自动赋值
一维数组的数组名
1.数组名时常量
2.数组名是数组元素的首地址
3.sizeof(数组名)实际上计算的是数组的总大小
问题:
1)给定一个数组,求数组的最大值
解决方法:给定一个初值,比较大小
定义:i 和 max的来进行比较
int a[10] = {10,20,90,31,32,44,55,66,10,23};
int max = a[0];
int i;
for(i=0;i<10;i++){
if(a[i]>max){
max = a[i];
}
}
printf("数组中较大数为: %d\n",max);
问题2 :实现数组翻转、
利用交换的方式实现数组内的元素位置交换,数组翻转。
*/
int main()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int i=0;
int tmp;
int j = sizeof(a)/sizeof(int)-1;
while (i
如果您在阅读后,喜欢作者的文章,请评论留言,将继续更新。
精细化的编程开发学伴。
对于数组类型说明应注意以下几点:
C语言学习从数组开始渐渐深入变难,好的程序员=天赋+刻苦练习
少一些豪情万丈的追求,多一些脚踏实地的坚持。