C_函数1

合集下载

《c语言函数》PPT课件

《c语言函数》PPT课件
其它函数: 可以互相调用函数、自调用函数,不能调用main()。
精选课件ppt
4
2、使用参数 入口参数: 主调函数向被调函数传递的数据------实参、形参。
出口参数: 被调函数向主调函数传递的数据------返回值。
精选课件ppt
5
§7.2 函数的定义 问题: 1、被调函数如何使用主调函数中的数据。 2、假设被调函数有办法使用主调函数中的数据,如何保证 被调函数和主调函数中数据类型的一致。
在函数中允许有多个return语句,但每次调用只能有一个 return 语句被执行, 因此只能返回一个函数值。
精选课件ppt
15
2、函数值(回传值)的类型与被调用函数的类型说明
函数调用语句 被调函数类型 回传值类型
在定义函数时,需要指定函数的类型:
例如:
int max(x,y);
doubel a(c1,c2); 等等
1、被调函数为库函数 对库函数的调用不需要再作说明, 但必须把该函数的头
文件用include命令包含在源文件前部。
精选课件ppt
23
2、用户自定义的函数 一般应该在主调函数中对被调函数的返回值的类型做说明。 对被调函数的说明也有两种格式,
一种为传统格式,其一般格式为: 类型说明符 被调函数名();
9
调用结束:形参临时单元被释放,形参数据失效,实参数 据不变。这就是所谓的单值传递。
函数的形参和实参具有以下特点:
(1)、形参变量只有在被调用时才分配内存单元,在调用 结束时, 即刻释放所分配的内存单元。因此,形参只有在 函数内部有效。 函数调用结束返回主调函数后则不能再使 用该形参变量。
精选课件ppt
}
精选课件ppt

C语言常用的库函数表

C语言常用的库函数表

附录C C语言常用的库函数
库函数并不是C语言的一部分,它是由编译系统根据一般用户的需要编制并提供给用户使用的一组程序;每一种C编译系统都提供了一批库函数,不同的编译系统所提供的库函数的数目和函数名以及函数功能是不完全相同的;ANSI C标准提出了一批建议提供的标准库函数;它包括了目前多数C编译系统所提供的库函数,但也有一些是某些C编译系统未曾实现的;考虑到通用性,本附录列出ANSI C建议的常用库函数;
由于C库函数的种类和数目很多,例如还有屏幕和图形函数、时间日期函数、与系统有关的函数等,每一类函数又包括各种功能的函数,限于篇幅,本附录不能全部介绍,只从教学需要的角度列出最基本的;读者在编写C程序时可根据需要,查阅有关系统的函数使用手册;
1.数学函数
使用数学函数时,应该在源文件中使用预编译命令:
2.字符函数
在使用字符函数时,应该在源文件中使用预编译命令:
3.字符串函数
使用字符串中函数时,应该在源文件中使用预编译命令:
4.输入输出函数
在使用输入输出函数时,应该在源文件中使用预编译命令:
5.动态存储分配函数
在使用动态存储分配函数时,应该在源文件中使用预编译命令:include <stdlib.h>或include "stdlib.h"
6.其他函数
有些函数由于不便归入某一类,所以单独列出;使用这些函数时,应该在源文件中使用预编译命令:。

1在C语言程序中

1在C语言程序中

7 、函数一、单选题1.在C语言程序中,有关函数的定义正确的是()。

A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可以嵌套C.函数的定义和函数的调用均不可以嵌套D.函数的定义和函数的调用均可以嵌套2.以下对C语言函数的有关描述中,正确的是()。

A.在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B.C函数既可以嵌套定义又可递归调用C.函数必须有返回值,否则不能使用函数D.C程序中有调用关系的所有函数必须放在同一个源程序文件中3.函数调用语句f((e1,e2) , (e3,e4,e5));中参数个数是()。

A.5 B.4 C.2 D.14. C语言中,若对函数类型未加显式说明,则函数的隐含类型为()A. voidB. doubleC. charD. int 5.C语言中函数的隐含存储类型是()。

A.auto B.static C.extern D.无存储类型6.能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是()。

