C语言经典代码(1-8)

来源:互联网 发布:卡普顿大学知乎 编辑:程序博客网 时间:2024/05/21 10:10

题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

/*【程序1】 题目:有1234个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1234。组成所有的排列后再去掉不满足条件的排列。 */#include <stdio.h>int main(){ int a,b,c,count=0; for(a=1;a<5;a++) {     for(b=1;b<5;b++)     {         for(c=1;c<5;c++)         {                      if(a!=b&&b!=c&&a!=c)             {                     printf("%d%d%d\n",a,b,c);                     count++;             }         }     } } printf("count=%d\n",count);  return 0;}

九九乘法

/*输9*9口诀。共99列,i控制行,j控制列。*/#include<stdio.h>int main(){    int i,j;    for(i=1;i<10;i++)    {        for(j=1;j<=i;j++)        {            printf("%d*%d=%d ",i,j,i*j);        }        printf("\n");    }}

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
兔子的规律为数列1,1,2,3,5,8,13,21….

/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?兔子的规律为数列1,1,2,3,5,8,13,21....*/ #include<stdio.h>int f (int n){     if(n==1||n==2)     return 1;     if( n > 2 )     return f (n-1) + f (n-2); } int main() {     int i = 0,n;    scanf("%d",&n);    for(i=1; i<=n; i++)     {       printf("%d ",f (i));      if(i%5==0)      {          printf("\n");      }    }     return 0; } 

判断素数

/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,     则表明此数不是素数,反之是素数。*/ #include<stdio.h>#include<math.h>void main(){ int i,j,flag,m,count=0; for(i=101;i<200;i=i+2)//偶数不可能是素数。 {     flag=0;     m=sqrt(i);//减少计算次数。     for(j=2;j<=m;j++)           if(i%j==0)           {                flag=1;                break;           }            if(flag==0)            {              count++;//用来计数的。              printf("%d ",i);            } }  printf("\n素数的个数为%d\n",count);}

一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
   找出100以内的所有完数。

#include <stdio.h> int main(){    int i, j, sum;    /*        第一个循环,检查从1到1000中的每一个数字是不是完数        如果是完数,输出完数和它所有的因子    */    for( i = 1; i <= 100; ++i )    {        /*            检查该数字是否是完数            方法:从1到i-1,依次取余,余数为0,说明是它的公约数,                累加公约数,最后的值如果等于i,这说明i就是完数。        */        sum = 0;        for( j = 1; j < i; ++j )        {            if( i%j == 0 )            {                sum += j;                }        }        if( sum == i )        {            printf( "完数是:%d,它的因子是:", i );            /*                 这个for循环是将其所有因子取出                和第22行的for循环思路是一样的                   */            for( j = 1; j < i; ++j )            {                if( i%j == 0 )                {                    printf( "%d ", j );                }            }             printf( "\n" );        }      }     return 0;}

题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

#include <stdio.h> int main(){   int num,reward;//num是利润,reward是奖金总数   scanf("%d",&num);   int reward1=100000*0.1;   int reward2=reward1+100000*0.075;   int reward3=reward2+200000*0.05;   int reward4=reward3+200000*0.03;   int reward5=reward4+400000*0.15;   if(num<=100000)       reward=num*0.1;   else if(num<=200000)       reward=reward1+(num-100000)*0.075;   else if(num<=400000)       reward=reward2+(num-200000)*0.05;   else if(num<=600000)       reward=reward3+(num-400000)*0.03;   else if(num<=1000000)       reward=reward4+(num-400000)*0.015;   else       reward=reward5+(num-1000000)*0.01;   printf("%d\n",reward);    return 0;}

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

#include <stdio.h> #include<math.h>int main(){   int num;   int x,y;   for(num=1;num<100000;num++)   {       x=sqrt(num+100);       y=sqrt(num+268);       if(x*x==num+100&&y*y==num+268)           printf("%d\n",num);   }    return 0;}

输入某年某月某日,判断该天是该年的第几天。

#include <stdio.h> int main(){   int day,month,year;   int days=0;   int leap;   scanf("%d%d%d",&year,&month,&day);   switch(month)   {   case 1:days=0;break;   case 2:days=31;break;   case 3:days=59;break;   case 4:days=90;break;   case 5:days=120;break;   case 6:days=151;break;   case 7:days=181;break;   case 8:days=212;break;   case 9:days=243;break;   case 10:days=273;break;   case 11:days=304;break;   case 12:days=334;break;   default: printf("输入错误!");break;   }   days=days+day;    if((year%4==0||year%100!=0)&&(year%400==0))       {           leap=1;       }       else           leap=0;       if(leap==1&&month>2)        days=days+1;   printf("%d年%d月%d日有%d天",year,month,day,days);    return 0;}
阅读全文
0 0