C语言入门习题训练.docx

上传人:b****7 文档编号:11389792 上传时间:2023-02-28 格式:DOCX 页数:51 大小:30.57KB
下载 相关 举报
C语言入门习题训练.docx_第1页
第1页 / 共51页
C语言入门习题训练.docx_第2页
第2页 / 共51页
C语言入门习题训练.docx_第3页
第3页 / 共51页
C语言入门习题训练.docx_第4页
第4页 / 共51页
C语言入门习题训练.docx_第5页
第5页 / 共51页
点击查看更多>>
下载资源
资源描述

C语言入门习题训练.docx

《C语言入门习题训练.docx》由会员分享,可在线阅读,更多相关《C语言入门习题训练.docx(51页珍藏版)》请在冰豆网上搜索。

C语言入门习题训练.docx

C语言入门习题训练

 

/*【程序1】

题目:

古典问题:

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,

假如兔子都不死,问每个月的兔子总数为多少?

兔子的规律为数列1,1,2,3,5,8,13,21*/

#include<>

voidmain()

{

      inta,b,t,p,sum,month;

      a=1;

      b=1;

 

      printf("Pleaseenterthemonth:

");

      scanf("%d",&month);

      printf("Thereare2rabbits.\n");

 

      for(a=0,b=1,t=0,p=0,sum=0;month>1&&p

             {

             

             t=a+b;

             a=b;

             b=t;

                    

             sum=t*2;

             printf("Thereare%drabbits.\n",sum);

             }

      

}

 

 

 

/*【程序2】

题目:

判断101-200之间有多少个素数,并输出所有素数。

1.程序分析:

判断素数的方法:

用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

*/

#include<>

voidmain()

{

      inta,amount;

 

      for(amount=0,a=101;100

      {

             if(a%2!

=0)

             {

                    amount=amount+1;

                    printf("a=%d\t",a);

             }

      }

}

 

      

 

/*【程序3】

题目:

打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。

例如:

153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

1.程序分析:

利用for循环控制100-999个数,每个数分解出个位,十位,百位。

*/

#include<>

voidmain()

{

      inta,b,c,i;

 

      

 

      for(i=100;i>99&&i<1000;i++)

      {

             a=i/100;

         b=(i-a*100)/10;

         c=(i-a*100-b*10);

             if(a*a*a+b*b*b+c*c*c==i)

                    printf("i=%d\n",i);

      }

}

 

 

 

/*【程序4】

题目:

将一个正整数分解质因数。

例如:

输入90,打印出90=2*3*3*5。

程序分析:

对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

*/

 

#include<>

 

voidmain()

{

      inta,i,j;

 

      printf("Pleaseenteryournumber:

\n");

   scanf("%d",&a);

      printf("%d=1",a);

   for(i=2,j=0;i<=a;i++)

      {

             for(;a%i==0;)

             {

                    j=i;

                    printf("*%d",j);

                    a=a/j;

             }

             

             

      }

      printf("\n");

}

 

 

 

/*

【程序5】

题目:

利用条件运算符的嵌套来完成此题:

学习成绩>=90分的同学用A表示

,60-89分之间的用B表示,60分以下的用C表示。

1.程序分析:

(a>b)?

a:

b这是条件运算符的基本例子。

*/

 

 

#include<>

voidmain()

{

      intscore;

 

      printf("Pleaseenterthescore:

");

      scanf("%d",&score);

      (score>=90)?

printf("A\n"):

(score>=60&&score<=89)?

printf("B\n"):

printf("C\n");

      

}

 

 

 

 

/*

【程序8】

题目:

求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

例如2+22+222+2222+22222(此时共有5个数相加)

,几个数相加有键盘控制。

1.程序分析:

关键是计算出每一项的值。

 

 */

 

 

#include<>

voidmain()

{

      inta,b,i,j,e,sum;

 

      printf("Pleaseenterthea:

");

      scanf("%d",&a);

      printf("Pleaseenterthetimes:

");

      scanf("%d",&b);

      for(i=1,sum=0;i<=b;i++)

      {

             for(j=1,e=1;j<=i;j++)

             {

                    e=e*10+1;

                    

             }

             sum=e*a+sum;

      }

      printf("sum=%d\n",sum);

}

Clanguage入门习题训练

(二)  

2010-12-0400:

29:

53|  分类:

 |字号 订阅

 

/*1已知银行整存整取存款不同期限的月息利率分别为:

已知银行整存整取存款不同期限的月息利率分别为:

%期限一年

%期限二年

%期限三年

%期限五年

%期限八年

要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。

*/

#include<>

voidmain()

{

      floatmoney,year;

      floata=;

      inti;

 

      printf("Pleaseenteryourmoney:

\n");

      scanf("%f",&money);

      printf("Pleaseenteryouryear:

\n");

      scanf("%f",&year);

     a=+a+*year;

      for(i=1;i

      {

             money=a*money;

      }

 

      printf("money=%f",money);

}

 

 

 

 

键盘输入十个整数,用插入法对输入的数据按照从小到大的顺序进行排序,将排序后的结果输出。

 

 

#include<>

 

intmain()

{

      inta[10];

      inti,j,t;

 

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

      {

             printf("Pleaseenterthenumber:

");

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

      }

      

      for(j=0;j<10;j++)

      {(注意,在此处j是数组的下标,i是其后剩余的需要被一一进行比较的数的个数)

             for(i=1;i+j<10;i++)

             {

             if(a[j]>a[j+i])

             {

                    t=a[j];

                    a[j]=a[j+i];

                    a[j+i]=t;

             }

             }

      }

      

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

      {

             printf("%d\n",a[i]);

      }

      return(0);

}

 

42、输入一个正整数,要求以相反的顺序输出该数。

例如输入12345,输出位54321。

.

*/

 

 

 

#include<>

#include<>

 

intsplitcircle(intn)

{

       inti;

       doublek,y2;

 

       for(i=0,k=,y2=;i

       {

               printf("sides=%d,pi(%d)=%.24f\n",

                       3*(1<

               y2=2-sqrt(4-y2);

       }

 

       returni;

}

 

intmain()

{

       returnsplitcircle(12);

}

 

 

48、A、B、C、D、E五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。

日上三竿,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。

B第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。

C、D、E依次醒来,也按同样的方法拿鱼。

编写程序求出他们合伙至少捕了多少条鱼。

/*

48、A、B、C、D、E五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。

日上三竿,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。

B第二个醒来,

也将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。

C、D、E依次醒来,也按同样的方法拿鱼。

编写程序求出他们合伙至少捕了多少条鱼。

*/

 

 

#include<>

 

 

intyu(inti)

{

      inta,b,c,d,e;

      intj;

      if((i-1)%5==0)

      {

             a=0;

      }

      else

      {

             a=1;

      }

      if(((i-1)/5-1)*(4/5)%5==0)

      {

             b=0;

      }

      else

      {

             b=1;

      }

      if((((i-1)/5-1)*(4/5)/5-1)*(4/5)%5==0)

      {

             c=0;

      }

      else

      {

             c=1;

      }

      if(((((i-1)/5-1)*4/5/5-1)-1)*(4/5)%5==0)

      {

             d=0;

      }

      else

      {

             d=1;

      }

      if( (((((i-1)/5-1)/5-1)-1)-1)%5==0)

      {

             e=0;

      }

      else

      {

             e=1;

      }

      if(a==0&&b==0&&c==0&&d==0&&e==0)

      {

             j=0;

      }

      else

      {

             j=1;

      }

      return(j);

}

 

 

 

intmain()

{

      inti,j=5;

      for(i=5;yu(i)!

=0;i++)

      {

             j=j+1;

      }

      printf("%d",j);

      return(0);

}

 

 

 

 

 

49、一辆卡车违犯交通规则,撞人逃跑。

现场三人目击事件,但都没记住车号,只记下车号的一些特征。

甲说:

牌照的前两位数字是相同的;乙说:

牌照的后两位数字是相同的;丙是位数学家,他说:

四位的车号刚好是一个整数的平方。

请根据以上线索求出车号。

/*49、一辆卡车违犯交通规则,撞人逃跑。

现场三人目击事件,但都没记住车号,只记下车号的一些特征。

甲说:

牌照的前两位数字是相同的;乙说:

牌照的后两位数字是相同的;丙是位数学家,他说:

四位的车

号刚好是一个整数的平方。

请根据以上线索求出车号。

 

 */

 

 

 

#include<>

 

intche(inti)

{

      inta,b,c;

      intk,l=0;

      if(i/1000==i%1000/100&&i%100/10==i%10)

      {

             a=0;

      }

      for(k=0;k<100;k++)

      {

             if(k*k==i)

 

             {

                    b=0;

             }

      

      }

      

      if(a==0&&b==0)

      {

             c=0;

      }

      return(c);

}

      

 

             intmain()

{

      inti,j=1;

   for(i=1000;che(i)!

=0;i++)

      {

             j=j+1;

      }

      printf("%d",j);

      return(0);

}

 

 

50、若一个口袋中放有12个球,其中有3个红的,3个白的和6个黑的,每次从中任取8个球,编写程序求出共有多少种不同的颜色搭配。

/*50、若一个口袋中放有12个球,其中有3个红的,3个白的和6个黑的,每次从中任取8个球,

编写程序求出共有多少种不同的颜色搭配。

*/

 

 

 

 

#include<>

 

intmain()

{

      intred;

      intwrite;

      intblack;

      inti=0;

 

      for(red=0;red<=3;red++)

      {

             for(write=0;write<=3;write++)

             {

                    for(black=0;black<=6;black++)

                    {

                           if(red+write+black==8)

                           {

                                  i++;

                                  printf("red=%d,write=%d,black=%d\n",red,write,black);

                           }

                    }

             }

      }

      return(0);

}

 

 

 

51、100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马两匹驮1担。

试编写程序计算大、中、小马的数目。

/*bighouse+normalhouse+smallhouse==100;

 

51、100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马两匹驮1担。

试编写程序计算大、

中、小马的数目。

*/

 

 

#include<>

 

intmain()

{

      intbighouse,normalhouse,smallhouse;

      

      for(bighouse=0;bighouse<=100;bighouse++)

      {

             for(normalhouse=0;normalhouse<=100;normalhouse++)

             {

                    for(smallhouse=0;smallhouse<=100;smallhouse++)

                    {

                          if(bighouse+normalhouse+smallhouse==100&&bighouse*3+normalhouse*2+smallhouse==100)

                           {

                                  printf("bighouse=%d,normalhouse=%d,smallhouse=%d",bighouse,normalhouse,smallhouse);

                           }

                    }

             }

      }

      return(0);

}

 

 

52、编写程序,输出用一元人民币兑换成1分、2分和5分硬币的不同兑换方法。

示200以内的完全平方数和它们的个数。

(完全平方数:

A2+B2=C2,求A、B、C)

 

 

#include<>

 

 

 

intmain()

{

      inta,b,c;

      intd=0;

 

      for(a=0;a<=200;a++)

      {

             for(b=0;b<=200;b++)

             {

                    for(c=0;c<=200;c++)

                    {

                           if(a*a+b*b==c*c)

                           {

                                  printf("a=%d,b=%d,c=%d\n",a,b,c);

                                  

                                         d++;

                           }

                    }

             }

      }

      printf("number=%d\n",d);

 

      return(0);

}

 

 

 

 

54、设N是一个四位数,它的9倍恰好是其反序数(例如:

123的反序数是321),求N的值。

#include<>

voidmain()

{

      inta,b,c,d,e,f,g,h,i,j,sum1,sum2;

      

      printf("Entertennumber:

");

      scanf("%d%d%d%d%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j);

      sum1=0;

      sum2=0;

      if(a>0)

      {

             sum1=sum1+a;

      }

      elseif(a<=0)

             sum2=sum2+a;

      if(b>0)

      {

             sum1=sum1+b;

      }

      elseif(b<=0)

             sum2=sum2+b;

      if(c>

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1