数组学习自我小总结

数组总结及练习案例


小总结:
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.注意:
<1>for () 后面没有;
<2> 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 <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

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 <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

#define SIZE 5

int 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 <stdio.h> 
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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
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<n;i++)
	                                    //        for (j=i;j<n;j++){
	                                    //       	…… 
										//	   } 
		temp=a[i][j];
		a[i][j]=a[j][i];
		a[j][i]=temp;
	} 
	//按矩阵形式输出a
	for (i=0;i<n;i++){        //所有行的循环 
		for (j=0;j<n;j++)     //输出低i行的所有元素 
		printf("%4d", a[i][j]);
		printf ("\n");
	} 
	
	return 0;
}

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

// 计算某个日期对应该年的第几天
#include <stdio.h>
#include <math.h>

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 <stdio.h>
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]);
	
	//按矩阵的形式输出二维数组a
	for(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.注意:
<1>for () 后面没有;
<2> 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]) ;这两行代码:能实现储存方式

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佳美不ERROR

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值