【C】Practise1

news/2024/7/3 13:35:43 标签: c, float, 算法
cle class="baidu_pl">
cle_content" class="article_content clearfix">
content_views" class="htmledit_views"> color:rgb(51,51,51); line-height:21px">

color:rgb(85,0,255); font-family:宋体">【练手1】几个小习题

#include  <stdio.h>

#include  <math.h>

void main()

{

       void PrintScores();//functionsPrototype declarations

       void CalculateMultip();

       void LeapYear(unsigned,unsigned);

       void SequenceCal(int);

       void JudgePrimeNumber();

       void ComDivisorAndMultiple();

 

       CalculateMultip();//functions call

       PrintScores();

       LeapYear(2000, 2500);

       SequenceCal(10);

       JudgePrimeNumber();

       ComDivisorAndMultiple();

}

color:rgb(255,0,127)">///eg6.color:rgb(255,0,127); font-family:宋体">最大公约数与最小公倍数color:rgb(255,0,127)">/

倍数和约数:两个自然数ac;bc;若a能被b整除࿰c;则a为倍数࿰c;b为约数

void ComDivisorAndMultiple()

{

       unsigned  m= 0, n = 0, M_Divisor, N_Divided, res = 0, MinMultiple =0;

       scanf("%d%d", &m, &n);

 

       if(m>0 && n>0)

       {

              if(m > n)

              {

                     M_Divisor      =     m;

                     N_Divided      =     n;    

              }

              else

              {

                     M_Divisor      =     n;

                     N_Divided      =     m;          

              }

              res   =     M_Divisor%N_Divided;

              while(res != 0)

              {

                     M_Divisor      =     N_Divided;

                     N_Divided      =     res;

                     res   =     M_Divisor%N_Divided; 

              }

              printf("The Max CommonDivisor is:%d\n", N_Divided);

              MinMultiple    =     (m * n)/N_Divided;

              printf("The Min CommonMultiple is:%d\n", MinMultiple);

       }

       else

              printf("Error!\n");

}

color:rgb(255,0,127)">/P17.eg5,color:rgb(255,0,127); font-family:宋体">判素数color:rgb(255,0,127)">//

素数:1)只能被1和自身整除的数!2)判别范围2~sqrt(n)截止!

#define    PrimeNum      10

void JudgePrimeNumber()

{

       unsigned  i,j, PrimeNumber[PrimeNum], Flag = 0, PrimeJudge;

       for(i=0; i<PrimeNum; i++)

              scanf("%d",&PrimeNumber[i]);

       for(i=0; i<PrimeNum; i++)

       {

              /*///*for(j=2; j<10;j++)        

              {

                     if(PrimeNumber[i]%j ==0)//1.判据错误!25.26.disabled

                            Flag++;   

              }

              if((2 == Flag) || (1 == Flag))

                     printf("ThePrimeNumber is:%d\n", PrimeNumber[i]); 

              else         

                     printf("The Otheris:%d***\n", PrimeNumber[i]);                     

              Flag =     1;///*/

 

              PrimeJudge     =     (unsigned)sqrt(PrimeNumber[i]);

              for(j=2; j<=PrimeJudge; j++)

              {

                     if(PrimeNumber[i]%j == 0)

                            Flag++;

              }

              if(Flag ||  (1==PrimeNumber[i]))

                     printf("The Otheris:%d***\n", PrimeNumber[i]);       

              else

                     printf("ThePrimeNumber is:%d\n", PrimeNumber[i]); 

              Flag =     0;

       }

}

 

color:rgb(255,0,127)">/P17.eg4,color:rgb(255,0,127); font-family:宋体">求和数列color:rgb(255,0,127)">//

新手࿰c;易忽略的细节比较多啊~

void SequenceCal(int Count)