A.return这二个数 B.形参用二个元素的数组C.形参用二个这种数据类型的指针 D.用二个全局变量7.()。

8. 以下程序的输出结果是()#include <stdio.h>sub1(char a , char b) {char c ; c=a ; a=b ; b=c ;}sub2(char *a , char b) { char c ; c=a ; *a=b ; b=c ;}sub3(char *a , char *b) { char c ; c=*a ; *a=*b ; *b=c;} void main( ){ char a , b;a=’A’; b=’B’ ; sub3(&a,&b); putchar(a) ; putchar(b);a=’A’; b=’B’ ; sub2(&a,b); putchar(a) ; putchar(b);a=’A’; b=’B’ ; sub1(a,b); putchar(a) ; putchar(b);}A. BABBABB. ABBBBAC. BABABAD. BAABBA9. 以下程序的输出结果是( D )fun(int a, int b, int c){ c=a*b; }void main( ){ int c;fun(2,3,c) ;printf(“%d\n”, c) ;}A. 0B. 4C. 6D. 无法确定10. 对于以下递归函数f,调用f(4),其返回值为()int f(int n){ if(n) return f(n-1)+n ;else return n;}A. 10B. 4C. 0D. 以上均不是二、填充题1. 变量的作用域主要取决于变量,变量的生存期既取决于变量,又取决于变量。

C语言第7章导学案1

C语言第7章导学案1

隆回县职业中专学校教学、学习设计方案)每个函数都可以被其它函数调用(包括main函数))每个函数都可以被单独编译)每个函数都可以单独运行)在一个函数内部可以定义另一个函数隆回县职业中专学校教学、学习设计方案scanf("%d",&x);y=sub(sub(sub(x)));printf("%d\n",y);【例7-7】有以下程序执行后的输出结果是()char fun(char x,char y){ if(x<y) return x;return y;}main( ){ int a='9',b='8',c='7';printf("%c\n",fun(fun(a,b),fun(b,c )));} }隆回县职业中专学校教学、学习设计方案二、自主学习互动探究知识点:函数递归调用定义:一个函数在它的函数体内直接或间接地调用它自身称为递归调用。

这种函数称为递归函数。

C语言允许函数的递归调用。

在递归调用中,主调函数又是被调函数。

执行递归函数将反复调用其自身。

递归调用分为直接递归和间接递归,直接递归是在函数中调用了本身,如图1。

间接递归是函数调用了别的函数,别的函数又调用了自己,如图2。

图1 图2【例1】以下程序运行后的输出结果是()。

int f(int a[], int n){ if (n>=1) return f(a, n-1)+a[n-1];else return 0;}main(){ int aa[5]={1,2,3,4,5}, s;s=f(aa, 5); printf("%d\n", s);}三、案例分析明确新知1、下面程序的运行结果是()long fun(int n){ if(n>2) return(fun(n-1)+fun(n-2));else return (2);}main(){ printf("%ld\n",fun(3));}2、有以下程序运行后的输出结果是()fun(int x){ if(x/2>0) fun(x/2);printf("%d",x);}main(){ fun(6);}11。

C语言实验报告函数

C语言实验报告函数

实验名:函数的定义及调用一、实验目的1、掌握C语言函数定义及调用的规则。

2、理解参数传递的过程。

二、实验内容(一))题目11、题目内容描述1、上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。

main(){int,y;printf(“%d\n”,sum(x+y));int sum(a,b){int a,b;return(a+b);}}2、编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。

三、分析讨论1、针对以上实验内容写出相应的参数传递过程并分析结果。

2、讨论参数的传递的几种形式。

