『壹』 斐波那契数列c语言编程

题目很简单,先自己写,写不出来的时候,我们帮你改改

『贰』 请教C语言

函数调用

1)注意在函数调用时实参和形参的个数、类型应一一对应。对实参表求值的顺序是不确定的,有的系统按自左至右,有的系统则按自右至左的顺序。这一点要注意。
2)函数调用的方式:函数语句,函数表达式,函数参数
3)如果主调函数和被调函数在同一文件中,并且主调函数在前,那么一般要在主调函数中对被调函数进行说明。除非:(1)被调函数的返回值类型为整型或字符型(2)被调函数出现在主调函数之前。
4)对函数的说明和定义是不同的,定义是指对函数功能的确立,包括指定函数名,函数值类型,形参及其类型、函数体等。说明则只是对已定义的函数返回值类型进行说明,只包括函数名、函数类型以及一个空的括弧,不包括形参和函数体。
5)c语言允许函数的递归调用(在调用一个函数的过程中又出现直接或间接的调用该函数本身)。

变量的指针和指向变量的指针变量

读起来很拗口,说白了就是变量的地址和用来存放变量地址的地址变量。因为一个变量在编译的时候系统要为它分配一个地址,假如再用一个变量来存放这个地址,那么这个变量就叫做指向变量的指针变量,也就是用来存放变量地址的这么一个变量。所谓"指向"就是指存放××的地址,如指向变量的指针变量,"指向"就是指用来存放变量的地址,再如指向数组的指针变量,"指向"就是指存放数组的地址。只要理解了这个,指针也就不难了。另外,还有指向字符串的指针变量,指向函数的指针变量,指向指针的指针变量等。

1) 指针变量的定义
形式:类型标识符 *标识符 如:int *pointer;
要注意两点:*表示pointer是个指针变量,在用这个变量的时候不能写成*pointer, *pointer是pointer指向的变量。一个指针变量只能指向同一个类型的变量。如上面
pointer只能指向int型变量。

2)指针变量的引用
两个有关的运算符:
& 取地址运算符 &a 就代表变量a的地址
* 指针运算符 *a 就代表变量a的值
2. 数组的指针和指向数组的指针变量

数组的指针指数组的起始地址,数组元素的指针指数组元素的地址。
1)指向数组元素的指针变量的定义与赋值
定义和指向变量的指针变量定义相同,c规定数组名代表数组的首地址,即第一个数组元素地址。
2)通过指针引用数组元素
我们通常引用数组元素的形式是a[i],如果用指针可以这样引用,*(a+i),或定义一个指针变量p,将数组a的首地址赋给p,p=a;然后用*(p+i)引用。
注意:指针变量p指向数组a首地址,则p++指向数组a的下一元素地址,即a[1]的地址。
3)数组名作函数参数
形参数组和实参数组之间并不是值传递,而是共用同一段地址,所以在函数调用过程中如果形参的值发生变化,则实参的值也跟着变化。
4)指向多维数组的指针和指针变量
以二维数组为居多。假设定义了一个二维数组a[3][4],那么
a代表整个二维数组的首地址,也代表第0行的首地址,同时也是第0行第0列的元素的首地址。a +0和a[0]代表第0行首地址,a+1和a[1]代表第一行的首地址。
假设a是一个数组的首地址,那么如果a是一维的,a+I代表第I个元素的地址,如果a是二维的,则a+I代表第I行的首地址。
那么第一行第二列的元素地址如何表示呢?a[1]+2或&a[1][2]或*(a+1)+2。
我们只要记住:在二维数组中a代表整个数组的首地址,a[I]代表第I行的首地址,a[I]与*(a+I)等价就行了。只要运用熟练了就没什么复杂的了。
5)指向由m个整数组成的一维数组的指针变量
如:int (*p)[4],p是一个指向包含4个元素的一维数组,如果p先指向a[0],则p+1指向a[1],即p的增值是以一维数组的长度为单位的,这里是4,举个例子:
假设a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23},p先指向a[0]也就是数组a的首地址,那么p+1就是a[1]的首地址即元素9的地址,因为在定义p时int (*p)[4],定义一维数组长度为4,所以p+1就等于加了一个一维数组的长度4。
3. 字符串的指针和指向字符串的指针变量

