C语言:刷题日志(2)

news2024/9/17 8:48:52

一.币值转换

输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。

输入格式:

输入在一行中给出一个不超过9位的非负整数。

输出格式:

在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。

输入样例1:

813227345

输出样例1:

iYbQdBcScWhQdBeSf

输入样例2:

6900

输出样例2:

gQjB

代码讲解:

由题目我们知道我们要将0-9的数转换为字母a-j,并用S、B、Q、W、Y分别代表拾、百、仟、万、亿,所以我们要先建立两个数组arr数组中存放a-f的字母,str数组中存放数字代表的位置,由于没有个位,所以将个位设为空格S,B,Q,W,S,B,Q,Y,分别代表十,百,千,万,十万,百万,千万,亿。由于我们要将各个数进行改变和插入代表的位置,所以我们要进行分割数字,正因此我们要建立一个数组a用来存放分割出的数字并设立一个计数器,计算数字的个数。当然我们输入的数要是为负数就要重新输入,并且输入的数为0时,直接就可以打印a(a代表数字0),但是,当我们输入的数不是负数也不是0时,就要利用循环,将数模上10得到每一个数和总的个数count。得到总的个数后,因为数组是从0开始的所以我们先count--,得到最大的数组下标,之后我们就要进行判断了,当数组下标得到的数等于0,并且数组下标在4-6之间,就要打印'W',这是因为当我们的数为808000000时,我们应该叫8亿零8百万,800000000时,为8亿,800080000时,为8亿零8万,所以,只有0在count=4-6之间,才会打印'W',当然,我们也发现800080000,我们会叫8亿零8万,而不是8亿0008万0000,所我们要建立一个条件当一个数为0时,只有往下找到不为0的数时才会打印'a',所以我们重新建立一个计算器count1=count-1,新的计数器初始下标为原计数器值为0的下一位数的下标,当然如果下一位还为0,我们就要不停的找直到找到最后,所以我们要利用循环,在循环中如果找到不为0的数,就让它打印'a',并让原计数器count=新计数器count1的值后跳出循环,(当然,当找到最后时count1会等于-1,如果是这样就可以直接退出整个循环了。),跳出小循环后重新回到大循环中,开始打印这次循环的数所对应的字母和所代表的位置(当个位有数的时候,由于个位并没有所代表的位置,所以我们不打印个位的所代表的位置,即str[0]不打印)。之后再不断的进行循环直到找完为止。

#include<stdio.h>
int main()
{
    char arr[10]={'a','b','c','d','e','f','g','h','i','j'};
    char str[9]={' ','S','B','Q','W','S','B','Q','Y'};
    int n=0;
    int a[10];
    int count=0;
    int count1=0;
    scanf("%d",&n);
    if(n<0)
    {
        scanf("%d",&n);
    }
    if(n==0)
    {
        printf("a");
    }
    while(n!=0)
    {
        a[count]=n%10;
        n/=10;
        count++;
    }
   while(count>0)
   {
       count--;
       if(a[count]==0)
       {
           if(count>=4 &&count<7)
           {
               printf("W");
           }
           count1=count-1;
           while(count1>=0)
           {
               if(a[count1]!=0)
               {
                   printf("a");
                   count=count1;
                   break;
               }
               count1--;
           }
           if(count1==-1)
           {
              return 0;
           }
       }
       printf("%c",arr[a[count]]);
       if(count!=0)
       {
         printf("%c",str[count]);
       }
       
   }
    return 0;
}

二.约分最简分式

分数可以表示为分子/分母的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。最简分式是指分子和分母不具有可以约分的成分了。如6/12可以被约分为1/2。当分子大于分母时,不需要表达为整数又分数的形式,即11/8还是11/8;而当分子分母相等时,仍然表达为1/1的分数形式。

输入格式:

输入在一行中给出一个分数,分子和分母中间以斜杠/分隔,如:12/34表示34分之12。分子和分母都是正整数(不包含0,如果不清楚正整数的定义的话)。

提示:

  • 对于C语言,在scanf的格式字符串中加入/,让scanf来处理这个斜杠。
  • 对于Python语言,用a,b=map(int, input().split('/'))这样的代码来处理这个斜杠。

输出格式:

在一行中输出这个分数对应的最简分式,格式与输入的相同,即采用分子/分母的形式表示分数。如
5/6表示6分之5。

输入样例:

66/120

输出样例:

11/20

代码讲解: 

