专升本C语言练习题(三)

如果有帮助给小编点点关注,点点赞吧。会定期分享一些相关知识。谢谢啦。

若有问题可以私信小编,小编好及时改正。

1.输入3个整数,按从小到大的顺序输出。

方法一:常规方式

#include <stdio.h>
int main()
{
	int a,b,c,temp;
	printf("请输入三个整数:");
	scanf("%d%d%d",&a,&b,&c);
    if(a>b)
	{
        temp=a;
        a=b;
        b=temp;
	}
   
    if(a>c)
	{
		temp=a;
        a=c;
        c=temp;
	}
    if(b>c)
	{
    	temp=b;
        b=c;
        c=temp;
	}
    printf("%d %d %d",a,b,c);
}

方法二:条件运算符

int main()
{
	int a,b,c,max,min;
	printf("请输入三个整数:");
	scanf("%d%d%d",&a,&b,&c);
	max=(a>b?a:b)>c?(a>b?a:b):c;
	min=(a<b?a:b)<c?(a<b?a:b):c;
	printf("%d %d %d",min,(a+b+c)-max-min,max);
}

方法三:指针函数调用

int arr[3];
int *fun(int *a,int *b,int *c){
int t;
	if(*a>*b){	
	t=*a;	
	*a=*b;	
	*b=t;	
	}
	
	if(*a>*c){
	t=*a;	
	*a=*c;	
	*c=t;	
	}
	
	if(*b>*c){
	t=*b;	
	*b=*c;	
	*c=t;	
	}
	
	arr[0]=*a;
	arr[1]=*b;
	arr[2]=*c;
return arr;
}
int main(){
	int a,b,c;
	printf("请输入三个整数:\n");
	scanf("%d%d%d",&a,&b,&c);
	fun(&a,&b,&c);
	printf("%d %d %d",arr[0],arr[1],arr[2]);
}
void fun(int *a,int *b,int *c){
	int t;
	if(*a>*b){	// 3 2 1
		t=*a;	// t=3
		*a=*b;	// a=2
		*b=t;	// b=3
	}
	if(*a>*c){	
		t=*a;	// t=2
		*a=*c;	// a=1
		*c=t;	// c=2
	}
	if(*b>*c){
		t=*b;	// t=3
		*b=*c;	// b=2
		*c=t;	// c=3
	} 
	printf("%d %d %d",*a,*b,*c);
}
int main(){
	int a,b,c;
	printf("请输入三个整数:\n");
	scanf("%d%d%d",&a,&b,&c);
	fun(&a,&b,&c);
}  

2.请将以下语句改写成switch语句。(假设s为整数)

//初始
if ((s>0)&&(s<=10))
if ((s>=3)&&(s<=6))  x=2;
else if((s>1)||(s>8))  x=3;
else  x=1;
else  x=0;
int main()
{
	int s,x;
	scanf("%d",&s);
	switch(s){
		case 1:x=1; break;
		case 3: 
		case 4:
		case 5:
		case 6: x=2; break;
		case 2:
		case 7:
		case 8:
		case 9:
		case 10:x=3; break;
		default:x=0;	
	}
    printf("x=%d",x);
} 

3.输入一年如2006,判断这一年是不是闰年。

int main()
{
int a;
scanf("%d",&a);	
if((a%4==0)&&(a%100!=0))
	printf("%d是闰年",a);
else if(a%400==0)
	printf("%d是闰年",a);
else
	printf("%d不是闰年",a);

}

4.假设用四位数字表示一个时间,比如1106表示11点零6分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的等,例如5点30分表示为530;0点30分表示为030。注意,第二个数字表示的分钟数可能超过60,但要求是正数。

int main()
{
	int a,b,c,d,e,f,g;//a当前时间,b分钟数,c小时数 ,d当前分钟数 ,e计算后小时数,f计算后分钟数 
	scanf("%d%d",&a,&b);
	c=a/100; 
	d=a%100;
	e=(b+d)/60;
	f=(b+d)%60;
	g=(c+e)%24*100;
	if(g==0)
	printf("0"); 
	printf("%d",g+f);
	
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值