PTA-练习7

news2024/9/29 17:38:04

目录

实验8-2-1 找最小的字符串

实验8-2-2 找最长的字符串

实验8-2-8 字符串排序

实验8-2-10 IP地址转换

结构体

实验9-1 计算职工工资

实验9-2 时间换算

实验9-3 计算平均成绩

实验9-5 查找书籍

实验9-8 通讯录排序 

实验9-9 有理数比较

实验11-1-1 英文单词排序

实验11-1-7 藏头诗

实验11-1-9 藏尾诗


实验8-2-1 找最小的字符串

1.gets();输入字符串的时候必须是,int a[10],而不能是指针int *a;

2.无敌字符串三个必会函数:

  1. strlen(str),求长度
  2. strcpy(str1,str2),将str2赋值给str1,不能用str1=str2,这不就是直接修改的指针,以后两个指向的同一个地方。
  3. strcmp(str1,str2),比较字符串的大小,str1>str2返回正数
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(){

    int N;
    scanf("%d\n",&N);
    char str[81]="";
    char minstr[90]="zzzzzzzzzzzzzzzzzzzzzzzzzz";
    for(int i=0;i<N;i++){
        gets(str);
        if(strcmp(minstr,str)>0){
            strcpy(minstr,str);
        }
    }
    printf("Min is: %s",minstr);

    return 0;
}

实验8-2-2 找最长的字符串

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(){

    int N;
    scanf("%d\n",&N);//输入数字后换行,输入字符,必须加上换行符,否则换行符会被当成字符读入
    char str[81]="";//定义空字符,81是最大长度
    int maxlen=0;
    char maxstr[81];
    
    for(int i=0;i<N;i++){
        scanf("%s",str);//字符串本身就是数组指针(地址),不需要加上&
        int len=strlen(str);
        if(len>maxlen){
            maxlen=len;
            strcpy(maxstr,str);//字符串赋值函数,不能直接使用“=”
        }
    }

    printf("The longest is: %s",maxstr);

    return 0;
}

实验8-2-8 字符串排序

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(){

    char str[5][81];

    for(int i=0;i<5;i++){
        scanf("%s ",str[i]);
        
    }//得到了二维字符串数组str

    //接下来比较大小
    printf("After sorted:\n");
    for(int i=0;i<5;i++){//简单选择排序
        char min[81];
        strcpy(min,str[i]);
        for(int j=i+1;j<5;j++){//找出最小的放到i处
            if(strcmp(min,str[j])>0){
                char temp[81];
                strcpy(temp,min);
                strcpy(min,str[j]);
                strcpy(str[j],temp);
            }
        }
        strcpy(str[i],min);
    }

    for(int i=0;i<5;i++){
        printf("%s\n",str[i]);
    }

    return 0;
}

 实验8-2-10 IP地址转换

//输入32个字符串,每八位输出一个十进制数字=

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(){

    char str[33]="";//使用gets函数的时候字符串数组要比预期的大一个,用来存放换行符
    gets(str);
    int flag=7;
    int sum=0;
    for(int i=0;i<32;i++){
        int num;
        if(str[i]=='1'){
            num=1;
        }else{
            num=0;
        }
        if(flag>=0){
            sum=sum+num*pow(2,flag);
            flag--;
        }
        if(flag==-1){
            printf("%d",sum);
            flag=7;
            sum=0;
            if(i!=31){
                printf(".");
            }
        }
    }

    return 0;
}

结构体

实验9-1 计算职工工资

//

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
typedef struct{
    char str[10];
    float jiben;
    float fudong;
    float zhichu;
}worker;
int main(){

    int N;
    scanf("%d\n",&N);
    for(int i=0;i<N;i++){
        worker a;
        scanf("%s %f %f %f",a.str,&a.jiben,&a.fudong,&a.zhichu);
        printf("%s %.2f\n",a.str,a.jiben+a.fudong-a.zhichu);
    }

    return 0;
}

实验9-2 时间换算

