1.递归求阶乘

分析n!=1*2*...*n
那么我们有两种方法

  • 递归
    思路:根据阶乘的规律n!=n*(n-1)!
    定义函数 f(x),使函数返回x*f(x-1)的值,直到 n=1。经过函数调用本身求出结果。
    代码

    #include<stdio.h>
    int cnt(int n);//调用声明函数
    int main()
    {int n;scanf("%d",&n);printf("%d",cnt(n));return 0;
    }int cnt(int n)//定义声明函数
    {if(n>0)n*=cnt(n-1);else n=1;return n;
    }
    
  • 循环
    思路:由于n!=n*(n-1)*...*1,则从 a=1 开始,+1 之后与 a 相乘。
    代码

    #include<stdio.h>
    int main()
    {
    int n;
    scanf("%d",&n);
    int a=1; //a 要初始化为 1
    for(int i=1;i<=n;i++) //注意 i 应从 1 取到 n,因此判断条件为<=
    a=a\*i;
    printf("%d",a);
    return 0;
    }
    

2.分制转换

题目:给出一个百分制成绩,要求输出成绩等级‘A’(90 分及 90 分以上),‘B’(80 到 89 分),’C’(70 到 79 分),’D’(60 到 69 分),’E’(60 分以下)。
输入格式
百分制成绩,整数,例如,100,89
输出格式
等级制成绩,例如 A,B,C 等等
eg85 B
分析:这道题很简单,在我复习重写的时候发现比以前写的简洁了不少,因为用到了映射的思想,使分数由 5 类简化为三类:100 分,60 到 99 分,60 分以下。
代码

#include<stdio.h>
int main()
{
int s;
scanf("%d",&s);
s/=10;//成绩映射为 0-10
if(s==10)//10(满分)的情况
printf("A");
else if(s>=6)//将 6 到 9 转换为字母等级
printf("%c",('E'-s+5));
else printf("E");//小于 6(不及格)的情况
return 0;
}

3.判断是否为素数(<1000)

分析:素数为只能被 1 和自己整除的数,因此我们可以通过循环,从 2 开始遍历比数小的所有数。
优化
2 的倍数非素数,因此先判断是否为 2 的倍数。
判断某个数是否为因数时,可以一起决定多个数是否为因数。
比如判断 11 是否为素数,要从 2 到 9 判断,而 2 非因数,同时可以确定 6 到 10 也非因数,因为 2 乘这些数大于 11,因此不可能有比 2 大的数与 6 到 10 相乘得 11.
代码

#include<stdio.h>
int main()
{
int n;
int r=1; //用 r 记录是否为素数。1 为素数 0 非素数
scanf("%d",&n);
//大于 2 的偶数非素数
if((n/2>1)&&(n%2==0))
r=0;
//判断是否为素数
for(int i=3;r==1&&i\*i<=n;i+=2) //更新直接+2,因到只用判断奇数
{
if(n%i==0)
{
r=0;
break; //跳出 for 循环
}
}
//通过 r 的值(是否为素数)进行输出
if(r==0)
printf("NO");
else
printf("YES");
return 0;
}

4.今天是第几天

题目:输入三个整数为年月日 ,输出是那一年的第几天
eg:输入:1990 9 20 输出:263

#include<stdio.h>
int main()
{
int y,m,d;
scanf("%d%d%d",&y,&m,&d);
int r=d; //结果初始化为天数 d
for(int i=1;i<m;i++)//逐月增加天数:从 1 月加到 m-1 月
{
switch(i)
{
case 2:
r+=28;
break;
case 4:
case 6:
case 9:
case 11:
r+=30;
break;
default://31 天的月份较多放在 default 中
r+=31;
}
}
//判断平年闰年,若为闰年 2 月有 29 天,再加 1
if((y%400==0)||((y%4==0)&&(y%100!=0)))
r++;
printf("%d",r);
return 0;
}

5.按要求输出

