問題1. 不能使用分號,編寫一個“Hello World”程序。
問題2. 如何用C語言打印“ I am print %”?
問題3. 不能使用">、<、>=、<=“等關系運算符,找到3個整數a ,b ,c中的最小的數。
問題4. 程序中不使用“+”法運算,實現整數加法運算。
參考程序:
1. 這是一個比較有趣的問題,但是答案往往十分簡單,所采用的是最基本的語句,參考程序如下:
#include <stdio.h> void main() { if(printf("Hello World!\n")){} //可以換成while等 }
2. 對於初學者來說,有不少人不知道如何打印百分號這種類型的符號,其實也很簡單,無非是在前面加個百分號而已。
#include <stdio.h> int main() { printf("I am print %%!"); }
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("please input two numbers :"); scanf("%d%d",&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("The result is %d\n",result); system("pause"); return 0; }
以上便是C語言的幾個有趣的問題,希望學習C語言的童鞋們會喜歡,以上代碼均在CodeBlocks上運行無誤。第一次發帖子,求各位大神輕噴!小弟先謝過了!