2020-10-20 整理:

第一题:

2011年开始实行新个人所得税法,要求输入月薪salary,输出应交的个人所得税 tax (保留两位小数)。

新税法方案如下:

tax=rate*(salary-3500) - deduction

当 salary<=3500时,rate=0、deduction=0;

当 3500<salary<=5000时,rate=3%、deduction=0;

当 5000<salary<=8000时,rate=10%、deduction=105;

当 8000<salary<=12500时,rate=20% 、deduction=555;

当 12500<salary<=38500时, rate=25% 、deduction=1005;

当 38500<salary<=58500时, rate=30% 、deduction=2755;

当 58500<salary<=83500时, rate=35% 、deduction=5505;

当 83500<salary时, rate=45% 、deduction=13505;

【输入输出样例1】(下划线部分表示输入)

Enter the salary: 5010.87

tax=46.09

【输入输出样例2】(下划线部分表示输入)

Enter the salary: 32098.76

tax=6144.09

【输入输出样例3】(下划线部分表示输入)

Enter the salary: 3000

tax=0.00

【输入输出样例4】(下划线部分表示输入)Enter the salary: 59000

tax=13920.00

【输入输出样例5】(下划线部分表示输入)Enter the salary: 84500

tax=22945.00

【样例说明】

输入提示符后要加一个空格。例如“ Enter the salary : ”,其中“:”后要加一个且只能一个空格。

输出语句的“=”两边无空格。

英文字母区分大小写。必须严格按样例输入输出。

#include <stdio.h>

void getTax(double salary,double rate,int deductio);
int main() {
// double salary;
// scanf("%lf",&salary);
// printf("%lf",(double )(salary-30)); double salary;
double tax,rate;
int deduction;
printf("Enter the salary: ");
scanf("%lf",&salary);
if (salary<=3500){
getTax(salary=3500,0,0);
} else if (salary<=5000) {
getTax(salary, 0.03, 0);
}else if (salary<=8000) {
getTax(salary, 0.1, 105);
}else if (salary<=12500) {
getTax(salary, 0.2, 555);
}else if (salary<=38500) {
getTax(salary, 0.25, 1005);
}else if (salary<=58500) {
getTax(salary, 0.3, 2755);
}else if (salary<=83500) {
getTax(salary, 0.35, 5505);
}else{
getTax(salary, 0.45, 13505);
} return 0;
} void getTax(double salary,double rate,int deduction){
double tax;
tax =(rate*(salary-3500)-deduction);
printf("tax=%.2lf",tax); }

解释

上面代码段使用的基础的if-else if-else结构,但是使用的时候注意if else if eles各使用范围,不要出现多余代码,影响系统运行速度。

第二题:(同构数)

【问题描述】

同构数是其平方数的尾数等于该数自身的自然数,例如:25×25=625。从键盘输入一个不大于10000的自然数,判断其是否是同构数并按样例格式输出。

【输入形式】

从键盘输入一个不大于10000的自然数。

【输出形式】

输出格式按样例。

【样例输入1】

25

【样例输出1】

25 yes,25*25=625

【样例输入2】

11

【样例输出2】

11 no,11*11=121

#include <stdio.h>
#include<math.h>
int main() {
int x,y,z;
scanf("%d",&x);
int i =0;
z = x;
//获取幂
while (x !=0){
x = x/10;
i++;
}
//pow a几次幂
y = pow(10,i);
//乘积取后i位的数
if(z == z*z%y){
printf("%d Yes,%d*%d=%d",z,z,z,z*z);
} else{
printf("%d No,%d*%d=%d",z,z,z,z*z); }
return 0; }

解释:

首先我们需要要知道怎么获得后几位数字,使用%10^n获取乘积的后几位;

In [2]: 625%100
Out[2]: 25 In [3]: 6987%1000
Out[3]: 987

但是我们怎么知道应该除以n的多少呢;

我们可以循环整除,使得x=0(x我们输入的数字),若x !=0---->i++即:

int i =0;
while (x !=0){
x = x/10;
i++;
}

这样我们就获得了n值。

后面只需要把原参数与乘积取余后i位的数做对比即可。

第三题:(加一天后日期)

问题描述】输入一个日期,显示这个日期加一天后的日期。注意要考虑这个日期是年尾或各个月的月尾的情况。

【输入形式】输入一个日期,年月日形式表示,空格分开。

【输出形式】 输出一个日期,年月日形式表示,空格分开。