题目:写一程序,输入为三行,第一行为整数 a、第二行为字符 c、第三行为整数 b。(0<a,b<100000)。
输出共四行。第一行依次输出 a,b,c,三个值之间用一个空格分隔;第二依次输出 a+b,a-b,a* b,a/b,a%b 的值,每个值之间用一个空格分隔;第三行输出 a 和 b 的比率(浮点数,精确到小数点后两位);第四行输出 a 和 b 的百分比率(浮点数,精确到小数点后两位)。具体格式见输出样例。
输入样例
12
b
234
输出样例
12 234 b
246 -222 2808 0 12
The ratio of 12 versus 234 is 0.05.
The ratio of 12 / 234 is 5.13%.
代码

#include<stdio.h>int main(){//输出控制字符:加\;输出%:%%long long a,b; //若对整型数字进行运算:用lldchar c;scanf("%lld",&a);scanf("\n%c",&c);
//scanf:1.按格式要求。2.输入非c时自动忽略前导空白符号,不用加\n。3.输入为c时会读入空白符号->如何解决上一行的换行符残留:加\n或用getcharscanf("%lld",&b);printf("%lld %lld %c\n",a,b,c);printf("%lld %lld %lld %lld %lld\n",a+b,a-b,a*b,a/b,a%b);printf("The ratio of %lld versus %lld is %.2lf.\n",a,b,(double)a/b);printf("The ratio of %lld / %lld is %.2lf%%.",a,b,100*(double)a/b);return 0;}

6.按要求输出

题目:一程序,输入依次为一个整数 a、一个浮点数 f、一个整数 b。(-10000<a,b,f<10000)。
输出共五行。第一行依次输出 a,f,b,每个数占位 10 个字符位,右对齐。任意两个数之间不添加空格,f 精确到小数点后一位;第二行依次输出 a,f,b,每个数占位 10 个字符位,带正负号,左对齐,f 精确到小数点后两位。任意两个数之间不添加空格。末尾输出字符串 Hello;第三行输出 35 个#;第四行依次输出 a,f,b,每个数占位 10 个字符位,包含正负号,右对齐,f 精确到小数点后两位,任意两个数之间不添加空格;第五行连续输出三组 0123456789。
输入样例
12 34.567 89
输出样例
12 34.6 89
+12 +34.57 +89 Hello
###################################
+12 +34.57 +89
012345678901234567890123456789
代码

#include<stdio.h>
int main()
{
int a,b;
double f;
scanf("%d %lf %d",&a,&f,&b); //double 类型输入用 lf
//+为整数时显示+;-左对齐(默认右对齐);%a.bf 保留小数点后 b 位,所占长度至少为 a
printf("%10d%10.1lf%10d\n",a,f,b);
printf("%-+10d%-+10.2lf%-+10dHello\n",a,f,b);
printf("###################################\n");
printf("%+10d%+10.2lf%+10d\n",a,f,b);
for(int i=0;i<3;i++)
printf("0123456789");
return 0;
}

7.温度转换

代码

#include<stdio.h>
//宏定义提高代码可读性
#define bei 1.8
#define cha 32
#define low -273.15
int main()
{double num;char c;scanf("%lf %c",&num,&c);if(c=='C'&&num>=low)printf("%.2lf F",num*bei+cha);else if(c=='F'&&(num-cha)/bei>=low)//计算转化后的是否满足高于绝对零度printf("%.2lf C",(num-cha)/bei);elseprintf("invalid");return 0;
}

8.浮点数比较

题目
输入只有一行,为三个用空格分隔的浮点数 a,b,c(0<a,b,c<100)
输出也只有一行,如果 a - b 等于 c ,则输出 yes,否则输出 no。
输入样例
3.4 2.2 1.3
输出样例
no
分析

  1. 浮点数输入用 double,防止数据过大 2.浮点数比较使用 fabs:
    相等:fabs(m-n)<=1E-6
    不等: fabs(m-n)>1E-6
    比较大小:(要满足大小关系且不相等)m>n&&fabs(m-n)>1E-6 或 m-n>1E-6
    原理:转化为 2 进制储存,只有可表示为 2 的幂与整数数乘的浮点数可准确表示,
    其余的数都是近似值
    代码

        #include<stdio.h>#include<math.h>//fabs函数需要引入数学库int main(){double a,b,c;scanf("%lf %lf %lf",&a,&b,&c);if(fabs(a-b-c)<1E-6)printf("yes");else printf("no");return 0;}
    

    问:如何判断两浮点数 a,b 的绝对值是否相等:
    fabs(fabs()-fabs())<1e-6>

