前言:

备赛蓝桥杯,大学电子设计大赛,C语言提高,算法准备,定位大厂刷题,所以每天一练,不是很适合新手,适合长期规划有一定基础的同学跟上,每日文档由三部分组成,基础题(适合备赛国二),趣味题(适合有兴趣的同学),经典算法题(适合更高要求)组成。当然本意是记录自己训练的过程,基础题基本能做出来,能给自己一个正面回馈,趣味题可以培养兴趣,经典算法题用于真正来训练自己,开眼见长见识,在遇到困难的问题有更好的解决办法,最关键是每天三个题充分利用了零碎时间,细水才能长流,共勉坚持!!!!

基础题:

题目:从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。

1.程序分析:

2.程序源代码:

#include "stdio.h" main() { FILE *fp; char ch,filename[10]; scanf("%s",filename); if((fp=fopen(filename,"w"))==NULL) {printf("cannot open file\n"); exit(0);} ch=getchar(); ch=getchar(); while(ch!='#') {fputc(ch,fp);putchar(ch); ch=getchar(); } fclose(fp); }

趣味题:

37.爱因斯坦的数学题

爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最最后剩一阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问这条阶梯共有多少阶?

*问题分析与算法设计

根据题意,阶梯数满足下面一组同余式:
x≡1 (mod2)
x≡2 (mod3)
x≡4 (mod5)
x≡5 (mod6)
x≡0 (mod7)

*程序说明与注释

#include<stdio.h>
int main()
{int i=1; /*i为所设的阶梯数*/
while(!((i%2==1)&&(i%3==2)&&(i%5==4)&&(i%6==5)&&(i%7==0)))
++i; /*满足一组同余式的判别*/
printf("Staris_number=%d\n",i);
}

*运行结果
Staris_number=119

*问题的进一步讨论

此题算法还可考虑求1、2、4、5的最小公倍数n,然后判t(t为n-1)≡0(mod7)是否成立,若不成立则t=t+n,再进行判别,直至选出满足条件的t值。请自行编写程序实现

经典算法题:

37.快速排序法(一)

说明
快速排序法(quick sort)是目前所公认最快的排序方法之一(视解题的对象而定),虽然快速排序法在最差状况下可以达O(n2),但是在多数的情况下,快速排序法的效率表现是相当不错的。
快速排序法的基本精神是在数列中找出适当的轴心,然后将数列一分为二,分别对左边与右边数列进行排序,而影响快速排序法效率的正是轴心的选择。
这边所介绍的第一个快速排序法版本,是在多数的教科书上所提及的版本,因为它最容易理解,也最符合轴心分割与左右进行排序的概念,适合对初学者进行讲解。
解法
这边所介绍的快速演算如下:将最左边的数设定为轴,并记录其值为 s
廻圈处理:
令索引 i 从数列左方往右方找,直到找到大于 s 的数
令索引 j 从数列左右方往左方找,直到找到小于 s 的数
如果 i >= j,则离开回圈
如果 i < j,则交换索引i与j两处的值
将左侧的轴与 j 进行交换
对轴左边进行递回
对轴右边进行递回

透过以下演算法,则轴左边的值都会小于s,轴右边的值都会大于s,如此再对轴左右两边进行递回,就可以对完成排序的目的,例如下面的实例,表示要交换的数,[]表示轴:
[41] 24 76
 11 45 64 21 69 19 36*
[41] 24 36 11 45* 64 21 69 19* 76
[41] 24 36 11 19 64* 21* 69 45 76
[41] 24 36 11 19 21 64 69 45 76
21 24 36 11 19 [41] 64 69 45 76

