您的位置:首页 > 财经 > 产业 > 中铁建设集团有限公司招聘信息2021_公司建网站多少钱合适_深圳百度推广竞价托管_工业设计公司

中铁建设集团有限公司招聘信息2021_公司建网站多少钱合适_深圳百度推广竞价托管_工业设计公司

2025/4/16 4:44:53 来源:https://blog.csdn.net/weixin_46658279/article/details/147075397  浏览:    关键词:中铁建设集团有限公司招聘信息2021_公司建网站多少钱合适_深圳百度推广竞价托管_工业设计公司
中铁建设集团有限公司招聘信息2021_公司建网站多少钱合适_深圳百度推广竞价托管_工业设计公司

一.数组的定义

     数组: 相同数据类型变量的集合。数组是为⽤户处理多个数据⽽设计, 使⽤数组可以给多个变量分配多 个连续的内存,节省变量名的消耗。

     格式:

      数据类型 数组名 [元素的个数];

     注意 :

     (1) 数据类型 : char,short,int float,double,long ,long long

     (2) 数组名 : 合法的标识符,以数字,字符,下划线组成,⾸个单词要是字⺟或下划线

     (3) 元素个数: 要求是⼀个确定的常量值 

内存分布图:

变量类型的查看方法:去掉变量名剩下的就是类型

以 int  t[5]为例子 :

1.  数组的成员:t[0] t[1] t[2] t[3] t[4]2.  每个成员的类型: int3.  整个数组的⼤⼩: sizeof(int [5]) 或 sizeof(a)4.  数组⼀个元素的⼤⼩: sizeof(a[0])5.  元素的个数: sizeof(a)/sizeof(a[0])

思考:数组⾸地址 t 编译器是如何找到对应 t[0],t[1],t[2] 内存块的数据呢?

t[0]=====> 表示数组的⾸地址 a 偏移 0 个元素的⼤⼩ ,[] 取该地址中的内容

t[1]=====> 表示数组的⾸地址 a 偏移 1 个元素的⼤⼩ ,[] 取该地址中的内容

t[2]=====> 表示数组的⾸地址 a 偏移 2 个元素的⼤⼩ ,[] 取该地址中的内容

示例代码1:

int main(){int  a[5];printf("sizeof(int [5]) = %ld\n",sizeof(int [5]));printf("sizeof(a) = %ld\n",sizeof(a));printf("sizeof(a[0]) = %ld\n",sizeof(a[0]));printf("len = %ld\n",sizeof(a)/sizeof(a[0]));return 0;}

示例代码2:

二.数组的初始化

     在定义数组的同时,给数组中的每⼀个成员变量,赋予⼀个初始的值。

     例如1 :    int a[5] = {10,20,30,40,50};

     例如2:     int a[5] = {10,20,30}; 部分初始化 : 未初始化的值,系统默认为 0

示例代码1:

#include <stdio.h>int main(){int a[5] = {10,20,30,40,50};int b[5] = {1,3,5};int len = 5,i = 0;printf("a数组: ");for(i = 0;i < len;i++){printf("%d ",a[i]);        }printf("\n");printf("===========================\n");printf("b数组: ");for(i = 0;i < len;i++){printf("%d ",b[i]);        }printf("\n");printf("===========================\n");return 0;}

示例代码2:

#include <stdio.h>int main(){int c[] = {1,3,4,5,6,7,2,3,4,5,6};int i = 0,n = 0;int len = sizeof(c)/sizeof(c[0]);for(i = 0;i < len;i++){printf("%d ",c[i]);        if(c[i] % 2 == 0)n++;}printf("\n");printf("偶数的个数= %d\n",n);return 0;}运⾏结果:
1 3 4 5 6 7 2 3 4 5 6 偶数的个数= 5

练习:

int a[8] = {10,15,27,33,78,65};

(1) 要求⽤户输出上述数组的内容

(2) 要求求上述数组中奇数的和。

(3) 求上述数据中所有元素 (8 个 ) 的平均值 , 省略⼩数 , 输出整数。

#include <stdio.h>int main() 
{int arr[] = {10,15,27,33,78,65}; // 示例数组int size = sizeof(arr)/sizeof(arr[0]);int sum_odd = 0;int total_sum = 0;// (1) 输出数组内容printf("数组内容: ");for(int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");// (2) 计算奇数之和for(int i = 0; i < size; i++) {if(arr[i] % 2 != 0) {sum_odd += arr[i];}}printf("奇数和: %d\n", sum_odd);// (3) 计算平均值(整数)for(int i = 0; i < size; i++) {total_sum += arr[i];}int average = total_sum / size;printf("平均值: %d\n", average);return 0;
}

三.字符数组和字符串

      1.定义:

         字符数组: 它是⼀个 char/unsigned char 类型的数组,常⽤来存放字符或字符串。

         char buf[5] = {'A','B','C','D','E'};

         思考 : 字符数组中只能存放字符或字符串 , 这句话对不对?

         不对,还可以存放整数 char buf[5] = {65,66,67,68,69};

         三种写法:

