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

青岛高端网站开发公司在线做网站图标

青岛高端网站开发公司,在线做网站图标,做违法网站判刑吗,wordpress 互动性c语法7 - 数组与字符串概述定义#xff1a;把具有相同类型的若干变量按有序形式组织起来称为数组。C语言数组属于构造数据类型。一个数组可以分解为多个数组元素#xff0c;这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同#xff0c;数组又可分为数… c语法7 - 数组与字符串概述定义把具有相同类型的若干变量按有序形式组织起来称为数组。C语言数组属于构造数据类型。一个数组可以分解为多个数组元素这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。一维数组数组的概念和定义我们知道要想把数据放入内存必须先要分配内存空间。放入4个整数就得分配4个int类型的内存空间int a[4];这样就在内存中分配了4个int类型的内存空间共 4×416 个字节并为它们起了一个名字叫a。我们把这样的一组数据的集合称为数组(Array)它所包含的每一个数据叫做数组元素(Element)所包含的数据的个数称为数组长度(Length)例如int a[4];就定义了一个长度为4的整型数组名字是a。数组中的每个元素都有一个序号这个序号从0开始而不是从我们熟悉的1开始称为下标(Index)。使用数组元素时指明下标即可形式为arrayName[index]arrayName 为数组名称index 为下标。例如a[0] 表示第0个元素a[3] 表示第3个元素。接下来我们就把第一行的4个整数放入数组a[0]20;a[1]345;a[2]700;a[3]22;这里的0、1、2、3就是数组下标a[0]、a[1]、a[2]、a[3] 就是数组元素。下列实现一个输入多个数字并存入数组输出#include int main(){    int nums[10];    int i;    //从控制台读取用户输入    for(i0; i10; i){        scanf(%d, nums[i]);     }    //依次输出数组元素    for(i0; i10; i){        printf(%d , nums[i]);    }    return 0;}数组的定义方式dataType  arrayName[length];dataType 为数据类型arrayName 为数组名称length 为数组长度。例如char ch[9];  //定义一个长度为 9 的字符型数组float m[12];  //定义一个长度为 12 的浮点型数组char ch[9];  //定义一个长度为 9 的字符型数组需要注意的是数组中每个元素的数据类型必须相同对于int a[4];每个元素都必须为 int。数组长度 length 最好是整数或者常量表达式例如 10、20* 4 等这样在所有编译器下都能运行通过如果 length 中包含了变量例如 n、4*m 等在某些编译器下就会报错访问数组元素时下标的取值范围为 0 ≤ index length过大或过小都会越界导致数组溢出发生不可预测的情况数组内存是连续的数组是一个整体它的内存是连续的也就是说数组元素之间是相互挨着的彼此之间没有一点点缝隙。下图演示了int a[4];在内存中的存储情形「数组内存是连续的」这一点很重要所以我使用了一个大标题来强调。连续的内存为指针操作(通过指针来访问数组元素)和内存处理(整块内存的复制、写入等)提供了便利这使得数组可以作为缓存(临时存储数据的一块内存)使用。大家暂时可能不理解这句话是什么意思等后边学了指针和内存自然就明白了。数组的初始化上面的代码是先定义数组再给数组赋值我们也可以在定义数组的同时赋值例如int a[4]  {20, 345, 700, 22};数组元素的值由{ }包围各个值之间以,分隔。对于数组的初始化需要注意以下几点可以只给部分元素赋值。当{ }中值的个数少于元素个数时只给前面部分元素赋值。例如int a[10]{12, 19, 22 , 993, 344};表示只给 a[0]~a[4] 5个元素赋值而后面 5 个元素自动初始化为 0。当赋值的元素少于数组总体元素的时候剩余的元素自动初始化为 0对于short、int、long就是整数 0对于char就是字符 \0对于float、double就是小数 0.0。我们可以通过下面的形式将数组的所有元素初始化为 0int nums[10]  {0};char str[10]  {0};float scores[10]  {0.0};由于剩余的元素会自动初始化为 0所以只需要给第 0 个元素赋值为 0 即可。只能给元素逐个赋值不能给数组整体赋值。例如给 10 个元素全部赋值为 1只能写作int a[10]  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1};而不能写作int a[10]  1;如给全部元素赋值那么在定义数组时可以不给出数组长度。例如int a[]  {1, 2, 3, 4, 5};等价于int a[5]  {1, 2, 3, 4, 5};可以使用数组输出一个4x4的矩阵#include int main(){    int a[4]  {1, 2, 3, 4};    int b[4]  {5, 6, 7, 8};    int c[4]  {9, 10 ,11, 12};    int d[4]  {13, 14, 15, 16161616};    printf(%-9d %-9d %-9d %-9d\n, a[0], a[1], a[2], a[3]);    printf(%-9d %-9d %-9d %-9d\n, b[0], b[1], b[2], b[3]);    printf(%-9d %-9d %-9d %-9d\n, c[0], c[1], c[2], c[3]);    printf(%-9d %-9d %-9d %-9d\n, d[0], d[1], d[2], d[3]);    return 0;}数组元素逆序#includeint main(void){ int arr[]  {1, 6, 7, 5, 9, 4, 3}; int i  0; // 数组首元素下标 int j  sizeof(arr)/sizeof(arr[0]) - 1; //数组最后一个元素下标 int temp  0; //打印原始数组 for (size_t m  0; m sizeof(arr) / sizeof(arr[0]); m){  printf(%d , arr[m]); } printf(\n);  while(i   temp  arr[i];  arr[i]  arr[j];  arr[j]  temp;  i;  j--; } for (size_t n  0; n sizeof(arr) / sizeof(arr[0]); n){  printf(%d , arr[n]); } printf(\n); return 0;}sizeof(arr)获取到所有的数组元素的下标而sizeof(arr)/sizeof(arr[0]) - 1获取到最后一位的元素下标通过for循环打印数组while进行数组前后元素的交换并向中间递进。冒泡排序1、比较相邻的元素。如果第一个比第二个大(小)就交换他们两个。2、对每一对相邻元素作同样的工作从开始第一对到结尾的最后一对。这步做完后最后的元素会是最大(小)的数。3、针对所有的元素重复以上的步骤除了最后已经选出的元素(有序)。4、持续每次对越来越少的元素(无序元素)重复上面的步骤直到没有任何一对数字需要比较则序列最终有序。#include int main(void){  int guo[]  { 4,554,48,49,487,56,12}; int n  sizeof(guo) / sizeof(guo[0]); //数组元素个数 int temp  0; //临时变量  for (size_t i  0; i -1; i){  // 控制行  for (size_t j  0; j -1-i; j ){ // 控制内层列   if(guo[j]  guo[j1]){    temp  guo[j];    guo[j]  guo[j1];    guo[j1]  temp;   }  } }    for (size_t i  0; i      printf(%d , guo[i]); } printf(\n); return 0;}二维数组二维数组概念与形式二维数组定义的一般形式是dataType arrayName[length1][length2];其中dataType 为数据类型arrayName 为数组名length1 为第一维下标的长度length2 为第二维下标的长度。我们可以将二维数组看做一个 Excel 表格有行有列length1 表示行数length2 表示列数要在二维数组中定位某个元素必须同时指明行和列。例如int a[3][4];定义了一个 3 行 4 列的二维数组共有 3×412 个元素数组名为 a即a[0][0], a[0][1], a[0][2], a[0][3]a[1][0], a[1][1], a[1][2], a[1][3]a[2][0], a[2][1], a[2][2], a[2][3]如果想表示第 2 行第 1 列的元素应该写作 a[2][1]。也可以将二维数组看成一个坐标系有 x 轴和 y 轴要想在一个平面中确定一个点必须同时知道 x 轴和 y 轴。二维数组在概念上是二维的但在内存中是连续存放的换句话说二维数组的各个元素是相互挨着的彼此之间没有缝隙。那么如何在线性内存中存放二维数组呢有两种方式一种是按行排列 即放完一行之后再放入第二行另一种是按列排列 即放完一列之后再放入第二列。在C语言中二维数组是按行排列的。也就是先存放 a[0] 行再存放 a[1] 行最后存放 a[2] 行每行中的 4 个元素也是依次存放。数组 a 为 int 类型每个元素占用 4 个字节整个数组共占用 4×(3×4)48 个字节。你可以这样认为二维数组是由多个长度相同的一维数组构成的。二维数组初始化常规初始化int arr [3][5]  {{ 2, 3, 54, 56, 7 },{2, 67, 4, 35, 9}, {1, 2, 3, 4, 5}}不完全初始化int arr[3][5]  {{2, 3},{2, 3, 4},{1, 2, 3, 4}}未被初始化的赋值为0int arr[10]  0;则该10个元素均被赋值为0同理二维数组也可赋值为0int arr[10][5]  {0}此时获取到50个0组成的二维数组系统自动分配行列int arr[3][5]  {1,2,3,4,5,6,7}无法使用下列形式的定义**int arr[][]  {{1,2,3},{4,5,6}}二维数组必须指定列值可以不使用行值int arr[][4]  {1, 3, 4, 6, 7};输出1   34   67   0打印二维数组#includeint main(void){    int arr[5][3]  { {1,2,3},         {4,5,6},         {7,8,9},       {10,11,12},       {13,14,15} };    int arr2[3][5]  {         {1,2,3,4,5},      {6,7,8,9,10},      {11,12,13,14,15}};    printf(第一个数组打印\n);    for(size_t i  0;i sizeof(arr)/sizeof(arr[0]); i){     for (size_t j  0; j sizeof(arr[i])/sizeof(arr[i][0]);j){      printf(%d ,arr[i][j]);  }  printf(\n); } printf(第二个数组打印\n);  for(size_t i  0;i sizeof(arr2)/sizeof(arr2[0]); i){     for (size_t j  0; j sizeof(arr2[i])/sizeof(arr2[i][0]);j){      printf(%d ,arr2[i][j]);  }  printf(\n); } return 0;}二维数组输入输出#includeint main(void){ int scores[5][3];  int row  sizeof(scores) / sizeof(scores[0]); int col  sizeof(scores[0]) / sizeof(scores[0][0]);  for (size_t i  0; i       for (size_t j  0; j //            取地址输入       scanf(%d, scores[i][j]);   } } for (size_t i  0; i       for (size_t j  0; j //            取地址输入       printf(%d , scores[i][j]);   }   printf(\n); } return 0;}修改为输出按二维数组行成绩求和#includeint main(void){ int scores[5][3]; int row  sizeof(scores) / sizeof(scores[0]); int col  sizeof(scores[0]) / sizeof(scores[0][0]); for (size_t i  0; i       for (size_t j  0; j        scanf(%d, scores[i][j]);   } } for (size_t i  0; i   int sum  0;  for (size_t j  0; j    sum  scores[i][j];  }  printf(第%d行求和为%d\n, i1, sum); }  return 0;}修改为按列求和#includeint main(void){ int scores[5][3]; int row  sizeof(scores) / sizeof(scores[0]); int col  sizeof(scores[0]) / sizeof(scores[0][0]); for (size_t i  0; i       for (size_t j  0; j //            取地址输入       scanf(%d, scores[i][j]);   } } for (size_t i  0; i   int sum  0;  for (size_t j  0; j    sum  scores[j][i];  }  printf(第%d列总和%d\n, i1, sum); } return 0;}多维数组三维数组行列层【层】【行】【列】int arr[2][3][4]; // 两层三行四列三维数组大小为  层*行*列*类型大小三位数组打印与定义#includeint main(void){//  定义一个两层三行四列的三维数组// int arr[2][3][4];// {//     { {11, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4} },//     { {21, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4} },//    { {31, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4} },// }    int arr[2][3][4]  {     { {11, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4} },     { {21, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4} } }; // 打印维数组 for (size_t i  0; i 2; i){  for (size_t j  0; j 3; j){   for(size_t k  0;k 4; k){    printf(%d ,arr[i][j][k]);   }   printf(\n);  }  printf(换层\n\n); } return 0;}特殊初始化int arr[2][3][5]  {1,2,3,4,5,6,7,8,9,10,11};  //可自动化定义int arr[][3][5];  //可省略层数字符数组和字符串字符数组#includeint main(void){ char str[5]  {h, e, l, l, o};  printf(%s\n, str);  return 0;}字符串char str[5]  {h, e, l, l, o, \0}; //最后一位可以自动补0char str[]  hello;printf(“%s”) 使用printf 打印字符串的时候必须碰到  **\0 **才结束,字符串和字符串数组自动补 \0字符串数组输入#includeint main(void){ char str[100]  {0};  for (size_t i  0; i 10; i){  scanf(%c, str[i]); } printf(str  %s\n,str); return 0;}统计字符串中字符出现次数#includeint main(void){    int count[26]  {0}; // 判断字符串中的每个次数//     a97//     z: 123// 通过给一个数组下标添加累计数量的方式记录字符串的出现次数通过asic码   char str[11]  {0};   for (size_t i  0; i 10; i){    scanf(%c, str[i]);   }      for (size_t i  0; i 11; i){    int index  str[i] - a; // 用户输入字符下标在count数组中的下标值    count[index];   }      for (size_t i  0; i 26; i){    if(count[i] ! 0){     printf(%c 字符在字符串中出现的次数%d\n, ia, count[i]);    }   } return 0;}字符串操作字符串获取带空格的字符串一般情况下获取字符串%s 遇到空格和\n终止用于存储字符串的空间必须足够大防止溢出若需要获取空格需借助正则表达式scanf(%[^\n], str);// 除换行之外的字符如下代码接收空格示例#includeint main(void){ char str[100]; scanf(%[^\n]s, str); printf(%s\n, str); return 0;}gets()函数获取一个字符串返回字符串的首地址原型char *gets(char *s);输入参数用来存储字符串的空间返回一个字符串的首地址#include#include#includeint main(void){ char str[100]; printf(获取字符串为%s\n, gets(str)); return 0;}注意:由于scanf()和gets()无法知道字符串s大小必须遇到换行符或读到文件结尾为止才接收输入因此容易导致字符数组越界(缓冲区溢出)的情况。不安全的。fgets()char *fgets(char *s, int size, FILE *stream);参数:获取一个字符串。s 存储字符串的空间地址size 描述空间大小会预留**/0**的存储空间使得输入不会越界stream读取字符串的位置标准输入stdin表示键盘返回值返回实际获取到的字符串首地址。使用方法#include#include#includeint main(void){ char str[10]; printf(获取字符串为%s\n, fgets(str, sizeof(str), stdin)); return 0;}puts()将字符串写出屏幕int puts(coust char *s);参数待写出到屏幕的字符串返回值**成功**非负数 失败 -1puts函数会默认换行#include#include#includeint main(void){ char str[]  hello plotycodon\n; int code  puts(str); printf(code  %d\n, code); return 0;}fputs() int fputs(const char *str, FILE *stream);参数输出后不默认添加\n换行str 待输出的字符串stream输出位置(屏幕标准输出 stdout)返回成功0 失败-1#include#include#includeint main(void){ char str[]  hello plotycodon; int code  fputs(str, stdout); printf(code  %d\n, code); return 0;}strlen()求字符串的长度size_t strlen(const char *s);参数代求长度的字符串返回一个有效的字符个数碰到\0结束#include#include#includeint main(void){ char str[]  hello \n plotycodon\n; printf(str  %s, str); printf(sizeof(str)  %u \n, sizeof(str)); printf(strlen(str)  %u, strlen(str)); return 0;}实现strlen()函数#include#include#include//实现strlen()int main(void){ char str[]  hello \n plotycodon\n; int i  0;  while(str[i] ! \0){  i; } printf(strlen(str)  %d, i);}strcat()拼接两个字符串char*strcat(char* strDestination, const char* strSource);参数为两个需要拼接的字符串其中第一个字符串将被覆盖成新的字符串#include #include int main(){    char str1[101]  { 0 };    char str2[50]  { 0 };    gets(str1);    gets(str2);    strcat(str1, str2);    puts(str1);    return 0;}实现strcat#include#include#includeint main(void){ char str1[]  guo; char str2[]  jia; char str3[100]  {0};  int i  0; while (str1[i] ! \0){  str3[i]  str1[i];  i; } // 将str1 给str3 printf(第一次循环结束的时候, i  %d, str3  %s\n, i, str3);  int j  0; while(str2[j]){  str3[ij]  str2[j];  j; } printf(第二次循环结束的时候, i  %d, str3  %s\n, ij, str3);  return 0;}往期文章2020-9-17C语法1、类与对象c语法2、c执行-命名空间-输入输出c 3、语法 数据类型c 4、语法 数组c  c语言- 概述c  c语言 - 控件及概述补充c  c语言 - 数据类型c  c语言 - 进制、原反补码、输入输出函数c  c语言 - 运算符和类型转换c  c语言 - 控制语句图 | 郭嘉文 | 郭嘉扫码关注桔梗与少年微信号 : if-u-remembers新浪微博桔梗与少年
http://www.pierceye.com/news/337816/