这道题其实就是让我们把分子和分母进行约分,而让让分子和分母进行约分,我们需要得到分子和分母的最大公约数,而对于求最大公约数我们有一个很简单的方式辗转相除法,我们可以举个例子

18和30的最大公约数

18/30=0余18

30/18=1余12

18/12=1余6

12/6=2余0

所以最大的公约数为6

这样我们就可以直到两个数的最大公约数就是两个数取余,如果余数不为0,就将被除数变为原除数,除数变为所得余数,在进行取余,直到余数为0时,除数就是我们想要的最大公约数。

所以为了防止数被改变,我们要将数赋给两个新的变量 ,让他们进入循环,将两个数得到的余数赋给r,并将b1赋给a1,r的值赋给r,直到余数为0时退出循环,并让a和b除上b1。

include<stdio.h>
int main()
{
    int a,b;
    scanf("%d/%d",&a,&b);
    int r=0;
   
        int a1=a;
        int b1=b;
        while(r=a1%b1)
        {
            a1=b1;
            b1=r;
        }
        printf("%d/%d",a/b1,b/b1);
  
   return 0;
}

  三.单词长度

你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it's算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内。

输入格式:

输入在一行中给出一行文本,以.结束

提示:scanf("%c",...);来读入一个字符,直到读到.为止。

输出格式:

在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。

输入样例:

It's great to see you here.

输出样例:

4 5 2 3 3 4

代码讲解: 

根据题目要求我们知道空格和'.'不计入长度,并且以'.'结束。所以我们可以利用do ...while循环我们需要先进行字符串的输入再进行循环判断,在循环中如果我们不等于空格和'.',我们就让计数器count++,直到遇到空格和'.'了,并且count也不等于0(即,第一个数不为空格),就打印count,当然,我们发现输出数的后面要有空格,而最后一个数后面没有空格,所以我们可以做一个标志flag=0,如果fla=0,就打印第一个数,并改变flag的值,第一个数打印之后,后面的数就可以用先打印空格再打印数的形式进行输出

#include<stdio.h>
int main()
{
    char a=0;
    int count=0,flag=0;
    do
    {
        scanf("%c",&a);
        if(a!=' '&& a!='.')
        {
            count++;
        }
        else
        {
            if(count!=0)
         {
                if(flag==0)
                {
                    printf("%d",count);
                    flag=1;
                }
                else
                {
                    printf(" %d",count);
                }
            count=0;
         }
        }
    }while(a!='.');
    return 0;
}

四.念数字

输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:

0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu

输入格式:

输入在一行中给出一个整数,如:1234

提示:整数包括负数、零和正数。

输出格式:

在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如
yi er san si

输入样例:

-600

输出样例:

fu liu ling ling

代码讲解:

这道题其实很简单,其实就是让我们将0-9的数字转换成拼音的形式打印,这样其实我们可以将数放入数组再利用 strlen函数求出数组的长度,再利用for循环找到每个数,并利用switch语句,让这些数和符号找到对应的位置并打印拼音注意打印完一个拼音后打印一个空格

#include<stdio.h>
#include<string.h>
int main()
{
    char arr[100];
    scanf("%s",arr);
    int i=0;
    for(i=0;i<strlen(arr);i++)
    {
        switch(arr[i])
        {
            case '-':
                printf("fu");
                break;
            case '0':
                printf("ling");
                break; 
            case '1':
                printf("yi");
                break; 
            case '2':
                printf("er");
                break; 
            case '3':
                printf("san");
                break; 
             case '4':
                printf("si");
                break;
            case '5':
                printf("wu");
                break;
            case '6':
                printf("liu");
                break;
            case '7':
                printf("qi");
                break;
            case '8':
                printf("ba");
                break;
            case '9':
                printf("jiu");
                break;
            default:
                break;
        }
        if(i!=strlen(arr)-1)
        {
            printf(" ");
        }
    }
    return 0;
}

五. 删除字符串中的子串

输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。

输入格式:

输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。

输出格式:

在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。

输入样例:

Tomcat is a male ccatat
cat

输出样例:

Tom is a male 

代码讲解: 

