0
点赞
收藏
分享

微信扫一扫

中M22春C、Java入门练习 7-21至7-40(参考代码)

梦幻之云 2022-03-22 阅读 30
c语言c++

1、7-21 超速判断

#include <stdio.h>
int main()
{
    int speed;
    scanf("%d",&speed);
    if(speed <= 60){
        printf("Speed: %d - OK",speed);
    }
    if(speed > 60){
        printf("Speed: %d - Speeding",speed);
    }
    return 0;
}

2、7-22 用天平找小球

#include<stdio.h>
int main(){
	int a,b,c;
	scanf("%d %d %d",&a,&b,&c);
	if(a==b){
		printf("C\n");
		
	}
	else if(b==c){
		printf("A\n");
	}
	else{
		printf("B\n");
	}
	
	return 0;
}

3、7-23 分段计算居民水费

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

4、7-24猜数字游戏

#include <stdio.h>

int main() {
    int n0, N, count = 0;

    scanf("%d %d", &n0, &N);

    int n;int flag=1;

    while (flag==1) {
        scanf("%d", &n);
        count++;
        if ((count > N) || (n < 0 && count <= N)) {
            printf("Game Over\n");

            flag=0;break;
        }
        if (n > n0) {
            printf("Too big\n");
        }
        if (n < n0) {
            printf("Too small\n");
        }
        if (n == n0) {
            if (count == 1) {
                printf("Bingo!\n");
            }
            else if (count <= 3) {
                printf("Lucky You!\n");
            }
            else {
                printf("Good Guess!\n");
            }

            flag=0;break;
        }
    }

}

5、7-25 求奇数和

#include <stdio.h>
int main(){
    int sum=0, n=-1;
    while(1){
        scanf("%d", &n);
        if(n<=0){
            break;
        }
        if(n%2==1){
            sum += n;
        }
    }
    printf("%d\n", sum);

    return 0;
}

6、7-26 最大公约数和最小公倍数

#include <stdio.h>

int main ()
{
	int M,N;
	scanf("%d %d",&M,&N);
	int a=M;
	int b=N;
	int t;
	//辗转相除法求最大公约数 
	while(b!=0){
		t=a%b;
		a=b;
		b=t;
	}
	//数a、b的最大公约数m和最小公倍数n的关系:ab=mn
	printf("%d %d\n",a,M*N/a);
	
	return 0;
} 

7、7-27 兔子繁衍问题 

/*  解释
month  1  2  3  4  5  6  7
number 1  1  2  3  5  8  13
规律:第n个月的兔子数是n-2月+n-1月的兔子的和
*/
#include <stdio.h>
int main (){
  int N,month=0,i,number=1;
  scanf("%d",&N);
  int count [2];
  while(number < N){
      month ++;
      i = month%2;
      if (month <= 2){
        count [i]=number;
       // printf("month = %d,number = %d\n",month,number);
        continue;
      }
      number = count[0] + count[1];
   //   printf("month = %d,number = %d\n",month,number);
      count[0] = count [1];
      count[1] = number;
  }
  if (number==1)        //月份最少为1
    month ++;
  printf("%d\n",month);
  return 0;
}

8、7-28 求整数的位数及各位数字之和

#include <stdio.h>
int main(){
    int n, count, sum;
    sum = 0;
    count = 0;
    scanf("%d", &n);
    while(n!=0){
        count++;
        sum += n%10;
        n /= 10;
    }
    printf("%d %d\n", count, sum);

    return 0;
}

9、7-29 二分法求多项式单根

#include <stdio.h>
#include <math.h>
int main(){
    double a3, a2, a1, a0;
    double a, b, mid;
    scanf("%lf%lf%lf%lf", &a3, &a2, &a1, &a0);
    scanf("%lf%lf", &a, &b);

    if( fabs(a3*a*a*a+a2*a*a+a1*a+a0) < 1e-5 ){
        /* C语言无法准确判断两个实数是否相等,故判据为两数距离的大小*/
        printf("%.2f\n", a);
    }
    else if( fabs(a3*b*b*b+a2*b*b+a1*b+a0) < 1e-5 ){
        printf("%.2f\n", b);
    }
    else if( (a3*a*a*a+a2*a*a+a1*a+a0)*(a3*b*b*b+a2*b*b+a1*b+a0) < 0 ){
        while( fabs(a-b) > 1e-5 ){
            mid = (a+b)/2;
            if( fabs(a3*mid*mid*mid+a2*mid*mid+a1*mid+a0) < 1e-5 ){
                printf("%.2f\n", mid);
                break;
            }
            else if( (a3*a*a*a+a2*a*a+a1*a+a0)*(a3*mid*mid*mid+a2*mid*mid+a1*mid+a0) < 0 ){
                b = mid;
            }
            else{
                a = mid;
            }
        }
        if(fabs(a-b) <= 1e-5){
            printf("%.2f", (a+b)/2);
        }
    }

    return 0;
}

