嵌入式初学-C语言-练习五

二维数组练习题

1.一个二维数组赋了初值,用户输入一个数,在该二维数组中查找。找到则返回行列位置,没找到则 提示。

代码:

  1 /*
  2   需求:一个二维数组赋了初值,用户输入一个数,在该二维数组中查找。找到则返回行列位置没找到则提示 
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
  9     int num;
 10     int row, col;
 11     int a = 0;
 12     printf("请输入要查找的数字: ");
 13     scanf("%d", &num);
 14 
 15     for (row = 0; row < 3; row++)
 16     {
 17         for (col = 0; col < 3; col++)
 18         {
 19             if (arr[row][col] == num)
 20             {
 21                 printf("数字 %d 在数组中的位置是第 %d 行第 %d 列\n", num, row + 1, col + 1);
 22                 a = 1;
 23             }
 24 
 25         }
 26 
 27     }
 28     if(a == 0)
 29     {
 30     printf("未找到此数字!!\n");
 31     }
 32 
 33     return 0;
 34 }

结果:

2.二维整型数组,求所有元素平均值,求每行最大值,求每列最小值。

代码:

  1 /*
  2   需求:二维整型数组,求所有元素平均值,求每行最大值,求每列最小值。
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     int sum = 0,max[3] = {0},min[3] = {0};
  9     int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
 10 
 11     for(int i = 0;i < 3;i++)
 12     {
 13         min[i] = arr[0][i];
 14     }
 15 
 16     for(int i = 0;i < 3;i++)
 17     {
 18         max[i] = arr[i][0];
 19         for(int j = 0;j < 3;j++)
 20         {
 21 
 22             if(arr[i][j] < min[j])
 23             {
 24                 min[j] = arr[i][j];
 25             }
 26             else if(arr[i][j] > max[i])
 27             {
 28                 max[i] = arr[i][j];
 29             }
 30             sum += arr[i][j];
 31         }
 32     }
 33 
 34     printf("平均值:%d\n",sum);
 35 
 36     for(int i = 0;i < 3;i++)
 37     {
 38         printf("第%d行最大值:%d\n",i + 1,max[i]);
 39         printf("第%d列最小值:%d\n",i + 1,min[i]);
 40     }
 41 
 42     return 0;
 43 }

结果:

3.在行列相等数组计算主对角线元素的和

代码:

  1 /*
  2   需求:在行列相等数组计算主对角线元素的和
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
  9     int i,j,sum = 0;
 10 
 11     for(i = 0;i < 3;i++)
 12     {
 13         j = i;
 14         sum += arr[i][j];
 15     }
 16 
 17     printf("主对角线元素的和为:%d\n",sum);
 18 
 19     return 0;
 20 }

结果:

4.计算一个矩阵下三角元素的和

代码:

  1 /*
  2   需求:计算一个矩阵下三角元素的和
  3 */
  4 #include <stdio.h>
  5 
  6 int main()
  7 {
  8     int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
  9     int i,j,sum = 0;
 10 
 11     for(i = 0;i < 3;i++)
 12     {
 13         for(j = 0;j <= i;j++)
 14         {
 15         sum += arr[i][j];
 16         }
 17     }
 18 
 19     printf("下三角元素的和为:%d\n",sum);
 20 
 21     return 0;
 22 }

结果:

5.电影院为了答谢影迷的支持,在某一排的某一列座位上放置了一个大礼包,放置礼物的位置具有这 样的规则(行和列的平方和为开店日期 512(5月12日));

'请设计程序找出大礼包的位置,(假定电影院有20排,每排25个座位)'

代码:

  1 /**
  2   *电影院为了答谢影迷的支持,在某一排的某一列座位上放置了一个大礼包,放置礼物的位置具有这 样的规则(行和列的平方和为开店日期 512(5月12日));
  3   *'请设计程序找出大礼包的位置,(假定电影院有20排,每排25个座位)'
  4 */
  5 #include <stdio.h>
  6 
  7 int main()
  8 {
  9     int i,j;
 10     int arr[20][25];
 11     for(i = 0;i < 20;i++)
 12     {
 13         for(j = 0;j < 25;j++)
 14         {
 15             if((i+1)*(i+1) + (j+1)*(j+1) == 512)
 16             printf("大礼包的位置在%d行,%d列\n",i+1,j+1);
 17         }
 18     }
 19 
 20     return 0;
 21 }
 22 

结果:

字符数组练习题

1.编写一个程序,读取用户输入的字符串,并将其反转输出。