关于这道题我们利用了多个函数(关于这些函数的运用大家可以去看我之前写的字符函数和字符串函数)首先我们先创立三个字符串数组str1,str2,str3str3是用来存放最后要输出的字符串的,我们可以用gets函数来获取字符串,之后创建一个字符指针p,之后利用strstr函数查找字符串,并将其赋给p,并作为循环条件,如果p不为空,就将查找到的字符串的首地址加上要查找字符串的长度(其实就是跳过要查找的字符串,得到要查找字符串之后的字符串),并利用strcpy函数将得到的字符串拷贝到str3中,然后将查找到的字符串的首地址即p设置为'\0'(即,将查找到的字符串和之后的的字符串删除),之后再利用strcat函数将str3的值赋给新的str1,最后输出str1即可。

#include<stdio.h>
#include<string.h>
int main()
{
    char str1[100]={0};
    gets(str1);
    char str2[100]={0};
    gets(str2);
    char str3[100]={0};
    char* p;
    while((p=strstr(str1,str2))!=NULL)
    {
        strcpy(str3,p+strlen(str2));
        *p='\0';
        strcat(str1,str3);
    }
    puts(str1);
    return 0;
}

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

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

相关文章

《机器学习》—— XGBoost(xgb.XGBClassifier) 分类器

文章目录 一、XGBoost 分类器的介绍二、XGBoost&#xff08;xgb.XGBClassifier&#xff09; 分类器与随机森林分类器&#xff08;RandomForestClassifier&#xff09;的区别三、XGBoost&#xff08;xgb.XGBClassifier&#xff09; 分类器代码使用示例 一、XGBoost 分类器的介绍…

微信小程序 自定义组件

1. 微信小程序 自定义组件 微信小程序支持组件化开发&#xff0c;这有助于我们复用代码&#xff0c;提高开发效率。下面我将给出一个简单的微信小程序组件化示例&#xff0c;包括一个自定义组件的创建和使用。 1.1. 创建自定义组件 首先&#xff0c;在项目的 components 目录…

建筑二次供水的基本概念

什么是二次供水&#xff1f; 二次供水是城市供水的主要组成部分&#xff0c;是指集中式供水在入户之前经再度储存、加压和消毒后&#xff0c;通过管道输送给用户的供水方式。 为什么要使用二次供水&#xff1f; 由于市政供水的服务水压通常只能达到较低的楼层&#xff0c;而…

部分库函数及其模拟

前言&#xff1a;当我们学习c/c库函数的时候&#xff0c;我们可以用网站 cplusplus.com - The C Resources Network 来进行查阅&#xff0c;学习。 目录 库函数&#xff1a; 1.字符串函数 1.1求字符串长度 strlen 1.2长度不受限制的字符串函数 1.2.1strcpy 1.2.2strca…

“阡陌云旅”黄河九省文化旅游平台

“阡陌云旅”黄河九省文化旅游平台 GitHub地址&#xff1a;https://github.com/guoJiaQi-123/Yellow-River-Cloud-Journey 项目背景 “阡陌云旅”黄河九省文化旅游平台 “阡陌云旅” 黄河九省文化旅游平台是一个专注于黄河流域九省文化旅游资源整合与推广的项目。 黄河是中…

Spring Framework系统框架

序号表示的是学习顺序 IoC&#xff08;控制反转&#xff09;/DI&#xff08;依赖注入&#xff09;: ioc&#xff1a;思想上是控制反转&#xff0c;spring提供了一个容器&#xff0c;称为IOC容器&#xff0c;用它来充当IOC思想中的外部。 我的理解就是spring把这些对象集中管理…

HomeAssistant添加HACS绑定米家与苹果HomeKit设备并实现远程管理

文章目录 前言1. 下载HACS源码2. 添加HACS商店3. 绑定米家设备 前言 之前介绍过如何实现在群晖NAS使用Docker部署HomeAssistant&#xff0c;通过内网穿透在户外控制家庭智能设备。本文将介绍如何在HA平台安装HACS插件商店&#xff0c;将米家&#xff0c;果家设备接入 Home Ass…

推荐清晖一套不错的讲解沟通的线上讲座

推荐清晖一套不错的讲解沟通的线上讲座&#xff0c;比较实际贴地&#xff0c;听完了推荐给大家&#xff1a; 《项目管理中的沟通策略&#xff0c;听出弦外之音&#xff0c;变身沟通达人》 地址&#xff1a;项目管理中的沟通策略&#xff0c;听出弦外之音&#xff0c;变身沟通达…

数据结构(1):ArrayList和顺序表

数据结构(Data Structure)是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的数据元素的集合。 下面我们就开一个新坑&#xff0c;数据结构。数据结构&#xff0c;简单来说就是存放数据的方式&#xff0c;这些方式多种多样&#xff0c;我们来一点一…

