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

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

实验内容:

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.

相关文章:

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

实验内容&#xff1a; 1.运行程序 #include <stdio.h> void main( ) { int i,j,iRow0,iCol0,m; int x[3][4]{{1,11,22,33},{2,28,98,38},{3,85,20,89}}; mx[0][0]; for(i0;i<3;i) for(j0;j<4;j) if (x[i][j]>m) { mx[i][j]; iRowi…...

【BUG】联想Y7000电池电量为0且无法充电解决方案汇总

因为最近火灾很多&#xff0c;所以昨天夜晚睡觉的时候把插线板电源关掉了&#xff0c;电脑也关机了。 各位一定要注意用电安全&#xff0c;网上的那些事情看着真的很难受qvq。 第二天早上起床的时候一看发现电脑直接没电了&#xff0c;插上电源后也是显示 你一定要冲进去啊(ू˃…...

centos7常用命令之安装插件2

centos7安装插件1 7、kibana 【启动kibana,需要调整这个配置文件(/opt/kibana-6.3.0/config/kibana.yml)的一处ip地址,因为每次虚拟机的ip地址可能会有所不同&#xff0c; 同时访问页面地址的ip:5601时,ip地址也对应修改】 1.解压缩包 cd /opt/ tar -xvf kibana-6.3.0-linux-x…...

MATLAB - 仿真单摆的周期性摆动

系列文章目录 前言 本例演示如何使用 Symbolic Math Toolbox™ 模拟单摆的运动。推导摆的运动方程&#xff0c;然后对小角度进行分析求解&#xff0c;对任意角度进行数值求解。 一、步骤 1&#xff1a;推导运动方程 摆是一个遵循微分方程的简单机械系统。摆最初静止在垂直位置…...

Pandas进阶--map映射,分组聚合和透视pivot_table详解

文章目录 1.Pandas的map映射&#xff08;1&#xff09;映射&#xff08;2&#xff09;map充当运算工具 2.数据分组和透视&#xff08;1&#xff09;分组统计 - groupby功能 是pandas最重要的功能&#xff08;2&#xff09;聚合agg 3.透视表pivot_table&#xff08;1&#xff09…...

Visual Studio 和Clion配置Cocos2d-x环境

Visual Studio 和Clion配置Cocos2d-x环境 我就不贴图片的&#xff0c;懒得上传图床。懒。开发环境: ​ 系统: Window11 ​ 编译器: CMake MSVC ​ 开发工具&#xff1a;Clion or Visual Studio ​ 请自行配置好&#xff0c;Python2.7&#xff0c;和Cmake ​ Cocos2d-x下载…...

【百度Apollo】本地调试仿真:加速自动驾驶系统开发的利器

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下…...

ztest中ddof起什么作用

⭐️ statsmodels 中 ztest 基本使用 statsmodels 也是一个强大的统计分析库&#xff0c;提供了丰富的统计模型和检验功能。对于 Z 检验&#xff0c;statsmodels 提供了 ztest 函数。 以下是使用 statsmodels 进行 Z 检验的示例&#xff1a; from statsmodels.stats.weights…...

linux 主机无法联网问题

主机不能联网 一 查看当前ip ping路由 ifconfig wlan0 wlan0: flags4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.2.78 netmask 255.255.255.0 broadcast 192.168.2.255ping 192.168.2.1查看是否能ping通 二 查看路由表 route -n Destination G…...

2024/1/27 备战蓝桥杯 1-1

目录 求和 0求和 - 蓝桥云课 (lanqiao.cn) 成绩分析 0成绩分析 - 蓝桥云课 (lanqiao.cn) 合法日期 0合法日期 - 蓝桥云课 (lanqiao.cn) 时间加法 0时间加法 - 蓝桥云课 (lanqiao.cn) 扫雷 0扫雷 - 蓝桥云课 (lanqiao.cn) 大写 0大写 - 蓝桥云课 (lanqiao.cn) 标题…...