【样例输入】2000 12 31

【样例输出】2001 1 1

#include <stdio.h>

int main() {
int year,month,days;
scanf("%d %d %d",&year,&month,&days);
// printf("%d %d %d",year,month,days); switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(month ==12 && days==31){
printf("%d %d %d",year+1,1,1);
} else{
if(days ==31){
printf("%d %d %d",year,month+1,1);
} else{
printf("%d %d %d",year,month,days+1);
}
}
break;
case 4:
case 6:
case 9:
if(days ==30){
printf("%d %d %d",year,month+1,1);
} else{
printf("%d %d %d",year,month,days+1);
}
break;
case 2:
if(year%400 ==0 || year%4==0 && year%100 !=0){
if(days==29){
printf("%d %d %d",year,month+1,1);
} else{
printf("%d %d %d",year,month,days+1);
}
} else{
if(days==28){
printf("%d %d %d",year,month+1,1);
} else{
printf("%d %d %d",year,month,days+1);
}
}
}
return 0;
}

解释:

首先需要明确每个月份包含的天数,即:

1 3 5 7 8 10 12包含31天,且31需要特殊处理,即31+1--->1;其中如果月份等于12,需要特殊处理,即years+1,1,1;

4 6 9包含30天,且30需要特殊处理,即30+1--->1;

2月需要判断是否为闰年:如果是闰年则包含29天,且29需要特殊处理,即29+1--->1;

如果不是则包含28天,且28需要特殊处理,即28+1--->1;

如果其他条件则,years、month、dayas+1;

分析完成,后面使用if-else即可。

第四题:(零钱换整钱)

问题描述】

某人拿了一堆硬币去银行换钱,已知1角的硬币厚1.8mm,5角的硬币厚1.5mm,1元的硬币厚2.0mm。他将1角的硬币放成一叠,将5角的硬币放成一叠,将1元的硬币放成一叠,发现3叠硬币一样高。银行正好把这些硬币换成若干张面值为10元的纸币,问此人至少带了多少钱的硬币(元为单位),每种面值的硬币各有多少枚。输出格式为:1角的枚数,5角的枚数,1元的枚数,总金额元数(样如:50,30,40,60)。

【输入形式】

无输入。

【输出形式】

输出如下用逗号分隔的4个数(样如:50,30,40,60):

1角的枚数,5角的枚数,1元的枚数,总金额元数

#include <stdio.h>
int main(){
// int x,y,z;
// 1.8*x=1.5*y=2.0*z; for (int x = 1; x <=100; x++) {
for (int y = 1; y <= 100; y++) {
for (int z = 1; z <= 100; z++) {
int result = 0.1*x+0.5*y+z;
if(result%10==0&&1.8*x==1.5*y&&1.5*y==2.0*z){
printf("%d,%d,%d,%d",x,y,z,result);
} }
}
}
return 0;
}

解释:

首先此题属于穷举范围,个人只写出一个版本,网站各版本都有,自行学习;

由题意可以得出一个等式:1.8x=1.5y=2.0*z,假设1角的数量 x, 依次 y , z;

并且result = 0.1x+0.5y+z,result的结果取余应该等于0;

假设每个硬币的数量上限为100,若没有数据或者多组数据,则相应的范围增加或减少,结果只能唯一;

满足上述条件即可。

运行成功:

50,60,45,80

总结:

上述题目的解不是唯一,例题中的解是我所理解并运行成功的,如果有不对的地方,欢迎指出。

