2022秋季C语言专题实验02-循环程序

7-1 统计 十位 比 个位 大的数

给定两个正整数,m和n,m< n,请计算在 m和n之间(包括m和n)所有符合以下条件的数的和
条件:十位数比个位数大

  • 输入格式:
    输入两个正整数m和n,数据保证m<n,10<= m < n <=1000。
  • 输出格式:
    输出m和n之间满足条件的所有数的和,输出数值后需要输出回车换行。
  • 输入样例:
    在这里给出一组输入。例如:
    150 160
  • 输出样例:
    在这里给出相应的输出。例如150+151+152+153+154+160:
    920
#include<stdio.h>
int main()
{
    int i,m,n,sum=0;
    scanf("%d %d",&m,&n);
    if(m>=10&&m<n&&n<=1000)
    {
          for(i=m;i<=n;i++)
          {
             if(i/10%10>i%10)
                sum=sum+i;
          }
         printf("%d\n",sum);
        
    }
    else
        printf("输入有误请重新输入!");
    return 0;
}

7-2 for循环练习:打印特定范围的平方根表,按指定格式输出。

读入1个10以内的正整数X(程序内变量名不一定是X,自定),输出1到X间所有数的平方根表。

  • 输入格式:
    10以内的正整数X。

  • 输出格式:
    在一行中输出1到X的平方根,取2位小数。注意输出的最后一个值后面无逗号或空格。

  • 输入样例:
    5

  • 输出样例:
    在这里给出相应的输出。例如:
    sqrt(1)=1.00,sqrt(2)=1.41,sqrt(3)=1.73,sqrt(4)=2.00,sqrt(5)=2.24

#include<stdio.h>
int main()
{
    int i,m;
    scanf("%d",&m);
    if(m<=10&&m>0)
    {
          for(i=1;i<m;i++)
          {
              printf("sqrt(%d)=%.2f,",i,sqrt(i));
          }
         printf("sqrt(%d)=%.2f\n",m,sqrt(m));
        
    }
    else
        printf("输入有误请重新输入!");
    return 0;
}

7-3 求数列2/1,3/2,5/3……之和

功能:求一分数序列2/1,3/2,5/3,8/5,13/8,21/13… 的前n项之和。

说明:每一分数的分母是前两项的分母之和,每一分数的 分子是前两项的分子之和

例如:求前20项之和的值为32.660。

  • 输入格式:
    输入一个整数n,表示求前n项之和,1<=n<=100。

  • 输出格式:
    输出前n项数列的和,小数位数保留3位。

  • 输入样例:
    20

  • 输出样例:
    32.660

#include<stdio.h>
int main()
{
    int i,n;
    double s=0,a=1,b=2,t;
    scanf("%d",&n);
    if(n>=1&&n<=100)
    {
        for(i=0;i<n;i++)
        {
            s+=b/a;
            t=a;
            a=b;
            b=t+b;
        }
        printf("%.3f\n",s);
    }
    else
        printf("输入有误,请重新输入!");
    return 0;
}

7-4 乐乐的得分(2010南海小学甲组)

“六一”儿童节到了,乐乐参加了学校组织的诗歌朗颂比赛,这个比赛有n个评委,各参赛者朗颂完后,每个评委会马上打出一个分数,而参赛者的得分是指这n个分数里去掉一个最高分和一个最低分后的(n-2)个数的平均分。现在乐乐想知道自己的得分是多少。

  • 输入格式:
    第一行是一个整数n(3≤n≤20000)。
    第二行是n个100以内的正整数,每个整数之间用一个空格隔开。

  • 输出格式:
    输出文件只有一个数,表示乐乐的分数,得数保留小数点后一位数字。

  • 输入样例:
    10
    95 90 88 92 94 98 98 93 93 91

  • 输出样例:
    93.2

#include<stdio.h>
int main()
{
    int i,n,a[20000]={0};
    int sum=0,max,min;
    float ave=0;
    scanf("%d",&n);
    if(n>=3&&n<=20000)
    {
          for(i=0;i<n;i++)
          {
             scanf("%d ",&a[i]);
          }
         max=min=a[0];
        for(i=0;i<n;i++)
        {
            
            sum=sum+a[i];
            if(max<a[i])
                max=a[i];
            if(min>a[i])
                min=a[i];
        }
        ave=(float)(sum-max-min)/(n-2);
        printf("%.1f",ave);
        
    }
   else
       printf("输入有误请重新输入!");
    return 0;
}

7-5 打印菱形图案

本题要求编写程序,打印一个高度为n的、由“*”组成的正菱形图案。

  • 输入格式:
    输入在一行中给出一个正的奇数n。

  • 输出格式:
    输出由n行星号“*”组成的菱形,如样例所示。每个星号后跟一个空格。

  • 输入样例:
    7

  • -输出样例:
    在这里插入图片描述

