欢迎光临散文网 会员登陆 & 注册

c语言循环

2023-03-01 16:32 作者:屋漏天晴好  | 我要投稿

山东春季高考C语言专项复习资料

C语言编程测试题(第四章)

循环编程专项训练

 

姓名              成绩

 

1.编程1+2+3+4+5.输出结果

#include <stdio.h>

main()

{  

int sum,i;

     sum=0;

     i=1;

     while(i<=5)

     {

      sum=sum+i;

      i=i+1;

     }

     printf("1+2+3+4+5=%d",sum);

}

 

 

 

 

 

 

 

2.输入一个整数,按相反次序输出。例如,输入54321,输出12345.

#include <stdio.h>

main()

{

 long num;

     int b;

     printf("输入一个整数: ");

     scanf("%ld",&num);

     do

        { b=num%10;

          printf("%d",b);

          num=num/10;

        }while(num);

     printf("\n");

     getchar();

}

 

 

 

 

 

 

 

3.从键盘上输入10个整数,求其和并输出。

#include<stdio.h>

main()

{

 int i,num,sum;

   printf("从键盘上输入10个整数: \n");

   sum=0;

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

    { 

     scanf("%d",&num);

     sum=sum+num;

    }

     printf("这10个整数的和为: %d",sum);

}

 

 

 

 

 

 

 

 

 

 

4.从键盘上输入若干个整数,直到输入0为止,求它们的乘积并输出。

#include <stdio.h>

main()

 int n;

      long t=1;

     printf("从键盘上输入若干个整数,直到输入0为止 \n");

     scanf("%d",&n);

     while(n!=0)

        {  t=t*n;

           scanf("%d",&n);

        }

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

}

 

 

 

 

 

 

5.打印九九乘法表

#include <stdio.h>

main()

{

int i,j;

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

      printf("%5d   ",i);

      printf("\n-----------------------\n");

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

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

         printf("%2d*%d=%-3d",i,j,i*j);

         printf("\n");

    }

}

 

 

 

 

 

 

6.输入圆柱体的高,求不同半径的圆柱体的体积,只计算体积在100以下的圆柱体。

#include <stdio.h>

#define PI 3.14

main()

{

    int r;

    float v,h;

    printf("请输入圆柱体的高:");

    scanf("%f",&h);

    for(r=1;r<=10;r++)

    {

        v=PI*r*r*h;

        if(v>100.0) break;

        printf("半径等于 %d,体积等于 %.2f  \n",r,  v);

     }

     printf("此时r=%d\n",r);

 }

 

 

 

 

 

 

 

 

7.输出50~100之间所有不能被7整除的数。

#include <stdio.h>

main()

{

    int num,cnt=0;

    for(num=50;num<=100;num++)

    {

        if(num%7==0)

        continue;                    /*结束本轮循环*/

        printf("%5d",num);

        cnt++;

        if(cnt%10==0) printf("\n");  /*每行输出10个整数*/

    }

}

 

 

 

 

 

8.判断一个数是否为素数

#include <stdio.h>

main()

{

    int num,j,tag=1,m;

    printf("请输入一个自然数:");

    scanf("%d",&num);

    m=sqrt(num);

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

    if(num%j==0)

    {

        tag=0;

        break;

    }

    if(tag==1)

    printf("%d  是素数\n",num);

    else

    printf("%d  不是素数\n",num);

}

 

 

 

 

 

 

 

 

 

9.找出100~200之间的所有素数

#include <stdio.h>

#include <math.h>

main()

{

    int num,j,tag,m,cnt=0;

    for(num=101;num<200;num+=2)

    {

        tag=1;

        m=sqrt(num);

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

        if(num%j==0) {tag=0; break;}

        if(tag==1)

        {

            printf ("%5d",num);

            cnt++;

            if(cnt%10==0) printf("\n");

        }

    }

}

 

 

10.输入两个整数,求它们的最大公约数。方法是采用“辗转相除法”,即反复模除取余,直到余数为0.

#include <stdio.h>

main()

{

    int a,b,r,tmp;

    printf ("输入两个整数:");

    scanf ("%d%d",&a,&b);

    if (a<b)            /*若第1个数小于第2个数,则两者互换*/

    {tmp=a;a=b;b=tmp;}

    do

    {

        r=a%b;

        a=b;

        b=r;

    }while(r);

    printf("最大公约数为: %d\n",a);

    getchar();

}

 

 

 

 

 

 

