当前位置: 首页 > wzjs >正文

网站建设沈阳公众号seo排名软件

网站建设沈阳,公众号seo排名软件,做网站底部不显示中文怎么回事,郑州汉狮哪家做网站好1.一维数组 概念:具有一定顺序的若干变量的集合 在c语言中,数组可以比作一根绳子,数组内部的元素可以比作线上的每一个点。在使用这条绳之前,我们要定义好自己要取多少长度的绳子,且我们拿到的这跟绳子必须整段粗细相同…

1.一维数组

概念:具有一定顺序的若干变量的集合

在c语言中,数组可以比作一根绳子,数组内部的元素可以比作线上的每一个点。在使用这条绳之前,我们要定义好自己要取多少长度的绳子,且我们拿到的这跟绳子必须整段粗细相同,粗细也就对应着定义数组时要确定好数据类型,char类型对应的绳子相对细一点,int类型会相对粗一点。

~1格式

定义格式:(存储类型) 数据类型 数组名[元素个数];
eg:int arr[5];

~2数组名

数组名:代表数组首元素的地址,arr是地址常量,不能为左值,不能被赋值

~3访问元素

访问元素:数组名[下标];下标从0开始
访问第一个元素:arr[0]
访问第n个元素:arr[n-1]

1.1初始化

1)全部初始化

全部初始化,就是在数组定义的时候规定好数组的长度,且将数组的元素全部填充完整。

#include <stdio.h>int main()
{int arr[3] = {1, 2, 3};printf("%d\n", arr[0]);printf("%d\n", arr[1]);printf("%d\n", arr[2]);return 0;
}

2)部分初始化

部分初始化是指在数组定义的时候规定好数组的长度。

注意:部分初始化时未初始化的元素值为0。

#include <stdio.h>int main()
{int arr[3] = [1];printf("%d\n", arr[0]);printf("%d\n", arr[1]);printf("%d\n", arr[2]);return 0;
}

3)未初始化

在定义的时候只限制了数组的长度,并没有给数组赋予任何初值,未初始化的元素为随机值,需要对每个元素单独进行赋值

#include <stdio.h>int main()
{    int arr[3];printf("%d\n", arr[0]);printf("%d\n", arr[1]);printf("%d\n", arr[2]);return 0;
}

以上代码打印的三个值是编译器赋予的三个随机值

#include <stdio.h>int main()
{int arr[3];arr[0] = 1;arr[1] = 2;printf("%d\n", arr[0]);printf("%d\n", arr[1]);printf("%d\n", arr[2]);return 0;
}

以上代码给arr数组的前两个之值分别赋值,但由于是未初始化定义,第三个元素依旧是编译器给数组赋予的随机值。

4)定义空数组

*1可以全部初始化
int arr[5] = {0, 0, 0, 0, 0};

*2可以部分初始化
int arr[5] = {0};

*3
int arr[5] = {};

~4引用

1、先定义后引用

2、每次只能引用一个数组元素arr[下标],如果想要引用所有元素可以循环遍历

#include <stdio.h>int mian()
{int arr[5] = {1, 2, 3, 4, 5};int i ; for(i = 0 ; i < 5 ; i ++){printf("%d\n", arr[i]);}return 0;
}

3、引用时防止数组越界,虽然有时编译器不会报错

4、打印数组元素地址用%p格式

#include <stdio.h>int mian()
{int arr[5] = {1, 2, 3, 4, 5};int i ; for(i = 0 ; i < 5 ; i ++){printf("%p\n", &arr[i]);}return 0;
}

~5内存分配

一一对应

~6数组遍历

把循环变量作为数组下标,用for循环遍历(也可以用while、do_while循环)

