C语言晕死了。

Python012

C语言晕死了。,第1张

如果书上的程序就是这样,那就有问题,因为在printf("\nEnter a value:")输入一个数字后,会敲个回车符在缓冲里,后面的scanf("%c",&answer)会自动接受这个回车字符,所以看到的现象就是不等待输入YES/NO。改的方法很简单,可以多加个getchar吸收回车字符或是scanf格式修改。

如下可以正常运行:

#include "stdio.h"

#include "ctype.h"

void main()

{

char answer='N'

double total=0.0

double value=0.0

int count=0

printf("\nThis program calculates the average of"

"any number of values.")

for( )

{

printf("\nEnter a value:")

scanf("%lf",&value)

total+=value

++count

printf("Do you want to enter another value?(Y or N):")

scanf("\n%c",&answer)

if(tolower(answer)=='n')

break

}

printf("\nThe average is %.2lf\n",total/count)

return

}

先学好C语言的语法。。。语法是基础。。。

数据结构是另一个单独的学科,对于程序员来说,数组结构只需要知道数组和链表就基本够用了。也就是说,明白线性表就可以了。

(线性表包含了链表,你说的有点问题。。。)

如果是要准备考试,那么需要专门地学习数据结构。如果是要准备找工作,那么不需要只需要把”链表“给明白就行了。

推荐到优酷上看”C学习指南“这个系列。

我想这题可能是要说明宏的缺点的..

#define

sqr(x)

x*x

//比如sqr(3)相当于sqr(3)

=

3

*

3

==9

//但这个宏有个缺陷,比如你传sqr(1+2)

那相当于sqr(1+2)

=

1

+

2

*

1

+

2

==

5

a

=

sqr(k+m)%sqr(k+m)

==

1+3*1+3%1+3*1+3

==

10

最后输出a应该是10(我没调,不过应该是这个数)

这种例子当初是用来说明内联函数的优点和宏的缺点的...