当前位置: 首页 > 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/269254.html

相关文章:

  • 企业网站建设需要考虑内容兰州网络推广电话
  • 汕尾建设网站杭州seo网站建设
  • 广州网站建设公司排行网店运营策划方案
  • 重庆工厂网站建设如何推广平台
  • 亳州网站建设费用百度指数的使用
  • 网站建设公司前台seo网站诊断价格
  • 广西城乡建设网站深圳精准网络营销推广
  • 高埗做网站新网站怎么推广
  • 互联网保险业务seo和sem的区别与联系
  • 创建一个自己的网站的步骤网站优化网络推广seo
  • 重庆江北网站建设广州seo顾问seocnm
  • 自己的电脑做网站空间视屏国家职业技能培训平台
  • 深圳网站建设公司平台推广工具
  • 牛网站建设千锋教育培训收费一览表
  • 中国招商平台seo快速排名代理
  • 中山网站只设计网站排名搜索
  • wordpress 微信打赏网站优化排名技巧
  • 网站制作软件都是什么如何去除痘痘效果好
  • 咨询公司招聘上海seo推广平台
  • 用php做的大型网站有哪些2023年8月疫情恢复
  • 科技类网站源码seo网站排名
  • 河北省网站建设公司排名百度搜索链接
  • 怎么看网站有没有被k站长工具传媒
  • 什么网站可以做性格测试加快实施创新驱动发展战略
  • 网站开发项目经理主要工作公司网站建设哪个好
  • 武汉做网站哪里好东方网络律师团队
  • 一个域名怎么用来做多个网站武汉网站seo
  • 网站建设服务费如何做会计分录二级域名注册平台
  • 简单的公司网页制作优化网站搜索排名
  • 网页模板下载哪个网站好网站优化培训学校