C语言——第八章函数

C语言——第八章函数
C语言——第八章函数

定义无参函数:

类型标识符函数名()

{声明+语句}

定义有参数的函数:

类型标识符函数名(形式参数列表)

{声明+语句}

不带返回值的函数类型为空类型,即void类型。该函数中不应出现return语句。

若需要返回值,则在语句部分加入return(表达式); 语句。return的数据类型必须与函数类型标识符相同。

return后面的括号可以不要,直接使用return 表达式的方式。

return语句代表着函数结束,return后的语句不再执行。

如果在定义函数时,未指明函数类型,则默认为int型,故函数标识符可省略,但一般建议写出。

定义函数时所用的参数叫做形参,在未调用函数时,不为其分配内存单元,当函数被调用时,为形参分配内存单元,在调用结束时释放。在函数调用时,所输入的参数叫做实参。实参形参的类型必须相同或者赋值相容。函数调用中,实参的值不会发生变化。即函数调用处理的是与实参值相同的形参。

不同系统在接受实参时,对实参的处理顺序不一样,有的自右向左,有的自左向右。如:

i=2;f(i,++i); 自右向左为f(3,3); 自左向右为f(2,3); 应尽量避免这种容易产生混乱的引用方法。

程序所要调用的函数必须是已经存在的库函数或者已经定义的用户函数。若用户函数的定义的位置在调用它的函数的定义位置前,则无需声明,若用户函数的定义的位置在调用它的函数的后面,则需要进行声明。声明方式和定义变量相类似,如:int a();

声明函数时,形参的参数名可以省略。编译系统只检查参数个数及参数类型。

另外,若被调用函数为整型或已在文件的开头进行了申明,则可以在main函数内不进行声明。

C语言中的函数定义不能进行嵌套定义,即一个函数内部定义另一个函数,但可以进行嵌套调用。注意:是函数的定义内部不能有其他函数的定义,但可以在函数的定义内部调用另一个函数的定义。

在调用一个函数过程中又出现间接或直接调用该函数本身,称为函数递归调用。

直接调用即:f1调用f1;间接调用即f1调用f2,f2再调用f1;

递归问题经典问题:

汉尼塔问题:定义一个函数hanoi,运用递归思路来解决问题。

需要将n个盘子从A塔(初始塔)经B塔(辅助塔)移动到C塔(目标塔),其过程为,(1)将n-1个盘子从A塔(初始塔)经过C塔(辅助塔)移动到B(目标塔);

(2)将第n个盘子从A(初始塔)移动到C(目标塔);

(3)将n-1个盘子从B塔(初始塔)经A塔(辅助塔)移回C塔(目标塔);

由上可见,每次移动时的初始塔、辅助塔、目标塔都是不同的。

而第(1)、(3)两步又可以当作两个全新的hanoi 问题进行处理,从而形成递归。

定义函数void hanoi(盘子数,初始塔名,辅助塔名,目标塔名)用来打印将n个盘子从初始塔移动到目标塔的策略

void move(塔名,塔名)用来打印一次具体的移动操作。

具体代码:

#include

void move(char from,char to)

{

printf("%c --> %c\n",from,to);

}

void hanoi(int n,char one,char two,char three)

{

if(n==1)

move(one,three);

else

{ hanoi(n-1,one,three,two);

move(one,three);

hanoi(n-1,two,one,three);

}

}

void main()

{

int n;

char a,b,c,d;

printf("请输入盘子数:");

scanf("%d",&n);

d=getchar();//C语言中连续使用输入语句时,会出现垃圾字符的问题,//故此处使用一个额外的变量存放垃圾变量,避免影响程序运行。该内容已超纲,可不理解,感兴趣的话可以自行百度。

printf("请用一个字母分别代表初始塔、辅助塔、目标塔,用逗号进行分隔:"); scanf("%c,%c,%c",&a,&b,&c);

printf("%c%c%c",a,b,c);

printf("该问题的解决策略为:\n");

hanoi(n,a,b,c);

}

上文中提到的垃圾字符问题,在连续使用输入语句,输入字符,如scanf(),getchar()时会出现。

因前一次输入需要敲回车来结束,该回车被记录在输入流中,被第二次的输入语句作为输入的内容所接收。

避免这种情况的方法有两种:

一、第一种方法是多定义一个字符变量,如char c;这样。把变量c分别放到输入后面。

