《C程序设计》上机实验报告(五)之一维数组二维数组与字符数组

news2024/10/7 4:23:25

实验内容:

1.运行程序

#include <stdio.h>

void main( )

{ int i,j,iRow=0,iCol=0,m;

  int x[3][4]={{1,11,22,33},{2,28,98,38},{3,85,20,89}};

  m=x[0][0];

  for(i=0;i<3;i++) 

     for(j=0;j<4;j++)

         if (x[i][j]>m)

   {  m=x[i][j];

    iRow=i;

    iCol=j;

   }

  printf("%d,%d,%d\n",m,iRow,iCol);

}

要求:

(1)输入并调试上述源程序,对源程序进行编译、连接。

(2)运行并将结果填入表4-3。

(3)分析数组的定义、初始化过程以及程序的作用。

(4)将“if (x[i][j]>m)”改为“if (x[i][j]<m)”,再次编译、连接、运行程序,分析其功能及结果。

表4-3程序测试及结果分析

#include <stdio.h>

#include<string.h>

void main( )

{ char str1[80]={"Hefei"},str2[80]="Anhui";

  int i=0;

  while(str1[i]!='\0')

  {

   if(str1[i]>='a' && str1[i]<='z')

    str1[i]-=32;

   i++;

  }

  strcat(str1,str2);

  puts(str1);

}

要求:

(1)输入并调试上述源程序,对源程序进行编译、连接、运行。

(2)运行并将结果填入表4-4。

(3)分析数组的定义、初始化过程,比较str1和str2赋初值的差别。

(4)将while循环中的str1修改为str2的运行结果,分析循环的作用。

(5)写出判断字符数组结束的3种方法。

(6)列出所学的字符串处理函数,分析其功能。

表4-4 程序测试及结果分析

3. 程序填空

下面程序的功能是将二维数组所存储的矩阵a进行转置,并保存到数组b中。请在横线处填上正确的内容,以实现程序功能。

#include <stdio.h>

#include<string.h>

void main( )

{  int i,j;

   int a[4][3],b[3][4];

   for(i=0;i<4;i++) 

     for(j=0;j<3;j++)

        scanf("%d",&a[i][j]);

   for(i=0;i<4;i++) 

     for(j=0;j<3;j++)

                            

   for(                  )

   {

    printf("\n");

    for(j=0;j<4;j++)

         printf("%3d",b[i][j]);

   }

   printf("\n");

}

要求:

(1)输入并完善源程序,对源程序进行编译、连接。

(2)运行并将结果填入表4-5。

(3)如果a是方阵,比如4行4列,不定义数组b,如何实现转置?

表4-4 程序测试及结果分析

4.编写程序

编写一个程序,统计从键盘输入的10个字符,英文字母(不区分大小写)和数字(0~9)字符出现的次数。

程序:

int main()

{

 system("color f3");

 char c;

 int letters = 0, digit = 0;

 printf("请输入一行字符:");

 while ((c = getchar()) != '\n')

 {

  if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')

  {

   letters++;

  }

  else if (c >= '0' && c <= '9')

  {

   digit++;

  }

 }

 printf("字母数:%d\n数字数:%d\n", letters, digit);

 return 0;

}

5.编写程序

输入一行字符,统计26个字母(不区分大小写)的个数。

程序:

int main()

{

    int i;

    int a[26] = { 0 }; // 计数

int b[26] = { 0 }; // 计数

  

  char c;

while ((c = getchar()) != '\n' && c != EOF)

    {

        if ((c >= 'A') && (c <= 'Z')) {

            a[c - 'A']++;

        }

        else if ((c >= 'a') && (c <= 'z')) {

            b[c - 'a']++;

        }

    }

    for (i = 0; i < 26; i++) {

        if (a[i] > 0)

            printf("%c:%d\n", i + 'A', a[i]);

        if (b[i] > 0)

            printf("%c:%d\n", i + 'a', b[i]);

    }

    return 0;

}

6.编写程序

编写一个程序,打印杨辉三角形的前7行,即输出:

1

1  1

1  2  1

1  3  3  1

1  4  6  4  1

1  5  10  10  5  1

1  6  15  20  15  6  1

要求及提示:

(2)先找出杨辉三角形中各行数的特点、行间数的关系,然后利用二维数组处理。

程序:

void main()