相关文章:

  • 网站一年的 运营费用一般企业网站建设合同
  • 九龙坡集团网站建设贵阳网站建设推广
  • 架设网站 自己购买服务器无锡seo网站推广费用
  • 网站关键词长度开平 做一网站
  • 青海制作网站可以网站可以做免费的文案广告
  • 深圳维特网站建设有彩虹代刷源码怎么做网站
  • 有了自己的网站怎样做后台食品建设网站前的市场分析
  • 制作伪装网站微餐饮网站建设
  • 泰州做网站软件哈尔滨网站建设市场分析
  • 手机网站建设口碑好网站的技术建设
  • 论坛类网站备案wordpress分享qq
  • 做化工的在哪个网站做平台好长期做网站应该购买稳定的空间
  • 网站建设 推广找山东博达制作网页难吗
  • 临安网站设计海口h5建站模板
  • 网站建设济南云畅网络技术有限公司厦门最新通告
  • ozon电商平台seo关键词搜索和优化
  • 网站收录查询情况科技网站导航
  • 如何做有后台的网站模板网站和定制网站的优劣势对比
  • 在360网站做公告怎么弄南平建设企业网站
  • 网站建设电影动漫制作专业什么电脑最适合
  • 企业做网站公司有哪些wordpress登陆不了一直返回首页
  • 汽车网站建设公司哪家好长春做网站多少钱
  • 雄安移动网站建设php网站用什么软件
  • 网站开发税收分类山东平台网站建设制作
  • 企业自助建站网手机怎么制作钓鱼网站
  • 家乡ppt模板免费下载网站x wordpress 视差 主题
  • 淄博张店外贸建站公司手机微信网页版
  • 网站建设全域云网站建设流程详解
  • 梅州市五华县建设银行网站写作网站招聘
  • 博物馆网站建设情况工业互联网龙头公司排名