//使用结构体:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
typedef struct{
    int hh;
    int mm;
    int ss;
}time;
int main(){

    time start;
    scanf("%d:%d:%d",&start.hh,&start.mm,&start.ss);

    int n;
    scanf("%d",&n);
    start.ss=start.ss+n;
    if(start.ss>=60){
        start.ss=start.ss-60;
        start.mm=start.mm+1;
        if(start.mm>=60){
            start.mm=start.mm-60;
            start.hh=start.hh+1;
        }
        if(start.hh==24){
            start.hh=0;
        }
    }
    printf("%d%d:%d%d:%d%d",start.hh/10,start.hh%10,start.mm/10,start.mm%10,start.ss/10,start.ss%10);
    输出要补零, 2代表占两个位置, 0代表若两个位置有空缺, 用0填补
    //printf("%02d:%02d:%02d", start.hh, start.mm, start.ss);
    return 0;
}


实验9-3 计算平均成绩

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
typedef struct{
    char num[50];
    char name[10];
    int grade;

}student;
int main(){


    int N;
    scanf("%d",&N);
    student a[N];//结构体数组
    int sum=0;
    for(int i=0;i<N;i++){
        scanf("%s %s %d",a[i].num,a[i].name,&a[i].grade);
        sum=sum+a[i].grade;
    }

    double average=sum*1.0/N;
    printf("%.2lf\n",average);
    for(int i=0;i<N;i++){
        if(a[i].grade<average){
            printf("%s %s\n",a[i].name,a[i].num);
        }
    }

    return 0;
}

实验9-5 查找书籍

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
typedef struct{
    
    char name[300];
    float money;

}Books;
int main(){

    int N;
    scanf("%d\n",&N);
    Books a[20];//结构体数组
    for(int i=0;i<N;i++){
        scanf("%[^\n]",a[i].name);
        //gets(a[i].name);//都表示遇见换行符时停止
        scanf("%f\n",&a[i].money);
    }
    char maxbook[100]="";
    float max=0;
    char minbook[100]="";
    float min=1000;
    for(int i=0;i<N;i++){
        if(a[i].money>max){
            max=a[i].money;
            strcpy(maxbook,a[i].name);
        }
        if(a[i].money<min){
            min=a[i].money;
            strcpy(minbook,a[i].name);
        }
    }
    
    printf("%.2f, %s\n",max,maxbook);
    printf("%.2f, %s\n",min,minbook);
    
    return 0;
}

实验9-8 通讯录排序 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
typedef struct{
    
    char name[300];
    int date;
    char num[300];

}Friends;
int main(){

    int N;
    scanf("%d\n",&N);
    Friends a[20];//结构体数组
    for(int i=0;i<N;i++){
        scanf("%s %d %s\n",a[i].name,&a[i].date,a[i].num);
   
    }
    for(int i=0;i<N;i++){
        for(int j=i+1;j<N;j++){
            if(a[j].date<a[i].date){
                a[N]=a[j];
                a[j]=a[i];
                a[i]=a[N];
            }
        }
    }
    for(int i=0;i<N;i++){
        printf("%s %d %s\n",a[i].name,a[i].date,a[i].num);
    }
    return 0;
}

实验9-9 有理数比较

//什么玩意,结构体好麻烦
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
typedef struct{
    int zi;
    int mu;
    double much;

}fenshu;
int main(){

    fenshu a,b;
    scanf("%d/%d %d/%d",&a.zi,&a.mu,&b.zi,&b.mu);
    a.much=1.0*a.zi/a.mu;
    b.much=1.0*b.zi/b.mu;
    char c;
    if(a.much>b.much){
        c='>';
    }else if(a.much<b.much){
        c='<';
    }else{
        c='=';
    }
    printf("%d/%d %c %d/%d",a.zi,a.mu,c,b.zi,b.mu);
    return 0;
}

实验11-1-1 英文单词排序

//把这些单词存放在一个二维数组里面

//输入不是1,2,3为程序截止
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(){
    
    char str[100][100];
    int i=0;
    gets(str[i]);
    while(strcmp(str[i],"#")!=0){//字符串的比较一定不能用=
        i++;
        gets(str[i]);
    }
    for(int j=0;j<i;j++){
        for(int k=j+1;k<i;k++){
            if(strlen(str[j])>strlen(str[k])){
                char temp[100];
                strcpy(temp,str[j]);
                strcpy(str[j],str[k]);
                strcpy(str[k],temp);
            }
        }
    }
    for(int j=0;j<i;j++){
        printf("%s ",str[j]);
    }
    return 0;
}