1)字符串的表示形式
c中字符串有两种表示形式:一种是数组,一种是字符指针
char string[]="I love c!";
char *str="I love c!";
其实指针形式也是在内存中开辟了一个数组,只不过数组的首地址存放在字符指针变量str中,千万不要认为str是一个字符串变量。
2)字符串指针作函数参数
实际上字符串指针就是数组的首地址。
3)字符指针变量与字符数组的区别
① 字符数组由若干元素组成,每个元素存放一个字符,而字符指针变量只存放字符串的首地址,不是整个字符串
② 对数组初始化要用static,对指针变量不用。
③ 对字符数组赋值,只能对各个元素赋值,不能象下面这样:
char str[14];
str="I love c!";
对指针变量可以,
char *str;
str="I love c!";
注意:此时赋给str的不是字符,而是字符串首地址。
④ 数组在定义和编译时分配内存单元,而指针变量定义后最好将其初始化,否则指针变量的值会指向一个不确定的内存段,将会破坏程序。如:
char *a;
scanf( "%s", a );这种方法是很危险的,应该这样:
char *a, str[10];
a = str;
scanf( "%s", a );这样字符指针就指向了一个确定的内存段。
⑤ 指针变量的值是可以改变的,而字符数组名所代表的字符串首地址却是不能改变的。
4. 函数的指针和指向函数的指针变量

一个函数在编译时被分配一个入口地址,这个入口地址就称为函数的指针。函数名代表函数的入口地址,这一点和数组一样。我们可以用一个指针变量来存放这个入口地址,然后通过该指针变量调用函数。如:假设有一个求两者较大的函数如下:int max( int x, int y );
当我们调用这个函数时可以这样:
int c;
c=max( a, b );这是通常调用方法,其实我们可以定义一个函数指针,通过指针来调用,如:
int (*p)(); //注意指向函数指针变量的定义形式
p=max; //此句就是将函数的入口地址赋给函数指针变量p
c=(*p)( a, b );
有些朋友可能对(*p)()不大理解,其实它的意思就是定义一个指向函数的指针变量p,p不是固定指向哪个函数的,而是专门用来存放函数入口地址的变量。在程序中把哪个函数的入口地址赋给它,它就指向哪个函数。但要注意,p不能象指向变量的指针变量一样进行p++,p-等无意义的操作。
既然p是一个指针变量,那么就可以作为函数的参数进行传递。其实函数的指针变量最常用的用途之一就是作为函数参数传递到其它函数。这也是c语言中应用的比较深入的部分了。

变量的指针和指向变量的指针变量

读起来很拗口,说白了就是变量的地址和用来存放变量地址的地址变量。因为一个变量在编译的时候系统要为它分配一个地址,假如再用一个变量来存放这个地址,那么这个变量就叫做指向变量的指针变量,也就是用来存放变量地址的这么一个变量。所谓"指向"就是指存放××的地址,如指向变量的指针变量,"指向"就是指用来存放变量的地址,再如指向数组的指针变量,"指向"就是指存放数组的地址。只要理解了这个,指针也就不难了。另外,还有指向字符串的指针变量,指向函数的指针变量,指向指针的指针变量等。

1) 指针变量的定义
形式:类型标识符 *标识符 如:int *pointer;
要注意两点:*表示pointer是个指针变量,在用这个变量的时候不能写成*pointer, *pointer是pointer指向的变量。一个指针变量只能指向同一个类型的变量。如上面
pointer只能指向int型变量。

2)指针变量的引用
两个有关的运算符:
& 取地址运算符 &a 就代表变量a的地址
* 指针运算符 *a 就代表变量a的值
2. 数组的指针和指向数组的指针变量

数组的指针指数组的起始地址,数组元素的指针指数组元素的地址。
1)指向数组元素的指针变量的定义与赋值
定义和指向变量的指针变量定义相同,c规定数组名代表数组的首地址,即第一个数组元素地址。
2)通过指针引用数组元素
我们通常引用数组元素的形式是a[i],如果用指针可以这样引用,*(a+i),或定义一个指针变量p,将数组a的首地址赋给p,p=a;然后用*(p+i)引用。
注意:指针变量p指向数组a首地址,则p++指向数组a的下一元素地址,即a[1]的地址。
3)数组名作函数参数
形参数组和实参数组之间并不是值传递,而是共用同一段地址,所以在函数调用过程中如果形参的值发生变化,则实参的值也跟着变化。
4)指向多维数组的指针和指针变量
以二维数组为居多。假设定义了一个二维数组a[3][4],那么
a代表整个二维数组的首地址,也代表第0行的首地址,同时也是第0行第0列的元素的首地址。a +0和a[0]代表第0行首地址,a+1和a[1]代表第一行的首地址。
假设a是一个数组的首地址,那么如果a是一维的,a+I代表第I个元素的地址,如果a是二维的,则a+I代表第I行的首地址。
那么第一行第二列的元素地址如何表示呢?a[1]+2或&a[1][2]或*(a+1)+2。
我们只要记住:在二维数组中a代表整个数组的首地址,a[I]代表第I行的首地址,a[I]与*(a+I)等价就行了。只要运用熟练了就没什么复杂的了。
5)指向由m个整数组成的一维数组的指针变量
如:int (*p)[4],p是一个指向包含4个元素的一维数组,如果p先指向a[0],则p+1指向a[1],即p的增值是以一维数组的长度为单位的,这里是4,举个例子:
假设a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23},p先指向a[0]也就是数组a的首地址,那么p+1就是a[1]的首地址即元素9的地址,因为在定义p时int (*p)[4],定义一维数组长度为4,所以p+1就等于加了一个一维数组的长度4。

3. 字符串的指针和指向字符串的指针变量

1)字符串的表示形式
c中字符串有两种表示形式:一种是数组,一种是字符指针
char string[]="I love c!";
char *str="I love c!";
其实指针形式也是在内存中开辟了一个数组,只不过数组的首地址存放在字符指针变量str中,千万不要认为str是一个字符串变量。
2)字符串指针作函数参数
实际上字符串指针就是数组的首地址。
3)字符指针变量与字符数组的区别
① 字符数组由若干元素组成,每个元素存放一个字符,而字符指针变量只存放字符串的首地址,不是整个字符串
② 对数组初始化要用static,对指针变量不用。
③ 对字符数组赋值,只能对各个元素赋值,不能象下面这样:
char str[14];
str="I love c!";
对指针变量可以,
char *str;
str="I love c!";
注意:此时赋给str的不是字符,而是字符串首地址。
④ 数组在定义和编译时分配内存单元,而指针变量定义后最好将其初始化,否则指针变量的值会指向一个不确定的内存段,将会破坏程序。如:
char *a;
scanf( "%s", a );这种方法是很危险的,应该这样:
char *a, str[10];
a = str;
scanf( "%s", a );这样字符指针就指向了一个确定的内存段。
⑤ 指针变量的值是可以改变的,而字符数组名所代表的字符串首地址却是不能改变的。
4. 函数的指针和指向函数的指针变量

一个函数在编译时被分配一个入口地址,这个入口地址就称为函数的指针。函数名代表函数的入口地址,这一点和数组一样。我们可以用一个指针变量来存放这个入口地址,然后通过该指针变量调用函数。如:假设有一个求两者较大的函数如下:int max( int x, int y );
当我们调用这个函数时可以这样:
int c;
c=max( a, b );这是通常调用方法,其实我们可以定义一个函数指针,通过指针来调用,如:
int (*p)(); //注意指向函数指针变量的定义形式
p=max; //此句就是将函数的入口地址赋给函数指针变量p
c=(*p)( a, b );
有些朋友可能对(*p)()不大理解,其实它的意思就是定义一个指向函数的指针变量p,p不是固定指向哪个函数的,而是专门用来存放函数入口地址的变量。在程序中把哪个函数的入口地址赋给它,它就指向哪个函数。但要注意,p不能象指向变量的指针变量一样进行p++,p-等无意义的操作。
既然p是一个指针变量,那么就可以作为函数的参数进行传递。其实函数的指针变量最常用的用途之一就是作为函数参数传递到其它函数。这也是c语言中应用的比较深入的部分了。

