目录

第一题 韩信点兵

题目

思路

AC

第二题 兰州烧饼

题目

思路

AC

第三题 进制转换

题目

思路

AC

第四题 第几天?

题目

思路

AC

第五题 成绩转换

题目

思路

AC


Hello,你好这是一个新的系列的开始,在这个系列种我将分为9个部分去带你刷一些C语言的编程练习题目,这些题目不论是对你以后的算法学习还是当下C语言学习,都有着很强的实践意义,也希望你可以将这个系列完整的看下来,相信你会有不少的收获。加油!

下面我们直接进入正题,希望你在读完题之后可以自己思考并尝试这写一下。

第一题 韩信点兵

题目

相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先 后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一 眼队伍的排尾就知道总人数了。输入 3 个非负整数 a,b,c ,表示 每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或 报告无解)。已知总人数不小于 10,不超过 100 。

输入 输入 3 个非负整数 a,b,c ,表示每种队形排尾的人数(a<3,b<5,c<7)。

例 如

输入:2 4

输出 输出总人数的最小值(或报告无解,即输出 No answer)。实例,输出: 89

思路

这道题目通过读题发现我们已知的消息是我们会得到三人,五人,七人一排时队伍排尾的人数,以此求出最小总人数;这道题目考察了我们对取余的掌握程度,也就是我们可以首先利用一个for循环,让数字从10不断向100递增,之后在每一个数时去判断,判断其数字对3,5,7取余的结果与我们已知的排尾数是不是相同的,如果三个都相同的话,我们就直接跳出循环输出即可,如果到99时仍然不行,那么就输出 No answer。

这里我们会用到一个 && ,&&:逻辑与,前后条件同时满足表达式为真。如果a&&b为真的话,那么a和b都应该为真才行。

AC

#include <stdio.h>
int main()
{int a ;int b ;int c ;int i ;scanf("%d%d%d",&a,&b,&c) ;for(i=10;i<=100;i++)    //从10开始递增 {if(i%3==a && i%5==b && i%7==c) //判断其是否全部满足队尾数 {printf("%d\n",i) ;break ;     //如果满足,跳出循环 }}if(i==101)       //如果自动循环结束,输出 No answerprintf("No answer\n") ;return 0;
}

第二题 兰州烧饼

题目

烧饼有两面,要做好一个兰州烧饼,要两面都弄热。当然,一次只 能弄一个的话,效率就太低了。有这么一个大平底锅,一次可以同 时放入 k 个兰州烧饼,一分钟能做好一面。而现在有 n 个兰州烧饼, 至少需要多少分钟才能全部做好呢?

输入

依次输入 n 和 k,中间以空格分隔,其中 1 <= k,n <= 100

输出

输出全部做好至少需要的分钟数

提示

如样例,三个兰州烧饼编号 a,b,c,首先 a 和 b,然后 a 和 c,最后 b 和 c, 3 分钟完

思路

这里一个饼子是要煎两次的,所以n个饼子我们要煎2n次;首先我们先判断饼子数量是否比锅容纳数量多,如果没有的话,我们只需花费两分钟去热一下正反面就好了;如果比锅所能容纳数量多的话,我们就用总次数去除以锅每次可以热的个数;但是这里我们得到的结果并不一定时最终答案,因为我们整形相除,最后结果是会将后面小数部分保留的,但是小数部分代表了这次锅并没有装满,但一样要花费一分钟,所以这时我们要判断一下,总次数与锅容量的模了,如果模不为0就直接++即可。

讲一下EOF的用法,我们在使用时通常是这样使用的:while(scanf("%d",&n) != EOF) ;                EOF全称是End Of File(C语言标准函数库中表示文件结束符),通常在文本的最后表示资料结束。C语言中数据都是以字符的ASCII代码值来存放的。ASCII代码值得范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。while(scanf("%d",&n) != EOF) 中while(A)语句中的事件A是正确即1,while(1){ },进行下一循环。scanf("%d",&n) != EOF什么时候为1呢?就是我们输入的数组他不等于EOF就可以。也就是说如果n可以正确读取,我们就可以进入下一个循环;当我们不输入n时,循环就终止。

AC