代码:

  1 /*
  2   需求:编写一个程序,读取用户输入的字符串,并将其反转输出。
  3 */
  4 #include <stdio.h>
  5 #include <string.h>
  6 
  7 int main()
  8 {
  9     char arr[20];
 10     char arr_1[20];
 11     long a = 0;
 12     printf("请输入一个字符串:");
 13 
 14     scanf("%s",arr);
 15 
 16     a = strlen(arr);
 17     int j =a - 1;
 18 
 19 
 20     for(int i = 0;i < a;i++)
 21     {
 22         arr_1[j] = arr[i];
 23         j--;
 24     }
 25 
 26     arr_1[a] = '\0';
 27 
 28     printf("您输入的字符串是:%s\n",arr);
 29     printf("反转后的字符串是:%s\n",arr_1);
 30 
 31     return 0;
 32 
 33 }

结果:

2.编写一个程序,判断用户输入的字符串是否为回文(即正反读都一样的字符串)。

代码:

  1 /*
  2   需求:编写一个程序,判断用户输入的字符串是否为回文(即正反读都一样的字符串)。
  3 */
  4 
  5 #include <stdio.h>
  6 #include <string.h>
  7 
  8 int main()
  9 {
 10     int p;
 11     char arr[20];
 12     char arr_1[20];
 13     long a = 0;
 14     printf("请输入一个字符串:");
 15 
 16     scanf("%s",arr);
 17 
 18     a = strlen(arr);
 19     int j =a - 1;
 20 
 21 
 22     for(int i = 0;i < a;i++)
 23     {
 24         arr_1[j] = arr[i];
 25         j--;
 26     }
 27 
 28     arr_1[a] = '\0';
 29 
 30     j = 0;
 31 
 32     for(int i = 0;i < a;i++)
 33     {
 34         if(arr_1[j] == arr[i])
 35         {
 36             p = 1;
 37         }
 38         else
 39         {
 40             p = 0;
 41         }
 42         j++;
 43     }
 44 
 45 
 46     printf("您输入的字符串是:%s\n",arr);
 47 
 48     if(p == 1)
 49     {
 50         printf("%s是回文\n",arr);
 51     }
 52     else
 53     {
 54         printf("%s不是回文\n",arr);
 55     }
 56 
 57     return 0;
 58 
 59 }

结果:

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 学习51单片机和C语言编程,可以帮助我们更深入地理解嵌入式系统的原理和工作方式。对于初学者来说,掌握一份适合自己的学习资料非常重要。 要学习51单片机-C语言版,可以阅读《手把手教你学51单片机-C语言版pdf》这本电子书,这本书内容丰富,讲解详细,配合实例编程,非常适合初学者自学。以下是学习本书的几个关键点: 第一,掌握基本的硬件知识,包括单片机的结构和特性,尤其是各种寄存器的作用和配置方法。 第二,了解C语言编程基础,尤其是语法、数据类型、运算符、控制结构、函数等,这是编写单片机程序的基础。 第三,通过实例编程加强对知识的理解和运用能力。例如,可以尝试写一些简单的IO控制、定时器中断、串口通讯等程序。 第四,可以搭配相应的开发板和开发环境进行实践学习。例如,可以使用STC89C51开发板和Keil或SDCC开发环境。 总之,《手把手教你学51单片机-C语言版pdf》这本电子书是一个不错的学习资料,但也需要具备一定的基础知识和耐心,可以结合其他资料和实践不断提高自己的能力。 ### 回答2: 学习51单片机-c语言版, 需要基础的C语言编程知识。在学习前,先要熟悉C语言的数据类型、循环、判断及函数等语法结构,并掌握C语言的编写方法。 在学习51单片机-c语言版之前,需要准备好学习环境,如下载并安装Keil软件, 安装并关联好相应的单片机模拟器。Keil软件中有类似于记事本的编辑窗口用来编写C语言代码, 以及编译,调试和下载程序到单片机等功能。 在学习时,可以选择一些简单的例程开始学习,逐步理解其代码逻辑,了解基本的寄存器操作和中断等知识。可以从LED灯等简单的实验开始,逐渐增加难度和功能的复杂度。 同时,可以参考一些权威的学习资料如《单片机原理与应用》、《51单片机学习与应用》等相关书籍,或结合网络资源进行学习。在学习过程中,需要勤加练习,多编写代码进行实践,同时多与他人交流学习体会和技术问题。通过坚持不断的学习和练习,便可以逐步掌握51单片机-c语言版编程技巧,提高自己的单片机应用开发能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值