每日一练1

1比较大小输入三个数a,b,c,比较输出其中的最大值

第一种方法 

​
#include <stdio.h>
int main(){
	long long a,b,c,max;      
	scanf("%d %d %d",&a,&b,&c);
	max=a;                    //首先假如max=a,然后拿max与b,c比较其大小 
	if (max>b && max>c)       //如果没有这一步,a为最大值但是不能输出其结果 
	   printf("%ld",a);
	if(max<b)
	  printf("%ld",b);
	if(max<c)
	  printf("%ld",c);
	
	return 0;
} 

​

第二种方法

​
#include <stdio.h>
int main(){
	long long a,b,c,max;
	scanf("%d %d %d",&a,&b,&c);
	if (a>b){              //先比较a,b的大小,再拿其中最大的数去跟第三个数字比较 
	  max=a;
	  if (c>a)
	     max=c;
	}
	else{
	  max=b;
	  if(c>b)
	    max=c;
	}
	printf("%d",max);
	return 0;
} 

​

2数的倒置:输入一个数(12345678),输出这个数的倒置(87654321)

#include <stdio.h>
#include <math.h>
int main(){
	long long a,b,sum=0;
	int x,i,count=1;
	scanf("%d",&a);
	b=a;
	do{            //计算输入的数字的位数 
		b=b/10;
		count++;
	}while(b>9);
	for(i=1;i<=count;i++){
	   x=a%10;                //得到每一次循环时输入数字的最后一位上的数 
	   sum+=x*pow(10,count-i);   //求数字颠倒后的总和 
	   a/=10;                 //每一次循环去除输入数字的最后一位 
	}
	printf("%ld",sum);

	return 0;
} 

或者

#include <stdio.h>
int main(){
	long long a,b;
	int x,i,count=1;
	scanf("%d",&a);
	b=a;
	do{
		b=b/10;
		count++;
	}while(b>9);
	for(i=1;i<=count;i++){
	   x=a%10;
	   a/=10;
	   printf("%d",x);   //求数字颠倒后结果可以只需要挨个输出各位上的数没必要求总和 
	}


	return 0;
} 

3最大公约数:写一个函数,完成输入两个整数,输出最大公约数的功能

​
#include <stdio.h>
int MAX(int a,int b){          //创造函数 MAX
	int c,i;
	if(a<b){                
		c=a;
		a=b;
		b=c;
	}                         //保证a>b 
	for (i=b;i>0;i--){         //最大公约数最大只能为两数中较小的那个,所以i=b 
		if (a%i==0 && b%i==0)   
		   break;
	}
	return i;               //此时 i 为最大公约数 
}
int main(){
    int m,n,y;
    scanf("%d %d",&m,&n);\
    y=MAX(m,n);              //函数调用 
    printf("最大公约数是%d",y);
	return 0;
} 

​

第二种

#include <stdio.h>
int MAX(int a,int b){          //创造函数 MAX
	int c,d;
	if (a<b){
		d=a;
		a=b;                 //确保a>b 
		b=d;
	}
	if (a%b==0)             //b是a的因数 
	    c=b;             
	else {
	    while(a%b!=0){        //辗转相除法:第一步,确保输入的两个数a>b;第二步求 c=a%b;如果c==0 ,则b为最大公约数,否则就进行循环将 b赋值给a ,a%b 赋值给b 
		     c=a%b;
		     a=b;
		     b=c;
      	}
	} 
	return c;     //return的值为所求 
}
int main(){
    int m,n,y;
    scanf("%d %d",&m,&n);\
    y=MAX(m,n);              //函数调用 
    printf("最大公约数是%d",y);
	return 0;
} 
#include <stdio.h>
int MAX(int a,int b){          //创造函数 MAX
	int d;
	if (a<b){
		d=a;
		a=b;                 //确保a>b 
		b=d;
	}     
	while(a!=b){          //更相减损法:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。
		a=a-b;
	}                   
	return a; 
}
int main(){
    int m,n,y;
    scanf("%d %d",&m,&n);
    y=MAX(m,n);              //函数调用 
    printf("最大公约数是%d",y);
	return 0;
} 

 

 

4附加题首先输入一个数组的大小,如何输入数组的数据,接下来对数组排序后输出提示:冒泡排序与选择排序

​
​
#include <stdio.h>
#define lenth 100     /*输入一个数组的大小*/ 
int main(){
	int a[lenth],i,j,k,y;
	for(i=0;i<lenth;i++){         /* 如何输入一个数组*/ 
        scanf("%d",&a[i]);
	}
	for (k=0;k<lenth-1;k++){       /*冒泡排序:比较相邻数字大小,每一次外层结束循环,其对应的最大值 放在最后面。所以外层表示排序所要经历的次数;
	                              而外层一次循环后就把最大值排在最后面,因此内层只需要从j=0到除每一次外层循环后最大数之间排序即lenth-k;*/ 
		for (j=0;j<lenth-1-k;j++){
			if (a[j]>a[j+1]){
				y=a[j];
				a[j]=a[j+1];
				a[j+1]=y;
			}
		}
	}
	for (i=0;i<lenth;i++){
		printf("%d ",a[i]);
	}
	return 0;
} 

​

​
​
#include <stdio.h>
#define lenth  100   /*输入一个数组的大小*/ 
int main(){
	int a[lenth],y;
	int i,j,k;
	for(i=0;i<lenth;i++){         /* 如何输入一个数组*/ 
        scanf("%d",&a[i]);
	}
	for (k=0;k<lenth-1;k++){       /*选择排序:按顺序数字依次与其后面的数字比较。每一次外层循环结束后都会得到相应的最小值,所以当循环到lenth-1次时已经把数组最后
	                               两位进行了排序,所以循环次数为lenth-1;内层由于是数与后面进行比较所以初始j等于i+1,又每次都要跟数组最后一位比所以j<lenth*/ 
		for (j=k+1;j<lenth;j++){
			if (a[k]>a[j]){
				y=a[k];
				a[k]=a[j];
				a[j]=y;
			}
		}
	}
	for (i=0;i<lenth;i++){
		printf("%d ",a[i]);
	}
	return 0;
} 

​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值