有趣的C语言问题 测试你对C语言的熟悉程度
2008-02-03 21:35
281 查看
下面这个程序输出什么?
你相信么?下面这个程序输出的两行东西不一样!
下面的程序看似完全正确。你能看出它为什么通不过编译吗?
看出问题前不要去试着编译,不然你会后悔你没看出来这个低级的语法错误。
为什么下面这个程序的输出不是NONE?看你多久才能看出来。
下面这个程序输出什么?
下面这个程序输出什么?
下面这个程序输出什么?
下面这个程序输出什么?
下面这个程序输出什么?
下面这个程序输出什么?
为什么下面这个程序的输出不是10?我故意取消了语法高亮:)
下面这个程序输出什么?
下面这段代码是否合法?
这是什么意思?有什么潜在的问题?
这是什么意思?
一些C语言的教材上会给出一个很经典的宏定义
但这种宏定义的方法存在不足之处,一旦遇到下面这种情况就出问题了:
为了避免这种问题,应该怎样来定义isupper?
怎样用printf函数打印"I can print %"?别忘了百分号是用于格式化输出的。
不用任何比较运算符,写一个程序找出三个数中的最小数。
不用+号,(用位运算)实现加法运算。
最有趣的一个问题:不用分号,写一个Hello World程序。
这是有可能的,而且办法非常简单,只用到了最基本的语法规则。
实在想不出来再看答案吧(白色的):
#include <stdio.h>
int main()
{
if (printf("Hello World")){}
}
查看更多:http://www.gowrikumar.com/c/
enum {false,true}; int main() { int i=1; do { printf("%d/n",i); i++; if(i < 15) continue; }while(false); return 0; }
你相信么?下面这个程序输出的两行东西不一样!
#include <stdio.h> #define f(a,b) a##b #define g(a) #a #define h(a) g(a) int main() { printf("%s/n",h(f(1,2))); printf("%s/n",g(f(1,2))); return 0; }
下面的程序看似完全正确。你能看出它为什么通不过编译吗?
看出问题前不要去试着编译,不然你会后悔你没看出来这个低级的语法错误。
#include<stdio.h> void OS_Solaris_print() { printf("Solaris - Sun Microsystems/n"); } void OS_Windows_print() { printf("Windows - Microsoft/n"); } void OS_HP-UX_print() { printf("HP-UX - Hewlett Packard/n"); } int main() { int num; printf("Enter the number (1-3):/n"); scanf("%d",&num); switch(num) { case 1: OS_Solaris_print(); break; case 2: OS_Windows_print(); break; case 3: OS_HP-UX_print(); break; default: printf("Hmm! only 1-3 :-)/n"); break; } return 0; }
为什么下面这个程序的输出不是NONE?看你多久才能看出来。
#include<stdio.h> int main() { int a=10; switch(a) { case '1': printf("ONE/n"); break; case '2': printf("TWO/n"); break; defa1ut: printf("NONE/n"); } return 0; }
下面这个程序输出什么?
#include <stdio.h> int main() { int i=43; printf("%d/n",printf("%d",printf("%d",i))); return 0; }
下面这个程序输出什么?
#include<stdio.h> int main() { int a=1; switch(a) { int b=20; case 1: printf("b is %d/n",b); break; default:printf("b is %d/n",b); break; } return 0; }
下面这个程序输出什么?
#include <stdio.h> int main() { int i; i = 10; printf("i : %d/n",i); printf("sizeof(i++) is: %d/n",sizeof(i++)); printf("i : %d/n",i); return 0; }
下面这个程序输出什么?
#include <stdio.h> #include <stdlib.h> #define SIZEOF(arr) (sizeof(arr)/sizeof(arr[0])) #define PrintInt(expr) printf("%s:%d/n",#expr,(expr)) int main() { /* The powers of 10 */ int pot[] = { 0001, 0010, 0100, 1000 }; int i; for(i=0;i<SIZEOF(pot);i++) PrintInt(pot[i]); return 0; }
下面这个程序输出什么?
#include <stdio.h> int main() { int a=3, b = 5; printf(&a["Ya!Hello! how is this? %s/n"], &b["junk/super"]); printf(&a["WHAT%c%c%c %c%c %c !/n"], 1["this"], 2["beauty"],0["tool"],0["is"],3["sensitive"],4["CCCCCC"]); return 0; }
下面这个程序输出什么?
#include <stdio.h> int main() { int i=23; printf("%d %d/n",i++,i++); return 0; }
为什么下面这个程序的输出不是10?我故意取消了语法高亮:)
#include <stdio.h> #define PrintInt(expr) printf("%s : %d/n",#expr,(expr)) int main() { int y = 100; int *p; p = malloc(sizeof(int)); *p = 10; y = y/*p; /*dividing y by *p */; PrintInt(y); return 0; }
下面这个程序输出什么?
#include <stdio.h> int main() { int i = 6; if( ((++i < 7) && ( i++/6)) || (++i <= 9)) ; printf("%d/n",i); return 0; }
下面这段代码是否合法?
#include <stdio.h> #define PrintInt(expr) printf("%s : %d/n",#expr,(expr)) int max(int x, int y) { (x > y) ? return x : return y; } int main() { int a = 10, b = 20; PrintInt(a); PrintInt(b); PrintInt(max(a,b)); }
这是什么意思?有什么潜在的问题?
#define SWAP(a,b) ((a) ^= (b) ^= (a) ^= (b))
这是什么意思?
#define ROUNDUP(x,n) ((x+n-1)&(~(n-1)))
一些C语言的教材上会给出一个很经典的宏定义
#define isupper(c) (((c) >= 'A') && ((c) <= 'Z'))
但这种宏定义的方法存在不足之处,一旦遇到下面这种情况就出问题了:
char c; /* ... */ if(isupper(c++)) { /* ... */ }
为了避免这种问题,应该怎样来定义isupper?
怎样用printf函数打印"I can print %"?别忘了百分号是用于格式化输出的。
不用任何比较运算符,写一个程序找出三个数中的最小数。
不用+号,(用位运算)实现加法运算。
最有趣的一个问题:不用分号,写一个Hello World程序。
这是有可能的,而且办法非常简单,只用到了最基本的语法规则。
实在想不出来再看答案吧(白色的):
#include <stdio.h>
int main()
{
if (printf("Hello World")){}
}
查看更多:http://www.gowrikumar.com/c/
相关文章推荐
- 有趣的C语言问题 测试你对C语言的熟悉程度
- 有趣的C语言问题 测试你对C语言的熟悉程度
- [FWD]有趣的C语言问题 测试你对C语言的熟悉程度
- 有趣的C语言问题 测试你对C语言的熟悉程度
- C语言常见问题 如何用Visual Studio编写C语言程序测试
- C语言测试:想成为嵌入式程序员应知道的0x10个基本问题
- C语言测试:想成为嵌入式程序员应知道的几个基本问题
- 一个有趣的编号问题的C语言实现
- 绝对能够测试你的C语言功力的几个问题!
- C语言测试:想成为嵌入式程序员应知道的0x10个基本问题【转】
- C语言测试:想成为嵌入式程序员应知道的0x10个基本问题
- C语言测试:嵌入式程序员必须知道的16个问题(转)
- 关于C语言的文件型指针和移位操作中的一些有趣问题的探讨
- 绝对能够测试你的C语言功力的几个问题!
- C语言高级测试:为C程序员准备的0x10个最佳问题
- [原创]绝对能够测试你的C语言功力的几个问题 - 参考答案
- 用C语言测试计算机大小端问题
- (经典)C语言测试:想成为嵌入式程序员应知道的0x10个基本问题- -
- C语言测试:想成为嵌入式程序员应知道的10个基本问题
- C语言测试:想成为嵌入式程序员应知道的0x10个基本问题