{

       int           i;     //2.Sum必须初始化࿰c;否则为乱码!

       float Sum= 0, Num;      //3.Sum, Num不能作为int

       for(i=1; i <= Count; i++)//1.i=0时会蹦出调试界面࿰c;提示遇到问题要关闭!因为0不能作分母!!!

       {

              Num = (float)(1.0/i);//0不能作分母!!!//4.不能写作(1/ic;否则得到的是整数0

              if(i%2)    

                     Sum += Num;               

              else

                     Sum -= Num;                       

              printf("%f, %f\n", Num,Sum);

       }

color:rgb(255,0,127)">/P16.eg3,color:rgb(255,0,127); font-family:宋体">判断闰年color:rgb(255,0,127)">//

1.能被4整除࿰c;但不能被100整除;

2.能被100整除࿰c;且能被400整除;

条件之一满足即可!

voidLeapYear(unsigned StartYear, unsigned EndYear)

{

       unsigned star, LeapYearNum = 0;

       for(star = StartYear; star <= EndYear;star++)

       {

              if(((0 == star%4) &&(star%100)) || (0 == star%400))

              {

                     printf("%d\n",star);

                     LeapYearNum ++;

              }

       }

       printf("********%d********\n",LeapYearNum);

}

 

color:rgb(255,0,127)">//P15,eg2.color:rgb(255,0,127); font-family:宋体">打印color:rgb(255,0,127)">80color:rgb(255,0,127); font-family:宋体">分以上的学生color:rgb(255,0,127)">/

#define    STDNUM       5//define never has ";"

 

struct      student

{

       unsigned  Num;

       unsigned  Score;

       char        Name[20];

}std[STDNUM];

 

 

voidPrintScores()

{

       unsigned  i;

       for(i=0; i<STDNUM; i++)            

              scanf("%d,%d,%s",&std[i].Num, &std[i].Score, &std[i].Name);

       for(i=0; i<STDNUM; i++)     

              if(std[i].Score < 80)

                     printf("%d,%d,%s\n",std[i].Num, std[i].Score, std[i].Name);

 

}

color:rgb(255,0,127)">///P15,eg.1color:rgb(255,0,127); font-family:宋体">【color:rgb(255,0,127)">ncolor:rgb(255,0,127); font-family:宋体">的阶乘color:rgb(255,0,127)">n!color:rgb(255,0,127); font-family:宋体">】color:rgb(255,0,127)">///

void  CalculateMultip()

{

       unsigned long  Sum, SumOdd, SumEven, i, Number;

       Sum =     SumOdd  =SumEven     =     1;

       scanf("%d", &Number);

       for(i=1; i<=Number; i++)

       {

              Sum *=   i;//n!

              printf("%d\n", Sum);

       }

       for(i=1; i<=Number; i++)

       {

              if(i%2)

              {

                     SumOdd  *=   i;

                     printf("%d***\n",SumOdd);//1*3*5*7*9...

              }

              else

              {

                     SumEven *=   i;

                     printf("%d\n",SumEven);//2*4*6*8*10...

              }

       }

}

 

说明:

输入两个正整数mn,求其最大公约数和最小公倍数

<1>color:rgb(255,0,0); font-family:宋体">辗转相除法求最大公约数

算法描述: mn求余为a, a不等于0 ;m <- n, n <- a, 继续求余 ;否则为最大公约数

<2>最小公倍数 = 两个数的积最大公约数

 

★ 关于辗转相除法搜了一下,在我国古代的《九章算术》中就有记载࿰c;现摘录如下

 

约分术曰:可半者半之࿰c;不可半者࿰c;副置分母、子之数࿰c;以少减多࿰c;更相减损࿰c;求其等也。以等数约之。” 

 

其中所说的等数c;就是最大公约数。求等数的办法是更相减损法࿰c;实际上就是辗转相除法。

 

辗转相除法求最大公约数࿰c;是一种比较好的方法࿰c;比较快。

 

<3>color:rgb(255,0,0); font-family:宋体">欧几里德算法(辗转相除法)求两个数的最大公约数的步骤如下:

先用小的一个数除大的一个数࿰c;得第一个余数;

再用第一个余数除小的一个数࿰c;得第二个余数;

又用第二个余数除第一个余数࿰c;得第三个余数;

这样逐次用后一个数去除前一个余数࿰c;直到余数是0为止。那么࿰c;最后一个除数就是所求的最大公约数(如果最后的除数是1c;那么原来的两个数是互

质数)。

例如求1515600的最大公约数࿰c;

第一次:用6001515c;商2315

第二次:用315600c;商1285

第三次:用285315c;商130

第四次:用30285c;商915

第五次:用1530c;商20

1515600的最大公约数是15

 

<4>两个正整数的最小公倍数=两个数的乘积÷两个数的最大公约数

由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。这就是说࿰c;求两个数的最小公倍数࿰c;可以先求出两个数的最大公约数࿰c;再用这两个

数的最大公约数去除这两个数的积࿰c;所得的商就是两个数的最小公倍数。

 10542的最小公倍数。

因为10542的最大公约数是21c;

10542的积是4410c;4410÷21210c;

所以࿰c;10542的最小公倍数是210

 

 

#include<math.h> 

int 

intabs(int x); 


 long 

longlabs(int x); 

 

浮点数 float double 

doublefabs(double x); 

cle>

http://www.niftyadmin.cn/n/520827.html

相关文章

【专题2:qt工程师】 之 【33.工具栏】

嵌入式工程师成长之路 系列文章 总目录希望本是无所谓有&#xff0c;无所谓无的&#xff0c;这正如脚下的路&#xff0c;其实地上本没有路&#xff0c;走的人多了&#xff0c;也便成了路原创不易&#xff0c;文章会持续更新文章会同步到作者个人公众号上&#xff0c;感谢扫码关…

温故而知新呀~

一周的时间完成了一本专业书&#xff0c;曾学过、曾用过&#xff0c;结果用了那么久才看完&#xff0c;真是汗颜&#xff01; 回顾了一遍&#xff0c;才发现&#xff0c;曾经所谓的学习是如此的随意&#xff0c;曾经工作中以为的收获、以为的没学过&#xff0c;原来这里都有了…

html简单的任务管理系统实现,使用禅道来进行项目任务管理

也许您刚刚看到禅道的界面&#xff0c;心里说&#xff0c;哇&#xff0c;这么多功能。是不是有些复杂了&#xff1f;我们想说的是&#xff0c;禅道的定位不是那种简单的任务管理软件&#xff0c;而是专业的协同管理软件。研发类的项目管理本身具有其复杂性&#xff0c;所以禅道…

【专题2:电子工程师 之 上位机】 之 【34.状态栏】

嵌入式工程师成长之路 系列文章 总目录希望本是无所谓有&#xff0c;无所谓无的&#xff0c;这正如脚下的路&#xff0c;其实地上本没有路&#xff0c;走的人多了&#xff0c;也便成了路原创不易&#xff0c;文章会持续更新文章会同步到作者个人公众号上&#xff0c;感谢扫码关…

【数学】三角函数性质及公式

http://www.fff-cn.com/xxgj/gzsxhsgs.html 数学学习好网站 http://www.verycd.com/topics/16786/ 数据结构学习好网站 一.三角函数的性质 函数 类型 正弦函数 y sin x 余弦函数 y cos x 正切函数 y tan x 函数 值域 [-1&#xff0c;1] [-1&#xff0c;1] R 函数 定…

html写树形列表代码,JS无限树状列表实现代码

tree.js/********************************树形组织框架列表v1.02011年1月6日作者&#xff1a;flycrosscloud********************************///初始化框架var allImages {HasNodeClose: "", //包含子节点&#xff0c;闭合状态(不是最后一个) HasNodeOpen: "…

【专题2:电子工程师 之 上位机】之 【35.QMainWindow】

嵌入式工程师成长之路 系列文章 总目录希望本是无所谓有&#xff0c;无所谓无的&#xff0c;这正如脚下的路&#xff0c;其实地上本没有路&#xff0c;走的人多了&#xff0c;也便成了路原创不易&#xff0c;文章会持续更新文章会同步到作者个人公众号上&#xff0c;感谢扫码关…

【化学】元素周期表

【故事】 侵 害从前&#xff0c;有一个富裕人家&#xff0c;用鲤鱼皮捧碳&#xff0c;煮熟鸡蛋供养着有福气的奶妈&#xff0c;这家有个很美丽的女儿&#xff0c;叫桂林&#xff0c;不过她有两颗绿色的大门牙&#xff08;哇&#xff0c;太恐怖了吧&#xff09;&#xff0c…