数组学习自我小总结

数组总结及练习案例

  • 一维数组
    • 二维数组
      • 自我总结

小总结:
1.数组名是一种地址常量,存放数组内存空间的首地址
2.数组元素的引用要指定下标
数组名 【下标】
3.一维数组初始化
类型名 数组名 【数组长度】= {出值表}
eg.int a [3] = {1,2,3};
规定:c语言只有静态存储数组才能初始化,但c编译系统都被允许赋初值
,静态储存的数组没有初始化直接赋值零
如果只对部分元素初始化,数组长度是不能省略的
4.斐波那数列
f [0] = f [1] =1
f [n] =f [n-1] =f [n-2]
5.注意:

for () 后面没有;

define SIZE 5 -----5指输入个数
6. 投票情况统计重点:count [response] ++;
7. 二维数组找出最大小值及行列下标:
先输入数:
printf ("");
for()
for()
scanf ("%d", &a[][])
按矩阵形式输出:
for () {
for ()
printf ("%4d", a[i][j]);
printf ("\n");
}
找最值以最大值为例:
先假设a[0][0]最大
如果a[i][j]比假设值大
再假设a [i][j]是新的最大值row=i;col=j;
8.转置行列互换
temp=a[i][j];
a [i][j] =a [j][i];
a[i][j] =temp;
9.闰年:能被4整除但不能被100整除或者能被400整除
闰年二月29天平年二月28天
10.回文就是字符串中心对称
eg:abcba abccba
11.结束符’\n’
12.
printf("%p\n", &a[0]);
printf("%p\n", &a[1]) ;这两行代码:能实现储存方式

一维数组

数组的定义和使用

