Linux自学day8-二维数组、函数一

这段代码的主要功能是将用户输入的两个字符串str1str2连接起来,并输出连接后的str1字符串。

  • while (str1[i]!= '\0'):通过一个循环,从str1的第一个字符开始,逐个检查字符,直到遇到字符串结束标志'\0'
  • i++;:在循环中,每次将i的值加 1,这样循环结束后,i的值就是str1中字符串的长度(不包括结束标志'\0'
  • while (str2[j]!= '\0'):通过另一个循环,从str2的第一个字符开始,逐个检查字符,直到遇到字符串结束标志'\0'
  • str1[i] = str2[j];:将str2中的字符逐个复制到str1的末尾,从str1原来字符串结束的位置开始。

这段代码的主要功能是比较两个输入字符串,找到它们第一个不相等字符的位置,并输出这两个字符的 ASCII 码值之差。

  • while (str1[i] == str2[i] && str1[i]!= '\0'):用于逐个字符比较str1str2中的字符。只要当前位置的字符相等且str1中的字符不是字符串结束标志'\0',循环就会继续。
  • printf("%d\n", str1[i] - str2[i]);:当循环结束后,输出str1str2中第一个不相等字符的 ASCII 码值之差。

这段代码主要展示了如何定义、初始化、赋值二维数组,并通过两种方式(直接打印和循环打印)输出数组的元素值。

打印数组元素(第一种方式)

  • 通过多个printf函数分别打印数组a的每个元素。例如:
    • printf("a[0][0] = %d\n",a[0][0]);:打印a数组第一行第一列的元素,即 1。
    • 以此类推,分别打印了a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]的值。

打印数组元素(第二种方式,使用循环)

  • for(j = 0;j < 2;j++)for (i = 0;i < 3;i++):这是一个嵌套的循环结构。外层循环控制行索引j,从 0 到 1(因为数组a有 2 行);内层循环控制列索引i,从 0 到 2(因为数组a每行有 3 列)。
  • printf("a[%d][%d] = %d\n",j,i,a[j][i]);:在循环中,使用printf函数按照a[行索引][列索引] = 元素值的格式打印数组a的每个元素。

这段代码的主要功能是先初始化一个二维数组,然后通过两个嵌套的for循环从用户输入获取数组元素的值,最后再通过两个嵌套的for循环将数组元素的值输出到屏幕上,每行输出一行数组元素。

输入数据

  • 第一个for循环:
    • for (j = 0; j < 2; j++):外层循环控制行数,从 0 到 1。
    • 内层for (i = 0; i < 3; i++):内层循环控制列数,从 0 到 2。
    • scanf("%d", &a[j][i]);:通过scanf函数从标准输入(通常是键盘)读取整数,并将其存储到数组a的对应位置。

 输出数据

  • 第二个for循环:
    • 同样的外层循环for (j = 0; j < 2; j++)和内层循环for (i = 0; i < 3; i++)
    • printf("%d ", a[j][i]);:使用printf函数将数组a中的每个元素以整数形式输出,每个元素之间用空格分隔。
    • printf("\n");:在内层循环结束后,输出一个换行符,使下一行的输出从新的一行开始。

这段代码的主要功能是依次输出二维字符数组str中存储的 5 个字符串。

char str[5][32] = {"hello", "world", "how", "are", "you"};:声明了一个二维字符数组str,它有 5 行 32 列。

for (i = 0; i < 5; i++):这是一个for循环,循环从i = 0开始,只要i小于 5,就会执行循环体,每次循环结束后i自增 1。

在循环体中,printf("str[%d] = %s\n", i, str[i]);:使用printf函数输出数组str中每个元素(即每个字符串)的内容。

这段代码的主要目的是对输入的多个字符串进行排序并输出。

第二个嵌套的for循环(for (j = 0; j < 4; j++for (i = 0; i < 4 - j; i++)):这是一个冒泡排序的循环结构,用于对输入的字符串进行排序。

内层循环中,通过strcmp(str[i], str[i + 1]) > 0比较相邻的两个字符串,如果前一个字符串大于后一个字符串(按字典序),则通过strcpy函数交换它们的位置,借助tmp数组暂存数据。

第三个for循环(for (i = 0; i < 5; i++)):通过printf("%s\n", str[i])依次输出排序后的 5 个字符串,每个字符串占一行。

这段代码主要展示了局部变量和静态局部变量的生命周期和作用域的区别。

  • main函数中,首先定义了两个整型变量id,并初始化为0
  • 在循环体内部,又定义了一个局部变量a并初始化为0,以及一个静态局部变量b并初始化为0
  • main函数外,c被初始化为0

第一次循环:

  • a = 1,因为每次循环a都重新初始化为0然后自增1
  • b = 1,静态局部变量b只在第一次进入函数时初始化,之后每次循环保留上次的值并自增1
  • c = 1,
  • d = 1d是在main函数开头定义的,每次循环自增1

第二次循环:

  • a = 1
  • b = 2,在上次1的基础上自增1
  • c = 2 在上次1的基础上自增1
  • d = 2,在上次1的基础上自增1

第三次循环:

  • a = 1,原因同上。
  • b = 3,在上次2的基础上自增1
  • c = 3 在上次1的基础上自增1
  • d = 3,在上次2的基础上自增1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值