10、7-30 念数字

\\使用数组
#include<stdio.h>
int main()
{
int a[100] = {0};
int x;
scanf("%d",&x) ;
if(x<0)
{
    x = -x;
    printf("fu ");
    int c = 0;
    while(x != 0){
        int y = x%10;
        a[c] = y;
        c ++;
        x /= 10;
    }
    for(int i = c- 1;i > 0;i --){
        switch(a[i]){
        	case 0:printf("ling ");break;
        	case 1:printf("yi ");break;
        	case 2:printf("er ");break;
        	case 3:printf("san ");break;
        	case 4:printf("si ");break;
        	case 5:printf("wu ");break;
        	case 6:printf("liu ");break;
        	case 7:printf("qi ");break;
        	case 8:printf("ba ");break;
        	case 9:printf("jiu ");break;
        }
    }
        switch(a[0]){
        	case 0:printf("ling");break;
        	case 1:printf("yi");break;
        	case 2:printf("er");break;
        	case 3:printf("san");break;
        	case 4:printf("si");break;
        	case 5:printf("wu");break;
        	case 6:printf("liu");break;
        	case 7:printf("qi");break;
        	case 8:printf("ba");break;
        	case 9:printf("jiu");break;
        }
    } 
else{
    int c = 0;
    while(x != 0){
        int y = x%10;
        a[c] = y;
        c ++;
        x /= 10;
    }
    for(int i = c - 1;i > 0;i --){
        switch(a[i]){
        	case 0:printf("ling ");break;
        	case 1:printf("yi ");break;
        	case 2:printf("er ");break;
        	case 3:printf("san ");break;
        	case 4:printf("si ");break;
        	case 5:printf("wu ");break;
        	case 6:printf("liu ");break;
        	case 7:printf("qi ");break;
        	case 8:printf("ba ");break;
        	case 9:printf("jiu ");break;
        }
    }
        switch(a[0]){
        	case 0:printf("ling");break;
        	case 1:printf("yi");break;
        	case 2:printf("er");break;
        	case 3:printf("san");break;
        	case 4:printf("si");break;
        	case 5:printf("wu");break;
        	case 6:printf("liu");break;
        	case 7:printf("qi");break;
        	case 8:printf("ba");break;
        	case 9:printf("jiu");break;
        }
    } 
return 0;
}

11、7-31 掉入陷阱的数字

#include <stdio.h>
int main(void)
{
    int n;
    scanf("%d", &n);
    
    
    for(int i = 1; ; i++){
        int sum = 0, m,t;
        t = n;
        while(n>0){
            sum += n % 10;
            n /= 10;
        }
        m = t;
        n = sum * 3 + 1;
        printf("%d:%d\n", i, n);
        if(m == n)  break;
 
    }
    
    
	return 0;
}

12、7-32 求交错序列前N项和

#include <stdio.h>
int main()
{
    int n;
    double a=1,b=1,sum=0;
    int sign=1;
    scanf("%d",&n);

        for(int i=0;i<n;i++){
            sum+=a/b*sign;
            a++;
            b+=2;
            sign=-sign;
    }
        printf("%.3lf",sum);

    return 0;
}

13、7-33 统计素数并求和

#include <stdio.h>
#include <math.h>
int prime(int p);
int main(){
    int M, N;
    int count=0, sum=0;
    int i;
    scanf("%d%d", &M, &N);
    for(i=M; i<=N; i++){
        if(prime(i)){
            count++;
            sum += i;
        }
    }
    printf("%d %d\n", count, sum);

    return 0;
}
int prime(int p){
    int isPrime=1;
    int i;
    if(p<2){
        isPrime = 0;
    }
    else{
        for(i=2; i<=(int)sqrt(p); i++){
        /*若p为合数,则必有不大于sqrt(p)的因子*/
            if(p%i == 0){
                isPrime = 0;
                break;
            }
        }
    }
    return isPrime;
}