2、输入和输出信息描述及数据类型确定;、输入数据(1)序号输入数据描述数据类型1 x,y int2 a,b int(2)输出数据序号输出数据描述数据类型1 x+y int3、程序源代码(填写程序调试正确后的代码)#include <stdio.h>int main(){int sum(int a,int b); //对被调用函数sum 的声明int x,y,z;scanf("%d,%d",&x,&y);z=sum(x,y); //调用sum 函数,将其值赋给zprintf("%d\n",z); //输出函数结果zreturn 0;//返回值为0}int sum(int a,int b) //定义sum函数{return(a+b); //将a+b的值作为返回值返回到调用sum的位置}4、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法1 In function 'main':|int,y;是改为int x,y;2 error: stray '\241' in program|error: expected expressionbefore '%' token|error: stray '\' in program|printf(“%d\n”,sum(x+y));是将整段改为int sum(int a , int b);int x,y,z;z=sum(x,y);printf("%d\n",z);3 error: 'a' redeclared asdifferent kind of symbol|error: 'b' redeclared asdifferent kind of symbol|int a,b;是去掉整句话4 warning: 'x' is useduninitialized in this function[-Wuninitialized]|是加上scanf("%d,%d",&x,&y);5 error: static declaration of'sum' follows non-staticdeclaration|是将int及后面的语句块都移到main外面5、测试与结果分析(1)、测试数据与结果测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析1 测试用例4,5 9 是可运算范围内2 测试用例55555,7933 63488 是可运算范围内3 测试用例-89,-79 -168 是可运算范围内(2)、相关问题回答2、编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。

一个C程序可由一个主函数和若干个函数构成由主函数调用

一个C程序可由一个主函数和若干个函数构成由主函数调用

