c语言 改成锯齿形式 求帮忙。

Python015

c语言 改成锯齿形式 求帮忙。,第1张

锯齿形式其实就是缩进对其

#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 。。。。 这就是你要的波形?