二、第二种方法是使用getche()函数,而不使用scanf()和getchar()。这个函数也是接收字符的,但是它不等待回车的输入!而直接把字符送入流中,这样就可以避免垃圾字符的出现了。

若函数的函数为一个数组,则调用时只写数组名,如function(array);

主程序中调用的函数中数组类型与函数定义中的数组类型应相同。

函数定义中的形参数组可以不指定大小。(可以用一个整型参数来传递数组大小)

用数组名做函数实参时,不是吧数组元素的值传递给形参,而是将数组初地址传递给形参。

利用函数进行选择法排序的算法:

#include

void sort(int a[],int n)

{

int i,j,maxi,t;

for(i=0;i

{ maxi=i;

for(j=i+1;j

if(a[maxi]

maxi=j;

t=a[i];

a[i]=a[maxi];

a[maxi]=t;

}

}

void main()

{

int a[10],i;

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

{

printf("请输入数组中第 %d个元素的值:",i+1);

scanf("%d",&a[i]);

}

sort(a,10);

printf("排序后的顺序为:");

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

printf("%5d",a[i]);

}

多维数组名做函数参数:

在定义函数式,对形参数组的定义可以指定每一维的大小,也可以省略第一维的大小说明,但不能省略第二维及其他高维大小说明。

局部变量:在函数内部定义的变量是内部变量,只在函数范围内有效,在此函数外不能使用。注:若在函数内部的复合语句中定义变量,则只在复合语句中有效。

全局变量:在函数之外所定义的变量称为外部变量,也成全局变量,全局变量可供文件中所有的函数使用,其作用域从定义开始到文件结束。

注:若在同一文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量失效。

如果不是必要,应尽量减少外部变量的使用:(1)在程序全程都会占用储存单元;(2)使函数通用性降低。;(3)降低了程序的清晰性。

变量可分为静态存储变量(整个文件中分配存储空间)和动态存储变量(按需分配存储空间)。auto变量:函数中局部变量或形参为动态变量,自动分配空间,自动释放空间,称为自动变量。

static变量:利用static申明局部变量可以使局部变量以静态方式存储,变量使用完毕后不释放存储单元,在下一次调用该函数时,该变量有值(在文件运行周期内)。注意:静态局部变量若不赋初值,则编译系统自动赋初值为0(数值型变量)或者空字符'\0'(字符变量),并且该变量只能在定义它的函数内使用,其他函数不能使用。

利用static申明外部(全局)变量,称为静态外部变量,保证只被定义其的文件使用,而不能被其他文件使用(即使使用了extern语句)。

register变量(实际中应用较少):一般情况下变量存储与内存中,针对有些频繁使用的变量,可将其存储于CPU的寄存器中。(局部静态变量不能定义为寄存器类型)

extern语句:用extren在函数内部申明外部变量,可以使用在该函数代码处尚未定义的外部变量,扩展外部变量作用域。

用extran在多文件的程序中声明变量,可使该文件使用其他文件中的外部变量。

变量声明与定义的关系,声明包括定义,但并非所有声明都是定义。定义性声明,如:int a;,称为定义,同时也是声明。引用性声明,如:extern A;,称为声明,但不是定义。

内部函数:只能被本文件中其他函数调用的函数,在定义时需要在类型标识符前加上static。

外部函数:可以供其他文件中函数调用的函数,在定义时在类型标识符前加上extren(可省略不写extern,默认为外部函数)。在需要调用该函数的文件中也需要使用extern进行声明。

提供用函数删除字符串中的方法(较为方便):

void delete_string(char a[],char c)

{

int i,j;

for(i=j=0;a[i]!='\0';i++)

if(a[i]=c)

{a[j]=a[i];

j++;}

str[j]='\0';

}

(注:本资料素材和资料部分来自网络,仅供参考。请预览后才下载,期待您的好评与关注!)

c语言 第8章 函数习题

第8章函数习题 A卷 1. 单项选择题 (1)C 语言总是从函数开始执行。 A A. main B. 处于最前的 C.处于最后的 D. 随机选一个 (2)函数在定义时,省略函数类型说明符,则该函数值的类型为。A A. int B. float C. long D. double (2)以下函数,真正地没有返回值。 B A. int a(){int a=2;return (a);} B. void b(){printf("c");} C. int a(){int a=2;return a;} D. 以上都是 (3)在C 语言中,有关函数的说法,以下正确的是。A A. 函数可嵌套定义,也可嵌套调用 B. 函数可嵌套定义,但不可嵌套调用 C. 函数不可嵌套定义,但可嵌套调用 D. 函数不可嵌套定义,也不可嵌套调用 (4)以下函数调用语句中,含有实参的个数为。C fun((2,3),(4,5+6,7)); A. 1 B. 2 C. 5 D. 6 (5)函数调用可以在。D A. 函数表达式中 B. 函数语句中 C. 函数参数中 D. 以上都是 (6)被调函数返回给主调函数的值称为。C A. 形参 B. 实参 C. 返回值 D. 参数 (7) ,可以不进行函数类型说明。D A. 被调函数的返回值是整型或字符型时 B. 被调函数的定义在主调函数定义之前时 C. 在所有函数定义前,已在函数外预先说明了被调函数类型 D. 以上都是 (8)被调函数通过语句,将值返回给主调函数。D A. if B. for C. while D. return (9)被调函数调用结束后,返回到。D A.主调函数中该被调函数调用语句处 B.主函数中该被调函数调用语句处

c语言第八章函数上机作业

第八章 通过本章实验作业应达目标 1. 掌握定义和调用函数的方法 2.掌握函数嵌套调用的方法 3.掌握通过“值传递”调用函数的方法 4.理解变量作用域和存在期的概念,掌握全局变量和局部变量,动态变量和静态变量的定义、说明和使用方法 本章上交作业 程序8_1.c、8_2.c、8_4.c、8_5.c上传至211.64.135.121/casp。 实验一判断素数的函数 【实验目的】 掌握用函数实现判断素数的方法。 【实验内容】 编写一个函数int prime(int a),判断参数是否为素数。函数有一个形参a,当a 为素数时,返回1,反之,返回0。以8_1.c命名本程序并上交。 函数声明如下: int prime( int a ); 主函数如下: #include #include void main ( ) { int a, b; printf("please input a number:\n"); scanf("%d", &a); b = prime( a ); if ( b = =1 ) printf("the number is a prime number."); else printf("the number is not a prime number."); } int prime( int a ) { …… }

实验二求最大公约数与最小公倍数 【实验目的】 熟练函数的嵌套调用。 【实验内容】 编写两个函数,分别求两个正整数的最大公约数和最小公倍数,结果作为函数返回值返回。在main函数中实现输入与输出。以8_2.c命名本程序并上交。 主函数如下: #include void main( ) { int gongyueshu( int a, int b ); int gongbeishu( int a, int b ); int a, b, c, d; printf("please input two integer numbers:"); scanf("%d%d", &a, &b); c=gongyueshu(a, b); d=gongbeishu(a. b); printf("gongyueshu is %d\n gongbeishu is %d",c,d); } int gongyueshu( int a, int b ) { ……} int gongbeishu( int a, int b ) { …… } 【实验提示】 可以在最小公倍数中嵌套调用最大公约数函数。最小公倍数=a*b/最大公约数 实验三求数组逆序的函数 【实验目的】 熟练掌握操作数组的方法及数组名作函数参数的使用方法。 【实验内容】 从键盘输入int型数组a[ 20 ]的20 个元素值,编写一个函数实现对数组元素数据的逆序放置。即第1个元素与第20个元素互换,第2个元素与第19个元素互换,……,第10个元素与第11个元素互换。请完善下述程序并以8_3.c命名本程序。 #include void main( ) { void nixu( int a[ ], int n ); /* 逆序函数声明 */

C语言第8章习题及答案

第八章 用一个数组存放图书信息,每本书是一个结构,包括下列几项信息:书名、作者、出版年月、借出否,试写出描述这些信息的说明,并编写一个程序,读入若干本书的信息,然后打印出以上信息。#include <> typedef struct { char Name[20]; char Author[20]; int Date_Year; int Date_Month; int loaned; } BOOK; #define N 10 void main() { BOOK books[N]; int i; for (i=0;i

} for (i=0;i #include <> typedef struct { char s[20]; int count; } WORD; #define N 100 WORD words[N]={0}; int word_count=0; int IsSeparator(char c) { if ( 'A'<=c && c<='Z' || 'a'<=c && c<='z' || '0'<=c && c<='9' || '_'==c || '-'==c)

C语言程序设计教案 第八章 函数

第八章函数课题:第八章函数§1~§4 教学目的:1、掌握函数定义的一般形式 2、掌握函数调用的一般形式 教学重点:教学难点:函数定义、调用的一般形式形式参数和实际参数 步骤一复习引导 一个C语言源程序可由一个主函数和若干个辅助函数组成。 由主函数调用其他函数,其他函数也可以互相调用。 步骤二讲授新课 §8.1 概述 例8.1 main( ) { printstar( ); print_message( ); printstar( ); } printstar( ) { printf( “ ********** \n”); } print_message( ) { printf(“How do you do ! \n”); } 说明: ?1、一个源程序文件由一个或多个函数组成。一个源程序文件是一个编译单位。 ?2、一个C程序由一个或多个源程序文件组成。这样可以分别编写、分别编译,提高调度效率。 ?3、C程序的执行从main 函数开始,在main函数中结束整个程序的运行。 ?4、所有函数都是平行的,即函数不能嵌套定义,函数可以互相调用,但不能调用main 函数。 ?5、从用户使用的角度看,函数有两种:标准函数(库函数)和用户自己定义的函数 ?6、从函数的形式看,函数分为两类:无参函数和有参函数 §8.2 函数定义的一般形式 (一)无参函数的定义形式 类型标识符函数名( ) { 函数体(包括声明部分和执行部分) } 例:printstar( ) { printf( “ ********** \n”); } (二)有参函数定义的一般形式 类型标识符函数名(形式参数表) { 函数体(包括声明部分和执行部分) }

C语言第八章函数部分复习题

函数复习题 一.选择题 1.以下正确的函数定义形式是:() a) double fun(int x,int y) b) double fun(int x;int y) c) double fun(int x,int y); d) double fun(int x,y); 2.以下正确的函数形式是:() a) double fun(int x,int y) { z=x+y; return z; } b) fun(int x,y) { int z; return z; } c) fun(x,y) { int x,y; double z; z=x+y; return z; } d) double fun(int x,int y) { double z; z=x+y; return z; } 3. 以下正确的说法是:() a) 实参和与其对应的形参各占用独立的存储单元 b) 实参和与其对应的形参共占用一个存储单元 c) 只有当实参和与其对应的形参同名时才共占用存储单元 d) 形参是虚拟的,不占用存储单元 4. 以下程序有语法性错误,有关错误原因的正确说法是:()