三种写法:char buf[30] = "welcome";char buf[30] = {"welcome"};char buf[30] = {'w','e','l','c','o','m','e','\0'};

示例1:

#include<stdio.h>int main()
{char buf1[] = {"hello"};char buf2[] = "hello";char buf3[] = {'h', 'e', 'l', 'l', 'o', '\0'};int i = 0;printf("buf1 :");for(i = 0; buf1[i] != '\0'; i++){printf("%c", buf1[i]);}printf("\n");printf("=======================\n");printf("buf2 :");for(i = 0;buf2[i] != '\0';i++){printf("%c ",buf2[i]);        }printf("\n");printf("===============================\n");printf("buf3 : ");for(i = 0;buf3[i] != '\0';i++){printf("%c ",buf3[i]);        }printf("\n");return 0;
}

输入:

char buf[100] = {0};
scanf("%s",字符数组的⾸地址);   功能:⽤户从键盘输⼊任意⼀段字符串,存放到buf中。以回⻋,空格,tab键盘作为⽤户输⼊的结束符号。

输出:

char buf[] = {"hello world"};
printf("%s\n",字符数组的⾸地址); 功能: 输出数组中第⼀个'\0'之前所有的字符,并显示到屏幕上。若是⽤户对应字符数组中没有'\0',则⽤户输出乱码。

示例2:

#include <stdio.h>int main(){char name[100];printf("please input your name : ");scanf("%s",name);printf("NAME\n");printf("%s\n",name); return 0;}

练习:

char buf[100] = {0};

要求⽤户从键盘输⼊字符数串存放到 buf 中 ,

若是⽤户输⼊的字符数组中存在⼤写字符 , 则转换为⼩写字符 , 若是⼩写字符则不管 , 然后输出⽤户输⼊的数据

#include <stdio.h>
#include <ctype.h>int main(){char buf[100] = {0};printf("请输入字符串: ");fgets(buf, sizeof(buf), stdin);// 转换大写字母为小写for(int i = 0; buf[i] != '\0'; i++) {if(isupper(buf[i])) {buf[i] = tolower(buf[i]);}}printf("转换后的字符串: %s", buf);return 0;
}

1- 使用 fgets 安全读取用户输入(防止缓冲区溢出)
2- 遍历字符串,使用 isupper 检查是否大写字母
3- 使用 tolower 将大写字母转换为小写
4- 小写字母和其他字符保持不变

四.二维数组

1.定义

       ⼀维数组是相同数据类型元素的集合,但是只能表示⼀⾏数据。 若是存在⾏和列相关的信息 (例如矩 阵),我们就需要⽤⼆位数组来表示.

  2.  定义方式

 数据类型 数组名 [行数][列数];

示例:

int a[3][4];  在内存中按照还是按照⼀维数组的顺序排序的。
只不过,为了⽅便⼈们识别,我们是按照⼆维的来理解。0xd10     1     a[0][0]
0xd14     2     a[0][1] 
0xd18     3     a[0][2]
0xd1c     4     a[0][3] 
0xd20     5     a[1][0]
0xd24     6     a[1][1] 
0xd28     7     a[1][2]
0xd2c     8     a[1][3] 
0xd30     9     a[2][0]
0xd34     10    a[2][1] 
0xd38     11    a[2][2]
0xd3c     12    a[2][3] 

 理解:

3.二维数组求大小

数组大小:sizeof (arr)

一个元素大小:sizeof (arr[0][0])

一行大小:sizeof arr[0] 

行数: sizeof arr / sizeof arr[0]

列数:sizeof arr[0]  /  sizeof (arr[0][0])

示例代码:二维数组遍历

#include <stdio.h>int main(){int a[3][2];int i = 0,j = 0;printf("please input %d data : ",3 * 2);for(i = 0;i < 3;i++) {for(j = 0;j < 2;j++){scanf("%d",&a[i][j]);        }}for(i = 0;i < 3;i++) {for(j = 0;j < 2;j++){printf("%d ",a[i][j]);}printf("\n");}return 0;}

练习:

定义⼀个 int a[10][10] 的数组,利⽤⼆维数组输出下列杨辉三⻆的图案 . 1

#include <stdio.h>int main() {int a[10][10] = {0};// 生成杨辉三角数据for(int i = 0; i < 10; i++){a[i][0] = 1;  // 每行第一个元素为1for(int j = 1; j <= i; j++) {a[i][j] = a[i-1][j-1] + a[i-1][j];}}// 输出杨辉三角for(int i = 0; i < 10; i++) {// 输出空格对齐for(int k = 0; k < 10 - i; k++) {printf("  ");}// 输出数字for(int j = 0; j <= i; j++) {printf("%4d", a[i][j]);}printf("\n");}return 0;
}

运行结果:

1- 定义一个10x10的二维数组
2- 使用双重循环生成杨辉三角数据:
3- 每行第一个元素设为1
4- 其他元素等于上一行前一个位置的值和上一行同列的和
5- 输出时添加空格对齐,使显示更美观
6- 使用%4d格式化输出保持数字对齐

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com