//数组的定义和使用/*数组
需要处理的数据
相同类型
若干变量
有序形式*/ //数据类型 数组名【元素个数】={值1,值2}#include 
#include 
#include 
#include 
#include int main()
{//1.输出指定位置元素 int a[3]={1,2,3};//定义数组 下标为个数printf("%d\n", a[0]);//下标从零开始  下标表示其中一个元素//2.数组元素进行计算a[0]=a[2];a[1]=a[0]*2;for (int i=0;i<3;i++){printf("%d\n",a[i]);}//0k了 //3.数组在内存中储存方式和大小printf("%p\n", &a[0]);printf("%p\n", &a[1]) ;return 0; 
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
小猪称重

//小猪称重 
#include 
#include 
#include 
#include 
#include #define SIZE 5int main()
{int a[SIZE];for (int i=0;i<SIZE;i++){scanf ("%d", &a[i]);}int max=0;for(int i=0;i<SIZE;i++){if(a[i]>max){max=a[i];}}printf("最重小猪体重为:%d\n", max);return 0; 
}//错误注意事项:
//1.for() 后面没有;
// 2.printf在for{}外面 
//3.define SIZE 5指输入五个数(之前错误写100却运行没有输入100个数) 

在这里插入图片描述
在这里插入图片描述
输出斐波那契数列

//输出斐波那契数列
#include  
int main (void)
{int i;int fib [10] = {1,1};for (i=2;i<10;i++)fib [i] =fib [i-1] +fib [i-2];for (i=0;i<10;i++){printf ("%6d",fib [i]);if ((i+1)%5==0)printf ("/n");}return 0;
}

在这里插入图片描述
输出所有大于平均值的数

/*输出所有大于平均值的数*/
#include 
int main (void)
{int i;double average,sum;int a [10];printf ("Enter 10 integers:");sum=0;for (i=0;i<10;i++){scanf("%d", &a[i]);sum=sum+a[i];}average=sum/10;printf("averge=% .2f\n", average);printf(">average:");for (i=0;i<10;i++){if(a[i]>average)printf("%d",a[i]);}printf ("\n");return 0;} 

在这里插入图片描述
在这里插入图片描述
输入一个以回车符为结束标志字符串

#include 
int main (void)
{int i,number;char str [10];//输入字符串printf ("Enter a string:");i=0;while ((str [i] =getchar ())!='\n')i++;str [i] ='\0';//判断是否为数字字符并进行转换number=0;for (i=0;str [i]!='\0';i++)if (str [i]>='0'&&str [i]<='9')number=number*10+str [i]-'0';printf ("digit=%d\n",number);return 0; } 

在这里插入图片描述
在这里插入图片描述

统计字符串中数学字符的个数

//统计字符串中数学字符的个数
#include 
int main (void)
{int count,i;char str [80]="apple12345";//输入字符串printf ("Enter a string:");i=0;while ((str [i] =getchar())!= '\n')i++;str [i]='\0';//将'\0'存入数组 //统计字符串中数字字符个数count =0;for (i=0;str [i]!='\0';i++) //循环条件:str [i]不等于'\0'if (str [i] <='9'&&str [i] >='0')count++;printf ("count=%d\n", count);return 0; 
} 

在这里插入图片描述
在这里插入图片描述

选择法排序

//选择法排序
#include 
int main(void)
{int i,index,k,n,temp;int a [10];printf("Enter n:");scanf("%d", &n);printf("Enter %d integers:",n);for(i=0;i<n;i++)scanf("%d", &a[i]);for (k=0;k<n-1;k++){index=k;for (i=k+1;i<n;i++)if(a[i]<a[index])  index=i;temp=a[index];a[index]=a[k];a[k]=temp;}printf ("After sorted:");for (i=0;i<n;i++)printf ("%d", a[i]);printf("\n");return 0;} 

在这里插入图片描述
在这里插入图片描述

在数组中查找一个给定的数

//在数组中查找一个给定的数
#include 
int main (void)
{int i,flag,x;int a[5];printf("Enter 5 integers:");for(i=0;i<5;i++)scanf("%d", &a[i]);printf("Enter x:");scanf ("%d", &x);flag=0;for(i=0;i<5;i++)if (a[i] ==x){printf ("Index is %d\n", i);flag=1;break;}if(flag==0)printf ("Not Found\n");return 0;} 

在这里插入图片描述
在这里插入图片描述

找出数组的最小值和它所对应的下标

//找出数组的最小值和它所对应的下标
#include 
int main(void)
{int i,index,n;int a [10];printf ("Enter n:");scanf ("%d", &n);printf ("Enter %d integers:",n);for (i=0;i<n;i++)scanf("%d", &a[i]);//找最小值a[index]index=0;for (i=1;i<n;i++)if (a[i]<a[index])index=i;printf("min is %d\tsub is %d\n",a[index],index);return 0; } 

在这里插入图片描述

二维数组

方阵转置

//方阵转置
#include 
int main(void)
{int i,j,n,temp;int a[6][6];//给二维数组赋值printf ("Enter n:");scanf ("%d", &n);for (i=0;i<n;i++)for (j=0;j<n;j++)a[i][j]=i*n+j+1;//给数组元素赋值//行列互换for (i=0;i<n;i++)for (j=0;j<n;j++)if(i<=j){        //只遍历上三角阵   //也可以  for (i=0;i//        for (j=i;j//       	…… //	   } temp=a[i][j];a[i][j]=a[j][i];a[j][i]=temp;} //按矩阵形式输出afor (i=0;i<n;i++){        //所有行的循环 for (j=0;j<n;j++)     //输出低i行的所有元素 printf("%4d", a[i][j]);printf ("\n");} return 0;
}

在这里插入图片描述
在这里插入图片描述
计算某个日期对应该年的第几天

// 计算某个日期对应该年的第几天
#include 
#include int day_of_year (int year,int month,int day)  //主函数调用day_of_year()函数 
{int k,leap;int tab[2][13] = {   //初始化,天数赋值给数组{0,31,28,31,30,31,30,31,31,30,31,30,31 },{0,31,29,31,30,31,30,31,31,30,31,30,31  }};//判断闰年,为闰年leap=1;非则leap=0//闰年:能被4整除不能被100整除或能被400整除leap=(year %4==0 &&year%100!=0 ||year%400==0);//计算for (k=1;k<month;k++)day=day+tab[leap][k];return day; } 

在这里插入图片描述

在这里插入图片描述
找出矩阵中的最大值及其行下标和列下标

//找出矩阵中的最大值及其行下标和列下标
#include 
int main(void)
{int col,i,j,row;//row column分别代表这个元素的行和列 max 代表这个元素的值int a[3][2];//[3]行 [2]列 //将输入的数存入二维数组printf ("Enter 6 integers:\n");for (i=0;i<3;i++)for (j=0;j<2;j++)scanf ("%d", &a[i][j]);//按矩阵的形式输出二维数组afor(i=0;i<3;i++){for (j=0;j<2;j++)printf ("%d", a[i][j]);printf ("\n");}//找出最大值a[col][row]row=col=0;for(i=0;i<3;i++)for(j=0;j<2;j++)if(a[i][j]>a[row][col]){row=i;col=j;}printf("max=a[%d][%d]=%d\n",row,col,a[row][col]);return 0;} 

在这里插入图片描述
在这里插入图片描述

自我总结

时间不够了,还得继续加油,欠下了好多知识,现在不学习等着什么时候后悔!!!再难也得坚持再不会也得学完再慢也得学懂。

小总结:
1.数组名是一种地址常量,存放数组内存空间的首地址
2.数组元素的引用要指定下标
数组名 【下标】
3.一维数组初始化
类型名 数组名 【数组长度】= {出值表}
eg.int a [3] = {1,2,3};
规定:c语言只有静态存储数组才能初始化,但c编译系统都被允许赋初值
,静态储存的数组没有初始化直接赋值零
如果只对部分元素初始化,数组长度是不能省略的
4.斐波那数列
f [0] = f [1] =1
f [n] =f [n-1] =f [n-2]
5.注意:

for () 后面没有;

define SIZE 5 -----5指输入个数
6. 投票情况统计重点:count [response] ++;
7. 二维数组找出最大小值及行列下标:
先输入数:
printf ("");
for()
for()
scanf ("%d", &a[][])
按矩阵形式输出:
for () {
for ()
printf ("%4d", a[i][j]);
printf ("\n");
}
找最值以最大值为例:
先假设a[0][0]最大
如果a[i][j]比假设值大
再假设a [i][j]是新的最大值row=i;col=j;
8.转置行列互换
temp=a[i][j];
a [i][j] =a [j][i];
a[i][j] =temp;
9.闰年:能被4整除但不能被100整除或者能被400整除
闰年二月29天平年二月28天
10.回文就是字符串中心对称
eg:abcba abccba
11.结束符’\n’
12.
printf("%p\n", &a[0]);
printf("%p\n", &a[1]) ;这两行代码:能实现储存方式


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部