main() { int G=5,k; void prt_char(); …… k=prt_char(G); …… } a) 语句void prt_char();有错,它是函数调用语句,不能用void 说明 b) 变量名不能使用大写字母 c) 函数说明和函数调用语句之间有矛盾 d) 函数名不能使用下划线 5. 已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的错误定义方式是:() a) f(int array[][6]) b) f(int array[3][]) c) f(int array[][4]) d) f(int array[2][5]) 6. 在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是:() a) extern b) register c) auto d) static 7. 若使用一维数组名作函数实参,则以下正确的说法是:()

c语言第8章函数

第8章函数 1.以下程序的输出结果是( ) A、6 9 9 B、6 6 9 C、6 15 15 D、6 6 15 int d=1; fun(int p) { static int d=5; d+=p; printf("%d ",d); return(d); } main( ) { int a=3;printf("%d \n",fun(a+fun(d)));} 答案:C 注解:函数fun调用两次,第一次调用的实参是全局变量d的值1,在函数调用执行过程中,输出的是局部静态变量d;第二次调用的实参是第一次调用的返回值和变量a的和,输出的仍是局部静态变量d的值。注意静态变量的定义和初始化是在第一次使用时进行的,在以后的使用过程中,保留上一次的值,不再初始化。2.若有以下调用语句,则不正确的fun函数的首部是() A、void fun(int m,int x[]) B、void fun(int s,int h[41]) C、void fun(int p,int *s) D、void fun(int n,int a) main( ) { … int a[50],n; … fun(n,&a[9]); … } 答案:D 注解:从主函数中fun函数的调用格式可以看出,fun函数的两个形参的类型,第一个形参是整型变量,第二个形参是变量的地址,则必须是数组名或者是指针。 3.有如下函数调用语句 func(rec1,rec2+rec3,(rec4,rec5)); 该函数调用语句中,含有的实参个数是() A、3 B、4 C、5 D、有语法错 答案:A 注解:该函数调用语句中,含有的实参分别是rec1,rec2+rec3表达式计算后的值和(rec4,rec5)逗号表达式计算后值。 4.有如下程序 int runc(int a,int b) { return(a+b);} main( ) { int x=2,y=5,z=8,r; r=func(func(x,y),z); printf("%d\n",r);

C语言课后习题答案第八章

作业八:函数程序设计答案 (一)选择题(30分) 1.以下正确的函数定义形式是A__。 A)double fun(int x,int y) B)double fun(int x;int y) C)double fun(int x,int y); D)double fun(int x,y); 2.以下正确的函数形式是D__。 A)double fun(int x,int y) { z=x+y; return z; } B)fun(int x,y) { int z; return z; } C)fun(x,y) { int x,y; double z; z=x+y; return z; } D)double fun(int x,int y) { double z; z=x+y; return z; }(重要) 3.以下正确的说法是A__。 在C语言中A)实参和与其对应的形参各占用独立的存储单元 B)实参和与其对应的形参共占用一个存储单元 C)只有当实参和与其对应的形参同名时才共占用存储单元 D)形参是虚拟的,不占用存储单元 4.若调用一个函数,且此函数中没有return语句,则正确的说法是D__。 该函数A)没有返回值 B)返回若干个系统默认值 C)能返回一个用户所希望的函数值 D)返回一个不确定的值(重要) 5.以下不正确的说法是B__。 C语言规定A)实参可以是常量、变量或表达式 B)形参可以是常量、变量或表达式 C)实参可以为任意类型 D)形参应与其对应的实参类型一致 6.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是B__。 A)地址传递 B)单向值传递 C)由实参传给形参,再由形参传回给实参 D)由用户指定传递方式 7.以下程序有语法性错误,有关错误原因的正确说法是C__。 main() { int G=5,k; void Prt_char(); ……

C语言——第八章函数

定义无参函数: 类型标识符函数名() {声明+语句} 定义有参数的函数: 类型标识符函数名(形式参数列表) {声明+语句} 不带返回值的函数类型为空类型,即void类型。该函数中不应出现return语句。 若需要返回值,则在语句部分加入return(表达式); 语句。return的数据类型必须与函数类型标识符相同。 return后面的括号可以不要,直接使用return 表达式的方式。 return语句代表着函数结束,return后的语句不再执行。 如果在定义函数时,未指明函数类型,则默认为int型,故函数标识符可省略,但一般建议写出。 定义函数时所用的参数叫做形参,在未调用函数时,不为其分配内存单元,当函数被调用时,为形参分配内存单元,在调用结束时释放。在函数调用时,所输入的参数叫做实参。实参形参的类型必须相同或者赋值相容。函数调用中,实参的值不会发生变化。即函数调用处理的是与实参值相同的形参。 不同系统在接受实参时,对实参的处理顺序不一样,有的自右向左,有的自左向右。如: i=2;f(i,++i); 自右向左为f(3,3); 自左向右为f(2,3); 应尽量避免这种容易产生混乱的引用方法。 程序所要调用的函数必须是已经存在的库函数或者已经定义的用户函数。若用户函数的定义的位置在调用它的函数的定义位置前,则无需声明,若用户函数的定义的位置在调用它的函数的后面,则需要进行声明。声明方式和定义变量相类似,如:int a(); 声明函数时,形参的参数名可以省略。编译系统只检查参数个数及参数类型。 另外,若被调用函数为整型或已在文件的开头进行了申明,则可以在main函数内不进行声明。 C语言中的函数定义不能进行嵌套定义,即一个函数内部定义另一个函数,但可以进行嵌套调用。注意:是函数的定义内部不能有其他函数的定义,但可以在函数的定义内部调用另一个函数的定义。 在调用一个函数过程中又出现间接或直接调用该函数本身,称为函数递归调用。 直接调用即:f1调用f1;间接调用即f1调用f2,f2再调用f1; 递归问题经典问题: 汉尼塔问题:定义一个函数hanoi,运用递归思路来解决问题。

C语言函数章节选择题(新)

1.在C语言中,全局变量的存储类别是: A) static B) extern C) void D) register A 2.C语言中,凡未指定存储类别的局部变量的隐含存储类别是: A) 自动(auto) B) 静态(static) C) 外部(extern) D) 寄存器(register) A 3. 在一个C源程序文件中,要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是:________。 A) extern B) register C) auto D) static D 4. 若有以下调用语句,则正确的fun函数首部是 main() { ∶ ∶ int a;float x; ∶ ∶ fun(x,a); ∶ ∶ } A) void fun(int m,float x) B) void fun(float a,int x) C) void fun(int m,float x[]) D) void fun(int x,float a) B 5. 有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5)); 该函数调用语句中,含有的实参个数是 A) 3 B) 4 C) 5 D) 有语法错误 A 6. 以下程序的运行结果是。 #include main() { int k=4,m=1,p; p=func(k,m); printf("%d, ",p); p=func(k,m); printf("%d\n",p); } func(int a,int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return m; } A) 8,17, B) 8,17

