⑴ c语言怎么画矩形
用lineto函数画矩形
#include<graphics.h>
main()
{int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"c:\\tc");
cleardevice();
moveto(160,120);
lineto(480,120);
lineto(160,360);
lineto(160120);
getch();
closegraph();
}
图形和图像函数包含在graphics.h里面
rectangle() 画矩形函数
功能: 函数rectangle() 用当前绘图色、线型及线宽,画一个给定左上角与右下角的矩形(正方形或长方形)。
用法: 此函数调用方式为void rectangle(int left,int top,int right,int bottom);
说明: 参数left,top是左上角点坐标,right,bottom是右下角点坐标。如果有一个以上角点不在当前图形视口内,且裁剪标志clip设置的是真(1),那么调用该函数后,只有在图形视口内的矩形部分才被画出。
这个函数对应的头文件为graphics.h
返回值: 无
例: 下面的程序画一些矩形实例:
#i nclude<graphics.h>
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgrpah(&driver,&mode,"");
rectangle(80,80,220,200);
rectangle(140,99,180,300);
rectangle(6,6,88,88);
rectangle(168,72,260,360);
getch();
restorecrtmode();
}
⑵ 哪个高手帮帮忙,急用!.
“斐波那契数列”的发明者,是意大利数学家列昂纳多·斐波那契(Leonardo Fibonacci,生于公元1170年,卒于1240年。籍贯大概是比萨)。他被人称作“比萨的列昂纳多”。1202年,他撰写了《珠算原理》(Liber Abaci)一书。他是第一个研究了印度和阿拉伯数学理论的欧洲人。他的父亲被比萨的一家商业团体聘任为外交领事,派驻地点相当于今日的阿尔及利亚地区,列昂纳多因此得以在一个阿拉伯老师的指导下研究数学。他还曾在埃及、叙利亚、希腊、西西里和普罗旺斯研究数学。
斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21……
这个数列从第三项开始,每一项都等于前两项之和。它的通项公式为:(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}(又叫“比内公式”,是用无理数表示有理数的一个范例。)【√5表示根号5】
很有趣的是:这样一个完全是自然数的数列,通项公式居然是用无理数来表达的。
[编辑本段]【该数列有很多奇妙的属性】
比如:随着数列项数的增加,前一项与后一项之比越逼近黄金分割0.6180339887……
如果你看到有这样一个题目:某人把一个8*8的方格切成四块,拼成一个5*13的长方形,故作惊讶地问你:为什么64=65?其实就是利用了斐波那契数列的这个性质:5、8、13正是数列中相邻的三项,事实上前后两块的面积确实差1,只不过后面那个图中有一条细长的狭缝,一般人不容易注意到。
5、-2.4、2.6、0.2、2.8、3、5.8、8.8、14.6……等,你将发现随着数列的发展,前后两项之比也越来越逼近黄金分割,且某一项的平方与前后两项之积的差值也交替相差某个值。如果所有的数都要求是自然数,能找出被任意正整数整除的项的此类如果任意挑两个数为起始,比如5、-2.4,然后两项两项地相加下去,形成数列,必然是斐波那契数列的某项开始每一项的倍数,如4,6,10,16,26……(从2开始每个数的两倍)。
斐波那契数列的第n项同时也代表了集合{1,2,...,n}中所有不包含相邻正整数的子集个数。
斐波那契数列(f(n),f(0)=0,f(1)=1,f(2)=1,f(3)=2……)的其他性质:
1.f(0)+f(1)+f(2)+…+f(n)=f(n+2)-1
2.f(1)+f(3)+f(5)+…+f(2n-1)=f(2n)-1
3.f(0)+f(2)+f(4)+…+f(2n)=f(2n+1)-1
4.[f(0)]^2+[f(1)]^2+…+[f(n)]^2=f(n)·f(n+1)
5.f(0)-f(1)+f(2)-…+(-1)^n·f(n)=(-1)^n·[f(n+1)-f(n)]+1
6.f(m+n)=f(m-1)·f(n-1)+f(m)·f(n)
7.[f(n)]^2=(-1)^(n-1)+f(n-1)·f(n+1)
8.f(2n-1)=[f(n)]^2-[f(n-2)]^2
9.3f(n)=f(n+2)+f(n-2)
在杨辉三角中隐藏着斐波那契数列
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
……
过第一行的“1”向左下方做45度斜线,之后做直线的平行线,将每条直线所过的数加起来,即得一数列1、1、2、3、5、8……
(1)细察下列各种花,它们的花瓣的数目具有斐波那契数:延龄草、野玫瑰、南美血根草、大波斯菊、金凤花、耧斗菜、百合花、蝴蝶花。
(2)细察以下花的类似花瓣部分,它们也具有斐波那契数:紫宛、大波斯菊、雏菊。
斐波那契数经常与花瓣的数目相结合:
3………………………百合和蝴蝶花
5………………………蓝花耧斗菜、金凤花、飞燕草
8………………………翠雀花
13………………………金盏草
21………………………紫宛
34,55,84……………雏菊
(3)斐波那契数还可以在植物的叶、枝、茎等排列中发现。例如,在树木的枝干上选一片叶子,记其为数0,然后依序点数叶子(假定没有折损),直到到达与那息叶子正对的位置,则其间的叶子数多半是斐波那契数。叶子从一个位置到达下一个正对的位置称为一个循回。叶子在一个循回中旋转的圈数也是斐波那契数。在一个循回中叶子数与叶子旋转圈数的比称为叶序(源自希腊词,意即叶子的排列)比。多数的叶序比呈现为斐波那契数的比。
(4)斐波那契数列与黄金比值
相继的斐波那契数的比的数列:
它们交错地或大于或小于黄金比的值。该数列的极限为。这种联系暗示了无论(尤其在自然现象中)在哪里出现黄金比、黄金矩形或等角螺线,那里也就会出现斐波那契数,反之亦然。
[编辑本段]【与之相关的数学问题】
1.排列组合.
有一段楼梯有10级台阶,规定每一步只能跨一级或两级,要登上第10级台阶有几种不同的走法?
这就是一个斐波那契数列:登上第一级台阶有一种登法;登上两级台阶,有两种登法;登上三级台阶,有三种登法;登上四级台阶,有五种登法……
1,2,3,5,8,13……所以,登上十级,有89种
2.数列中相邻两项的前项比后项的极限.
就是问,当n趋于无穷大时,F(n)/F(n+1)的极限是多少?
这个可由它的通项公式直接得到,极限是(-1+√5)/2,这个就是所谓的黄金分割点,也是代表大自然的和谐的一个数字。
3.求递推数列a(1)=1,a(n+1)=1+1/a(n).的通项公式.
由数学归纳法可以得到:a(n)=F(n+1)/F(n).将菲波那契数列的通项式代入,化简就得结果。
[编辑本段]【斐波那契数列别名】
斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。
斐波那契数列
一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔都不死,那么一年以后可以繁殖多少对兔子?
我们不妨拿新出生的一对小兔子分析一下:
第一个月小兔子没有繁殖能力,所以还是一对;
两个月后,生下一对小兔民数共有两对;
三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对;
------
依次类推可以列出下表:
经过月数:---0---1---2---3---4---5---6---7---8---9--10--11--12
兔子对数:---1---1---2---3---5---8--13--21--34--55--89-144-233
表中数字1,1,2,3,5,8---构成了一个数列。这个数列有关十分明显的特点,那是:前面相邻两项之和,构成了后一项。
这个特点的证明:每月的大兔子数为上月的兔子数,每月的小兔子数为上月的大兔子数,即上上月的兔子数,相加。
这个数列是意大利中世纪数学家斐波那契在<算盘全书>中提出的,这个级数的通项公式,除了具有a(n+2)=an+a(n+1)/的性质外,还可以证明通项公式为:an=1/√[(1+√5/2) n-(1-√5/2) n](n=1,2,3.....)
[编辑本段]【斐波那挈数列通项公式的推导】
斐波那契数列:1,1,2,3,5,8,13,21……
如果设F(n)为该数列的第n项(n∈N+)。那么这句话可以写成如下形式:
F(0) = 0,F(1)=F(2)=1,F(n)=F(n-1)+F(n-2) (n≥3)
显然这是一个线性递推数列。
通项公式的推导方法一:利用特征方程
线性递推数列的特征方程为:
X^2=X+1
解得
X1=(1+√5)/2, X2=(1-√5)/2.
则F(n)=C1*X1^n + C2*X2^n
∵F(1)=F(2)=1
∴C1*X1 + C2*X2
C1*X1^2 + C2*X2^2
解得C1=1/√5,C2=-1/√5
∴F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}【√5表示根号5】
通项公式的推导方法二:普通方法
设常数r,s
使得F(n)-r*F(n-1)=s*[F(n-1)-r*F(n-2)]
则r+s=1, -rs=1
n≥3时,有
F(n)-r*F(n-1)=s*[F(n-1)-r*F(n-2)]
F(n-1)-r*F(n-2)=s*[F(n-2)-r*F(n-3)]
F(n-2)-r*F(n-3)=s*[F(n-3)-r*F(n-4)]
……
F(3)-r*F(2)=s*[F(2)-r*F(1)]
将以上n-2个式子相乘,得:
F(n)-r*F(n-1)=[s^(n-2)]*[F(2)-r*F(1)]
∵s=1-r,F(1)=F(2)=1
上式可化简得:
F(n)=s^(n-1)+r*F(n-1)
那么:
F(n)=s^(n-1)+r*F(n-1)
= s^(n-1) + r*s^(n-2) + r^2*F(n-2)
= s^(n-1) + r*s^(n-2) + r^2*s^(n-3) + r^3*F(n-3)
……
= s^(n-1) + r*s^(n-2) + r^2*s^(n-3) +……+ r^(n-2)*s + r^(n-1)*F(1)
= s^(n-1) + r*s^(n-2) + r^2*s^(n-3) +……+ r^(n-2)*s + r^(n-1)
(这是一个以s^(n-1)为首项、以r^(n-1)为末项、r/s为公差的等比数列的各项的和)
=[s^(n-1)-r^(n-1)*r/s]/(1-r/s)
=(s^n - r^n)/(s-r)
r+s=1, -rs=1的一解为 s=(1+√5)/2, r=(1-√5)/2
则F(n)=(√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}
[编辑本段]【C语言程序】
main()
{
long fib[40] = {0,1};
int i;
for(i=2;i<40;i++)
{
fib[i ] = fib[i-1]+fib[i-2];
}
for(i=0;i<40;i++)
{
printf("F%d==%d\n", i, fib);
}
return 0;
}
[编辑本段]【C#语言程序】
public class Fibonacci
{
//NormRen
static void Main(string[] args)
{
int x = 0, y = 1;
for (int j = 1; j < 10; j++, y = x + y, x = y - x)
Console.Write(y + " ");
}
}
[编辑本段]【Java语言程序】
public class Fibonacci
{
public static void main(String[] args)
{
int x=1,y=1;
System.out.println(x+" ");
for(int i=1;i<=20;i++)
{
System.out.println(y+" ");
y=x+y;x=y-x;
}
}
}
[编辑本段]【Pascal语言程序】
递推:
var
fib: array[0..40]of longint;
i: integer;
begin
fib[0] := 1;
fib[1] := 1;
for i:=2 to 39 do
fib[i ] := fib[i-1] + fib[i-2];
for i:=0 to 39 do
write('F', i, '=', fib[i ]);
end.
递归:
function fib(n:integer):longint;
begin
if (n=1) then exit(0);
if (n=2) then exit(1);
fib:=fib(n-2)+fib(n-1);
end;
[编辑本段]【PL/SQL程序】
declare i number :=0;
j number :=1;
x number :=1;
begin
while x<1000
loop
dbms_output.put_line(x);
x:=i+j;
i:=j;
j:=x;
end loop;
end;
[编辑本段]【数列与矩阵】
对于斐波那契数列1,1,2,3,5,8,13…….有如下定义
F(n)=f(n-1)+f(n-2)
F(1)=1
F(2)=1
对于以下矩阵乘法
F(n+1) = 1 1 * F(n)
F(n) 1 0 F(n-1)
它的运算就是
F(n+1)=F(n)+F(n-1)
F(n)=F(n)
可见该矩阵的乘法完全符合斐波那契数列的定义
设1 为B,1 1为C
1 1 0
可以用迭代得到:
斐波那契数列的某一项F(n)=(BC^(n-2))1
这就是斐波那契数列的矩阵乘法定义.
另矩阵乘法的一个运算法则A¬^n(n为偶数)=A^(n/2)* A^(n/2).
因此可以用递归的方法求得答案.
时间效率:O(logn),比模拟法O(n)远远高效。
代码(PASCAL)
{变量matrix是二阶方阵, matrix是矩阵的英文}
program fibonacci;
type
matrix=array[1..2,1..2] of qword;
var
c,cc:matrix;
n:integer;
function multiply(x,y:matrix):matrix;
var
temp:matrix;
begin
temp[1,1]:=x[1,1]*y[1,1]+x[1,2]*y[2,1];
temp[1,2]:=x[1,1]*y[1,2]+x[1,2]*y[2,2];
temp[2,1]:=x[2,1]*y[1,1]+x[2,2]*y[2,1];
temp[2,2]:=x[2,1]*y[1,2]+x[2,2]*y[2,2];
exit(temp);
end;
function getcc(n:integer):matrix;
var
temp:matrix;
t:integer;
begin
if n=1 then exit(c);
t:=n div 2;
temp:=getcc(t);
temp:=multiply(temp,temp);
if odd(n) then exit(multiply(temp,c))
else exit(temp);
end;
procere init;
begin
readln(n);
c[1,1]:=1;
c[1,2]:=1;
c[2,1]:=1;
c[2,2]:=0;
if n=1 then
begin
writeln(1);
halt;
end;
if n=2 then
begin
writeln(1);
halt;
end;
cc:=getcc(n-2);
end;
procere work;
begin
writeln(cc[1,1]+cc[1,2]);
end;
begin
init;
work;
end.
[编辑本段]【数列值的另一种求法】
F(n) = [ (( sqrt ( 5 ) + 1 ) / 2) ^ n ]
其中[ x ]表示取距离 x 最近的整数。
[编辑本段]【数列的前若干项】
1、 1
2 、1
3 、2
4 、3
5 、5
6 、8
7 、13
8 、21
9 、34
10、 55
11 、89
12 、144
13 、233
14 、377
15 、610
16 、987
17 、1597
18 、2584
19 、4181
20 、6765
......
斐波那契弧线
斐波那契弧线,第一,此趋势线以二个端点为准而画出,例如,最低点反向到最高点线上的两个点。三条弧线均以第二个点为中心画出,并在趋势线的斐波纳契水平:38.2%, 50%和61.8%交叉。
斐波纳契弧线,是潜在的支持点和阻力点水平价格。斐波纳契弧线和斐波纳契扇形线常常在图表里同时绘画出。支持点和阻力点就是由这些线的交汇点得出。
要注意的是弧线的交叉点和价格曲线会根据图表数值范围而改变因为弧线是圆周的一部分,它的形成总是一样的。
斐波那契扇形线
斐波那契扇形线,例如,以最低点反向到最高点线上的两个端点画出的趋势线。然后通过第二点画出一条“无形的(看不见的)”垂直线。然后,从第一个点画出第三条趋势线:38.2%, 50%和61.8%的无形垂直线交叉。
这些线代表了支撑点和阻力点的价格水平。为了能得到一个更为精确的预报,建议和其他斐波纳契工具一起使用。
[编辑本段]【斐波那契数列的应用】
一位魔术师拿着一块边长为8英尺的正方形地毯,对他的地毯匠朋友说:“请您把这块地毯分成四小块,再把它们缝成一块长13英尺,宽5英尺的长方
形地毯。”这位匠师对魔术师算术之差深感惊异,因为商者之间面积相差达一平方英尺呢!可是魔术师竟让匠师用图2和图3的办法达到了他的目的!
这真是不可思议的事!亲爱的读者,你猜得到那神奇的一 平方英尺究竟跑到哪儿去呢?
斐波那契数列在自然科学的其他分支,也有许多应用。例如,树木的生长,由于新生的枝条,往往需要一段“休息”时间,供自身生长,而后才能萌发新枝。所以,一株树苗在一段间隔,例如一年,以后长出一条新枝;第二年新枝“休息”,老枝依旧萌发;此后,老枝与“休息”过一年的枝同时萌发,当年生的新枝则次年“休息”。这样,一株树木各个年份的枝桠数,便构成斐波那契数列。这个规律,就是生物学上着名的“鲁德维格定律”。
另外,观察延龄草,野玫瑰,南美血根草,大波斯菊,金凤花,耧斗菜,百合花,蝴蝶花的花瓣.可以发现它们花瓣数目具有斐波那契数:3,5,8,13,21……
斐波那契螺旋
具有13条顺时针旋转和21条逆时针旋转的螺旋的蓟的头部
具有13条逆时针旋转和21条逆时针旋转的螺旋的蓟的头部
这些植物懂得斐波那契数列吗?应该并非如此,它们只是按照自然的规律才进化成这样。这似乎是植物排列种子的“优化方式”,它能使所有种子具有差不多的大小却又疏密得当,不至于在圆心处挤了太多的种子而在圆周处却又稀稀拉拉。叶子的生长方式也是如此,对于许多植物来说,每片叶子从中轴附近生长出来,为了在生长的过程中一直都能最佳地利用空间(要考虑到叶子是一片一片逐渐地生长出来,而不是一下子同时出现的),每片叶子和前一片叶子之间的角度应该是222.5度,这个角度称为“黄金角度”,因为它和整个圆周360度之比是黄金分割数0.618033989……的倒数,而这种生长方式就决定了斐波那契螺旋的产生。向日葵的种子排列形成的斐波那契螺旋有时能达到89,甚至144条。
⑶ C语言地毯问题
以前学知前习C语言的时候,看的是如鹏网的视频教程《C语言也能干大事》
通过C语言开发游戏,开发网站的方搭型清式租模来讲解C语言,蛮有成就感的
⑷ C语言矩形面积怎么计算
C语言中计算矩形面积的公式是长乘以宽,可以使用如下代码进行计算:
#include <stdio.h>
int main() {
float length, width, area;
printf("请输入矩形的长度: ");
scanf("%f", &length);
printf("请输入矩形明亮茄的宽度: ");
scanf("%f", &width);
area = length * width;
printf("矩形的面积为:%f ", area);
return 0;
}
在这个例子中,我们使用float类型来存储长度、宽度和面积。首先,程序提示用户输入矩形的长度和宽激察度,接着通过scanf() 函数读取用户输入的值。然后,程序使用area=length*width`计算矩形的面积,并将结果打印到屏幕上。最后,main() 函数返回0,表示程序成功结键衫束。
⑸ 用C语言编写程序 在屏幕上画一个矩形
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <graphics.h>
void polygon(int n, int x, int y, int r, int color, float arg, int fillstyle);
int main()
{
int GraphDriver;
int GraphMode;
float arg = 45, argd;
int a;
int direction;
int r;
int n = 4;
FILE *fp;
char szfilename[255] = {"c:\\cube.txt"};
GraphDriver = DETECT;
printf("Input size of cube: ");
scanf("%d", &r);
printf("Input direction(0-1): ");
scanf("%d", &direction);
if (direction == 0)
{
argd = 45;
}
else
{
argd = -45;
}
initgraph(&GraphDriver, &GraphMode, "");
polygon(n, 300, 200, r, 12, arg, 0);
while(1)
{
while(kbhit())
{
a = getch();
if (a == 27)
{
if ((fp = fopen(szfilename, "wt")) != NULL)
{
fprintf(fp, "%d\n%d\n", r, direction);
fclose(fp);
}
closegraph();
return 0;
}
if (a == 0)
{
getch();
polygon(n, 300, 200, r, 0, arg, 0);
arg += argd;
polygon(n, 300, 200, r, 12, arg, 0);
}
else
{
polygon(n, 300, 200, r, 0, arg, 0);
arg += argd;
polygon(n, 300, 200, r, 12, arg, 0);
}
}
}
}
void polygon(int n, int x, int y, int r, int color, float arg, int fillstyle)
{
double pi;
int i;
float x1[10], y1[10];
setcolor(color);
pi = atan(1) * 4;
arg = atan(1) / 45 * arg;
x1[1] = x + r * cos(2 * pi / n + arg);
y1[1] = y + r * sin(2 * pi / n + arg);
moveto(x1[1], y1[1]);
for (i = 2; i <= n; i++)
{
x1[i] = x + r * cos(2 * pi * i / n + arg);
y1[i] = y + r * sin(2 * pi * i / n + arg);
lineto(x1[i], y1[i]);
}
lineto(x1[1], y1[1]);
if (fillstyle != 0)
{
setfillstyle(SOLID_FILL, color);
floodfill(x, y, color);
}
}
⑹ 谢尔宾斯基地毯 用c语言写出生成代码。 要完整的,不只是函数的代码
下面我衡迟写的程咐稿李序成功画出了图形 效果图敬宽:不过要用Turbo C 如果没有Turbo C 去这个链接看看 http://..com/question/152838487.html #include #include int isFilled(int x,int y,int width,int height) { if(x return 0; int x2 = x*3/width; int y2 = y*3/height; if(x2 == 1&&y2 == 1) return 1; x -= x2*width/3; y -= y2*height/3; return isFilled(x,y,width/3,height/3); } int main() { int gdriver = VGA, gmode = VGAHI; initgraph(&gdriver, &gmode, "C:\TC30\BGI"); int i,j; for(i = 1;i { for(j = 1;j { if(isFilled(i,j,300,300)) putpixel(i,j,BLACK); else putpixel(i,j,WHITE); } } getch(); }
⑺ c语言题目铺地毯,为什么我的不对急。
程序没有错。
可能的问题碰戚是:不清楚地毯铺设的最大坐标。若是超过了1999,你的程序就数组越界了。
第二,这程序的时间复杂度稍大了些。
可以把这些数据放入一个4*n的二维数组兄念中,全部读入数据后,从n往回检查,若坐标位于一笑尘陵个地毯的覆盖范围之内,就结束查找,输出该数据的编号;否则全部查找失败后,仍未找到的则输出-1。
⑻ C语言问题,编写一个程序计算矩形的面积和周长
1.代码参考:(边长可以是整数也可以是小数;实现乘法的运算符是*)
(8)矩形地毯C语言扩展阅读
1.结构类型是在程序中定义的类型,以指定记录的格式,它包括成员名称和类型,以及成员在内存中的存储次序。
2.一旦定义了结构类型,就可以像使用其他所有类型一样使用这种结构类型,可以声明具有这种结构类型的对象,定义指向这种对象的指针,以及定义具有这种结构类型元素的数组。
3.结构类型的定义从关键字 struct 开始,大括号内包含声明结构成员的列表:struct [标签名称] {成员声明列表};
4.结构必须包含至少一个成员。下面的例子定义了 struct Date 类型,它有 3 个 short 类型的成员:struct Date { short month, day, year; };
5.标识符Date是该结构类型的标签(tag)。标识符 year、month 和 day 是成员名称。
6.结构类型的标签属于一个不同的命名空间:即使结构标签与变量名或函数名相同,编译器也仍然可以区分。类似地,对于每个结构类型,其中的每个结构成员名称都属于不同的命名空间。
7.结构的成员,可以定义为任何所需的完整类型,包括之前已定义的结构类型。但是不能是长度可变的数组,或者指向长度可变数组的指针。
⑼ 如何用C语言求矩形的面积和周长
C语言计算矩形的面积和周长,是面试过程中常见的问题之一。其实矩形的面积和周长的计算公式,周长等于2x + 2y,矩形面积=长 x 宽。
周长是围绕二维图形的路径。周长可以用来计算包围一个院子或花园所需的栅栏的长度。对于只有两个边长的矩形,比如x和y,周长等于2x + 2y。矩形面积的公式使用乘法:长 x 宽 = 面积。有四条等边的长方形是正方形。矩形面积单位是平方米、平方厘米等等。
(9)矩形地毯C语言扩展阅读:
C语言使用注意事项:
数组是有前后每个值的下标之间是有数学关联的。例如数组a第一个值的下标是i,数组长度为n,最末一个值的下标则是n-1-i。当i递增时,(n-1-i)也随着递减。
函数用数组作为参数,例如func(int a[]);本身就是把数组的地址传入函数中,所以如果修改,会修改原数组的内容。不会从新建立一个数组。
指针的地址必须由多级指针存放。例如int *p,**q,a=12;p=&a;q=&p。
⑽ 用c语言画矩形
每行起始和结束字符均是你的第3个参数
矩形第1行和最后一行中间是第3个参数,其他行根据第4个参数决定是空格或者第3个参数
程序可以这样写:
...
for ( m=0;m<a;m++ )
{
printf("%c",c); //第1列
if ( m==0 || m==a-1 ) //第1行和最后一行
for ( n=1;n<b-1;n++ ) printf("%c",c);
else //中间的行
for ( n=1;n<b-1;n++ ) if ( d==0 ) printf(" "); else printf("%c",c); //空心或否
printf("%c\n",c); //最后1列
}
或者可以写:
for ( m=0;m<a;m++ )
{
printf("%c",c); //第1列
if ( m==0 || m==a-1 || d!=0) for ( n=1;n<b-1;n++ ) printf("%c",c);
else for ( n=1;n<b-1;n++ ) printf(" ");
printf("%c\n",c); //最后1列
}