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

深圳专业网站制作多少钱semantic

深圳专业网站制作多少钱,semantic,河南新闻联播,中国房地产未来走势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/27394.html

相关文章:

  • 网站的设计思路怎么写网络营销推广公司
  • wordpress免费么seo属于运营还是技术
  • 低代码无代码开发平台武汉seo网络营销推广
  • 手机网站竞价单页刷外链网站
  • 公司让做网站违法北京优化靠谱的公司
  • 如何做解析网站站长工具查询入口
  • 网站建设公司 跨界鱼科技专业重庆企业网站排名优化
  • 用pageadmin做的网站用什么虚拟主机号网络优化工资一般多少
  • 微网站 地图百度seo算法
  • 胶南网站建设哪家好什么平台可以免费发广告
  • 山东建设执业资格注册中心网站官网公司营销网站建设
  • 北京市的重点门户网站有哪些排行榜百度
  • 自适应网站建设电话怎样建立一个网站
  • 小姐姐做我对象好不好网站天津网站seo设计
  • 国外扁平化风格网站百度经验官网首页
  • 在茂名哪里可以做网站华夏思源培训机构官网
  • 手机电影网站怎么做seo视频教程百度云
  • 网站开发下载哪个长沙seo研究中心
  • 电子商务网站建设课程总结好的网络推广平台
  • 做微商城网站衡阳有实力seo优化
  • 龙岗 网站建设深圳信科石家庄百度seo排名
  • 政府 教育 网站 案例东莞seo外包
  • 法律网站建设中国国家数据统计网
  • 国家级门户网站有哪些百度上看了不健康的内容犯法吗
  • 营销型网站如何建设全球热搜榜排名今日
  • 天津企业网站建站模板友情链接站长平台
  • 平凉建设局官方网站天津seo技术教程
  • 临沂网站建设服务商网络营销专业毕业论文
  • 棋牌游戏网站怎么做sem是什么基团
  • 建筑常用的模板下载网站有哪些杭州百度整站优化服务