第八章 函数(含答案)

第八章函数 一、选择题 1.以下正确的说法是【A】。 在c语言中:A)实参和与其对应的形参各占用独立的存储单元 B)实参相与其对应的形参共占用一个存储单元 C)只有当实参和与其对应的形参同名时才共占用存储单元 D)形参是虚拟的,不占用存储单元 2.以下正确的说法是【C】。 A)定义函数时,形参的类型说明可以放在函数体内 B)return后边的值不能为表达式 C)如果函数值的类型与返回值类型不一致,以函数值类型为准 D)如果形参与实参的类型不一致,以实参类型为准 3.c语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是【C】。 A. 地址传递 B. 由实参传给形参,再由形参传回给实参 C. 单向值传递 D. 由用户指定传递方式 4. 以下程序有语法性错误.有关错误原因的正确说法是【 C 】。 main() {int G=5,k; void prt_char(); ..... k=prt_char(G); .....} A)语句void prt_char();有错,它是函数调用语句,不能用void说明 B)变量名不能使用大写字母 C)函数说明和函数调用语句之间有矛盾 D)函数名不能使用下划线 5.c语言允许函数值类型缺省定义,此时该函数值隐含的类型是【B】。 A)float型 B)int型 C)long型 D)double型 6.c语言规定,函数返回值的类型是由【D】。 A)return语句中的表达式类型所决定 B)调用该函数时的主调函数类型所决定 C)调用该函数时系统临时决定 D)在定义该函数时所指定的函数类型所决定 7.下面函数调用语句含有实参的个数为【B】 func((expl,eexp2),(exp3,2xp4,exp5)) A)1 B)2 C)4 D)5 8.以下正确的描述是【B】。 在c语言程序中 A)函数的定义可以嵌套,但函数的调用不可以嵌套 B)函数的定义不可以嵌套,但函数的调用可以识套 c)函数的定义和函数的调用均不可以嵌套 D)函数的定义相函数的调用均可以嵌套 9.以下子程序段是选出能被3整除且至少有一位是5的两位数,打印出这样的数及其个数,请选择填空。