14、7-34 求分数序列前N项和

#include<stdio.h>

int main()
{
    int i, n;
    double sum = 0.0, numerator = 1.0, denominator = 1.0, item, temp;

    scanf("%d", &n);
    for (i = 1; i <= n; i++){
        temp = numerator;
        numerator = numerator + denominator;
        denominator = temp;
        item = numerator / denominator;
        sum += item;
    }
    printf("%.2f\n", sum);

    return 0;
}

15、7-35 猴子吃桃问题

#include <stdio.h>

int main(){
    int N;
    int count=1;
    int i;
    scanf("%d", &N);
    for(i=N; i>1; i--){
        count = (count+1)*2;
    }
    printf("%d\n", count);

    return 0;
}

16、7-36 韩信点兵

#include <stdio.h>
#define N 10000
int main(){
    int i=1;
    while(i<N){
        if(i%5==1 && i%6==5 && i%7==4 && i%11==10){
            printf("%d\n", i);
            break;
        }
        i++;
    }

    return 0;
}

17、7-37 输出整数各位数字

#include <stdio.h>
#include <math.h>
int main(void)	//如果不需要从命令行中获取参数,请用int main(void);否则请用int main(int argc, char *argv[])
{
	long n;
	scanf("%ld",&n);
	
	long temp=n,mask=1;
	while(temp/10!=0){	//n有几位? 
		temp/=10;
		mask*=10;
	}
//	printf("i=%d\n",i); 
	while(mask!=0){		//从高到低取n各位上的数
		printf("%d ",n/mask);
		n%=mask;
		mask/=10;
//		printf("p=%d n=%d\n",p,n);
	}
	return 0;
}

18、7-38 支票面额

#include <stdio.h>

int main(){
    int y, f;
    int n;
    int find=0;
    scanf("%d", &n);
    for(y=0; y<100; y++){
        for(f=1;f<100;f++){
            if(98*f-199*y==n){
                printf("%d.%d\n", y, f);
                find =1;
                break;
            }
            else if(98*f-199*y>n)
                break;
        }
        if(find)
            break;
    }
    if(y==100){
        printf("No Solution\n");
    }

    return 0;
}

19、7-39 龟兔赛跑

#include <stdio.h>

int main(){
    int T, time=0, count=0;
    int tripTurtle=0, tripRabbit=0;
    int end=0;
    scanf("%d", &T);
    while(!end){
        // 比赛未结束
        if(tripRabbit>tripTurtle){
            // 兔子进入休息模式
            for(count=0; count<30; ){
                time++;
                count++;
                tripTurtle += 3;
                if(time == T){ // 时间到,判胜负
                    if(tripTurtle>tripRabbit){
                        printf("@_@ %d\n", tripTurtle);
                    }
                    else if(tripTurtle<tripRabbit){
                        printf("^_^ %d\n", tripRabbit);
                    }
                    else{
                        printf("-_-\ %d\n", tripRabbit);
                    }
                    end = 1;
                    break; // 比赛结束
                }
            }
        }
        else{
            // 兔子进入跑步模式
            for(count=0; count<10; ){
                time++;
                count++;
                tripTurtle += 3;
                tripRabbit += 9;
                if(time == T){ // 时间到,判胜负。此功能可写为函数。
                    if(tripTurtle>tripRabbit){
                        printf("@_@ %d\n", tripTurtle);
                    }
                    else if(tripTurtle<tripRabbit){
                        printf("^_^ %d\n", tripRabbit);
                    }
                    else{
                        printf("-_- %d\n", tripRabbit);
                    }
                    end = 1;
                    break; // 比赛结束
                }
            }
        }
    }

    return 0;
}

20、7-40 到底是不是太胖了

#include <stdio.h>
int main () {
    void opinion(int hight,int weight);
    int n,height,weight;
    scanf("%d",&n);
    while(n--){                         //读取n行输入
        scanf("%d%d",&height,&weight);
        opinion(height,weight);
    }
    return 0;
}
 
void opinion (int height,int weight){         //判断体重是否标准
    double standard = (height -100)*0.9*2;
    double err = standard * 0.1;
    if (standard+err > weight && standard-err < weight)
        printf("You are wan mei!\n");
    else if (weight >= standard+err)
        printf("You are tai pang le!\n");
    else if (weight <= standard-err)
        printf("You are tai shou le!\n");
}
举报

相关推荐

0 条评论