主调函数不必 说明add函数。
100
函数练习:例5.1求∑n,n从键盘输入。 n=1
输入:无 计算:1+2+3+…+n 输出:计算的和
sum=0;i=0 当i<n i=i+1
sum=sum+i
GetSum(int n) { int i=1,sum=0; while (i<n)
{i=i+1; sum=sum+i;}
一个函数中可以有一个以上的return语句,执行到那一 个return语句,那一个语句起作用。如:
max(x,y) int x,y;
{if (x>y) return(x); else return(y);
}
return后面的值可以是一个表达式。如:
max(x,y)
int x,y;
{ return(x>y?x:y);
*****
*** *
for (i=1;i<=n-(n+1)/2;i++) {for (j=1;j<=i;j++) printf(“ ”); for (k=1;k<=n-2*i;k++) printf(“*”); printf(“\n”);}
}
4.函数的嵌套调用
C语言允许在调用一个函数的过程中,又调用另一个函 数。这称为函数的嵌套调用。
n
i 可以定义为
i=1
n-1
n+ i i=1
n1
i=
i=1
n-1
n+i
i=1
(n=1) (n>1)
xn 可以定义为 x*xn-1
xn= 1

C语言itoa()函数和atoi()函数详解(整数转字符C实现)

C语⾔itoa()函数和atoi()函数详解(整数转字符C实现)C语⾔itoa()函数和atoi()函数详解(整数转字符C实现)C语⾔提供了⼏个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。

1.int/float to string/array:C语⾔提供了⼏个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下⾯列举了各函数的⽅法及其说明。

● itoa():将整型值转换为字符串。

● ltoa():将长整型值转换为字符串。

● ultoa():将⽆符号长整型值转换为字符串。

● gcvt():将浮点型数转换为字符串,取四舍五⼊。

● ecvt():将双精度浮点型值转换为字符串,转换结果中不包含⼗进制⼩数点。

● fcvt():指定位数为转换精度,其余同ecvt()。

除此外,还可以使⽤sprintf系列函数把数字转换成字符串,其⽐itoa()系列函数运⾏速度慢2. string/array to int/floatC/C++语⾔提供了⼏个标准库函数,可以将字符串转换为任意类型(整型、长整型、浮点型等)。

● atof():将字符串转换为双精度浮点型值。

● atoi():将字符串转换为整型值。

● atol():将字符串转换为长整型值。

● strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。

● strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。

● strtoul():将字符串转换为⽆符号长整型值,并报告不能被转换的所有剩余数字。

以下是⽤itoa()函数将整数转换为字符串的⼀个例⼦:# include <stdio.h># include <stdlib.h>void main (void){int num = 100;char str[25];itoa(num, str, 10);printf("The number 'num' is %d and the string 'str' is %s. \n" ,num, str);}itoa()函数有3个参数:第⼀个参数是要转换的数字,第⼆个参数是要写⼊转换结果的⽬标字符串,第三个参数是转移数字时所⽤的基数。

C语言题库(填空题部分)

二、填空题1 、C语言中对文件读写之前必须先打开文件,文件的打开是通过调用 ________ 函数来实现。

答案: 1: fopen#fopen()#fopen ()知识点:知识点/基本理论/C11文件/C11_2文件函数2 、C语言中文件操作结束节后,必须关闭文件。

而且关闭文件是通过调用 __________ 函数来实现。

答案: 1: fclose#fclose()#fclose ()知识点:知识点/基本理论/C11文件/C11_2文件函数3、字符串函数________用于从指定的磁盘文件中读出一个字符串。

答案: 1: fgets#fgets()知识点:知识点/基本理论/C11文件/C11_2文件函数4、字符串函数___________用于把一个字符串写入指定的磁盘文件中。

答案: 1: fputs#fputs()知识点:知识点/基本理论/C11文件/C11_2文件函数5、字符读写函数____________ 是用于从磁盘文件中读出一个字符。

答案: 1: fgetc#fgetc()#getc#getc()知识点:知识点/基本理论/C11文件/C11_2文件函数6、字符读写函数____________ 是用于把一个字符写入磁盘文件。

答案: 1: fputc#fputc()#putc#putc()知识点:知识点/基本理论/C11文件/C11_2文件函数7、共用体类型变量的定义关键字是 ________ 。

答案: 1: union知识点:知识点/基本理论/C10共用体与枚举类型8、定义枚举类型时采用的关键字是 __________。

答案: 1: enum知识点:知识点/基本理论/C10共用体与枚举类型9、在C语言中,从参数的形式看,函数可以分为两类:无参函数和 ____________ 函数。

答案: 1:有参知识点:知识点/基本理论/C6函数与编译预处理/C62函数分类、调用及返回值T10、在C语言中,函数的返回值是由 ___________语句传递的。

C语言中可变参数函数实现原理浅谈

C语言中可变参数函数实现原理浅析1、C函数调用的栈结构可变参数函数的实现与函数调用的栈结构密切相关,正常情况下C的函数参数入栈规则为__stdcall, 它是从右到左的,即函数中的最右边的参数最先入栈。

例如,对于函数:void fun(int a, int b, int c){int d;...}其栈结构为0x1ffc-->d0x2000-->a0x2004-->b0x2008-->c对于任何编译器,每个栈单元的大小都是sizeof(int), 而函数的每个参数都至少要占一个栈单元大小,如函数void fun1(char a, int b, double c, short d) 对一个32的系统其栈的结构就是0x1ffc-->a (4字节)(为了字对齐)0x2000-->b (4字节)0x2004-->c (8字节)0x200c-->d (4字节)因此,函数的所有参数是存储在线性连续的栈空间中的,基于这种存储结构,这样就可以从可变参数函数中必须有的第一个普通参数来寻址后续的所有可变参数的类型及其值。

2. C语言通过几个宏来实现变参的寻址根据函数调用的栈结构,标准C语言中,一般在stdarg.h头文件定义了下面的几个宏,用于实现变参的寻址及可变函数的设计,其中有可能不同的商业编译器的发行时实现的具体代码可能不一样,但是原理都是一样的。

//Linux 2.18内核typedef char * va_list;/*Storage alignment properties -- 堆栈按机器字对齐其中acpi_native_int是一个机器字,32位机的定义是:typedef u32 acpi_native_int*/#define _AUPBND (sizeof (acpi_native_int) - 1)#define _ADNBND (sizeof (acpi_native_int) - 1)/* Variable argument list macro definitions -- 变参函数内部实现需要用到的宏*/#define _bnd(X, bnd) (((sizeof (X)) + (bnd)) & (~(bnd)))#define va_start(ap, A) (void) ((ap) = (((char *) &(A)) + (_bnd (A,_AUPBND))))#define va_arg(ap, T) (*(T *)(((ap) += (_bnd (T, _AUPBND))) - (_bnd (T,_ADNBND))))#define va_end(ap) (void) 0在X86 32位机器中,以上这几个宏的用途主要是:C语言传递参数是与__stdcall相同的,C语言传递参数时是用push指令从右到左将参数逐个压栈,因此C语言里通过栈指针来访问参数。

高中信息技术 信息学奥赛C语言第六章 函数课件

此处要注意一个“假象”,数组名作为参数传 递的是数组的首地址,严格地说其传递的也 是“值(地址)”。后面所说的指针变量作为 参数也是如样,传的也是值(地址值)。
※重点提示:主调函数在调用函数时,需要 把相应的实际参数传给相应的形式参数,实 际参数的个数和类型要和形式参数的个数和 类型必须一致。
•1、书籍是朋友,虽然没有热情,但是非常忠实。2022年3月4日星期五2022/3/42022/3/42022/3/4 •2、科学的灵感,决不是坐等可以等来的。如果说,科学上的发现有什么偶然的机遇的话,那么这种‘偶然的机遇’只能给那些学有素养的人,给那些善于独 立思考的人,给那些具有锲而不舍的人。2022年3月2022/3/42022/3/42022/3/43/4/2022 •3、书籍—通过心灵观察世界的窗口.住宅里没有书,犹如房间里没有窗户。2022/3/42022/3/4March 4, 2022 •4、享受阅读快乐,提高生活质量。2022/3/42022/3/42022/3/42022/3/4
printf(“***&&&\n”); 就是调用了printf函数,且调用之后加了分号, 构成了一条独立的语句,完成该输出操作。
(3)各个库函数的功能、参数的个数和类型、 函数值的类型都有其规定,用户在调用时 根据需要选择合适的库函数,并严格按照 该库函数的规则,正确的进行调用。
※重点提示:库函数的调用需要注意的是: 函数的功能,函数的参数个数、类型,函 数的返回值,对参数的一些特殊要求。
(2)在程序执行到return语句时,流程就 返回到调用该函数处,并带回函数值。在 同一个函数内,可以在多处出现return语句。
(3)return语句也可以不含表达式。此 时,它只是使流程返回到调用函数,并没 有确定的函数值。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。

)8.1 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参8.2 在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是A)地址传递B)单向值传递C)由实参传形参,再由形参传实参D)传递方式由用户指定8.3 以下正确的说法是A)定义函数时,形参的类型说明可以放在函数体内B)return后边的值不能为表达式C)如果函数值的类型与返回值类型不一致,以函数值类型为准D)如果形参与实参类型不一致,以实参类型为准8.4 以下正确的说法是A)用户若需调用标准库函数,调用前必须重新定义B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义C)系统根本不允许用户重新定义标准库函数D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动调用8.5 以下叙述正确的是A)函数可以嵌套定义但不能嵌套调用B)函数既可以嵌套调用也可以嵌套定义C)函数既不可以嵌套定义也不可以嵌套调用D)函数可以嵌套调用但不可以嵌套定义8.6 下面对C语言的描述中,正确的是A)函数一定有返回值,否则无法使用函数B)C语言函数既可以嵌套定义又可以递归调用C)在C语言中,调用函数时,只能将实参的值传递给形参D)C语言程序中有调用关系的所有函数都必须放在同一源程序文件中8.7 下列说法中错误的是A)静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值B)若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽C)静态全局变量可以被其他的编辑单位所引用D)所有自动类局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语句)时生成,退出其所在的函数体(或复合语句)时消失8.8 以下程序有语法错误,有关错误原因的正确说法是main(){ int G=5,k;void prt_char();...k=prt_char(G);... }A)语句void prt_char();有错,它是函数调用语句,不能用void说明B)变量名不能使用大写字母C)函数说明和函数调用语句之间有矛盾D)函数名不能使用下划线8.9 以下正确的函数头定义形式是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);8.10 以下所列的各函数首部中,正确的是A)void play(var :Integer,var b:Integer)B)void play(int a,b)C)void play(int a,int b)D)Sub play(a as integer,b as integer)8.12 下面函数调用语句含有实参的个数为A)1 B)2 C)4 D)5func((exp1,exp2),(exp3,exp4,exp5));8.13 设有如下函数fun (float x){ printf("\n%d",x*x); }则函数的类型是A)与参数x的类型相同B)是void C)是int型D)无法确定8.14 有以下程序float fun(int x,int y){ return(x+y);}main(){ int a=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c)); }程序运行后的输出结果是A)编译出错B)9 C)21 D)9.08.15 以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序void sort(int a[],int n){ int i,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]{ t=a[i];a[i]=a[j];a[j]=t;} }main(){ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;i<10;i++)printf("%d,",aa[i]); printf("\n"); }程序运行后的输出结果是A)1,2,3,4,5,6,7,8,9,10, B)10,9,8,7,6,5,4,3,2,1, C)1,2,3,8,7,6,5,4,9,10, D)1,2,10,9,8,7,6,5,4,3, 8.16 下列程序执行后的输出结果是void func1(int i);void func2(int i);char st[]="hello,friend!";void func1(int i){ printf("%c",st[i]);if(i<3){ i+=2;func2(i);} }void func2(int i){ printf("%c",st[i]);if(i<3){ i+=2;func1(i);} }main(){ int i=0; func1(i); printf("\n"); }A)hello B)hel C)hlo D)hlm8.17 以下函数返回a所指数组中最大值所在的下标值fun(int a[],int n){ int i,j=0,p;p=j;for(i=j;i<n;i++)if(a[i]>a[p])_________;return(p); }在下划线处应填入的内容是A)i=p B)a[p]=a[i]C)p=j D)p=i 8.18 有以下程序int f(int n){ if(n==1)return 1;else return f(n-1)+1; } main(){ int i,j=0;for(i=1;i<3;i++)j+=f(i);printf("%d\n",j); }程序运行后的输出结果是A)4 B)3 C)2 D)18.19 有如下程序:long fib(int n){ if(n>2)return(fib(n-1)+fib(n-2));else return(2); }main(){ printf("%d\n",fib(3)); }该程序的输出结果是A)2 B)4 C)6 D)88.20 下列函数的运行结果是A)-1 B)1 C)2 D)编译出错,无法运行main(){ int i=2,p;int j,k;j=i;k=++i;p=f(j,k);printf("%d",p); }int f(int a,int b){ int c;if(a>b)c=1;else if(a==b)c=0;else c=-1;return(c); }8.21 阅读下列程序,当运行函数时,输入asd af aa z67,则输出为int fun (char str[]){ int i,j=0;for(i=0;str[i]!=′\0′;i++)if(str[i]!=′ ′)str[j++]=str[i];str[j]= ′\0′; }main(){ char str[81];int n;clrscr();printf("Input a string : ");gets(str);puts(str);fun(str);printf("%s\n",str); } A)asdafaaz67 B)asd af aa z67 C)asd D)z678.22 以下程序的输出结果是A)1 B)2 C)3 D)4long fun(int n){ long s;if(n==1||n==2)s=2;else s=n-fun(n-1);return s; }main(){ printf("%ld\n", fun(3)); }8.23 已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的正确输出结果是void print_value(int *x){ printf("%d\n",++*x); }A)23 B)24 C)25 D)268.24 下面程序应能对两个整型变量的值进行交换。