支持下一代网络IpV6的串口服务器,IpV6串口485接口转网口

和IPv4比较&#xff0c;IPv6有两个极具吸引力的特点&#xff1a;一个是IPv6采用的128位地址格式&#xff0c;而IPv4采用32位的地址格式&#xff0c;因此IPv6使地址空间增大了296&#xff1b;另一个是IPv6物联网数据业务具有更强的支持能力&#xff0c;成为未来物联网的重要协议…...

uniapp H5 实现上拉刷新 以及 下拉加载

uniapp H5 实现上拉刷新 以及 下拉加载 1. 先上图 下拉加载 2. 上代码 <script>import DragableList from "/components/dragable-list/dragable-list.vue";import {FridApi} from /api/warn.jsexport default {data() {return {tableList: [],loadingHi…...

网络工程师必学知识:2、IPv4和IPv6地址划分

网络工程师必学知识&#xff1a;2、IPv4和IPv6地址划分 1.概述&#xff1a;2.IPv4&#xff1a;地址划分&#xff1a;有类划分&#xff0c;无类划分。一、有类划分&#xff1a;分为5类。ABCDE&#xff0c;掩码分别位8、16、24、28、27取值范围&#xff1a;出类别bit不变&#xf…...

Rust - 变量

不管学什么语言好像都得从变量开始&#xff0c;不过只需要懂得大概就可以了。 但在Rust里不先把变量研究明白后面根本无法进行… 变量绑定 变量赋值❌ 变量绑定✔️ Rust中没有“赋值”一说&#xff0c;而是称为绑定。 int a 3; //C中的变量赋值 a 3; //python中的…...

【Linux】压缩脚本、报警脚本

一、压缩搅拌 要求&#xff1a; 写一个脚本&#xff0c;完成如下功能 传递一个参数给脚本&#xff0c;此参数为gzip、bzip2或者xz三者之一&#xff1b; (1) 如果参数1的值为gzip&#xff0c;则使用tar和gzip归档压缩/etc目录至/backups目录中&#xff0c;并命名为/backups/etc…...

用Flask打造一个大模型智能问答WEB网站

目前已经有很多类似GPT的大模型开源,可以提供类似ChatGPT的智能问答功能。我也基于这些开源模型,用Flask来建立一个智能问答网站,可以方便用户建立自己的ChatGPT系统。 这个网站需要提供用户登录功能,对已登录的用户,可以在网站上提出问题,并由大模型处理后返回答案。演…...

学习python第三天

一.数据类型 1.获取数据类型 x 10 print(type(x))""" 输出 <class int> """2.复数类型&#xff08;complex&#xff09;详解 复数&#xff08;Complex&#xff09;是 Python 的内置类型&#xff0c;直接书写即可。换句话说&#xff0c…...

(M)UNITY三段攻击制作

三段攻击逻辑 基本逻辑&#xff1a; 人物点击攻击按钮进入攻击状态&#xff08;bool isAttack&#xff09; 在攻击状态下&#xff0c; 一旦设置的触发器&#xff08;trigger attack&#xff09;被触发&#xff0c;设置的计数器&#xff08;int combo&#xff09;查看目前攻击…...

PHP的线程安全与非线程安全模式选哪个

曾经初学PHP的时候也很困惑对线程安全与非线程安全模式这块环境的选择&#xff0c;也未能理解其中意。近来无意中看到一个教程对线程安全&#xff08;饿汉式&#xff09;&#xff0c;非线程安全&#xff08;懒汉式&#xff09;的描述&#xff0c;虽然觉得现在已经能够很明了透彻…...

asdf安装不同版本的nodejs和yarn和pnpm

安装asdf 安装nodejs nodejs版本 目前项目中常用的是14、16和18 安装插件 asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git asdf plugin-add yarn https://github.com/twuni/asdf-yarn.git可以查看获取所有的nodejs版本 asdf list all nodejs有很多找…...

金仓数据库KingbaseES自动创建表空间目录:简化运维,适配国产生态

目录 一、前言&#xff1a;传统表空间创建的运维痛点 二、自动创建表空间目录核心方案 2.1 核心控制参数 2.2 功能强制约束条件 2.3 多场景实操测试&#xff08;含大小写混合路径&#xff09; 场景1&#xff1a;目标目录已存在 场景2&#xff1a;目标目录部分存在 场景…...

TSC打印机Java开发避坑指南:从DLL配置到中文乱码,一次讲清楚

TSC打印机Java开发避坑指南&#xff1a;从DLL配置到中文乱码&#xff0c;一次讲清楚 第一次用Java调用TSC打印机时&#xff0c;那种挫败感至今难忘。明明照着官方文档一步步操作&#xff0c;却总是卡在DLL加载失败、中文变成乱码这些看似简单的问题上。这篇文章就是把我踩过的坑…...

超自动化巡检:破解运维人员短缺的利器

在数字化转型加速推进的今天&#xff0c;企业IT基础设施正经历着前所未有的指数级增长——物理服务器、虚拟机、容器集群、云原生环境、边缘节点……运维对象的数量与种类日新月异。然而&#xff0c;与之形成鲜明对比的是&#xff0c;运维团队的规模却难以等比扩充。招不到人、…...

国产信创ARM架构系统的备份与还原

ARM架构系统的备份与还原这里以【银河麒麟桌面系统】为例进行演示操作&#xff0c;其余的ARM架构的服务器或桌面 操作系统进行备份与还原都是一样的步骤&#xff0c;详细操作如下所示&#xff1a; 2.1、使用再生龙通过ssh方式克隆备份系统&#xff08;推荐&#xff09; 2.1.1…...

在内容生成流水线中集成多模型 API 以提升创作多样性

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在内容生成流水线中集成多模型 API 以提升创作多样性 对于新媒体运营、营销或内容创作团队而言&#xff0c;保持内容的新鲜感与多样…...

长尾关键词自动化扩展:从1个种子词到1000个长尾词

长尾关键词是SEO的蓝海。我开发了一套系统&#xff0c;能从1个种子词自动扩展到1000个长尾词&#xff0c;并且评估每个词的竞争度和价值。这篇文章分享完整方案。一、长尾词扩展的方法 1.1 搜索建议扩展 def expand_keywords_from_suggestions(seed: str, api_key: str, depth:…...

community:CANN开源社区治理指南

前言 想象一下&#xff0c;你开发了一个很棒的算子&#xff0c;想贡献给CANN社区&#xff0c;但不知道从哪入手——怎么提Issue&#xff1f;怎么提PR&#xff1f;代码规范是什么&#xff1f;会不会被拒绝&#xff1f; 我刚接触CANN开源社区那会&#xff0c;就是这样的——写了个…...

【ChatGPT】光纤激光器及其控制系统深度拆解、信息图10张、爆炸图10张、C++代码框架增强版Mermaid 流程图、时序图、类图与成员说明

作者简介:许冲&#xff0c;主要分享各领域系统/设备拆解、代码框架、信息图、爆炸图。深度拆解信息图...

Photoshop‌2022安装教程

ps是一款使用率很高的设计工具&#xff0c;此篇分享一下Windows2022版本的安装教程 1、下载的压缩包解压2、右键以管理员身份运行Set-up.exe3、选择语言及安装位置&#xff08;建议安装在系统盘C以外的其他磁盘&#xff09;4、继续安装&#xff0c;等待安装完成点击关闭即可5、…...

H5P交互式视频制作终极指南:快速创建引人入胜的互动学习内容

H5P交互式视频制作终极指南&#xff1a;快速创建引人入胜的互动学习内容 【免费下载链接】h5p-interactive-video 项目地址: https://gitcode.com/gh_mirrors/h5/h5p-interactive-video 在数字化教育时代&#xff0c;如何让视频内容更具互动性和教育价值&#xff1f;H5…...