实验11-1-7 藏头诗

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(){
    //一个字符char是一个字节,汉字是三个字节
    char str[4][1000000];

    for(int i=0;i<4;i++){
        gets(str[i]);
        printf("%c%c%c",str[i][0],str[i][1],str[i][2]);
    }
    
    return 0;
}


实验11-1-9 藏尾诗

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(){
    //一个字符char是一个字节,汉字是三个字节
    char str[4][1000000];

    for(int i=0;i<4;i++){
        gets(str[i]);
        int n=strlen(str[i]);
    
        printf("%c%c%c",str[i][n-3],str[i][n-2],str[i][n-1]);
    }
    
    return 0;
}

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

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

相关文章

在 Windows 中安装配置并启动运行 Jenkins【图文详细教程】

安装 Jenkins 的系统要求&#xff1a; 最少 256MB 可用内存最少 1GB 可用磁盘空间JDK 8 / 11 /17&#xff08;Jenkins 是用 Java 写的&#xff0c;打包成 war 包&#xff09; 查看 JDK 的版本 Java JDK 在 Windows 中安装可以参考&#xff1a;https://www.yuque.com/u27599042/…

iscsi网络协议(连接硬件设备)

iscsi概念 iscsi是一种互联网协议&#xff0c;用于将存储设备&#xff08;如硬盘驱动器或磁带驱动器&#xff09;通过网络连接到计算机。它是一种存储区域网络&#xff08;SAN&#xff09;技术&#xff0c;允许服务器通过网络连接到存储设备&#xff0c;就像它们是本地设备一样…

【C++】1596. 火柴棒三角形问题

问题&#xff1a;1596. 火柴棒三角形问题 类型&#xff1a;基本运算、整数运算 题目描述&#xff1a; 如下图所示&#xff0c;摆 1 个火柴棒三角形需要 3 根火柴&#xff0c;那么摆 2 个火柴棒三角形就需要 6 根火柴&#xff0c;请问摆 n 个火柴棒三角形需要多少根火柴&#…

由浅入深一步步了解什么是哈希(概念向)

文章目录 什么是哈希哈希函数直接定址法除留余数法 哈希冲突闭散列线性探测法二次探测法负载因子和闭散列的扩容 开散列开散列的扩容 非整形关键码 什么是哈希 我们来重新认识一下数据查找的过程&#xff1a; 在顺序结构以及平衡树中&#xff0c;记录的关键码与其存储位置之间…

基因在各个细胞系表达情况

从CCLE下载数据得到基因在每个细胞系中的 现在从DepMap: The Cancer Dependency Map Project at Broad Institute 需要先选择Custom Downloads 就可以下载数据进行处理了&#xff1a; rm(list ls()) library(tidyverse) library(ggpubr) rt <- data.table::fread("…

LeetCode每日一题——统计桌面上的不同数字

统计桌面上的不同数字OJ链接&#xff1a;2549. 统计桌面上的不同数字 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路&#xff1a; 这是一个很简单的数学问题&#xff1a; 当n 5时&#xff0c;因为n % 4 1&#xff0c;所以下一天4一定会被放上桌面 当n 4…

SpringBoot 3整合Elasticsearch 8

这里写自定义目录标题 版本说明spring boot POM依赖application.yml配置新建模型映射Repository简单测试完整项目文件目录结构windows下elasticsearch安装配置 版本说明 官网说明 本文使用最新的版本 springboot: 3.2.3 spring-data elasticsearch: 5.2.3 elasticsearch: 8.1…

Unity Mesh简化为Cube mesh

Mesh简化为Cube mesh &#x1f373;食用&#x1f959;子物体独立生成CubeMesh&#x1f96a;合并成一个CubeMesh&#x1f32d;Demo &#x1f373;食用 下载并导入插件&#x1f448;即可在代码中调用。 &#x1f959;子物体独立生成CubeMesh gameObject.ToCubeMesh_Invidual()…

计算机基础系列 —— 汇编语言