以下正确的说法是main(){ int a=10,b=20;printf("(1)a=%d,b=%d\n",a,b);swap(&a,&b);printf("(2)a=%d,b=%d\n",a,b); }swap(int p,int q){ int t;t=p;p=q;q=t; }A)该程序完全正确B)该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可D)以上说法都不对8.25 以下程序的输出结果是int f(){ static int i=0; int s=1;s+=i; i++;return s; }main(){ int i,a=0;for(i=0;i<5;i++)a+=f();printf("%d\n",a); }A)20 B)24 C)25 D)158.26 阅读下面程序段,则执行后输出的结果是#include "stdio.h"main(){ char fun(char,int);char a=′A′;int b=13;a=fun(a,b);putchar(a); }char fun(char a,int b){ char k;k=a+b;return k; }A)A B)M C)N D)L8.27 编写求两个双精度数之和的函数,选项中正确的是A)double add(double a,double b){ double s;s=a+b;return s; }B)double add(double a,b){ double s;s=a+b;return (s); }C)double add(double a double b){ double s;s=a+b;returns; }D)double add(a,b){ double a,b,s;s=a+b;return (s); }8.28 现有如下程序#include "stdio.h"int fun(int x){ printf("x=%d\n",++x); }main(){ fun(12+5); }则程序的输出结果是A)12 B)13 C)17 D)18 8.29 现有如下程序段#include "stdio.h"int aa(int x,int y);main(){ int a=24,b=16,c;c=aa(a,b);printf("%d\n",c); }int aa(int x,int y){ int w;while(y){ w=x%y;x=y;y=w; }return x; }则程序段的输出结果是A)8 B)7 C)6 D)5 8.30 下列程序的输出结果是#include "stdio.h"#define N 3#define M 3void fun(int a[M][N]){ printf("%d\n",*(a[1]+2)); }main(){ int a[M][N];int i,j;for(i=0;i<M;i++)for(j=0;j<N;j++)a[i][j]=i+j-(i-j); fun(a); }A)3 B)4 C)5 D)68.31 阅读下面程序,则执行后的结果为A)0 B)184 C)175 D)编译不通过#include "stdio.h"main(){ fun3(fun1(),fun2()); }fun1(){ int k=20;return k; }fun2(){ int a=15;return a; }fun3(int a,int b){ int k;k=(a-b)*(a+b);printf("%d\n",k); }8.32 阅读下面程序,则程序执行后的结果为A)27 B)27.000000 C)28 D)28.000000 #include "stdio.h"main(){ int a=4,b=6,c=7;double d,fun(int,int,int);d=fun(a,b,c);printf("%lf\n",d); }double fun(int a,int b,int c){ double s;s=a%b*c;return s; }8.33 现有如下程序,则程序的输出结果为#include "stdio.h"int f(int a,int b){ int c;if(a>0&&a<10)c=(a+b)/2;else c=a*b/2;return c; }main(){ int a=8,b=20,c;c=f(a,b);printf("%d\n",c); }A)随机数B)80 C)28 D)148.34 阅读如下程序段,则程序段的执行后的输出结果为#include "stdio.h"main(){ char c;int i;char count();int p(char);for(i=0;i<30;i++)c=count();p(c); }char count(){ char str=′A′;str+=1;return(str); }p(char c){ putchar(c);putchar(′\n′); }A)A B)B C)a D)b8.35 阅读程序,则执行后的结果为#include "stdio.h"main(){ int i,m,n;for(i=0;i<3;i++){ m=test1();n=test2(); }printf("%d,%d\n",m,n); }test1(){ int x=0;x++;return x; }test2(){ static int x=0;x++; return x; }A)1,1 B)1,3 C)3,1 D)3,38.36 以下说法中正确的是A) C语言程序总是从第一个定义的函数开始执行B) 在C语言程序中,要调用的函数必须在main函数中定义C) C语言程序总是从main函数开始执行D) C语言程序中的main函数必须放在程序的开始部分8.37 以下函数的类型是A) 与参数x的类型相同B) void类型C) int类型D) 无法确定fff(float x){ printf("%d\\n",x*x); }8.38 以下函数调用语句中,含有的实参个数是A) 1 B) 2 C) 4 D) 5func( (exp1,exp2),(exp3,exp4,exp5));8.39 以下程序的输出结果是A) 11 B) 20 C) 21 D) 31fun(int a,int b){ int c;c=a+b;return c; }main(){ int x=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf("%d\\n",r); }8.40 以下程序的输出结果是A) -1 B) 0 C) 1 D) 2main(){ int i=2,p;p=f(i,i+1);printf("%d",p); }int f(int a, int b){ int c;c=a;if(a>b) c=1;else if(a==b) c=0;else c=-1;return(c); }8.41 以下程序的输出结果是A) 0B) 1 C) 6 D) 无定值fun(int a,int b,int c){ c=a*b; }main(){ int c;fun(2,3,c);printf("%d\\n",c); }8.42 以下程序的输出结果是A) 5.500000 B) 3.000000 C) 4.000000 D) 8.25 double f(int n){ int i; double s;s=1.0;for(i=1; i<=n; i++) s+=1.0/i;return s; }main(){ int i,m=3; float a=0.0;for(i=0; i<m; i++) a+=f(i);printf("%f\\n",a); }二、填空题(请将每一个空的正确答案写在答题卡相应序号后。

相关文档
最新文档