#include <stdio.h>
int main()
{int n ;int k ;int total ;int result ;while(scanf("%d%d",&n,&k)!=EOF){total=n*2;    //一个饼要热两次if(n<=k)   //如果锅一次能煎饼的个数比总个数多 {                //正面和反面不能同时热 printf("2\n");   // 直接花费两分钟去热正面和反面  continue;}//当锅一次能煎饼的个数没有总个数多时result=total/k ;  //将次数与一次可热数量直接进行相除 if(total%k!=0)   //最后一次热的饼数少于锅所能装整数 result++ ;     //由于我们用整型相除,所以末尾没有达到1的会舍去,但这些也要占用时间。 printf("%d\n",result);}return 0;}

第三题 进制转换

题目

输入一个十进制数 N,将它转换成 R 进制数输出。

输入

输入数据包含多个测试实例,每个测试实例包含两个整数 N(32 位整数) 和 R((2<=R<=16)。

输出 为每个测试实例输出转换后的数,每个输出占一行。如果 R 大于 10,则 对应的数字规则参考 16 进制(比如,10 用 A 表示,等等)

思路

进制也就是进制位,对于接触过电脑的人来说应该都不陌生,我们常用的进制包括:二进制、八进制、十进制与十六进制,它们之间区别在于数运算时是逢几进一位。比如二进制是逢2进一位,十进制也就是我们常用的0-9是逢10进一位。其他的同理。 好的,接下来就是进制之间的互相转换了。 二进制与十进制之间的转换

其实进制转换的方法大致如下:

1将十进制转换为r进制时,可将此数分为整数和小数两部分分别转换,然后拼接起来即可。

2整数部分转换为r进制数时,采用除r取余方法,即将十进制整数不断除以r取余数,直到商为0,所得的余数按逆序排列

3小数部分转换成r进制数时,采用乘r取整方法,即将十进制小数不断乘以r取整数,直到小数部分为0或达到要求的精度为止,所得的整数按正序排列。

4实际上,在我们的日常生活中,还会遇到很多计数法。如时间:60秒为1分,60分为1小时,它是60进制的。两根筷子为一双,两只手套为一幅,它们是二进制的。

5为了区分不同的进位制,我们有时常在数的右下角标明基数。但是十位制一般不标明基数。一般地,若k是一个大于1的整数。那么以k为基数的k位制可以表示为一串数字连写在一起的形式。

AC

#include <stdio.h>
int main()
{int number ;int system ;char s[50] ;int i ;int length ;int flag ;while((scanf("%d%d",&number,&system))!=EOF){i=0 ;flag=0 ;if(number<0){number=-number;    //负数转化为正数去进行转化 flag=1;}while(number){if(number%system<=9){s[i]=(number%system)+'0';    //通过进制的原理去按位进行分解 }else if(number%system==10)  //针对高进制 s[i]='A';else if(number%system==11)s[i]='B';else if(number%system==12)s[i]='C';else if(number%system==13)s[i]='D';else if(number%system==14)s[i]='E';else if(number%system==15)s[i]='F';number/=system ;   //降位数 i++ ;}length=i ;if(flag==1)printf("-") ;for(i=length-1;i>=0;i--)printf("%c",s[i]) ;printf("\n") ;}return 0;}

第四题 第几天?

题目

给定一个日期,输出这个日期是该年的第几天。

输入

输入数据有多组,每组占一行,数据格式为 YYYY/MM/DD 组成,具体参 见 sample input ,另外,可以向你确保所有的输入数据是合法的。

输出

对于每组输入数据,输出一行,表示该日期是该年的第几天。

思路

对于这道题目我们首先设置一个数组,用下标对应月份,每个月份的天数用数组元素去进行表示,

之后我们传入具体日次后,先将前面月份的天数相加上,之后我们在将当月已过的天数加上即可。

注意:我们在判断的时候要注意闰年的存在,这时2月会变的不一样。

AC

#include <stdio.h>
int main()
{
int a;
int b;
int c;
int i;
int day[13];
int sum;
day[1]=31;
day[2]=28;
day[3]=31;
day[4]=30;
day[5]=31;
day[6]=30;
day[7]=31;
day[8]=31;
day[9]=30;
day[10]=31;
day[11]=30;
day[12]=31;
while((scanf("%d/%d/%d",&a,&b,&c))!=EOF)
{
sum=0; //总天数
for(i=1;i<=b-1;i++)
sum+=day[i];  //每个月每个月的叠加
sum+=c;
if((a%400==0 || (a%4==0 && a%100!=0)) && b>=3) //判断是否为闰年以及是否使用的上2月
sum++;
printf("%d\n",sum);
}
return 0;
}

第五题 成绩转换

题目

输入一个百分制的成绩 M,将其转换成对应的等级,具体转换规则 如下:

90~100 为 A; 80~89 为 B; 70~79 为 C; 60~69 为 D; 0~59 为 E;

思路

对于这道题目我们采用if elseif语句去进行判断即可,我们首先从大向小判断,因为如果我们从小到大判断的话,成绩大于八十的可能大于九十,也有可能不大于九十,这样就会出错,但是当我们把成绩大于九十的提前去判断之后,那么剩下大于八十的就不会大于九十了。

AC

#include <stdio.h>
int main()
{int T;int n;char c;scanf("%d",&T);while(T--){scanf("%d",&n);if(n>=90)  //90 - 100成绩 c='A';else if(n>=80)    //80-90成绩 c='B';else if(n>=70)   //70-80成绩 c='C';else if(n>=60) //60-70成绩 c='D';else   //60以下成绩 c='E';printf("%c\n",c);}return 0;
}

好啦,第一部分的题目就那么多,相信你都会做啦吧,记得及时复习巩固,我们还会接着向下继续学习的。

【C语言基础】那些必会的编程练习题-第一部分相关推荐

  1. 【C语言基础】那些必会的编程练习题-第二部分

  2. 零基础python必背代码-编程零基础应当如何开始学习 Python?

    学Python,最高效的方法其实就是自学+自问+实战(海伦泰勒学习法的精简版). 本文分为3大板块,不仅要帮你0基础入门,还专门写了进阶内容. 进阶内容中这51个Python的秘密,你可不一定知道. ...

  3. Go语言基础之10--面向对象编程2之方法

    一.方法的定义 之前我们学习了结构体(struct),其仅仅是对数据的封装,并没有行为方法,还不是一个完全的面向对象的思路,所以现在我们来学习在结构体的基础上如何去定义一个方法.结构体(类)+方法=完 ...

  4. python语言基础(十三)面向对象编程(封装、继承、多态)

    面向对象的三大特征:封装.继承.多态. 封装 封装是面向对象编程的一大特点,将属性和方法放到类的内部,通过对象访问属性或者方法,隐藏功能的实现细节,也可以设置访问权限. class Student() ...

  5. C语言基础知识入门和C语言入门基础知识大全

    一.C语言基础知识入门 C语言一出现,就以其丰富的功能.强大的表达能力.灵活性.方便性和广泛的应用,在世界范围内迅速普及和普及.C语言不仅高效而且可移植.它可以用来开发应用软件.驱动程序.操作系统等. ...

  6. C语言基础:最简单的程序

    基本功无论在什么领域内都有着不容忽视的地位,想要学好编程,并将程序运动到实际当中去一定要学好基础,学好C语言基础,打下扎实的编程基本功,我们将带你走进编程的世界. 我是先完成的<C语言深处> ...

  7. 非科班出身MCU工程师,C语言基础重塑之路

    Past 作为一名物理出身的小趴菜,我在大学里,机缘巧合之下参加了几场竞赛,从此走上了人生码路.今天就在这里开始我的C语言基础重塑之路! Future 回想起来,我还是挺幸运的.网投简历,第一次面试就 ...

  8. c语言中的字符变量用什么保留字来说明,第1、2章C语言基础练习题

    第1章 C语言基础 第2章 顺序结构 练习题 学号: 姓名: 45. 已知 i=5;写出语句 i+=012; 执行后整型变量 i 的十进制值是[1]. 46. 已知 i=5.6;写出语句 a=(int ...

  9. C语言的叙述大小写字母e1相同,第1、2章C语言基础练习题

    第1章 C语言基础 第2章 顺序结构 练习题 学号: 姓名: 单选: 1. 当代电子计算机能够自动地处理指定的问题是因 为( ). A. 计算机是电动的 B. 有解决该问题的计算机程序 C. 事先存储 ...

最新文章

  1. c语言编程题及答案-难,C语言常见编程题及答案40题
  2. yum 安装redis默认目录_Centos7 安装redis 详细步骤
  3. python界面设计-手把手教你用Python设计一个简单的命令行界面
  4. @Autowired与@Resource的区别
  5. 用mapXtreme Java开发web gis应用 (上)
  6. IT兄弟连 JavaWeb教程 jQuery对AJAX的支持经典案例
  7. java对五排六列考生随机排座,Java入门第三季6-5扩展练习-随机字符串排序
  8. PyTorch命令行中执行python程序使用指定的GPU
  9. 多模态 | 复旦推出跨视觉语言模态预训练模型,并达到SOTA
  10. ubuntu 12.10 安装php5.4.8
  11. nii、npz、npy、dcm、mhd 的数据互转处理,及多目标分割处理汇总
  12. 大学四年因为读了这13本书,我成了别人眼中的大神!
  13. 如何在 Windows 中删除运行历史记录
  14. 做个火影般的架构师,阿里内网疯狂传阅的“M8级”分布式架构笔记
  15. python数据分析及可视化(九)pandas数据规整(分组聚合、数据透视表、时间序列、数据分析流程)
  16. 为什么选择DCT而不是DFT
  17. LazMall是什么?LazMall与lazada普通店铺有什么区别?怎么加入LazMall
  18. 创建SQL约束的方法
  19. 新编c语言程序设计实验钱雪忠答案,新编c语言程序设计教程机械工业出版社钱雪忠吕莹楠...
  20. Tomcat数据库连接池配置沤心沥血而作……

热门文章

  1. 使用内连接查询选修了Java程序基础_使用内连接 查询选修了“java程序基础”课程的学生学号、姓名、课程号、课程名和期末成绩_学小易找答案...
  2. VNCServer,SSH Secure Shell Client,window远程控制linux
  3. VS在windows10输入中文显示问号的问题
  4. 获取OpenGL版本号、双显卡切换技术代码实现(Optimus、NVAPI、CUDA)
  5. 诺基亚 2060java_不到500元的神机,诺基亚2060全五色真机图赏 - IT之家
  6. 倾角传感器组成和应用
  7. 学习javascript_为什么我不能学习JavaScript?
  8. [从头读历史] 第291节 神之物语 七英雄远征底比斯
  9. 我要大学答案———小程序开发指南 课后习题答案|实验报告|考研资料|期末真题的答案
  10. 范蠡《陶朱公生意经》