模拟练习3

时间:2024-03-01 10:29:17

问题 A: 水仙花数

春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在m和n范围内的水仙花数。
 

 

输入要求

输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)
 

 

输出要求

对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。

 

假如输入

100 120
300 400
121 200

应当输出

no
370 371
153

        提示    while (scanf_s("%d%d",&m,&n)!=EOF)

 

问题 B: 斐波那契数求解

题目描述

 著名意大利数学家斐波那契(Fibonacci)1202年提出一个有趣的问题。

某人想知道一年内一对兔子可以生几对兔子。他筑了一道围墙,把一对大兔关在其中。已知每对大兔每个月可以生一对小兔,而每对小兔出生后第三个月即可成为“大兔”再生小兔。问一对小兔一年能繁殖几对小兔?

 

输入要求

多个正整数n(1<=n<=80),表示需要求第n个月新增的兔子对数。

 

输出要求

 对于输入的n,求第n个月新增的兔子对数。当n=0时输入结束,该数据不作处理。

假如输入

16
0

应当输出

987

问题 C: C二级辅导-进制转换

编程,输入一个10进制正整数,然后输出它所对应的八进制数。输入0表示测试结束。

 

输入要求

 

输出要求

 

假如输入

10
0

应当输出

12

问题 D: C二级辅导-温度转换

输入一个华氏温度,要求输出摄氏温度。公式为

保留两位小数

 

输入要求

 

输出要求

 

假如输入

-40

应当输出

-40.00
#include<stdio.h>
int main(void)
{
   double f;
    double c;
    scanf("%lf",&f);
    c=5*(f-32)/9;
    printf("%.2f\n",c);
    return 0;
}

 


问题 F: C二级辅导-分段函数

有一个函数如下,写一程序,输入x,输出y值。

 

