【C语言程序设计】实验 8

news2024/11/24 14:22:19

目录

1. 整数排序

2. 二维数组按每行数据之和升序 

3. 字符串排序

4. 二维数组各行元素之和

5. 二位整数数组交换两行 

6. 插入排序 

7. 10进制转2进制,8进制和16进制数(数组)


 

1. 整数排序

【问题描述】从键盘输入n(0<n<21)个整数,将这n个整数从大到小排序。

【输入形式】先输入n,接着输入n个整数,空格分开
【输出形式】n个排序后的整数,空格分开

【样例输入】

10

6 9 8 7 4 5 1 2 6 8
【样例输出】9 8 8 7 6 6 5 4 2 1
【样例说明】10个整数6 9 8 7 4 5 1 2 6 8 从大到排序后的结果是 9 8 8 7 6 6 5 4 2 1

#include<stdio.h>
int main(){
    int n,i,j,t;
    int a[22];
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    for(i=0;i<n;i++){
        for(j=i+1;j<n;j++){
            if(a[i]<a[j]){
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        }
    }
    for(i=0;i<n;i++){
        printf("%d ",a[i]);
    }
    return 0;

2. 二维数组按每行数据之和升序 

【问题描述】将一个4*4二维整数数组按每行数据之和升序排列后输出。(注:计算机二级考试下午试题)

【输入形式】分行输入4个整数,空格分开

【输出形式】按每行数据之和升序排列后分行输出4个整数,空格分开

【样例输入】

2 2 3 4

9 10 11 12

1 3 5 7

5 10 1 20

【样例输出】

2 2 3 4

1 3 5 7

5 10 1 20

9 10 11 12

【样例说明】输入的二维数组各行的和为11,42,16,36,按升序得11,16,36,42,对应的数组输出就是:

2 2 3 4

1 3 5 7

5 10 1 20

9 10 11 12

提示:

定义数组时多定义一列int a[4][5] 放每行的数据之和。c2d1a81e44734ffabe22ff14dbea662e.png 

将第5列排序,交换第5列二个数时同时交换二行。

#include<stdio.h>
int main(){
    int a[4][5];
    int i,j,k,t;
    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            scanf("%d",&a[i][j]);
        }
    }
    for(i=0;i<4;i++){
        a[i][4]=0;
        for(j=0;j<4;j++){
            a[i][4]+=a[i][j];
        }
    }
    for(i=0;i<4;i++){
        for(j=i;j<4;j++){
            if(a[i][4]>a[j][4]){
                for(k=0;k<5;k++){
                    t=a[i][k];
                    a[i][k]=a[j][k];
                    a[j][k]=t;                    
                }
            }
        }
    }
    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

3. 字符串排序

【问题描述】从键盘输入5个字符串,按字典排序从小到大输出。
【输入形式】分5行输入5个字符串。

【输出形式】分5行输出从小到大排序后的5个字符串。

【样例输入】

dh

325fd

fdgh

lkutyt

pstr

【样例输出】

325fd

dh

fdgh

lkutyt

pstr

#include<stdio.h>
#include<string.h>
int main(){
    char s[5][100],c[100];
    int i,j;
    for(i=0;i<5;i++){
        scanf("%s",&s[i]);
    }
    for(i=0;i<5;i++){
        for(j=i;j<5;j++){
            if(strcmp(s[i],s[j])>0){
                strcpy(c,s[i]);
                strcpy(s[i],s[j]);
                strcpy(s[j],c);
            }
        }
    }
    for(i=0;i<5;i++){
        printf("%s\n",s[i]);
    }

4. 二维数组各行元素之和

【问题描述】从键盘输入一个m行n列的二维整数数组(1<m<10,1<n<10),将该二维数组a[ ][ ]的各行元素之和放在第n列,各列元素之和放在第m行,全部元素之和放在a[m][n]。参考实验9.4

【输入形式】先输入二维数组的行数与列数,空格分开,接着输入m行n列个整数,空格分开。

【输出形式】输出各行元素之和放在第n列,各列元素之和放在第m行之后的矩阵,空格分开。

【样例1输入】

2 2

1 2

3 0

【样例1输出】

1 2 3

3 0 3

4 2 6

【样例1说明】原始数组是2行2列,第一行之和1+2=3,第2行之和3+0=3,第1列之和1+3=4,第2列之和2+0=2,全部元素之和为6.

【样例2输入】

4 3

1 2 3

4 5 6

7 8 9

6 7 8

【样例2输出】

1 2 3 6

4 5 6 15

7 8 9 24

6 7 8 21

18 22 26 66

【样例2说明】原始数组是4行3列,第一行之和1+2+3=6,第2行之和4+5+6=15,... ,第1列之和1+4+7+6=18,第2列之和2+5+8+7=22,……,全部元素之和为66.

#include<stdio.h>
int main(){
    int a[10][10];
    int i,j,m,n,s,sum=0;
    scanf("%d %d",&m,&n);
    for(i=0;i<m;i++){
        for(j=0;j<n;j++){
            scanf("%d",&a[i][j]);
            sum+=a[i][j];
        }
    }
    a[m][n]=sum;
    for(i=0;i<m;i++){
        s=0;
        for(j=0;j<n;j++){
            s+=a[i][j];
        }
        a[i][n]=s;
    }
    for(i=0;i<n;i++){
        s=0;
        for(j=0;j<m;j++){
            s+=a[j][i];
        }
        a[m][i]=s;
    }
    for(i=0;i<=m;i++){
        for(j=0;j<=n;j++){
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;

5. 二位整数数组交换两行 

【问题描述】定义一个2行5列的二维整数数组,从键盘上输入2行5列10个整数,将数组第1行与第2行交换后输出。

【输入形式】分二行输入10个整数,空格分开。
【输出形式】分二行输入10个整数,空格分开。

【样例输入】

1 2 3 4 5

6 7 8 9 10

【样例输出】

6 7 8 9 10

1 2 3 4 5

#include<stdio.h>
int main(){
    int a[3][6];
    int i,j;
    for(i=0;i<2;i++){
        for(j=0;j<5;j++){
            scanf("%d",&a[i][j]);
        }
    }
    for(i=1;i>=0;i--){
        for(j=0;j<5;j++){
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;

6. 插入排序 

【问题描述】键盘输入10个整数,将这10个数按从小到大插入排序。

【输入形式】键盘输入10个整数,空格分开。

【输出形式】10个从小到大整数,空格分开。

【样例输入】3 6 9 8 7 4 5 6 1 0
【样例输出】0 1 3 4 5 6 6 7 8 9

#include<stdio.h>
int main(){
    int a[11];
    int i,j,t;
    for(i=1;i<=10;i++){
        scanf("%d",&a[i]);
    }
    for(i=2;i<=10;i++){
        a[0]=a[i];
        j=i-1;
        while(j>0&&a[0]<a[j]){
            a[j+1]=a[j];
            --j;
        }
        a[j+1]=a[0];
    }
    for(i=1;i<=10;i++){
        printf("%d ",a[i]);
    }
    return 0;

7. 10进制转2进制,8进制和16进制数(数组)

【问题描述】从键盘输入一个10进制正整数,将它转换成2进制数,8进制和16进制数。
【输入形式】一个不超过10位的10进制正整数

【输出形式】输出上面10进制数的2进制数,8进制数和16进制数,逗号“,”分开

【样例1输入】31

【样例1输出】11111,37,1F

【样例2输入】123456789

【样例2输出】111010110111100110100010101,726746425,75BCD156c0962477911494b82281c6015860596.png 

2348的2进制为100100101100
 2348的8进制为4454
2348的16进制为92C

10进制正整数n转换成m进制数方法:用m去除n,余数放数组a[]中,商放n,直到n=0为止。再逆序输出a[]。

如2348 除2分别得余数 001101001001001,逆序输出就得到二进制数。

2348转16进制,除以16,商146,余12(C),146除以16,商9余2,9除以16,商0余9,逆序后,2348的16进制为92C。

可以这样理解,要求2348的16进制,先求商146的16进制,得92,再加上余数C,得92C为2348的16进制。

#include<stdio.h>
int main()
{
    int a[33],b[3]={2,8,16},i,j=0,x,y;
    scanf("%d",&x);
    y=x;
    while(j<3)
    {
        x=y; 
        i=0;
        while (x)
        {
            a[i]=x%b[j]; 
            x/=b[j];
            i++;
        }
        --i;
        while (i>=0)
        {
            printf("%c",a[i]>9?a[i]-10+'A':a[i]+'0');   
            i--;
        }
        if(j<2)printf(",");
        j++;
    }
    printf("\n");
    return 1;

 

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

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

相关文章

微服务同时接入多个Kafka

准备工作 自己搭建一个Kafka 从官方下载Kafka&#xff0c;选择对应Spring Boot 的版本&#xff0c;好在Kafka支持的版本范围比较广&#xff0c;当前最新版本是3.2.1,支持2.12-3.2.1 范围的版本&#xff0c;覆盖了Spring Boot 2.0x-Spring Boot 3.0.x。Apache Kafka 解压安装 …

CMake中target_compile_definitions的使用

CMake中的target_compile_definitions命令用于向target添加编译定义&#xff0c;其格式如下&#xff1a; target_compile_definitions(<target><INTERFACE|PUBLIC|PRIVATE> [items1...][<INTERFACE|PUBLIC|PRIVATE> [items2...] ...]) 指定在编译给定的<…

网络原理初识

网络原理初识 文章目录网络原理初识网络发展历程独立模式网络互联IP地址端口号网络协议OSI七层TCP/ IP协议封装与分用封装一.应用层二.传输层三.网络层四.数据链路层五.物理层分用六.物理层七.数据链路层八.网络层九.传输层十.应用层网络发展历程 独立模式 一开始电脑之间是相…

【InnoDB ClusterSet】快速部署

快速部署 InnoDB ClusterSet 文章目录快速部署 InnoDB ClusterSet前言前期准备架构设计部署过程1. 使用配置账号通过 MySQL Shell 连接到 InnoDB Cluster 任一成员2. 为主 InnoDB Cluster 实例设置变量3. 创建以当前集群作为主集群的 ClusterSet4. 为每个独立服务器实例添加配置…

382. 链表随机节点-哈希表法

382. 链表随机节点-哈希表法 给你一个单链表&#xff0c;随机选择链表的一个节点&#xff0c;并返回相应的节点值。每个节点 被选中的概率一样 。 实现 Solution 类&#xff1a; Solution(ListNode head) 使用整数数组初始化对象。 int getRandom() 从链表中随机选择一个节点…

Vue Element动态生成的表单如何用 el-form 校验

<el-form :model"dynamicValidateForm" ref"dynamicValidateForm" label-width"100px" class"demo-dynamic"><el-form-item prop"email" label"邮箱" :rules"[{ required: true, message: 请输入…

研究良久,终于发现了他代码写的快且bug少的原因

前言 读者诸君&#xff0c;今日我们适当放松一下&#xff0c;不钻研枯燥的知识和源码&#xff0c;分享一套高效的摸鱼绝活。 我有一位程序员朋友&#xff0c;当时在一个团队中开发Android应用&#xff0c;历经多次考核后发现&#xff1a; 在组内以及与iOS团队的对比中: 他的任…

java项目请求url存在特殊字符 400错误

java项目请求url特殊字符 400错误 1 现象 请求路径带特殊字符&#xff0c;就会400错误&#xff0c;这就泄露了服务器版本和报错信息&#xff0c;无疑是敏感信息泄露&#xff0c;实属安全漏洞。 补充项目环境&#xff1a;springmvc、tomcat 8.5.59 2 原因 经排查和报错信息…

STM32--ADC模数转换器

学习江科大自化协stm32教程记录的笔记 ADC模数转换器 ADC&#xff08;Analog-Digital Converter&#xff09;模拟-数字转换器 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁 DAC是数字-模拟转换器&#xff0c;但是P…

AI 助你轻松剪视频 # AutoCut

如果你还在犯愁每次剪视频都要反复听才能下手&#xff0c;不妨试试AutoCut , AI 大神李沐开源的一个剪辑神器&#xff0c;使用 Python 开发&#xff0c;它可以通过字幕来剪切视频。AutoCut 对你的视频自动生成字幕。然后你选择需要保留的句子&#xff0c;AutoCut 将对你视频中对…

C语言:变量的深入理解

文章目录一.什么是变量C语言中为什么要有类型&#xff1f;C语言中的类型为什么有这么多种呢&#xff1f;定义变量的本质为什么需要定义变量定义变量的本质定义变量时的规则二.深刻理解signed/unsigned定义的变量1.运算时的符号位2.数据的存储情况3.unsigned定义时的小细节三.大…

Android 13 VTS HIDL interface 解析

Android 13 VTS Introduction Android 13已经发布&#xff0c;VTS testcase发生很多变化&#xff0c;在此博客中对其每个测试项目进行流程介绍。 这里先对VTS 做一个介绍&#xff1a; VTS是vendor test suite简称&#xff0c;意为供应商测试套件。目的是确保Vendor层实现的兼容…

Spring Boot自动装配原理

Spring Boot自动装配原理1.Spring Boot 入口2.SpringBootApplicationSpringBootConfigurationComponentScanEnableAutoConfiguration判断自动装配开关是否打开获取EnableAutoConfiguration注解中的 exclude 和 excludeName获取需要自动装配的所有配置类最后3.总结1.Spring Boot…

Github访问量过百万!阿里内部至尊级分布式事务手册,实至名归

分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单的说&#xff0c;就是一次大的操作由不同的小操作组成&#xff0c;这些小的操作分布在不同的服务器上&#xff0c;且属于不同的应用&#xff0c;分布式…

[附源码]JAVA毕业设计养生药膳推荐系统(系统+LW)

[附源码]JAVA毕业设计养生药膳推荐系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

[LeetCode周赛复盘] 第 323 场周赛20221211

[LeetCode周赛复盘] 第 323 场周赛20221211 一、本周周赛总结二、 [Easy] 6257. 删除每行中的最大值1. 题目描述2. 思路分析3. 代码实现三、[Medium] 6258. 数组中最长的方波1. 题目描述2. 思路分析3. 代码实现四、[Medium] 6259. 设计内存分配器1. 题目描述2. 思路分析3. 代码…

web前端期末大作业【足球网页】学生网页设计作业源码

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

基于C++实现(控制台)单位职工管理系统(数据结构)【100010017】

1需求分析 1.1 问题描述 对单位的职工进行管理&#xff0c; 包括插入、 删除、 查找、 排序等功能。 1.2 问题要求 职工对象数不必很多&#xff0c; 便于一次读入内存&#xff0c; 所有操作不经过内外存交换。 &#xff08;1&#xff09; 由键盘输 入职工对象&#xff0c;…

1564_AURIX_TC275_电压监控寄存器整理

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 1. 如果HSM保护开启了&#xff0c;那么访问修改其他的bit就会导致一个总线错误。 2. SMU中可以配置电压监控的相关alarm是否配置 生效。 这个寄存器是几个欠压阈值的配置&#xff0c;在这…

在Ubuntu中为ROG笔记本安装驱动asusctl

我是在Kubuntu22.04上安装的&#xff0c;系统自带“省电”、“平衡”、“性能”三个电源选项&#xff0c;显卡模式切换是拿nvidia驱动切换的&#xff0c;所以目前装的这个驱动我只用到了灯光调节功能。 文章目录介绍安装安装asusctl卸载显卡模式切换驱动supergfxctl使用方法启用…