Statcounter Global Stats 提供全球统计数据信息

Statcounter Global Stats 提供全球统计数据信息 1. Statcounter Global Stats2. Mobile & Tablet Android Version Market Share WorldwideReferences Statcounter Global Stats https://gs.statcounter.com/ Statcounter Global Stats are brought to you by Statcounte…

C++ 定时器

这是第一次独立设计一个模块&#xff0c;从接口定义&#xff0c;模块组合到多线程并发可能遇到的各种问题&#xff0c;虽然定时挺简单的&#xff0c;但是想设计精度高&#xff0c;并且能应对高并发似乎也不是很容易&#xff0c;当然&#xff0c;最后没有测试定时器的代码&#…

架构模式:MVC

引言 MVC&#xff0c;即 Model&#xff08;模型&#xff09;-View&#xff08;视图&#xff09;-Controller&#xff08;控制器&#xff09;&#xff0c;是广泛应用于交互式系统中的典型架构模式&#xff0c;尤其在 GUI 和 Web 应用中。 MVC 的概念源自 GOF&#xff08;Gang …

JS解密工具之**如何续期 Charles 的 SSL 证书**

本文由 jsjiami加密/一键JS解密 独家赞助 有问题请私聊加密官方客服 Charles 是一款常用的 HTTP 代理工具&#xff0c;用于调试网络请求。然而&#xff0c;Charles 的 SSL 证书会定期过期&#xff0c;如果 SSL 证书失效&#xff0c;你将无法对 HTTPS 请求进行抓包。本文将详细…

SQL语句中in条件超过1000怎么办?

博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 引言 当遇到SQL语句中IN条件超过1000个的情况时&#xff0c;可以采取以下几种策略来有效处理这一问题&#xff1a; 使用临时表&#xff1a;将IN列表中的值存储在临时表中&#xff0c;并将该临时表与查询表进行J…

【Python 千题 —— 算法篇】寻找最长回文子串

Python 千题持续更新中 …… 脑图地址 &#x1f449;&#xff1a;⭐https://twilight-fanyi.gitee.io/mind-map/Python千题.html⭐ 题目背景 回文串是指一个字符串从左到右和从右到左读都是一样的。寻找一个字符串中的最长回文子串是许多经典算法问题之一&#xff0c;广泛应…

2024年9月最新界面:自己如何在电脑上注册新的Google谷歌账号,图文详解和关键点解析、常见问题

有一些朋友需要通过谷歌账号来工作、学习或娱乐&#xff08;例如很多游戏需要用谷歌账号来注册和使用&#xff09;&#xff0c;但是不知道如何注册谷歌账号&#xff0c;或者知道如何注册&#xff0c;但是对于一些步骤或者注意事项不太熟悉&#xff0c;导致注册不成功&#xff0…

什么是LED智能会议一体机?COB超微小间距LED会议一体机大势所趋

LED智能会议一体机&#xff0c;作为现代会议室革新的核心装备&#xff0c;正逐步颠覆传统会议模式的界限。它不仅仅是一台集成了高清显示、触控互动、音视频处理及远程协作等功能于一体的智能设备&#xff0c;更是推动会议效率与体验双重飞跃的关键力量。随着技术的不断进步&am…

【重学 MySQL】十八、逻辑运算符的使用

【重学 MySQL】十八、逻辑运算符的使用 AND运算符OR运算符NOT运算符异或运算符使用 XOR 关键字使用 BIT_XOR() 函数注意事项 注意事项 在MySQL中&#xff0c;逻辑运算符是构建复杂查询语句的重要工具&#xff0c;它们用于处理布尔类型的数据&#xff0c;进行逻辑判断和组合条件…

【Protobuf】初识protobuf以及详细安装教程

W...Y的主页 &#x1f60a; 代码仓库分享 &#x1f495; 目录 序列化概念 ProtoBuf是什么 ProtoBuf在window下的安装 下载ProtoBuf编译器 配置环境变量 ​编辑 检查是否配置成功 ​编辑 ProtoBuf在Linux下的安装 下载ProtoBuf 安装ProtoBuf 序列化概念 首先我们…

小白开发中遇到的问题和解决方案

小白开发中遇到的问题和解决方案 文章目录 小白开发中遇到的问题和解决方案问题一 问题一 问题&#xff1a;端口别占用可能开开启多个应用 解决方法–在cmd执行下方红框中的命令关闭所有应用