在上面的例子中,41左边的值都比它小,而右边的值都比它大,如此左右再进行递回至排序完成。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10
#define SWAP(x,y) {int t; t = x; x = y; y = t;} void quicksort(int[], int, int); int main(void) { int number[MAX] = {0}; int i, num;  srand(time(NULL)); printf("排序前:"); for(i = 0; i < MAX; i++) { number[i] = rand() % 100; printf("%d ", number[i]); } quicksort(number, 0, MAX-1); printf("\n排序后:"); for(i = 0; i < MAX; i++) printf("%d ", number[i]); printf("\n"); return 0;
} void quicksort(int number[], int left, int right) { int i, j, s; if(left < right) { s = number[left]; i = left; j = right + 1; while(1) { // 向右找while(i + 1 < number.length && number[++i] < s) ;  // 向左找  while(j -1 > -1 && number[--j] > s) ;  if(i >= j) break; SWAP(number[i], number[j]); } number[left] = number[j]; number[j] = s; quicksort(number, left, j-1);   // 对左边进行递回 quicksort(number, j+1, right);  // 对右边进行递回 }
}

后续

有更优秀的解法和更优秀的训练题评论区留言,多交流!!!

C/C++语言基础进阶算法备赛面试 经典、实用、趣味 程序设计编程300例精解每日一练第37天相关推荐

  1. C语言趣味程序设计编程百例精解

    C/C++语言经典.实用.趣味程序设计编程百例精解(1)  1.绘制余弦曲线 在屏幕上用"*"显示0~360度的余弦函数cos(x)曲线 *问题分析与算法设计 如果在程序中使用数组 ...

  2. C/C++语言经典、实用、趣味程序设计编程百例精解(2)

    11.打鱼还是晒网  中国有句俗语叫"三天打鱼两天晒网".某人从1990年1月1日起开始"三天打鱼两天晒网",问这个人在以后的某一天中是"打鱼&quo ...

  3. C/C++语言经典、实用、趣味程序设计编程百例精解(3)

    位反序数 设N是一个四位数,它的9倍恰好是其反序数,求N.反序数就是将整数的数字倒过来形成的整数.例如:1234的反序数是4321. *问题分析与算法设计 可设整数N的千.百.十.个位为i.j.k.l ...

  4. c语言趣味程序设计编程100例精解,c趣味编程100例

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include #include #include #include #include #include using ...

  5. C语言趣味程序百例精解

    1.绘制余弦曲线 在屏幕上用"*"显示0~360度的余弦函数cos(x)曲线 *问题分析与算法设计 如果在程序中使用数组,这个问题十分简单.但若规定不能使用数组,问题就变得不容易了 ...

  6. C语言基础排序算法-选择排序

    C语言基础排序算法-选择排序 什么是选择排序? 选择排序(Selection sort)是一种简单直观的排序算法,第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从 ...

  7. C语言基础排序算法-冒泡排序

    C语言基础排序算法-冒泡排序 什么是冒泡排序? 顾名思义,这种排序方法就像水中的气泡一样,从底逐渐往上冒,一次前进一步.我们来看一个例子,看看到底是怎么冒泡的.假设有一个数组3,2,5,4,1,我们希 ...

  8. C语言基础-基本算法

    C语言基础-基本算法 在之前的两篇文章中介绍了C语言的入门程序入门程序1,入门程序2,从这篇文章我们就开始介绍C语言基础. 今天来给大家介绍算法的特性和算法的表示. 算法的基本特性 算法包含两方面的内 ...

  9. c语言趣味教学题目及答案,C语言趣味程序设计-题目百例.doc

    C语言趣味程序设计-题目百例 Contest - 2011级C语言课程大作业Start Time: 2012-02-19 16:25:00 End Time: 2012-03-01 22:00:00C ...

最新文章

  1. linux下安装wpasupplicant及配置
  2. matlab基本操作--基本数学定义
  3. url-pattern配置
  4. iptables 流量速率控制
  5. 【Python基础】14_Python中的TODO注释
  6. C#-面向对象的多态思想 ---ShinePans
  7. TensorFlow 2学习和工业CV领域应用 心得分享
  8. c++ log函数_高斯拉普拉斯算子(Laplacian of Gaussian, LoG)
  9. [LeetCode] 144. Binary Tree Preorder Traversal Java
  10. C++ 单链表基本操作
  11. 为Google Reader守夜。。。
  12. 阿里云云计算 11 ECS初体验-- 动手实验
  13. DBCC CHECKDB 数据库或表修复
  14. 小学计算机集体备课,信息技术集体备课总结
  15. 如何用Python快速计算股票的Beta系数并排序存入Excel表中
  16. 凸集 凸函数 判定凸函数
  17. 2019腾讯区块链白皮书:产业区块链的破局之路
  18. centos 6.6 安装图形界面 X server gnome Xwindows
  19. Unity常用设计模式之代理模式
  20. 网卡设置监听模式,抓取数据包

热门文章

  1. 7.9 矩阵的PLUP’分解
  2. jQuery遍历的几种方式
  3. 设置Apache服务器的重定向
  4. 关于php一句话木马
  5. 操作系统,为何只有阿里坚持下来?
  6. 手绘效果图与电脑效果图制作哪个好
  7. PHP和ajax请求_php ajax请求和返回
  8. VK3601SS单键触摸LED调光IC 无极三段亮度调节芯片资料分享
  9. 大学生HTML CSS动漫主题网页制作——刀剑神域(6页) dreamweaver作业静态HTML网页设计
  10. Java寒假学习Day8:Java中的方法