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. The UVALIVE 7716 二维区间第k小
  2. LINUX基本命令行手册一
  3. pytorch 归一化 测试(BatchNorm2d)
  4. LeetCode Reconstruct Original Digits from English
  5. python bottle web框架上传静态文件与加载静态文件
  6. 终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
  7. 归纳整理--第4篇--常用软件
  8. java8 streams_Java 8 Friday:使用Streams API时的10个细微错误
  9. Android WebKit
  10. BZOJ 3329: Xorequ(数位dp+递推)
  11. linux内核工程导论,Linux内核工程导论——内存管理(3)
  12. 从WINDOWS切换到LINUX后,JDBC MYSQL 中文存储变为问号问题
  13. [Python] itertools.islice(iterable, start, stop[, step]) 创建迭代器并返回所选元素
  14. opus在arm的嵌入式平台上的移植和开发
  15. 关于集合和字符串的互转
  16. ACR122U写卡软件v3.6绿色版
  17. 认识计算机听课记录20篇,【中学信息技术听课记录】 信息技术听课记录15篇及评析_初中信息技术听课记录_高中信息技术听课记录20篇_东城教研...
  18. 怎样设置网络工作组计算机,如何建立计算机工作组?
  19. 普渡大学计算机科学和计算机工程,老师能讲一下普渡大学西拉法叶分校电气与计算机工程怎么样?...
  20. linux 安装minio并设置开机自启动

热门文章

  1. Openstack删除虚机提示deleting状态无法删除
  2. Windows如何定制键盘按键
  3. [转载]关于QQ游戏外挂mouse_event不起作用的原因,及我的对对碰外挂程序.
  4. 零售贸易公司财务部门的5个痛点与RPA应用的4大场景
  5. 《图解HTTP》阅读笔记
  6. wordpress如何能实现直接粘贴把图片上传到服务器中
  7. 360极速浏览器一键操作 订单速记表selenium +requests爬取 openpyxl +xlrd 操作excel
  8. 水清冷冷:After Effects 2020(AE2020)图文版安装教程(附工具)
  9. 最新易企秀h5场景秀制作源码 含几百套模板+详细搭建教程
  10. 在wps里面怎么设置触发器_利用WPS演示中的触发器控制板书内容的方法