C语言的几个有趣问题

问题1. 不能使用分号,编写一个“Hello World”程序。

问题2. 如何用C语言打印“ I am print %”?

问题3. 不能使用”>、<、>=、<=“等关系运算符,找到3个整数a ,b ,c中的最小的数。

问题4.程序中不使用“+”法运算,实现整数加法运算。

参考程序:

1. 这是一个比较有趣的问题,但是答案往往十分简单,所采用的是最基本的语句,参考程序如下:

#include <stdio.h>void main(){)){} //可以换成while等}

2. 对于初学者来说,服务器空间,有不少人不知道如何打印百分号这种类型的符号,其实也很简单,无非是在前面加个百分号而已。

#include <stdio.h>int main(){printf();}

3. 第3个问题有一定的挑战性,而且答案不止一个,此外,关系运算符有:

C语言提供6种关系运算符,香港虚拟主机,如表所示:

运算符

名称

示例

功能

缩写

<

小于

a<b

a小于b时返回真;否则返回假

LT

<=

小于等于

a<=b

a小于等于b时返回真;否则返回假

LE

>

大于

a>b

a大于b时返回真;否则返回假

GT

>=

大于等于

a>=b

a大于等于b时返回真;否则返回假

GE

==

等于

a==b

a等于b时返回真;否则返回假

EQ

!=

不等于

a!=b

a不等于b时返回真;否则返回假

NE

参考程序:

#include <stdio.h>#define min(a,b) (((a)-(b)) >> 31 ? (a) : (b))int main(){int a , b , c;a = -30;b = 59;c = 56;printf(“min = %d”,min(min(a,b),c));}

4. 不能使用”+”法运算,自然想到当初学的计算机组成原理的二进制相加的知识,采用位运算来实现相加:

#include<stdio.h>#include<stdlib.h>int main(){int x,y; //输入的两个数int inBit = 0x0000;int tailBit = 0x0001;int result = 0,Rbit;int XlastBit,YlastBit;int inBitREP;printf();scanf(,&x,&y);while(tailBit){XlastBit = x&tailBit;YlastBit = y&tailBit;Rbit = XlastBit^YlastBit^inBit;inBitREP = 0;if( (XlastBit == tailBit && YlastBit == tailBit) || ( XlastBit == tailBit && inBit == tailBit) || (YlastBit == tailBit && inBit == tailBit)) //超过两个1,则进位为1{inBitREP = tailBit<<1;}inBit = inBitREP;result = result|Rbit;tailBit = tailBit<<1;}printf(,result);system();return 0;}

以上便是C语言的几个有趣的问题,希望学习C语言的童鞋们会喜欢,以上代码均在CodeBlocks上运行无误。第一次发帖子,求各位大神轻喷!小弟先谢过了!

,网站空间放弃那些不愿放弃的,容忍那些不可容忍的。

C语言的几个有趣问题

相关文章:

你感兴趣的文章:

标签云: