【C语言】数组笔记

2.数组

2.1初识数组(一维数组)

 1.定义数组   

   1. < 类型 > 变量名称[元素数量]
      e·g: int     grades[100];
              double  weight[20];

            注意:元素数量必须为整数

    2.数组:是一种容器,特点是其中元素数据类型相同, 

              一旦创建不可更改大小,数据呈线性排列。 

               e·g                                   int a [10]

a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]

    3.数组的每个单元就是一个变量,[]中数字为下标,从0开始计数。

    4.有效下标范围:[0,数组大小-1]

       ·segmentation fault  报错

     ps:数组经典用法

5.初始化:

 练习:1.求斐波那契数列前二十项

//分析:1.定义数组F[20] 
//      2.将前二十项求出并存储进F数组
//      3.输出数组F
#include <stdio.h>
int main()
{
	int F[20] = {0};
	int i ;
	F[0] = 1;
	F[1] = 1;
	printf("斐波那契数列的前二十项是\n");
	for (i = 0; i <= 20; i++) {
		F[i + 2] = F[i + 1] + F[i];
          printf("%d\t", F[i]);	
            if(i%5==0)                     //每行输出五个
              printf("\n");
    }
   return 0;
}

      2.统计分数:输入10个考生成绩,统计各分段人数。

//分析:1.定义num一维数组记录各分段人数
//      2.score/10 与 数组下标相同,可用来直接判断进行计数
//      3.再遍历数组输出结果


#include<stdio.h>
int main()
{
	int i,score;
	int num[11]={0};         //记录分数段人数
	for(i=1;i<=10;i++){
		scanf("%d",&score); //输入成绩
		num[score/10]++;    //计数(以统计对象的值为下标)
		
	}
	printf("分数段:人数\n");
	for(i=0;i<10;i++){
		printf("%d~%d:\t%d\n",i*10,i*10+9,num[i]); //输出统计结果
	}
	printf("100:\t%d\n",num[10]);
	
	return 0;
	
} 

练习3.输入10个整数,找出其中最大数和最小数

//分析:1.循环输入数据保存至数组
//      2.将max,min定义为数组首元素
//      3.遍历数组找出最大最小并输出 

#include<stdio.h>
int main()
{
  int max,min,i;
  int a[10];
	for(i=0;i<10;i++){
	scanf("%d",&a[i]);
    }
  max=min=a[0];
  for(i=1;i<10;i++){
  	
  	if(a[i]>max)
  	    max=a[i];
  	if(a[i]<min)
  	    min=a[i];
  	
  }
  printf("max=%d\t\nmin=%d",max,min);
	
	
}

2.字符串数组与字符串

1.定义:与普通数组定义方式相同,也可采取同样的初始化方式,引用也相同。

2.字符串常量:用一堆双括号引起的字符序列("hello world"

                         在存储字符串时,会自动在其后添加空字符‘\0’作为结束标志

3.字符与字符串的区别:结尾有无‘\0’的结束标志

4.字符数组的初始化

     ①用字符常量的初始化列表对数组初始化

         char str[6]={'C','H','I','N','A','\0'}

     ②用字符串常量直接对数组初始化

         char str[6]={"China"};

         char str[6]="China";

         char str[ ]="China";

5.使用时可逐个使用也可整体使用

6.字符串的输入/输出

    ①按数组元素逐个处理每个字符

  char str[10]="China";
for(i=0;str[i]!='\0';i++){
    putchar(str[i]);
}
putchar('\n');

    ②按字符串整体输入/输出

      char str[80];
      
      scanf("%s",str);//不能输入带空格的字符串
      printf("%s",str);

        ③  gets(str)输入一个字符串   //可以输入带空格字符串

              puts(str)输出字符串

7.字符串的处理函数

#include<string.h>
strlen(字符串) // 求字符串长度,string length

strcpy(目的字符串,源字符串)//串复制,string copy

strcat(目的字符串,源字符串)//串联接 string combination

strcmp(字符串1,字符串2)   //穿比较  string comparison

 

2.2二维数组 

1.定义:

                             类型    数组名[常量表达式1][常量表达式2]

                                                            第一维(行 )  第二维(列)

                                 float a[3][4]  //定义了一个三行四列的数组,存放12个浮点数2.

 2.存放:

                                  二维数组在内存中按行连续存放

3.二引用: 

                                    数组名  [下标1][下标2]

4.初始化:

                                      感谢阅读!

注:1.初学者如有遗漏或错误请大佬及时指出和补充

       2.刚开始学着写博客,请大佬提出建议或指导

       3.日后会继续在这篇文章补充C#数组相关知识

       4.愿意结识更多初学者一起努力

 

                        

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CSVN.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值