#include <stdio.h>int mian()
{int arr[5] = {};int i ; for(i = 0 ; i < 5 ; i ++){scanf("%d\n", &arr[i]);    //遍历数组,依次输入数据}printf("--------------------------------")for(i = 0 ; i < 5 ; i ++){printf("%d\n", arr[i]);    //遍历数组,依次打印数据}return 0;
}

~7数组的大小

1、数组元素个数*数据类型大小
2、sizeof(数组名);
int arr[5] = {};
printf("%d\n", sizeof(arr));

计算元素的个数:
1、直接观察
2、sizeof(数组名) / sizeof(数据类型)

练习1:计算斐波那契数列前n项并逆序输出(参考代码见后面)

1 1 2 3 5 8 13 21 .....
int arr[n] = {1, 1};

~8清零函数

1、bzero
注意,使用bzero函数的时候一定要引入头文件<strings.h>

#include <strings.h>

void bzero(void *s, size_t n);

功能:将内存空间设置为0

参数:s:要清空空间的首地址

        n:字节大小

返回值:无

#include <stdio.h>
#include <strings.h>int main()
{int arr[5] = {1, 2, 3, }int i;bzero(arr, sizeof(arr));printf("-------------------------------");for(i = 0 ; i < 5 ; i ++){printf("%d\n", arr[i]);}return 0;
}

2、memset
注意,使用memset函数的时候一定要引入头文件<string.h>

#include <string.h>

void *memset(void *s, int c, size_t n);

功能:将内存空间设置为0

参数:s:要清空空间的首地址

c:要清空的值,设置为0

n:字节大小

返回值:

#include <stdio.h>
#include <string.h>int main()
{int arr[5] = {1, 2, 3, 4, 5};int i;memset(arr, 0, sizeof(arr));printf("-------------------------------");for(i = 0; i < 5 ; i ++){printf("%d\n", arr[i]);}return 0;
}

2.字符数组

字符数组存放字符串

~1概念

元素的数据类型为字符型的数组

~2使用形式

(1)
// 元素个数没有书写的时候,就会以后面实际的元素数量去开辟空间
char c[] = {'a', 'b', 'c'};
char ch[] = {}; // 大小为0,随便加入一个元素就会越界

(2)
char str[] = {"hello"}; // 用字符串赋值 sizeof(str) = 6

(3)
char ch[] = "abc" // 用字符串赋值 sizeof(str) = 4
printf("%c\n", ch[0]
);

(4)
char c[32] = "hello"; // 用字符串赋值 sizeof(str) = 32

注意:字符串赋值常常会省略数组长度,需要注意数组越界问题

2.1 字符数组的输入输出

~3输入

char s[32] = {};
1)  scanf("%s", s);

#include <stdio.h>int main()
{char[32] = {};scanf("%s", s);        //scanf后要跟变量对应的地址,而数组名便是数组首个元素对应的地址for(int i = 0 ; i < 10 ; i ++){printf("%d\n", s[i]);}printf("%s\n", s);return 0;
}

C语言支持一个字符数组在输入数据时直接输入一串字符串,在scanf格式化输入时对应的格式是%s

输入的字符串不能含有空格,因为scanf输入字符串遇到空格或\n都会认为字符串输入结束,空格后面的内容就不会存放到数组里面

如果我们需要输入空格就按以下格式输入
scanf("%[^\n]", s) // 知道输入\n才结束

2)  遍历输入字符

char str[32] = {}
int i;
for(i = 0; i < 32; i++)
{
        scanf("%c", &str[i]);
}

3)  gets

与字符相同,getchar可以吃掉一个字符,C语言中有单独吃掉一串字符串的函数,gets()

char *gets(char *s)

功能:从终端输入字符串

参数:s:目标字符数组的首地址(数组的名字)

返回值:目标字符数组的首地址

gets(s); // gets在输入不关心数组越界问题,使用时会报警告

~4输出

1.  printf("%s\n", s);

2.  for(i = 0; i < 32; i++)

printf("%c\n", str[i]);

3.  puts

int puts(const char *s);

功能:向终端输出字符串

参数:s:要输出字符串的首地址

返回值:输出字符的个数

#include <stdio.h>int main()
{char str[32] = {};gets(str);printf("--------------------\n");int num = puts(str);printf("%d\n", num);return 0;
}

【例】:判断对错

char s[10] = {};s[10] = "world";  // 错误,数组越界
s = "hello";  // 错误,s是地址常量,不能为左值
strcpy(s, "string");  // 正确

练习2:实现字符串大小写的转换(参考代码见本文最后面)

2.2 计算字符串实际长度

~1for循环遍历数组,直到\0为止

#include <stdio.h>int main()
{char str[32] = {"hello"};int len = 0;for(len = 0 ; str [len] != '\0' ; len ++);    //整个for循环无内部代码块,只是为了让len++记录长度printf("%d\n", len);return 0;
}