{

    system("color f3");

int a[7][7], i, j;

    for (i = 0; i < 7; i++)

    {

        a[i][0] = 1;

        a[i][i] = 1;

    }

    for (i = 2; i < 7; i++)

    {

        for (j = 1; j < i; j++)

        {

            a[i][j] = a[i - 1][j] + a[i - 1][j - 1];

        }

    }

    for (i = 0; i < 7; i++)

    {

        for (j = 0; j <= i; j++)

        {

            printf("%5d", a[i][j]);

        }

        printf("\n");

    }

}

7.编写程序

编写一个程序,求4×6整型矩阵的外围元素之和。

程序:

int main()

{

    system("color f3");

    int i = 0, j = 0;

    int a[4][6];

    printf("请输入4*6矩阵元素:\n");

    for (i = 0; i < 4; i++)

    {

        for (j = 0; j < 6; j++)

        {

            scanf_s("%d", &a[i][j]);

        }

    }

j = 5;

    int temp = 0;

    for (i = 0; i < 4; i++)

    {                          

        temp = temp + a[i][i] + a[i][j];

        j--;

    }

    printf("\n%d\n", temp);

    printf("\n4*4矩阵:\n");

    for (i = 0; i < 4; i++)

    {

        for (j = 0; j < 6; j++)

        {

            printf("%d ", a[i][j]);

        }

        printf("\n");

    }

    return 0;

}

   8.编写程序

已经一个班级有45个学生。用一个三列的二维数组存放学生的信息。第一列存放学号,第二列存放物理成绩,第三列存放数学成绩。要求编程实现:

1数学及物理课程的平均成绩。

2输出两门课程都低于平均成绩的同学的学号和成绩。

3对数学成绩从高到低排序。

程序:

#include<stdio.h>

int main()

{

    system("color f3");

    int a[3][3], i, j, b;

    float x, y;

    printf("输入学号,物理成绩,数学成绩:\n");

    for (i = 0; i < 3; i++)

    {

        for (j = 0; j < 3; j++)

            scanf_s("%d", &a[i][j]);

    }

x = (float)(a[0][1] + a[1][1] + a[2][1]) / 3;

    y = (float)(a[0][2] + a[1][2] + a[2][2]) / 3;

    printf("物理平均成绩为:%f\n数学平均成绩为:%f\n", x, y);

    for (i = 0; i < 3; i++)

    {

        if (a[i][1] < x && a[i][2] < y)

            printf("学号为%d的同学物理成绩为%d数学成绩为%d都低于平均成绩的\n", a[i][0], a[i][1], a[i][2]);

    }

    for (i = 0; i < 3; i++)

        if (a[i][2] < a[i + 1][2])

        {

            b = a[i][2]; a[i][2] = a[i + 1][2];

            a[i + 1][2] = b;

        }

    printf("数学成绩从高到低排序:");

    for (i = 0; i < 3; i++)

        printf("%d", a[i][2]);

    return 0;

}

9.编写程序

将一个二维数组行和列元素互换,存到另一个二维数组中。

   

程序:

int main()

{

    system("color f3");

    int i, j, a[2][3] = { {1,2,3},{4,5,6} }, b[3][2];

    printf("array a:\n");

    for (i = 0; i <= 1; i++)//处理a数组中的一行中各元素

    {

        for (j = 0; j <= 2; j++)//处理a数组中某一列元素

        {

            printf("%5d", a[i][j]);

            b[j][i] = a[i][j];

        }

printf("\n");

    }

    printf("array b:\n");

    for (i = 0; i <= 2; i++)

    {

        for (j = 0; j <= 1; j++)

        {

            printf("%5d", b[i][j]);

        }

        printf("\n");

    }

    return 0;

}

10.编写程序

求出4*4矩阵中最大和最小元素值及其所在行、列的行下标和列下标。再求出两条对角线元素之和。

程序:

int main()

{

    system("color f3");

    int sum = 0;

    int max, min;

    int max1, max2;//记录最大值的坐标

    int min1, min2;//记录最小值的坐标

    int i, j;

    int a[4][4];//为数组赋值

    for (i = 0; i < 4; i++)

    {

        for (j = 0; j < 4; j++)

        {

            scanf_s("%d", &a[i][j]);

        }

    }

max = min = a[0][0];//初始化最大值最小值都为数组的第一个元素值a[0][0]

    for (i = 0; i < 4; i++)

    {

        for (j = 0; j < 4; j++)

        {

            if (max <= a[i][j])//需要把=写上

{

                max = a[i][j];

                max1 = i, max2 = j;

            }

            if (min >= a[i][j])

            {

                min = a[i][j];

                min1 = i, min2 = j;

            }

        }

    }

    printf("%d %d\n", max, min);

    printf("max(%d,%d)  min(%d %d)\n", max1, max2, min1, min2);

    //求两条主对角线元素之和

    for (i = 0; i < 4; i++)

    {

        for (j = 0; j < 4; j++)

        {

            if (i == j || (i + j == 3))//关键(j==3-i)

                sum = sum + a[i][j];

        }

    }

    printf("sum=%d\n", sum);

    return 0;

}