『叁』 c语言程序设计输出菱形图!!!!

此题解法,我将这个菱形放在了一个二维数组中,因为用二维数组可以界定X的边界,比较方便一点。循环输出的时候,特别注意循环跳出的条件,你画个二维数组,体会一下里面的数学关系,多上机改改代码,呵呵。要特别注意q的用途哦。

#include<stdio.h>

voidmain()

{

#defineN7//定义二维数组的行和列

inti,j;

chara[N][N];

intq=N/2;//找到数组的中间列

chart,p;//定义输出字符,t代表X,p代表Y

printf("qingshuruX,Y: ");

scanf("%c,%c",&t,&p);//注意此处输入的时候,不要忘记“,”了哦

for(i=0;i<N;i++)//将二维数组的值全部先赋值为“空格”

for(j=0;j<N;j++)

a[i][j]='';

for(i=0;i<q;i++)//将菱形一分两半,这个是上半部分的输出,以中间列

{

//为开始,向两边扩展,为了输出X,注意i循环到q-1

a[i][q-i]=t;

a[i][q+i]=t;

for(j=(q-i+1);j<(q+i);j++)//以两边的X列为边界,输出Y

a[i][j]=p;

}

for(i=q;i<N;i++)//这个是下半部分的输出,i从q开始循环到最后

{

a[i][q-(N-1-i)]=t;//仍然是从中间列开始向两边扩散,输出X

a[i][q+(N-1-i)]=t;

for(j=(q-(N-1-i)+1);j<(q+(N-1-i));j++)//从X边界开始从做到右输出Y

a[i][j]=p;

}

for(i=0;i<N;i++)

{

{for(j=0;j<N;j++)

printf("%c",a[i][j]);}

printf(" ");

}

}

我这里输出的是标准的菱形,中间的Y的个数和你给的不一样,如果你想要你的那种结果,只需要在输出Y的时候,将循环的边界再减一个,就可以了,不过图形是会变形,不会是菱形了。

上机运行的时候,把这些汉字清理了吧,要不可能编译出问题,好运~

『肆』 C语言编程问题:分数计算器

#include<stdio.h>
int fm,f;
int tf(int a,int b,int m,int n)
{
int i,s;
for(i=b>n?b:n;;i++)
{
if(i%b==0&&i%n==0)
break;
}
fm=i;
if(f)
s=(i/b*a+i/n*m);
else
s=(i/b*a-i/n*m);
return s;
}
int hj(int t,int s)
{
int i;
for(i=t<s?t:s;i>=1;i--)
{
if(t%i==0&&s%i==0)
{
t/=i;
s/=i;
}
}
fm=s;
return t;
}
main()
{
int a,b,m,n,t,s,fz,r,c,ff=0;
char k;
printf("------------------------------------------\n");
printf(" [1] 加法 [2] 减法\n");
printf(" [3] 乘法 [4] 除法\n");
printf(" [0] 退出\n");
printf("------------------------------------------\n");
do{
printf("请输入你选择的菜单(0--4):");
k1:
scanf("%d",&c);
if(c<0||c>4)
{ printf("菜单中没有本选项,请重新输入!");
fflush(stdin);
goto k1;
getchar();
}
printf("请输入第一个分数的分子和分母:");
scanf("%d %d",&a,&b);
printf("请输入第二个分数的分子和分母:");
scanf("%d %d",&m,&n);
switch(c)
{
case 0:return 0;break;
case 1:f=1;t=tf(a,b,m,n);s=fm;k='+';break;
case 2:f=0;t=tf(a,b,m,n);s=fm;k='-';break;
case 3:t=a*m;s=b*n;k='*';break;
case 4:t=a*n;s=b*m;k='/';break;
}
fz=hj(t,s);
printf("%d/%d%c%d/%d=%d/%d\n",a,b,k,m,n,fz,fm);
}while(1);
}

『伍』 大佬们求教,这道c语言题目怎么写啊