C语言程序设计之 循环控制2020-10-20的更多相关文章

  1. C语言程序设计100例之(20):过河卒

    例20  过河卒 题目描述 如图1,在棋盘的A点有一个过河卒,需要走到目标B点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点有一个对方的马(如图1的C点),该马所在的点和所有跳跃一步可达的点称 ...

  2. 2020.10.20 利用POST请求模拟登录知乎

    前两天学习了Python的requests模块的相关内容,对于用GET和PSOT请求访问网页以抓取需要的内容有了初步的了解,想要再从一些复杂的网站积累些经验.最开始我采用最简单的get(url)方法想 ...

  3. 牛客 2020.10.20 TG 前两题

    T1 GCD 数学水题... 对于每个数,如果这个数有两个及以上的质因数的话,它所有除 \(1\) 之外的因数求 \(GCD\) 的值一定为 \(1\).那么判断是否是质数或质数的次方即可(质数除 \ ...

  4. 《手把手教你学C语言》学习笔记(10)--- 程序的循环控制

    C语言程序设计中,有些代码需要重复执行很多次,循环主要有三类: 一.for循环 1.基本格式为:for(表达式1:表达式2:表达式3){ //表达式1:循环变量赋初值 //表达式2:循环变量满足的条件 ...

  5. 全国计算机等级考试二级教程-C语言程序设计_第10章_字符串

    字符型指针数组 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> //参数中,int a ...

  6. C语言程序设计50例(经典收藏)

    本篇文章是对C语言程序设计的50个小案例进行了详细的分析介绍,需要的朋友参考下 [程序1]题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位.十 ...

  7. 【学习笔记】PYTHON语言程序设计(北理工 嵩天)

    1 Python基本语法元素 1.1 程序设计基本方法 计算机发展历史上最重要的预测法则     摩尔定律:单位面积集成电路上可容纳晶体管数量约2年翻倍 cpu/gpu.内存.硬盘.电子产品价格等都遵 ...

  8. C语言程序设计第4堂作业

    大家注意:本次作业稍有增加,由于放假期间大家空闲时间比较充足,将之前学习过程中遗留的问题必须在假期解决.   本次课学习主要内容: 分支结构中的二分支结构.多分支结构和else-if语句 掌握字符型数 ...

  9. 160809209_李梦鑫_C语言程序设计实验2+选择结构程序设计_进阶

    <C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学    期 2016-2017 第1学期 指导教师 黄俊莲 吴喆 实验地点 C05 机 ...

  10. 中国大学MOOC-翁恺-C语言程序设计习题集-解答汇总

    中国大学MOOC-翁恺-C语言程序设计习题集 PAT 习题集 02-0. 整数四则运算(10) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standar ...

随机推荐

  1. Go语言安装(Windows10)

    一. 官网下载 https://golang.google.cn/dl/   二. 软件包安装 选择对应的路径进行安装   三. 环境变量设置 1.path 检查系统环境变量Path内已经添加Go的安 ...

  2. python常见面试题讲解(九)字符个数统计

    题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里.不在范围内的不作统计.注意是不同的字符 输入描述: 输入N个字符,字符在 ...

  3. 每天学五分钟 Liunx 0110 | 服务篇:守护进程 systemd

    有些进程会在系统上运行较长时间,如前面的 Hello World 程序运行时产生的进程.有些进程运行瞬间就结束了,如执行 ps 命令产生的进程,也有的进程会常驻在内存中,提供相应的服务,这样的进程称为 ...

  4. 使用zipFile读取文件时遇到的问题及解决(KeyError: "There is no item named 'xxx' in the archive")

    问题描述 在Windows上跑一段代码时,遇到如下问题: KeyError: "There is no item named 'CDR_Data\\\\CDR.Corpus.v010516\ ...

  5. Asp.Net core 自定义 appsettings.json 文件路径

    builder.Host.ConfigureAppConfiguration((hostingContext, config) => { config.AddJsonFile("d:/ ...

  6. linux环境C语言实现:h265与pcm封装成AVI格式

    ​ 前言 不知道是处于版权收费问题还是什么原因,H265现在也并没有非常广泛的被普及.将h265数据合成AVI的资料现在在网上也基本上没有.使用格式化工厂工具将h265数据封装成AVI格式,发现它在封 ...

  7. [转帖]Grafana连接oracle数据库插件

    Granfana作为前端监控显示程序提供了迅速图形化查看数据库数据的方式.虽然官网提供了部分免费数据库插件,但毕竟太少,最近需要在Oracle数据库上做项目,发现官方的oracle插件是收费的,几经周 ...

  8. [转帖]oracle rac后台进程和LMS说明

    本文摘抄录oracle官方文档,oracle rac使用的后台进程,用以备忘,记录之. About Oracle RAC Background Processes The GCS and GES pr ...

  9. [转帖]MySQL Decimal 的实现方法

    码: 背景 数字运算在数据库中是很常见的需求, 例如计算数量.重量.价格等, 为了满足各种需求, 数据库系统通常支持精准的数字类型和近似的数字类型. 精准的数字类型包含 int, decimal 等, ...

  10. [粘贴]使用 Dumpling 导出数据

    https://docs.pingcap.com/zh/tidb/stable/dumpling-overview#dumpling-%E4%B8%BB%E8%A6%81%E9%80%89%E9%A1 ...