9.交党费

题目:每月工资收入(税后)在 3000 元以下(含 3000 元)者,交纳月工资收入的 0.5%;3000 元以上至 5000 元(含 5000 元)者,交纳 1%;5000 元以上至 10000 元(含 10000 元)者,交纳 1.5%;10000 元以上者,交纳 2%。
现请你写一段程序来计算一下某在职教师党员某月应交党费额。
输入格式
只有一行,为一个浮点数 salary(0<salary<20000),为该教师该月的收入(税后)。
输出格式
只有一行,为该教师该月应交党费金额(保留 1 位小数)。
输入样例
3000
输出样例
15.0
代码

#include<stdio.h>
#include<math.h>
int main()
{
const double rate[4]={0.005,0.01,0.015,0.02};//党费比例写在数组中,代码可读性高
double s,d;
scanf("%lf",&s);
if(s<3000||fabs(s-3000)<=1E-6)//小于等于一个浮点数的判断方法
d=rate[0]*s;
else if(s<5000||fabs(s-5000)<=1E-6)
d=rate[1]*s;
else if(s<10000||fabs(s-10000)<=1E-6)
d=rate[2]*s;
else
d=rate[3]*s;
printf("%.1lf",d);
return 0;
}

10.

题目
一个皮球从 height(米)高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。问皮球在第 n 次落地时,在空中一共经过多少距离?第 n 次反弹的高度是多少?(输出保留 1 位小数)
输入格式
初始高度以及落地次数,都为正整数
输出格式
第 n 次落地时的总距离数和第 n 次反弹的高度,保留一位小数,具体见输出样例

输入样例
10 2
输出样例
distance=20.0,height=2.5
分析
过程看作循环,每次一上一下,反弹高度变为一半;第一次下落单算
代码

#include<stdio.h>
int main()
{double h;int t;scanf("%lf%d",&h,&t);double d=h;h/=2;//第一次下落:经过的路程d,反弹最大高度为初始高度的一半for(int i=1;i<t;i++){d+=2*h;//每完成上下一个过程,距离加上上次高度的二倍h/=2;}printf("distance=%.1lf,height=%.1lf",d,h);return 0;
}