累加变量:观察式子,这是一个求累加和的问题,因此需要用到累加和循环配合,假设使用变量s作为累加变量,由于其中包含分数,因此s可以采用double类型,看后面每项计算,第1项的1比较另类,因此设置累加变量初始值为1,然后从第2项开始累加计算
循环:循环一次向s上累加一次当前项,由于多项式项数无法预测而只关心循环条件(或者说关心循环结束条件),因此采用while循环,用一个变量i跟踪循环次数,初始值1每次循环i自加1,这样i的取值为:1,2,3,... 这个值将用于计算每项内容,后面需要总结每项具体取值与i取值之间的关系,因此循环大致是这样:while ( fabs(t)>=0.00001 ) { ... s+=t; i++; }其中变量t是每项取值,累加语句前面的省略号部分计算当前对应i取值的t为多少
项:由于包含分数,因此设t为浮点数double类型变量,每项规律为,分子是前一项乘以x得到,分母是前一项乘以i得到,涉及到累乘计算,因此用累乘变量fz和fm来计算,它们可以设置为double类型(设置成int型担心溢出)方便分数计算,它们起始值均为1(这是累乘变量通常使用的起始值)
题目要求用函数做,如果不用函数编程为:
#include<stdio.h>
void main() { int i,x; double s,t,fz,fm,w;
s=1; fz=fm=1; i=1; scanf("%d",&x);
while ( 1 ) { //由于不知道循环次数,因此这里设置死循环,然后循环中用if语句退出循环
fz=fz*x; fm=fm*i; t=fz/fm; if ( t<0 ) w=-t; else w=t; //分子计算x累乘(幂),分母计算阶乘
if ( w<0.00001 ) break; //不满足循环条件则退出循环
s+=t; i=i+1; //如果将条件写到while位置需要后算t先累加
}
printf("%lf\n",s);
}

『陆』 C语言编程题目:编程计算z的值。 根据x、y的值,计算:

根据题目的提示来编写函数就可以了。以下是在手机上用易历知食软件里的微C程序回设计来编写的一个示例,答供参考。手机上的代码如下图:

#include<stdio.h>
#include<math.h>
doublefZ(doublex,doubley);
voidmain(){
doublex,y,z;
printf("请输入xy(空格相隔) ");
scanf("%lf%lf",&x,&y);
z=fZ(x,y);
printf("z=%lf ",z);
}
doublefZ(doublex,doubley){
doublez=0;
if((x>0)&&(y>0)){
z=log(x)+log(y);
}elseif((x<0)&&(y>0)){
z=sin(x)+cos(y);
}elseif((x<0)&&(y<0)){
z=exp(2*x)+exp(3*y);
}elseif((x>0)&&(y<0)){
z=tan(x+y);
}
returnz;
}

『柒』 C语言题目,见下图!

#include <stdio.h>

int main(){
float s=0,fz=2.0,fm=1.0,t;
int i;
for(i=1; i<=20; i++){
s+=fz/fm;
t=fz;
fz=fz+fm;
fm=t;
}
printf("s=%.2f\n",s);
return 0;
}

『捌』 C语言,关于分数数列求和

#include<stdio.h>

int main()
{
int n;
float t,r=0,fm=2,fz=1;

scanf("%d",&n);
while(n--)
{
r+=fm/fz;
t=fm;
fm+=fz;
fz=t;
}
printf("%.6f",r);
return 0;
}

『玖』 C语言中 min = fz>fmfm:fz; 什么意思 在线求解

fz是否大于fm,大于则fm的值赋值给min,小于则fz赋值给min,这是三元运算符,建议巩固基础

『拾』 哪位大侠帮忙解释一下这个C语言的每个步骤

sbit Key_UP=P3^2; //正转按键
sbit Key_DOWN=P3^3; //反转按键
sbit Key_STOP=P3^4; //停止按键
sbit ZZ=P1^0; //控制端,用单片机的P1.0口
sbit FZ=P1^1; //控制端,用单片机的P1.1口
sbit FMQ=P3^6;
//这5行定义了单片机管脚对外连接的功能,p3^2,表p3.2口其他的类似;

void delaynms(uint aa)
//延时函数,单片机执行命令是需要时间的,一条空指令需要一个指令周期

FMQ=1;
//此类语句是对对应的管脚电平设置,1为高电平,0为低电平,对于不同外接设备高低电平使用是不同的