scanf();缓冲区问题及其解决方案。

例1 #include <stdio.h> main() {int i;int b; scanf("%d",&amp;i); getchar(); } 为什么只输入一个数字或字母都会退出? 例2 #include <stdio.h> main() {int i;int b; scanf("%d",&amp;i); scanf("%d",&amp;b); } 为什么输入一个数字不会退出,输入一个字母会退出? 例3 #include <stdio.h> main() {int i;int b; scanf("%d",&amp;i); getch(); } 为什么输入一个数字或者字母都不会退出...
2011-10-26 21:50 | 阅读 1398 次 | 评论 0 条

指针,二级指针

#include<stdio.h>void main(){ int a[5]={2,4,6,8,10},*p,**k; p=a; k=&amp;p; printf("%d",*(p++)); printf("%d\n",**k);}程序输出() A.4B.22C.24D.46 大家思考一下,给出答案。 答案是:C.24 题目出处:http://bbs.bccn.net/viewthread.php?tid=349295&amp;extra=&amp;page=1
2011-09-11 09:16 | 阅读 1347 次 | 评论 4 条

小代码里的错误

编写程序,求下面级数前n项中偶数项的和ES。在求和过程中,以第一个绝对值大于9999的项为末项,计算并输出和数ES。(其中^表示幂运算)题目出自:http://bbs.bccn.net/viewthread.php?tid=349405&amp;pid=2005275&amp;page=1#pid20052751!-2!+3!-4!+……+(-1)^(n-1)*n!+ …… #include<stdio.h>void main(){ int OS=0,ES=0,SUM=0,n=1,temp=1;//奇数项和:OS,偶数项和:ES,奇偶数项和:SUM while(temp<...
2011-09-07 22:04 | 阅读 1365 次 | 评论 4 条

scanf(&quot;%d\n&quot;);问题

# include <stdio.h>void main(){ int n; scanf("%d\n",&amp;n); printf("you typed %d\n",n);} 以上的代码要怎么样输入? 原因: \n在scanf格式串中不表示等待换行符,而是读取并放弃连续的空白字符。(事实上,scanf格式串中的任何空白字符都表示读取并放弃空白字符。而且,诸如%d这样的格式也会丢掉前边的空白,因此你通常根本不需要在scanf格式串中加入显式的空白。) 因此,“%d\n”中的\n会让scanf读取到非空白字符串为止,而它可能需要读到下一行才能找到...
2011-08-31 16:13 | 阅读 1856 次 | 评论 9 条

为已声明指针分配空间问题及malloc(),calloc(),free()函数的原型

#include<stdio.h>#include<malloc.h>void main(){ char *p1; *p1=malloc(sizeof(char));} 错误信息: error C2440: '=' : cannot convert from 'void *' to 'char' 错误原因:这里声明的指针是p,而不舍得*p。 修改: #include<stdio.h>#include<malloc.h>void main(){ char *p1; p1=malloc(sizeof(char));}还是有错误,错误信息如下: e...
2011-08-25 22:25 | 阅读 2151 次 | 评论 0 条

交换数值(函数传值问题)

# include <stdio.h>int main(void){ void swap(int a, int b); int a = 2, b = 3; swap(a, b); printf("%d\n%d\n", a, b); return 0;}void swap(int a, int b){ int c; c = a; a = b; b = c;}不用编译器,你想想会输出什么? 正确答案: 2 3 你错了吗?知道问什么错了吗? 我个人看法是: void swap(int a, int b){ ...
2011-08-23 16:34 | 阅读 1032 次 | 评论 12 条

sizeof(结构体)和内存对齐

有的时候,在脑海中停顿了很久的“显而易见”的东西,其实根本上就是错误的。就拿下面的问题来看:struct T{char ch;int i ;};使用sizeof(T),将得到什么样的答案呢?要是以前,想都不用想,在32位机中,int是4个字节,char是1个字节,所以T一共是5个字节。实践出真知,在VC6中测试了下,答案确实8个字节。哎,反正受伤的总是我,我已经有点麻木了,还是老老实实的接受吧!为什么答案和自己想象的有出入呢?这里将引入内存对齐这个概念。 许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这...
2011-07-15 08:38 | 阅读 1167 次 | 评论 4 条
浏览48169次