~2strlen

#include <string.h>                        //必不可少的头文件引用

size_t strlen(const char *s);

功能:计算字符串的实际长度(不包含\0)

参数:s:要计算的字符串的首地址

返回值:字符串的实际长度

#include <stdio.h>
#include <string.h>int main()
{char str[32] = {"hello"};int len = strlen(str);printf("%d\n", len);retunr 0;
}

sizeof(str); // 32 计算的是整个数组的大小,不是实际的个数

~3sizeof和strlen区别?

// 本质上

1.sizeof是关键字,strlen是函数

// 功能上

2.sizeof是计算数据所占空间大小,strlen计算字符串的实际长度

// 使用时

3.sizeof计算式包括\0,strlen是不包含\0;计算字符串长度的时(元素个数省略的情况下),sizeof比strlen大1;

------------------------------------------------------这是一条分割线------------------------------------------------------

天才预设的上一篇跳转路径:C语言基础5——控制语句2(循环)-CSDN博客

天才预设的下一篇跳转路径:未完待续~

天才预设的合集传送路径:C基础_Gu_shiwww的博客-CSDN博客

练习答案

练习1:

计算斐波那契数列前n项并逆序输出(参考代码见后面)

1 1 2 3 5 8 13 21 .....
int arr[n] = {1, 1};

#include <stdio.h>int main(int argc, const char *argv[])
{int n;scanf("%d",&n);        //输入确定要打印的个数n;int a[n];a[0] = 1;a[1] = 1;for (int i = 2 ; i < n ;i ++)a[i] = a[i-1] + a[i-2];for (int j = n - 1 ; j >= 0; j--)    //逆序打印printf("%d\t",a[j]);return 0;
}

此代码在定义数组之前,可以提前输入好前两个数,然后根据前两个数进行求和,元素赋值到下一个位置。

练习2:

实现字符串大小写的转换

#include <stdio.h>int main(int argc, const char *argv[])
{char a[30];gets(a);for(int i = 0 ; i < sizeof(a) ; i ++){if (a[i] >= 'A' && a[i] <= 'Z'){a[i] = a[i] + 32;}else if (a[i] >= 'a' && a[i] <= 'z'){a[i] = a[i] - 32;}}printf("%s",a);return 0;
}

注意在判断的时候可以直接'a'单引号括起来的字符,也可以直接判断对应的ASCII码值。

http://www.dtcms.com/wzjs/198938.html

相关文章:

  • 顺德网站建设合理使用颜色搭配_方能达到最佳视觉效果整合营销的案例
  • 企业网络配置方案长沙电商优化
  • 政府网站建设定位济南专业seo推广公司
  • 昌平做网站seol英文啥意思
  • 让人做网站需要注意什么条件企业查询平台
  • web前端开发期末制作网站案例高清视频线和音频线的接口类型
  • 清城网站seo网站优化塔山双喜
  • 创建一个自己的网站的步骤快速开发平台
  • 学人工智能后悔死了搜索引擎优化的目的是
  • 网站建设和服务器运营qq排名优化网站
  • 中文域名的网站有哪些上海百度推广优化排名
  • 手机网站建设免费空间企业网络营销
  • 北京制卡厂家做卡公司北京制卡网站_北京制卡_北京 去114网优化百度涨
  • 动态网站开发实训报告总结福州网站seo优化公司
  • webapp开发百度热搜关键词排名优化
  • 地产网站建设方案百度关键词竞价查询系统
  • 安卓app市场搜索引擎优化策略不包括
  • 江阴市做网站的网络营销专业是做什么的
  • 公司网站建设报价大数据营销案例
  • 免费信息发布网站有哪些优化大师是什么意思
  • 多个链接的网站怎么做的网络服务提供商
  • 网站系统建设费用百度一下百度首页官网
  • 免费视频素材网站都有哪些抖音seo推广
  • 俄语培训网站建设药品销售推广方案
  • 毕业设计做购物网站临沂seo推广外包
  • 只做一页的网站多少钱百度网盟广告
  • 北京好的网站开发爱站小工具计算器
  • 网站程序源码下载万能bt搜索引擎
  • 温州公司做网站优化设计的答案
  • 衬衫定做公司海会网络做的网站怎么做优化