谭浩强C语言第八章答案.doc

8.1 # include int yueshu(int m,int n); int beishu(int m,int n); int main() { int a,b,Y,B; printf("输入两个数字:\n"); scanf("%d%d",&a,&b); Y=yueshu(a,b); B=beishu(a,b); printf("最大公约数为Y=%d\n最小公倍数为B=%d\n",Y,B); } int yueshu(int m,int n) { int r,t; if(m float gen1(int a,int b,int c) { int x1,x2; x1=(-b+sqrt(b*b-4*a*c))/(2*a);

x2=(-b-sqrt(b*b-4*a*c))/(2*a); printf("%f\n%f\n",x1,x2); return 0; } float gen2(int a,int b,int c) { int x; x=-b/(2*a); printf("%f\n",x); return x; } float gen3(int a,int b,int c) { printf("无实根;\n"); return 0; } float function(int a,int b,int c) { float x,y; y=a*x*x+b*x+c; return y; } void main() { int x,a,b,c,y; printf("请输入系数:\n"); scanf("%d%d%d",&a,&b,&c); if(b*b-4*a*c>0) { printf("根为:%f%f",gen1(a,b,c)); } if(b*b-4*a*c==0) { printf("根为:%f",gen2(a,b,c)); } if(b*b-4*a*c<0) { printf("根为:",gen3(a,b,c)); } } 8.3 # include # include

相关主题
相关文档
最新文档