#include <stdio.h>
#define PRICE 12.5
mian ()
{
int num = 3
float total
total = num *PRICE
printf("total = %f\n",total)
}
在比如
main()
{
int x=1,a=0,b=0
switch(x)
{
case 0: b++
case 1: a++
case 2: a++b++
}
printf (“a=%d,b=%d\n”,a,b)
}
printf("*%-06d*\n",x)- 表示从左往右输出;06 表示输出6位,如果不满6位就输出空格,超过6位就截取前6位。
%d就不用我说了吧。
-06 合起来就表示从左往右输出6位,如果不满6位就输出空格,超过6位就截取前6位。(其实这里用不着打0,只要打个6就可以了)。
——————————————华丽的分隔线—————————————
main()
{int x=10,y=20
printf("x=%%d,y=%%d\n",x,y)
}
c语言中把%当成了输入输出函数(如scanf和printf等等)的参数个数的标记,因而在要输出百分号的时候会出现冲突,为此,把它设置为当有两个连续百分号的时候才打印百分号。以此来区分。
printf("x=%%d,y=%%d\n",x,y)
所以上面这条语句中的%%d被理解为先打印一个百分号,再打印字符d。如果要打印x ,y,少个百分号就可以了;如果要打印 x=%10,y=%20 ,则还要加一个%
附: 楼主看的书有点过时了。main()的形式太旧了
按C99规范,应写成
int main(void)
{
return 0
}
你的例子的代码风格很糟糕,挤成一团,不利于阅读差错。应该写成锯齿状。
推荐《C Primer Plus(第五版)中文版》。(不是讲C++,全是讲C的)这本书符合C99规范,内容详尽,代码风格友好。
你可以认为 sintab是个表, 里面从头到尾放的是从 0到 360之间角度的sin值(正好一个周期)。 这些角度对应的 sintab里的序号就是 0到512 。 基本来说这个逻辑就是 sin(alpha) = sintab[i] , 其中alpha是0 到 360的连续变量, i是跟它对应的离散序号。但是其实这个表里用不着把整个周期的数据都放进来。 首先, 都放进来之后这个表的后一半(256个数)跟前一半是很有点关系的,后一半就是前一半加个负号(这个你画一下sin图像就知道)。所以不如把后一半去掉, 需要用这些的时候读相应的前一半值,然后加个负号。 也就是说, sintab[i] = -sintab[i-256] 其中( 256 <i <512)
现在表里只有256个数了, 但其实这个也不必要。 因为这256个里,前一半跟后一半是对称的(这个也是看图像就知道), 也就是 129跟127应该是一样的, 130跟126应该是一样的。。。 所以这里的后127个数也可以去掉, 需要的时候找找对应的前面的, 基本关系是这样的:
sintab[ i ] = sintab[256 - i] 其中( 128 <i <256)
总结起来就可以写出类似的代码了。
这里我写的关系跟你给的是略微有点差别的, 除了它写了很多不必要的 %之外(这些都可以用减解决,只要i的范围固定)还有一点差别就是某些序号差了1 。 他的这个写法是不准确的, 好处是sintab里面有128个数, 而我这个写法要需要129个。
另外就是它给的注释是错的
至于锯齿形状的波? 这个很明显啊, i%256从0涨上去到255然后一下掉到0,然后再上去到255然后再掉到0 。。。。 这就是你要的波形?