#include<stdio.h>
int main(void)
{
    double x,y;
    scanf("%lf",&x);
    if(x<1){
        y=x;
    }
    else if(x>=10){
        y=3*x-11;
    }
    else{
        y=2*x-1;
    }
    printf("%.2f\n",y);
    return 0;
}
/*******************************

 

 

 

 

 

 

问题 E: C二级辅导-求偶数和

编制程序,输入n个整数(n从键盘输入,n>0),输出它们的偶数和。

 

输入要求

 

输出要求

 

假如输入

2
1 2

应当输出

2
#include<stdio.h>
int main(void)
{
    int n,x,i;
    int sum;
    sum=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++){
    scanf("%d",&x);
    if(i%2==0){
        sum=sum+x;
    }
    }
    printf("%d\n",sum);
    return 0;
}

问题 G: C二级辅导-等差数列

sum=2+5+8+11+14+,输入正整数n,求sum的前n项和。

#include<stdio.h>
int main(void)
{
    int n,i,x;
    int sum;
    sum=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        x=3*i-1;
        sum=sum+x;
    }
    printf("%d\n",sum);
    return 0;
}

 

 

 

 

问题 H: C二级辅导-计负均正

从键盘输入任意20个整型数,统计其中的负数个数并求所有正数的平均值。

保留两位小数

 

输入要求

 

输出要求

 

假如输入

1 2 3 4 5 6 7 8 9 10
-1 -2 -3 -4 -5 -6 -7 -8 -9 -10

应当输出

10
5.50
#include<stdio.h>
int main(void)
{
    int x,i,y,z;
    double a,sum;
    sum=0;
    y=0;
    z=0;
    for(i=1;i<=20;i++){
        scanf("%d ",&x);
        if(x<0){
            y=y+1;
        }
         if(x>0){
            z=z+1;
            sum=sum+x;
        }
        a=sum/z;
    }
    printf("%d\n",y);
    printf("%.2f",a);
 
    return 0;
}

 


问题 I: C二级辅导-公约公倍

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

 

输入要求

 

输出要求

 

假如输入

2 3

应当输出

1
6
#include<stdio.h>  
int main(void)  
{  
    int m,n; 
    int r,x,t; 
      scanf("%d %d",&m,&n); 
        x = m*n; 
        if (m<n) 
        { 
            t=m;  
            m=n;  
            n=t; 
        } 
        while (n!=0) 
        { 
            r=m%n;  
            m=n;  
            n=r; 
        } 
        printf("%d\n",m);
        printf("%d\n",x/m);
        return 0;
}

 


问题 J: C二级辅导-统计字符

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

 

输入要求

 

输出要求

 

假如输入

a 1,

应当输出

1
1
1
1
#include<stdio.h>
int main(void)
{
    int letter,digit,other,blank;
    char ch;
    letter=digit=other=blank=0;
    while((ch=getchar())!=\'\n\')
    if((ch>=\'a\'&&ch<=\'z\')||(ch>=\'A\'&&ch<=\'Z\'))
        letter++;
    else if(ch>=\'0\'&&ch<=\'9\')
        digit++;
    else if(ch==\' \')
        blank++;
    else
        other++;
     
    printf("%d\n",letter);
    printf("%d\n",blank);
    printf("%d\n",digit);
    printf("%d\n",other);
    return 0;
}

 


问题 K: 2003年秋浙江省计算机等级考试二级C 编程题(2)

输入两个正整数m和n(m<n),求m到n之间(包括m和n)所有素数的和,要求定义并调用函数isprime(x)来判断x是否为素数(素数是除1以外只能被自身整除的自然数)。

 

输入要求

m n

输出要求

素数和

假如输入

2 3

应当输出

5
#include<stdio.h>   
int isprime(int a);
int main(void)
{
    int m,n,sum=0,a;
    scanf("%d %d",&m,&n);
    for (a=m;a<=n;a++){
    sum=sum+isprime(a);
    }
    printf("%d\n",sum);
    return 0;
}
 
 
int isprime(int a)
{
    int i;
    int result=0;
    for (i=2;i<=a/2;i++)
        if (a%i==0) 
            break;
        if(i>a/2&&a!=1)
        result=a;
        return result;
}
 

 


问题 L: 2004年秋浙江省计算机等级考试二级C 编程题(1)

输入10个数,找出其中绝对值最小的数,将它和最后一个数交换,然后输出这10个数。

输入要求

十个数

输出要求

交换后的十个数

假如输入

10 2 30 40 50 60 70 80 90 100

应当输出

10 100 30 40 50 60 70 80 90 2
#include<stdio.h>
#include<math.h>
int main(void)
{
    int i,min;
    int temp;
    int a[10];
 
    for(i=0;i<10;i++)
    scanf("%d",&a[i]);
    min=0;
    for(i=1;i<10;i++)
        if(fabs(a[i])<fabs(a[min]))
            min=i;
        temp=a[min];
        a[min]=a[9];
        a[9]=temp;
 
        for(i=0;i<10;i++)
            printf("%d ",a[i]);
        return 0;
}
 
 

 


问题 M: 2004年秋浙江省计算机等级考试二级C 编程题(2)

输入一个正数x和一个正整数n,求下列算式的值。要求顶一个调用2个函数:fact(n)计算n的阶乘;mypow(x,n)计算x的n次幂(即xn),两个函数的返回值类型是double。

      x - x2/2! + x3/3! + ... + (-1)n-1xn/n!

 

×输出保留4位小数。

 

输入要求

x n

输出要求

数列和

假如输入

2.0 3

应当输出

1.3333
#include<stdio.h>
double fact(int n);
#include<math.h>
int main(void)
{
    double x,z;
    int n,i,y;
    double sum=0;
    y=1;
    scanf("%lf %d",&x,&n);
    for(i=1;i<=n;i++){
        z=y*pow(x,i)/fact(i);
        sum=sum+z;
        y=-y;
    }
    printf("%.4f\n",sum);
        return 0;
}
double fact(int n)
{
    int i;
    double m;
    m=1;
    for(i=1;i<=n;i++){
        m=m*i;
    }
    return m;
}
 
 

 


问题 N: 2005年春浙江省计算机等级考试二级C 编程题(1)

题目描述

输入x ,计算并输出下列分段函数 f(x) 的值。可以调用数学库函数:平方根函数sqrt(),绝对值函数fabs() 和幂函数 pow()

 

 保留2位小数

输入要求

x

输出要求

f(x)

假如输入

5

应当输出

15.00
#include<stdio.h>
#include<math.h>
int main(void)
{
    double x,y;
    scanf("%lf",&x);
    if(x<0){
        y=fabs(x);
    }
    else if(x>=0&&x<2){
        y=pow((x+1),0.5);
    }
    else if(x>=2&&x<4){
        y=pow((x+2),5);
    }
    else{
        y=2*x+5;
    }
    printf("%.2f",y);
    return 0;
}