c语言编程练习

本文介绍了一次C语言编程练习,通过访问http://acm.hdu.edu.cn/进行。练习题目要求输入三个字符并按照它们的ASCII码升序排序输出。补充讨论了计算机中使用补码表示和存储数值的原因,以及正负整数补码的计算方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

练习网站:http://acm.hdu.edu.cn/  (账号:Taylent)

Problem : 2000 ( ASCII码排序 )

Problem Description:输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。

#include<stdio.h>
int main()
{
	char a,b,c,tmp;
	/*
	scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。
	scanf("%d %d",&a,&b);    函数返回值为int型。如果a和b都被成功读入,那么scanf
	的返回值就是2;如果只有a被成功读入,返回值为1;如果a和b都未被成功读入,返回值为0;
	如果遇到错误或遇到end of file,返回值为EOF。end of file为Ctrl+z 或者Ctrl+d。
	其中EOF的值为-1也就是说scanf返回值的取值范围是大于等于-1的整数只有返回值为EOF时 
	其取反的的值 即while循环的判断条件才为0 才能结束循环(-1的补码表示全是1,按位取反后全是0,即为假)
	其它输入情况下(无论是否输入成功) while循环的判断条件为非0 即为真
	*/
    while(~scanf("%c%c%c",&a,&b,&c))
    {
        getchar();//用getchar()滤掉回车
        if(a>b) tmp=a,a=b,b=tmp; //逗号表达式,简洁 
		if(a>c) tmp=a,a=c,c=tmp;
		if(b>c) tmp=b,b=c,c=tmp;
		printf("%c %c %c\n",a,b,c);
    }
    return 0;
}

补充知识点:在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

正整数的补码是其二进制表示,与原码相同;求负整数的补码,将其对应正数二进制表示所有位(包括符号位)取反后加1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值