#include<stdio.h>
int main()
{
    int i,j,n;
    scanf("%d",&n);
    if(n%2!=0)
    {
        for(i=1;i<=n;i++)//i为行,j为列
        {
            if(i<=(n+1)/2)//递增
            {
                for(j=1;j<=2*((n+1)/2-i);j++)//每行的前面有多少个空格
                {
                    printf(" ");
                }
                for(j=1;j<=2*i-1;j++)//每行有多少个*号
                {
                    printf("* ");
                }
                
            }
             if(i>(n+1)/2)//递减
            {
                for(j=1;j<=2*(i-(n+1)/2);j++)
                {
                    printf(" ");
                }
                for(j=1;j<=n-2*(i-(n+1)/2);j++)
                {
                    printf("* ");
                }
                
            }
            printf("\n");
        }
    }
    else
        printf("请输入正的奇数");
    return 0;
}

7-6 每支钢笔5元, 每支签字笔3元,每3支铅笔1元。如果要用 M 元钱买 N 支笔,要求每种笔至少买一个,编程求各种笔各能买多少支?

每支钢笔5元, 每支签字笔3元,每3支铅笔1元。如果要用 M 元钱买 N 支笔,要求每种笔至少买一个,编程求各种笔各能买多少支?

  • 输入格式:
    先后输入M(钱数)及N(笔的个数)的实际数值。

  • 输出格式:
    所有可能情况下可以购买的3种笔的个数,按钢笔、签字笔、铅笔的顺序输出,用逗号分隔。例如:4,18,78;表示钢笔4支、签字笔18支、铅笔78支。

  • 输入样例:
    在这里给出一组输入。例如:
    100 100

  • 输出样例:
    4,18,78
    8,11,81
    12,4,84

#include<stdio.h>
int main()
{
int m,n,a,b,c;
scanf("%d %d",&m,&n);
for(a=1;a<n-4;a++)
  for(b=1;b<n-4;b++)
     for(c=3;c<n-2;c++)
      {
       if(c%3==0)
        if(n==a+b+c&&m==5*a+3*b+c/3)
          printf("%d,%d,%d\n",a,b,c);
      }
return 0;
}

7-7 吃鱼还是吃肉

国家给出了 8 岁男宝宝的标准身高为 130 厘米、标准体重为 27 公斤;8 岁女宝宝的标准身高为 129 厘米、标准体重为 25 公斤。

现在你要根据小宝宝的身高体重,给出补充营养的建议。

  • 输入格式:
    输入在第一行给出一个不超过 10 的正整数 N,随后 N 行,每行给出一位宝宝的身体数据:性别 身高 体重
    其中性别是 1 表示男生,0 表示女生。身高和体重都是不超过 200 的正整数。

  • 输出格式:
    对于每一位宝宝,在一行中给出你的建议:
    如果太矮了,输出:duo chi yu!(多吃鱼);
    如果太瘦了,输出:duo chi rou!(多吃肉);
    如果正标准,输出:wan mei!(完美);
    如果太高了,输出:ni li hai!(你厉害);
    如果太胖了,输出:shao chi rou!(少吃肉)。
    先评价身高,再评价体重。两句话之间要有 1 个空格。

  • 输入样例:
    4
    0 130 23
    1 129 27
    1 130 30
    0 128 27

  • 输出样例:
    ni li hai! duo chi rou!
    duo chi yu! wan mei!
    wan mei! shao chi rou!
    duo chi yu! shao chi rou!

#include<stdio.h>
int main()
{
int i,h,w,N,s;
scanf("%d",&N);
if(N>0&&N<=10)
  {
    for(i=0;i<N;i++)
    {
        scanf("%d %d %d\n",&s,&h,&w);
        if(h>0&&h<=200&&w>0&&w<=200)
        {
            if(s==1)
            {
                if(h<130)
                    printf("duo chi yu! ");
                else if(h==130)
                    printf("wan mei! ");
                else
                    printf("ni li hai! ");
                if(w<27)
                    printf("duo chi rou!\n");
                else if(w==27)
                    printf("wan mei!\n");
                else
                    printf("shao chi rou!\n");
            }
            else if(s==0)
            {
                if(h<129)
                    printf("duo chi yu! ");
                else if(h==129)
                    printf("wan mei! ");
                else 
                    printf("ni li hai! ");
                if(w<25)
                    printf("duo chi rou!\n");
                else if(w==25)
                    printf("wan mei!\n");
                else
                    printf("shao chi rou!\n");
            }
        }
        else
            printf("身高、体重输入有误\n");
    }
  }
else
    printf("请输入不超过10的正整数");
return 0;
}

7-8 输出整数各位数字

本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字。

  • 输入格式:
    输入在一行中给出一个长整型范围内的非负整数。

  • 输出格式:
    从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格。

  • 输入样例:
    123456

  • 输出样例:
    1 2 3 4 5 6

#include<stdio.h>
#include<math.h>
int main()
{
    int i=0,n,m,t;
    scanf("%d",&n);
    m=n; 
    if(n==0)
        printf("0 ");
    else
        do
       {
        m=m/10;
        i++;//计算n的位数
       }while(m>0);//n的值>1位数时
       while(i>0)
       {
           t=pow(10,i-1);
           printf("%d ",n/t);
           i--;
           n=n%t;
       }
    return 0;
}

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值