模拟练习1

问题 A: C语言-猴子吃桃

猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。

输入要求

N

输出要求

桃子总数

假如输入

10

应当输出

1534
#include<stdio.h>
int main(void)
{
    int n,x,y;
    scanf("%d",&n);    
    x=1;
    while(n>1){
        y=(x+1)*2;
        x=y;
        n--;
    }
    printf("%d
",y);
    return 0;
}

问题 B: C语言-奖金计算

#include<stdio.h>
int main(void)
{
    int n,y;
    scanf("%d",&n);
    if(n<=100000){
        y=n*0.1;
    }
    else if(n>100000&&n<=200000){
        y=100000*0.1+(n-100000)*0.075;
    }
    else if(n>200000&&n<=400000){
        y=100000*0.1+100000*0.075+(n-200000)*0.05;
    }
    else if(n>400000&&n<=600000){
        y=100000*0.1+100000*0.075+200000*0.05+(n-400000)*0.03;
    }
    else if(n>600000&&n<=1000000){
        y=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(n-600000)*0.015;
    }
    else{
        y=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(n-1000000)*0.01;
    }
    printf("%d
",y);
    return 0;
}



问题 C: C语言-公约公倍

假如输入

5 7

应当输出

1 35
#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 %d
",m,x/m); 
        printf("
"); 
        
        return 0; 
} 

问题 D: C语言-转置矩阵

#include<stdio.h> 
int main(void) 
{ 
    int i,j,temp; 
    int a[3][3]; 
    for(i=0;i<3;i++) 
        for(j=0;j<3;j++) 
            scanf("%d ",&a[i][j]); 
  
        for(i=0;i<3;i++) 
            for(j=0;j<3;j++) 
                if(i<=j){ 
                    temp=a[i][j]; 
                    a[i][j]=a[j][i]; 
                    a[j][i]=temp; 
                } 
  
                for(i=0;i<3;i++){ 
                    for(j=0;j<3;j++) 
                        printf("%d ",a[i][j]); 
                    printf("
"); 
                } 
                return 0; 
} 

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

编制程序,输入m,n(M>=n>=0)后,计算下列表达式的值并输出:

         m!         

n! (m-n)!

要求将计算阶乘运算的函数写为fact(n),函数返回值的类型为float

输入要求

m n

输出要求

对应表达式的值

假如输入

2 1

应当输出

2
#include<stdio.h>
float fact(int n);
int main(void)
{
    int x,y;
    float a,b,c,d;
    scanf("%d %d",&x,&y);
    b=fact(x);
    c=fact(y);
    d=fact(x-y);
    a=b/(c*d);
    printf("%.0lf
",a);
    return 0;
}
 
    float fact(int n)
    {
        int i;
       float z;
        z=1;
        for(i=1;i<=n;i++){
            z=z*i;
        }
        return z;
    }
 
 

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

题目描述

编制程序,统计文本stdin中字符$出现的次数,并将结果写入文件stdout

 

输入要求

字符文本

 

输出要求

$次数

 

假如输入

as$dfkjhkjkjdhf
asdfkj$lskdfj
werijweirjo$wie 

应当输出

3

提示

 

 

#include <stdio.h> 
int main(){ 
  FILE *p; 
  ..... 
  //p=fopen("data.txt","r"); 
  p=stdin; 
  ..... 
  //p=fopen("res.txt","w"); 
  p=stdout; 
  .... 
  return 0;  
}

问题 G

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

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

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

题目描述

编制函数del_char

函数原型为 void del_char(char *,char),函数的功能是删除a指向的字符串中值为ch的字符,例如从字符串"AscADef"中删除'A'后,字符串为"scDef"。

 

输入要求

需要删除的字符ch

需要处理的字符串

 

输出要求

处理后的字符串

 

假如输入

A
AscADef

应当输出

scDef


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

编程,输入n后:输入n个数,根据下式计算并输出y值。

     / x2-sinx    x<-2

y={  2x+x       -2<=x<=2

     |    ___________

      √  X2+X+1                  x>2

 

* 输出保留两位小数

 

  

 

 

输入要求

n

n个数

 

输出要求

y

 

假如输入

1
1

应当输出

3.00

#include<stdio.h>
#include<math.h>
int main(void)
{
    int n,i;
    double x,y;
    scanf("%d
",&n);
    for(i=1;i<=n;i++){
        scanf("%lf",&x);
        if(x<-2){
            y=x*x-sin(x);
        }
        else if(x>2){
            y=sqrt(x*x+x+1);
        }
        else{
            y=pow(2,x)+x;
        }
        printf("%.2f
",y);
    }
    return 0;
}

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

题目描述

编制函数,其功能是在float类型一维数组中查找最大值、最小值,并将它们返回到调用程序。

* 输出保留两位小数

 

输入要求

n

n个浮点数

 

输出要求

最大值 最小值

 

假如输入

10
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0

应当输出

10.00 1.00
#include<stdio.h>
int main(void)
{
    int n,i,row,col,j;
    double a[20][1];
    scanf("%d
",&n);
    for(i=0;i<n;i++)
        scanf("%lf",&a[i][1]);

        row=0;
        col=0;
    for(i=0;i<n;i++)
        if(a[i][1]>a[row][1]){
        row=i;
        }
        for(j=0;j<n;j++)
            if(a[j][1]<a[col][1]){
                col=j;
            }
            printf("%.2f %.2f
",a[row][1],a[col][1]);

            return 0;
}

    


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

题目描述

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

输入要求

一行字符

输出要求

统计值

假如输入

aklsjflj123 sadf918u324 asdf91u32oasdf/.';123

应当输出

23 16 2 4
#include<stdio.h>
int main(void)
{
    int letter,digit,other,blank;
    char ch;
    letter=digit=other=blank=0;
    while((ch=getchar())!='
')
    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 %d %d %d
",letter,digit,blank,other);
    return 0;
}

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

输入一个正整数n.求1+1/2!+1/3!+....+1/n!

要求定义并调用函数fact(n)计算n的阶乘,函数返回值的类型是点单精度浮点型。

* 输出保留4位小数

#include<stdio.h>
double fact(int n);
int main(void)
{
    int k,i;
    double sum,item,a;
    sum=0;
    item=1;
    scanf("%d",&k);
    for(i=1;i<=k;i++){
        sum=sum+item;
        a=fact(i+1);
        item=1/a;
    }
    printf("%.4f
",sum);
    return 0;
}
 
double fact(int n)
{
int b;
double x;
x=1;
for(b=1;b<=n;b++){
    x=x*b;
}

return x;
}

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

题目描述

输入10个数,求它们的平均值,并输出大于平均值的数据的个数。

输入要求

10个数

输出要求

大于平均数的个数

假如输入

1 2 3 4 5 6 7 8 9 10

应当输出

5
#include<stdio.h>
int main(void)
{
    int i,letter;
    int a[10];
    double sum,x;
    sum=0;
    letter=0;
    x=0;
    for(i=0;i<10;i++){
        scanf("%d ",&a[i]);
        sum=sum+a[i];
    }
    x=sum/10.0;

    for(i=0;i<10;i++){
        if(a[i]>x){
            letter++;
        }
    }
    printf("%d
",letter);
    return 0;
}

问题 N

输出一张摄氏一华氏温度转换表,摄氏温度的取值区间是[-1000 C,1500C ],温度间隔50C。要求定义和调用函数 ctof(c),将摄氏温度C转换成华氏温度F,计算公式:

F = 32 + C* 9/5。

例如

c=0->f=32 c=5->f=41 c=10->f=50 c=15->f=59 c=20->f=68 c=25->f=77 c=30->f=86 c=35->f=95 c=40->f=104 c=45->f=113 c=50->f=122 c=55->f=131 c=60->f=140 c=65->f=149

#include<stdio.h>
int main(void)
{
    double c,f;
    for(c=-100;c<=150;c++){
        f=32+c*9.0/5.0;
        printf("c=%.0f->f=%.0f
",c,f);
        c=c+4;
    }
    return 0;
}

问题 O:

输入一个正整数n (1≤ n ≤6),再输入一个n n列的矩阵,找出该矩阵中绝对值最大的元素以及它的行下标和列下标。

假如输入

2
1 2
3 4

应当输出

4 2 2
#include<stdio.h>
#include<math.h>
int main(void)
{
    int n,i,j;
    int a[6][6];
    int row=1,col=1;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            scanf("%d",&a[i][j]);
        
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
                if(fabs(a[i][j])>fabs(a[row][col])){
                    row=i;
                    col=j;
                }
                printf("%d %d %d
",a[row][col],row,col);
                return 0;
}
    

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

编写程序,输入一批学生的成绩,遇0或负数则输入结束,要求统计并输出优秀(大于85)、通过(60~84)和不及格(小于60)的学生人数。

#include<stdio.h>
int main(void)
{
    int x,y,z;
    x=y=z=0;
    double grade;
    scanf("%lf",&grade);
    while(grade>0){
        if(grade<60)
            z++;
        else if(grade>=85)
            x++;
        else
            y++;
        scanf("%lf",&grade);
    }
    printf(">=85:%d
",x);
    printf("60-84:%d
",y);
    printf("<60:%d
",z);
    return 0;
}

问题 Q: 2006年春浙江省计算机等级考试二级C 编程题(2)

编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,函数返回值的类型是double。

1+1/2+ .... +1/n!

 

输出保留5位小数。

#include<stdio.h>
double fact(int k);
int main(void)
{
    int n,i;
    double sum=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        sum=sum+1/fact(i);
    printf("sum=%.5lf
",sum);
    return 0;
}
double fact(int k)
{
    int i;
    double z;
    z=1;
    for(i=1;i<=k;i++){
        z=z*i;
    }
    return z;
}
原文地址:https://www.cnblogs.com/simple9495/p/3458755.html