程序设计入门

1、双精度浮点数的输入问题

使用 scanf 语句输入变量的值,如果是double类型的数,需要使用scanf("%lf",&a)。这真的是个坑,反正我每次都会掉进去。

#include<stdio.h>
int main()
{
    double a;
    scanf("%lf",&a);
    printf("%.1f",a);   //输出结果取小数点后一位
    return 0;
}

2、转换思路 —— 解决问题,不要为了写程序而写程序

从一个简单的问题入手,输入两个整数ab,交换二者的值,然后输出。

样例输入: 824 16

样例输出: 16 824

我们很容易想到引入一个新的变量来解决这个问题,但是单纯从解决问题本身的角度来讲,只要结果对解决了问题就OK了,所以就本题而言,最佳的程序为

#include<stdio.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d %d",b,a);
    return 0;
}

3、三整数排序问题

输入三个整数,从小到大排序后输出
样例输入:20 7 33
样例输出:7 20 33
思路:我第一开始想到的是使用多个if语句的嵌套,写出了代码后发现,这样做很繁琐,而且极其容易搞错。

#include<stdio.h>
int main()
{
	//三个数排序 
	int a,b,c;
	scanf("%d %d %d",&a,&b,&c); 
	if(a>=b) 
	{
		if(b>=c)
		    printf("%d %d %d",c,b,a);
		else{
			if(a>=c)
			   printf("%d %d %d",b,c,a);
			else
			   printf("%d %d %d",b,a,c);
		}
	}
	else{
		if(b<=c)
		printf("%d %d %d",a,b,c);
		else{
			if(a>=c)
			    printf("%d %d %d",c,a,b);
			else
			    printf("%d %d %d",a,c,b);
		}
	}
	return 0;

换个角度思考问题,a,b,c是要进行排序的数,我们可以依次把较小的数往前挪,达到排序的目的

#include<iostream>
using namespace std; 
int main()
{
	int a,b,c;
	scanf("%d %d %d",&a,&b,&c);
	if(b<a)   swap(a,b);
	if(c<b)   swap(b,c);
	if(b<a)   swap(a,b);
	printf("%d %d %d",a,b,c);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值