程序测试及运行结果:

4.

5.

6.

7.

8.

.9.

10.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1426370.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT学习日记 | 信号与槽

目录 前言 一、初始信号与槽 1、信号与槽的本质 2、信号与槽的使用 3、内置信号、内置槽函数与自定义信号、自定义槽函数 &#xff08;1&#xff09;文档查询 &#xff08;2&#xff09;自定义信号与内置槽函数的使用 4、信号与槽函数关联关系 5、带参数的信号与槽函数…

17- OpenCV:图像矩(Image Moments)和点多边形测试

目录 一、图像矩 1、矩的概念介绍 2、相关的API 3、代码演示 二、点多边形测试 1、概念介绍-点多边形测试 2、cv::pointPolygonTest 3、代码演示 一、图像矩 引言 在数字图像处理、计算机视觉与相关领域中&#xff0c;图像矩(Image moments)是指图像的某些特定像素灰…

如何搭建良好的软件测试环境?有什么作用?

在软件开发过程中&#xff0c;测试环境是非常重要的一环。它为软件测试提供了一个模拟真实生产环境的平台&#xff0c;以确保软件的质量和稳定性。那么如何搭建良好的测试环境呢?测试环境又有什么作用呢?卓码软件测评小编将进行以下解答。 软件测试环境是指在软件测试过程中…

Windows10更新失败 错误 0x80070643、KB5034441的解决方法之二

Windows10更新失败 错误 0x80070643、KB5034441 在知乎Windows10更新失败 错误 0x80070643、KB5034441的原因分析和几个解决方法 - 知乎 参考文章进行操作&#xff0c;更详细信息自己看上面链接。 我电脑的硬盘是mbr格式&#xff0c;而且没有划分恢复分区。 Microsoft Windo…

HDFS HA 之 HA 原理

1 ZKFC解析 HA(High Availability)是HDFS支持的一个重要特性,可以有效解决Active Namenode遇到故障时,将可用的Standby节点变成新的Active状态的问题,使集群能够正常工作。目前支持冷切换和热切换两种方式。冷切换通过手动触发,缺点是不能够及时恢复集群。实际生产中以应用…

【数据结构与算法】之排序系列-20240201

【数据结构与算法】之排序系列-20240201 一、88. 合并两个有序数组二、169. 多数元素三、217. 存在重复元素四、242. 有效的字母异位词五、268. 丢失的数字六、349. 两个数组的交集七、350. 两个数组的交集 II 一、88. 合并两个有序数组 简单 给你两个按 非递减顺序 排列的整数…

Linux网络状态查看与防火墙管理

网络状态查看 netstat [选项] Netstat是一款命令行工具&#xff0c;用于显示Linux系统中网络的状态信息&#xff0c;可以显示网络连接、路由表、连接的数据统计等信息。 使用 选项 -a&#xff1a;显示所有选项&#xff0c;包括监听和未监听的端口。 -t&#xff1a;仅显示tc…

C++(17)——list的模拟实现

前面的文章中&#xff0c;介绍了&#xff0c;的模拟实现&#xff0c;本篇文章将介绍对于的模拟实现。 目录 1. list的基本结构&#xff1a; 2. list功能实现&#xff1a;尾部插入元素&#xff1a; 3. list迭代器的实现&#xff1a; 4. list功能实现&#xff1a;在任意位置前…

从零开始训练 RT-DETR模型最新版本教程说明(包含Mac、Windows、Linux端 )同之前的项目版本代码有区别

从零开始训练 RT-DETR- 最新8.1版本教程说明 本文适用Windows/Linux/Mac:从零开始使用Windows/Linux/Mac训练 RT-DETR 算法项目 《芒果 RT-DETR 目标检测算法 改进》 适用于芒果专栏改进 RT-DETR 算法 文章目录 U版 RT-DETR 算法第一步 配置环境1.1 系列配置1.2 代码执行第…