11.“百鸡问题”是我国古代数学家张丘建在他编写的《算经》里提出的一个不定方程问题,即“鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡。问鸡翁、母、雏各几?”

#include <stdio.h>

main()

{

int x,y,z;

for(x=0;x<=20;++x)

for(y=0;y<=33;++y)

    {z=100-x-y;

     if((z%3==0)&&(5*x+3*y+z/3==100))

printf("公鸡:%-2d  母鸡:%-2d  小鸡:%-2d\n",x,y,z);}

}

 

 

 

 

 

 

12.输入一个数字a和一个整数n,s=a+aa+aaa+aaaa+aaa…..a,最后一项为n个a。计算并输出s的值。

#include<stdio.h>

main()

{

 int a,n,i;

 float s=0,t;

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

 t=a;

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

 {

     s=s+t;

     t=t*10+a;

 }

 printf("%.0f\n",s);

}

 

 

 

 

 

 

 

 

 

13,编写程序输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。例如153是一个水仙花数,因为153=1*1*1+5*5*5+3*3*3

#include <stdio.h>

main()

{

int a,b,c,i;

for(i=100;i<=999;i++)

{a=i/100;

  b=i/10%10;

  c=i%10;

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

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

printf("\n");}

 

 

 

 

 

 

 

 

 

14.编写程序要求用for语句编写,输入两个值x,y求出x的y次方。

#include <stdio.h>

#include <math.h>

main()

{

int x,y,n;

scanf("%d,%d",&x,&y);

  n=pow(x,y);

 printf("%d",n);

}

 

 

 

 

 

 

 

 

 

 

 

 

 

15.每个苹果1元,第一天买2个苹果,第二天开始,每天买前一天的3倍,直到购买的苹果达到不超过100的最大值。试用do while编写程序求每天平均花多少钱?

#include <stdio.h>

main()

{

int day=0,buy=2;

float sum,average;

do

{sum+=1*buy;day++;buy*=3;}

while(buy<100);

average=sum/day;

printf("%f\n",average);}

 

 

 

 

 

 

 

 

 

 

16根据图形,编写程序

*

* * *

* * * * *

* * * * * * *

#include <stdio.h>

main()

{

int i,j;

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

    {for(j=1;j<=2*i-1;j++)

printf("*");

printf("\n");}

}

 

 

 

 

 

 

 

 

 

 

17.输出1!+2!+3!+...+20!的值。

提示5!=1*2*3*4*5=4!*5,累乘的初值为1。

#include<stdio.h>

 main()

{

 int i,j;

 double sum=0,n;

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

 {   n=1;

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

         n=n*j;

     sum=sum+n;

     }

 printf("%.0f\n",sum);

 

 

 

 

18.任意输入10个数,分别计算输出其中的正数和负数之和。

#include<stdio.h>

main()

{

int i,n,s1=0,s2=0;

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

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

  if(n>0) s1=s1+n;

 else if(n<0) s2=s2+n;

}

printf("所有正数的和=%d\n",s1);

printf("所有负数的和=%d\n",s2);

}

 

 

 

19.一球从100米高空自由落下,每次落地后反跳回原高度的一半:再落下,求他在第十次落地时,共经过多少米?第十次反弹多高?

#include<stdio.h>

 main()

{

  float h=100,sum=100;

  for(int i=2;i<=10;i++){

    h=h/2;   /*第二次落地前的反弹高度*/

sum=sum+2*h;

  }

  printf("第10次经过%.2f米\n",sum);

}

20.一个数列是;3/5,5/7,7/9,9/11,….,求这个数列前20项的和。

#include<stdio.h>

 main()

{

  int i;

  float sum=0;

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

    sum=sum+1.0*(2*i+1)/(2*i+3);

  printf("3/5+5/7+...+41/43=%f\n",sum);}

 

 

 

 

 

 

 

 

 

21.输入一行字符,直到输入换行结束,分别统计其中的英文字母,空格,数字和其他字符的个数

#include<stdio.h>

 main()

{

  int i=0,j=0,k=0;

  char ch;

  while((ch=getchar())!='\n')

 {

  if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')

      i++;

  else if(ch>='0'&&ch<='9')

      j++;

  else k++;

 }

printf("letters:%d\nnumbers:%d\nothers:%d\n",i,j,k);

}

 

 

 

 

 

23.已知华氏温度F与摄氏温度C的关系是:C=5/9*(F-32),编写程序,计算华氏温度F为-10,0,10,20,…..290度时摄氏温度C的值。

#include<stdio.h>

 main()

{

  int f;

  float c;

  for(f=-10;f<=290;f+=10)

  {

      c=5.0/9*(f-32);

      printf("%-8.2f  ",c);

  }

 printf("\n");

}

 

 

 

 

24.输入一行字符,输出字母的个数。

#include<stdio.h>

 main()

{

  int n=0;

  char ch;

 ch=getchar();

 while(ch!='\n')

 {

if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')

      n++;

  ch=getchar();

 }

  printf("The number of letters are %d\n",n);

}

 

 

 

 

 

 

 

25.编写程序,从3个红球,5个白球,6个黑球中任意取出8个球,且其中必须有白球,输出可能的所有方案。

#include<stdio.h>

 main()

{

  int red,white,black;

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

{

for(white=1;white<=5;white++)

{

      black=8-red-white;

      if(black<=6)

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

      }

  }

}

26.一个人很倒霉,不小心打碎了一位妇女的一篮子鸡蛋。为了赔偿便询问篮子里有多少个鸡蛋。那个妇女说,他也不清楚,只记得每次拿两个则剩一个,每次拿三个则剩两个,每次拿五个则剩四个,若每个鸡蛋1元,请你帮忙编写程序,计算最少应赔多少钱?(提示,依题意,鸡蛋个数为奇数且模除3为2,模除5为4。)

#include<stdio.h>

 main()

{

  int n=9;

  while(!(n%3==2&&n%5==4)) n+=2;

  printf("The price is %d\n",n);

}

 

 

 

 

 

 

 

 

27.有1,2,3,4共4个数字,能组成多少个互不相同且无重复数字的三位数?要求输出所有可能的三位数。

#include<stdio.h>

 main()

{

  int a,b,c;

  for(a=1;a<=4;a++)

  { for(b=1;b<=4;b++)

     for(c=1;c<=4;c++)

       if(a!=b&&a!=c&&b!=c)

        printf("%d%d%d  ",a,b,c);

     printf("\n");

  }

}

 

 

 

 

 

28.所谓回文数,是从左至右与从右至左读起来都是一样的数字,如121是一个回文数。编写程序,求出100~200范围内所有回文数的和。

#include<stdio.h>

 main()

{

  int i,a,b,sum=0;

  for(i=100;i<=200;i++)

  {

      a=i%10;   /*个位数*/

      b=i/100;   /*百位数*/

      if(a==b)

      {printf("%d  ",i);

      sum=sum+i;}

  }

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

 }

 

 

 

 

 

29.孙悟空在大闹蟠桃园的时候,第一天吃掉了所有桃子总数的一半多一个,第二天又将前一天剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第N天时准备吃的时候只剩下一个桃子了。问第一天原来有多少个桃子。其中N从键盘输入。

#include<stdio.h>

 main()

{

  int n,s=1,i;

  scanf("%d",&n);

  for(i=n-1;i>=1;i--)

  s=(s+1)*2;

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

}

 

 

 

 

 

30.用循环语句编写求2^0+2^1+2^2+2^3+…+2^63的程序。

#include<stdio.h>

#include<math.h>

 main()

{

  int a=2,i ; 

  long sum=0;

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

    sum=sum+pow(a,i);

   printf("%ld",sum);

}

 

 

 

 

 

 

 

31.用下面的公式求π的近似值,直到最后一项的绝对值小于0.0001为止:

π/4=1-1/3+1/5-1/7+……

提示:设一个变量sign,用来表示正负号。当sign=1时,表示正号;当sign=-1时,表示负号。通过执行语句“sign=-sign”:实现正负号的切换。每一项乘以sign后在进行累加。

#include<stdio.h>

main()

{

 int sign=1,i=1;

 double pi=0,n=1;

 while(n>=0.0001)

 {

     pi=pi+sign*n;

     i++;

     sign=-sign;

     n=1.0/(2*i-1);

 }

 pi=4*pi;

 printf("%.2f\n",pi);

}

 

32.鸡兔同笼,头共有30只,脚共有90只,计算鸡兔各有多少只(要求用for循环编写)。

#include<stdio.h>

main()

{

int ji,tu;

for(ji=1;ji<=29;ji++)

{ tu=30-ji;

  if(2*ji+4*tu==90)

  printf("鸡是%d只,兔是%d只",ji,tu);

}

}


c语言循环的评论 (共 条)

分享到微博请遵守国家法律