几道简单的c语言编程题(1)相关推荐

  1. c语言编程一个乘法scanf,几道简单的c语言编程题

    几道基础C语言题 1.递归求阶乘 分析:n!=1*2*...*n 那么我们有两种方法 递归 思路:根据阶乘的规律n!=n*(n-1)! 定义函数f(x),使函数返回x*f(x-1)的值,直到n=1.经 ...

  2. c语言写程序思路考研题,快速解题 | 在考场C语言编程题

    原标题:快速解题 | 在考场C语言编程题 对于考<C语言程序设计>的小伙伴们来说,程序设计题是很多同学觉得相对较难的一个版块.其题目虽然不算多,但在考研150分的试卷中,却占据了较大的比重 ...

  3. c语言小学生加法考试题程序4,c语言编程题及答案.doc

    c语言编程题及答案.doc C C 语言编程题及答案(三)语言编程题及答案(三) 1. 给小学生出加法考试题 编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列 要求以循序渐 ...

  4. 灯泡四个闪烁c语言程序设计教程课后答案,c语言编程题及答案4.doc

    C C 语言编程题及答案 三 语言编程题及答案 三 1 给小学生出加法考试题 编写一个程序 给学生出一道加法运算题 然后判断学生输入的答案对错与否 按下列 要求以循序渐进的方式编程 程程序序 1 通过 ...

  5. c语言小学生加法考试题程序4,c语言编程题与答案4.doc

    c语言编程题与答案4 c语言编程题及答案(三) 1. 给小学生出加法考试题 编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列要求以循序渐进的方式编程. 程序1 通过输入两个 ...

  6. c语言ifmn除2余1,C语言编程题及答案 2

    <C语言编程题及答案 2>由会员分享,可在线阅读,更多相关<C语言编程题及答案 2(112页珍藏版)>请在人人文库网上搜索. 1.1请编写函数fun,其功能是:找出2M整型二维 ...

  7. 的c语言编程函数题,C语言编程题及答案Word版

    <C语言编程题及答案Word版>由会员分享,可在线阅读,更多相关<C语言编程题及答案Word版(122页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版文档 ,希望对您 ...

  8. 零基础学Java语言---编程题

    零基础学Java语言-编程题 注意:没有上机实际测过,代码仅供参考 1.温度转换 写一个将华氏温度转换成摄氏温度的程序,转换的公式是: °F = (9/5)*°C + 32 其中C表示摄氏温度,F表示 ...

  9. python分段函数输入x的值求y的值_C语言编程题 有一分段函数如下,要求用scanf函数输入整数x的值,求y值并在屏幕上输出。有分段函数如下,编程实现输入整...

    C语言编程题 有一分段函数如下,要求用scanf函数输入整数x的值,求y值并在屏幕上输出. 有分段函数如下,编程实现输入整 www.zhiqu.org 时间: 2020-11-22 #include ...

最新文章

  1. TVM在ARM GPU上优化移动深度学习
  2. R语言构建多元线性回归模型
  3. mysql补丁如何安装_神技_如何快捷下载Oracle补丁的方法?!
  4. CVE-2017-11882漏洞分析
  5. Python3 多线程的两种实现方式
  6. Exchange企业实战技巧(15)启用向外部联系人发送邮件时的提醒
  7. [译]ASP.NET Core中使用MediatR实现命令和中介者模式
  8. oracle 事务_从Oracle到PG-PostgreSQL的MVCC机制简介
  9. LeetCode 1662. 检查两个字符串数组是否相等
  10. ios 主题切换 思路_IOS主题切换ThemeManager
  11. 史上最全Redis总结,你想知道的都在这里啦
  12. Kotlin基础语法学习类和对象(一)
  13. 只有它才能让云计算、大数据、人工智能大放异彩?它究竟有什么魔力?
  14. elasticsearch 导入基础数据并索引之 geo_shape
  15. 使用SPA/GPA 参数--SAP内存参数设置SET /GET PARAMTER ID
  16. intel 傲腾内存与SSD HDD的对比
  17. [附源码]计算机毕业设计JAVA 宠物医院管理系统
  18. 图层蒙版和图层剪贴路径_剪贴蒙版,PS选择蒙版技巧都在这了
  19. 电商一定是一元化结构
  20. 【1字=16bits的原因,switch汇编详解,跳到中间 jump to middle,guarded-do门卫】

热门文章

  1. [人工智能-深度学习-41]:开发环境 - GPU进行训练安装与搭建(Pytroch、TensorFlow、Nvidia CUDA)详细过程
  2. Safe.Software.FME.Desktop/Server..v2017.0.17291+DNV Phast Safeti v6.51 DNV Technical公司的安全计算软件
  3. IDEA 【强制推送】(Force Push)为灰色不能点击 解决办法
  4. php中floatval是什么意思,【后端开发】php floatval()函数的用法详解
  5. 余光中:选对了妻子,儿女也对了;选对了书,人生也对了丨好书优选
  6. BotFramework-WebChat 实现点击标签发送消息
  7. QQ游戏外挂制作教程 (对对碰)
  8. 20211209_惠普光影精灵3使用U盘重装Windows11, 并修复造成的两个问题: 一是重装win11系统后导致的手势操作消失; 二是装成了双系统;
  9. 使用josm绘制室内地图及路径(二)
  10. metasploit中msf框架以及更新