Same hardware can run many different programs(Software) 文中提到的所有实现都可以参考&#xff1a;nand2tetris_sol&#xff0c;但是最好还是自己学习课程实现一遍&#xff0c;理解更深刻。 我们在之前的文章里&#xff0c;构建了 Register、RAM 和 ALU&#xff0c;使得我…

前端基础篇-前端工程化 Vue 项目开发流程(环境准备、Element 组件库、Vue 路由、项目打包部署)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 环境准备 1.1 安装 NodeJs 1.2 验证 NodeJs 环境变量 1.3 配置 npm 的全局安装路径 1.4 切换 npm 的淘宝镜像( npm 使用国内淘宝镜像的方法(最新) ) 1.5 查看镜像…

QGIS编译(跨平台编译)056:PDAL编译(Windows、Linux、MacOS环境下编译)

点击查看专栏目录 文章目录 1、PDAL介绍2、PDAL下载3、Windows下编译4、linux下编译5、MacOS下编译1、PDAL介绍 PDAL(Point Data Abstraction Library)是一个开源的地理空间数据处理库,它专注于点云数据的获取、处理和分析。PDAL 提供了丰富的工具和库,用于处理激光扫描仪、…

Winform数据绑定

简介# 在C#中提起控件绑定数据&#xff0c;大部分人首先想到的是WPF&#xff0c;其实Winform也支持控件和数据的绑定。 Winform中的数据绑定按控件类型可以分为以下几种&#xff1a; 简单控件绑定列表控件绑定表格控件绑定 绑定基类# 绑定数据类必须实现INotifyPropertyChanged…

Docker 安装 Nginx 容器,反向代理

Docker官方镜像https://hub.docker.com/ 寻找Nginx镜像 下载Nginx镜像 docker pull nginx #下载最新版Nginx镜像 (其实此命令就等同于 : docker pull nginx:latest ) docker pull nginx:xxx #下载指定版本的Nginx镜像 (xxx指具体版本号)检查当前所有Docker下载的镜像 docker…

Linux 创建交换空间

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

【C++】使用cppcheck检查C++代码

Cppcheck 是 C/C 代码的静态分析工具。它提供独特的代码分析来检测错误&#xff0c;并专注于检测未定义的行为和 危险的编码结构&#xff0c;即使它具有非标准语法&#xff08;在嵌入式项目中很常见&#xff09;。 关于静态分析 通过静态分析可以发现的错误类型包括&#xff…

Zabbix使用TimescaleDB数据库

一、前言 Zabbix 6.0 已发布很久&#xff0c;下个季度7.0应该会正式发布&#xff0c;但6.0也有许多新功能和新特性&#xff0c;这里介绍 6.0 配置 TimescaleDB&#xff0c;此安装配置方法可基本通用与其他版本。 二、TimescaleDB TimescaleDB 基于 PostgreSQL 数据库打造的一…

【Leetcode】2549. 统计桌面上的不同数字

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接&#x1f517; 给你一个正整数 n n n &#xff0c;开始时&#xff0c;它放在桌面上。在 1 0 9 10^9 109 天内&#xff0c;每天都要执行下述步骤&#xff1a; 对于出现在桌面上的每个数字 x &am…

Programming Abstractions in C阅读笔记:p331-p337

《Programming Abstractions in C》学习第79天&#xff0c;p331-p337&#xff0c;总计7页。 一、技术总结 /** File: stack.h* -------------* This interface defines an abstraction for stacks. In any* single application that uses this interface, the values in* the…

2024/3/24 LED点阵屏

显示原理&#xff1a; 类似矩阵键盘&#xff0c;逐行or逐列扫描 74HC595是串行 寄存器 感觉就是三转八寄存器 并行&#xff1a;同时输出&#xff1b;串行&#xff1a;一位一位输出 先配置74HC595&#xff0c;重新进行位声明 sbit RCKP3^5; //RCLK sbit SCKP3^6; …

ai问答机器人是什么?介绍这几款实用ai问答机器人

ai问答机器人是什么&#xff1f;随着人工智能技术的飞速发展&#xff0c;AI问答机器人已成为我们生活中不可或缺的一部分。它们能够智能地解答各种问题&#xff0c;提供便捷的服务&#xff0c;极大地提升了用户体验。本文将带你了解AI问答机器人的基本概念&#xff0c;并介绍几…