react-virtualized实现行元素不等高的虚拟列表滚动

前言&#xff1a; 当一个页面中需要接受接口返回的全部数据进行页面渲染时间&#xff0c;如果数据量比较庞大&#xff0c;前端在渲染dom的过程中需要花费时间&#xff0c;造成页面经常出现卡顿现象。 需求&#xff1a;通过虚拟加载&#xff0c;优化页面渲染速度 优点&#xff1…

探索组合模式的魅力:探索树形结构的艺术与科学

设计模式专栏&#xff1a;http://t.csdnimg.cn/nolNS 在面对层次结构和树状数据结构的软件设计任务时&#xff0c;我们如何优雅地处理单个对象与组合对象的一致性问题&#xff1f;组合模式&#xff08;Composite Pattern&#xff09;为此提供了一种简洁高效的解决方案。通过本…

网络协议 UDP协议

网络协议 UDP协议 在之前的文章中有对UDP协议套接字的使用进行讲解&#xff0c;本文主要对UDP协议进行一些理论补充。 文章目录 网络协议 UDP协议1. 概念2. UDP协议格式2.1 数据报长度2.2 校验和/检验和2.2.1 CRC校验2.2.2 MD5算法 1. 概念 UDP&#xff0c;即User Datagram P…

[office] excel2010双向条形图制作 #经验分享#微信

excel2010双向条形图制作 本教程为大家介绍一下excel2010中excel2010双向条形图制作方法。 1.选中工作区域 2.点击插入-->图表,选择条形图 3.为美观可将中间竖线可去掉 4.方法是选中竖线,右击-->删除 5.接下来将图例靠上,选中图例,右击-->设置图例格式-->图例选项…

排序算法-选择/堆排序(C语言)

1基本思想&#xff1a; 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排序的 数据元素排完 。 2 直接选择排序: 在元素集合 array[i]--array[n-1] 中选择关键码最大 ( 小 ) 的数据元素…

【C/C++ 07】词频统计

一、题目 读入一篇英文短文&#xff0c;去除介词、连词、冠词、副词、代词等非关键性单词后&#xff0c;统计每个单词出现的次数&#xff0c;并将单词按出现次数的降序和单词字符的升序进行显示5个单词。 二、算法 1. 通过<fstream>库创建fstream流对象&#xff0c;并从…

数学建模 - 线性规划入门:Gurobi + python

在工程管理、经济管理、科学研究、军事作战训练及日常生产生活等众多领域中&#xff0c;人们常常会遇到各种优化问题。例如&#xff0c;在生产经营中&#xff0c;我们总是希望制定最优的生产计划&#xff0c;充分利用已有的人力、物力资源&#xff0c;获得最大的经济效益&#…

idea docker 镜像生成太慢太大问题

文章目录 前言一、更小的jdk基础镜像二、服务瘦包&#xff08;thin jar&#xff09;2.1 maven2.2 修改dockerfile2.3 container run options 三、 基础jdk镜像入手&#xff1f;总结 前言 idea docker 内网应用实践遗留问题 idea docker插件 build 服务镜像太慢服务镜像太大 …

【网络】端口号范围

一、端口号的几个范围 在计算机网络中&#xff0c;一个端口号是一个16位的无符号整数&#xff0c;意味着端口号的范围是从0到65535。不过&#xff0c;并非所有端口都可以随意使用。根据惯例和技术标准&#xff0c;端口号被分为几个范围&#xff1a;1. 系统或保留端口&#xff…

草图导入3d后模型贴材质的步骤?---模大狮模型网

3D模型在导入草图大师后出现混乱可能有多种原因&#xff0c;以下是一些可能的原因和解决方法&#xff1a; 模型尺寸问题&#xff1a;如果3D模型的尺寸在导入草图大师时与画布尺寸不匹配&#xff0c;可能导致模型混乱。解决方法是在3D建模软件中调整模型的尺寸&#xff0c;使其适…

ubuntu16.04环境轻松安装和应用opencv4.9.0(基于源码编译)

目录 一、环境准备 1、安装cmake 2、安装依赖 3、从github上下载opencv4.9.0.zip 二、安装opencv4.9.0 1、解压4.9.0.zip 2、进入build目录编译 3、安装编译好的相关库 4、修改opencv配置文件并使其生效 5、添加PKG_CONFIG路径&#xff0c;并使其生效 三、opencv环境…