C语言函数部分习题校对版有答案版
c语言关于函数的试题及答案
c语言关于函数的试题及答案1. 题目:以下哪个选项是正确的C语言函数定义?- A. int function(int a, int b) { return a + b; } - B. int function(int a, int b) { return a - b; } - C. int function(int a, int b) { return a * b; } - D. All of the above答案:D2. 题目:在C语言中,函数的返回值类型是什么?- A. void- B. int- C. float- D. char答案:A3. 题目:以下哪个选项是C语言中有效的函数声明?- A. int add(int a, int b);- B. int add(int, int);- C. int add(int a; int b);- D. int add(int a, int b) {}答案:A4. 题目:在C语言中,函数的参数默认传递方式是什么? - A. 值传递- B. 引用传递- C. 指针传递- D. 以上都不是答案:A5. 题目:以下哪个选项是C语言中正确的递归函数定义?- A. int fact(int n) { if (n == 0) return 1; else return n * fact(n - 1); }- B. int fact(int n) { if (n == 0) return 1; else return n * fact(n + 1); }- C. int fact(int n) { if (n == 1) return 1; else return n * fact(n - 1); }- D. All of the above答案:A6. 题目:在C语言中,如何定义一个接受任意数量参数的函数?- A. 使用不定参数列表- B. 使用数组作为参数- C. 使用指针作为参数- D. 使用结构体作为参数答案:A7. 题目:以下哪个选项是C语言中正确的函数指针声明?- A. int (*func)(int);- B. int *func(int);- C. int func(int)[];- D. int (*func)(int, int);答案:A8. 题目:在C语言中,如果函数返回一个结构体,那么函数的返回类型是什么?- A. struct- B. void- C. int- D. char答案:A9. 题目:以下哪个选项是C语言中正确的函数重载声明?- A. void add(int a, int b);- B. int add(int a, int b);- C. void add(int a, int b, int c);- D. All of the above答案:D10. 题目:在C语言中,如何定义一个接受可变数量参数的函数?- A. 使用不定参数列表- B. 使用数组作为参数- C. 使用指针作为参数- D. 使用结构体作为参数答案:A。
历年c语言考试题及答案函数
历年c语言考试题及答案函数1. 题目:编写一个C语言函数,实现两个整数的加法。
答案:以下是一个简单的C语言函数,用于计算两个整数的和。
```cint add(int a, int b) {return a + b;}```2. 题目:编写一个C语言函数,实现字符串的反转。
答案:以下是一个C语言函数,用于反转一个字符串。
```cvoid reverse(char *str) {int len = 0;while(str[len] != '\0') len++;for(int i = 0; i < len / 2; i++) {char temp = str[i];str[i] = str[len - i - 1];str[len - i - 1] = temp;}}```3. 题目:编写一个C语言函数,计算数组中元素的平均值。
答案:以下是一个C语言函数,用于计算一个整数数组的平均值。
```cdouble average(int arr[], int size) {int sum = 0;for(int i = 0; i < size; i++) {sum += arr[i];}return (double)sum / size;}```4. 题目:编写一个C语言函数,检查一个字符串是否为回文。
答案:以下是一个C语言函数,用于检查一个字符串是否为回文。
```cint isPalindrome(char *str) {int len = 0;while(str[len] != '\0') len++;for(int i = 0; i < len / 2; i++) {if(str[i] != str[len - i - 1]) {return 0; // Not a palindrome}}return 1; // Is a palindrome}```5. 题目:编写一个C语言函数,实现两个浮点数的乘法。
C语言程序设计函数练习题及参考答案
C语言程序设计练习题及参考答案1、定义一个函数int fun(int a, int b, int c),它的功能是:若a, b, c能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。
^include <stdio.h>int fun(int a, int b, int c)(if(a+b>c && b÷c>a && a+c>b)(if(a=b && b=c )return 3;else if (a-b ∣∣ b-c ∣∣ a==c)return 2;else return 1;)else return 0;)void main()(int a, b, c, shape;printf (z,∖∩Tnput a, b, c: 〃);scanf ("%d%d%d”, &a, &b, &c);printf ("∖na=%d, b=%d, c=%d∖n”, a, b, c);shape =fun(a, b, c);printf (z,∖n∖nThe shape : %d∖∏z,, shape);2、编写一个程序,将两个变量的值交换,例如变量a中的值原为3, b中的值原为8,程序运行后a中的值为8, b中的值为3。
^include <stdio.h>void fun(int *x, int *y){int t;t=*x;*x=*y;*y=t)void main(){int a=3,b=8;printf (,,%d %d∖∏z,, a, b);fun (&a, b);printf (,,%d %d∖n”, a, b);3、从键盘输入3个数,将最大值放在变量a中,最小值放在变量c中。
例如,输入的数为:55 12 34,输出结果应当是:a=55.0, b=34. 0, c=12. 0o^include <stdio. h>void fun(float *p, float *q, float *s)(float k;if (*p<*q){ k=*p;*p=*q;*q=k;}if (*q<*s){ k=*s;*s=*p;*p=k;}if (*p<*q){ k=*p;*p=*q;*q=k;})void main(){ float a, b, c;printf (z,Input a b c: 〃); scanf (z,%f%f%f z,, &a, &b, &c);printf (zz a=%4. If, b=%4. If, c=%4. lf∖n∖n zz, a, b, c);fun(&a, &b, &c);printf (z,a=%4. If, b=%4. If, c=%4. lf∖n∖∏z,, a, b, c);4、编写函数fun(intn),它的功能是:计算正整数n的所有因子(1和n除外)之和作为函数值返回。
c函数试题及答案
c函数试题及答案在本篇文章中,将介绍一些C语言中常见的函数试题,并给出其相应的答案。
通过这些试题的讲解,读者可以深入了解C函数的使用方法和注意事项,提高对C语言编程的理解和实践能力。
1. 试题一:编写一个函数,实现两个整数的交换。
答案:```cvoid swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;}```2. 试题二:编写一个函数,判断一个数是否为偶数,返回1表示是,返回0表示不是。
答案:```cint isEven(int num) {if(num % 2 == 0) {return 1;} else {return 0;}}```3. 试题三:编写一个函数,计算一个整数数组中所有元素的和。
答案:```cint sumArray(int arr[], int size) {int sum = 0;for(int i = 0; i < size; i++) {sum += arr[i];}return sum;}```4. 试题四:编写一个函数,找出一个整数数组中的最大值。
答案:int findMax(int arr[], int size) {int max = arr[0];for(int i = 1; i < size; i++) {if(arr[i] > max) {max = arr[i];}}return max;}```5. 试题五:编写一个函数,将一个字符串逆序输出。
答案:```cvoid reverseString(char str[]) {int length = strlen(str);for(int i = length - 1; i >= 0; i--) {printf("%c", str[i]);}```通过以上试题及其答案的讲解,读者可以加深对C语言函数的理解,并且能够熟练运用这些函数来解决实际的编程问题。
C语言函数练习题及答案.doc
【单选题】在下列关于C函数定义的叙述中,正确的是?A、函数可以嵌套定义,但不可以嵌套调用;B、函数不可以嵌套定义,但可以嵌套调用;C、函数不可以嵌套定义,也不可以嵌套调用;D、函数可以嵌套定义,也可以嵌套调用;我的答案:B得分:2.5分2【单选题】下面函数调用语句含有实参的个数为?n c((expl z exp2)z(exp3z exp4A exp5));A、B、D、5我的答案:B得分:2.5分3【单选题】c语言中函数返回值的类型是由以下哪个选项决定的?A、函数定义时指定的类型;B、return语句中的表达式类型;C、调用该两数时的实参的数据类型;D、形参的数据类型;我的答案:A得分:2.5分4【单选题】以下关于函数叙述屮,错误的是?A、两数未被调用时,系统将不为形参分配内存单元;B、实参与形参的个数必须相等,TL实参与形参的类型必须对应一致;C、当形参是变量时,实参可以是常量、变量或表达式;D、如两数调用时,实参与形参都为变:S,则这两个变量不可能共亨同一内存空间; 我的答案:B得分:2.5分5【单选题】若函数调用时参数为基本数据类型的变量,以下叙述正确的是?A、实参与菇对应的形参共享内存存储单元;B、只有当实参与菇对应的形参同名时才共享内存存储单元;C、实参与对应的形参分别占用不同的内存存储单元;实参将数据传递给形参后,立即释放原先占用的内存存储单元;我的答案:C得分:2.5分6【单选题】函数调用时,实参和形参都是简单变量,它们之间数据传递的过程描述正确的是?A、实参将地址传递给形参,并释放原先占用的存储单元;B、实参将地址传递给形参,调用结束时形参再将此地址回传给实参;C、实参将值传递给形参,调用结束时形参再将其值回传给实参;D、实参将值传递给形参,调用结束时形参并不将其值回传给实参;我的答案:D得分:2.5分7【单选题】若用数组名作为函数调用的实参,则传递给形参的是?A、数组第一个元索的地址;数组的第一个元素的值;C、数组中所有元素的值;D、数组元素的个数;我的答案:A得分:2.5分8【单选题】C语言规定了程序中各函数之I'可调用关系,以下说法正确的是?既允许直接递归调用也允许间接递归调用;B、不允许直接递归调用也不允许间接递归调用;C 允许直接递归调用不允许间接递归调用;D、不允许直接递归调用允许间接递归调用;我的答案:A得分:2.5分9【单选题】递归函数f(n)=f(n-l)+n (n>l)的递归体是?A、f(l)=OB、c.f(n)=f(n-l)+nD.f(n)=n我的答案:C得分:2.5分10【单选题】若函数的形参为一维数组,则下列说法中正确的是()O A、使用畅数时的对应实参必为数组名。
C语言函数练习题及答案
C语言函数练习题及答案集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#1【单选题】在下列关于C函数定义的叙述中,正确的是•A、•B、•C、•D、我的答案:B得分:分2【单选题】下面函数调用语句含有实参的个数为nc((exp1,exp2),(exp3,exp4,exp5));•A、•B、•C、•D、我的答案:B得分:分3【单选题】C语言中函数返回值的类型是由以下哪个选项决定的•A、•B、•C、•D、我的答案:A得分:分4【单选题】以下关于函数叙述中,错误的是•A、•B、•C、•D、我的答案:B得分:分5【单选题】若函数调用时参数为基本数据类型的变量,以下叙述正确的是•A、•B、•C、•D、我的答案:C得分:分6【单选题】函数调用时,实参和形参都是简单变量,它们之间数据传递的过程描述正确的是•A、•B、•C、•D、我的答案:D得分:分7【单选题】若用数组名作为函数调用的实参,则传递给形参的是•A、•B、•C、•D、我的答案:A得分:分8【单选题】C语言规定了程序中各函数之间调用关系,以下说法正确的是•A、•B、•C、•D、我的答案:A得分:分9【单选题】递归函数f(n)=f(n-1)+n(n>1)的递归体是•A、•B、•C、•D、我的答案:C得分:分10【单选题】若函数的形参为一维数组,则下列说法中正确的是()。
•A、•B、•C、•D、我的答案:B得分:分11【单选题】在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则()。
•A、•B、•C、•D、我的答案:B得分:分12【单选题】有以下函数定义:voidfun(intn,doublex){……}下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是()。
•A、•B、•C、•D、我的答案:C得分:分13【单选题】已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的正确定义方式为______。
(完整版)c语言函数练习题附答案
函数一、选择题1.在c 语言中以下不正确的说法是:()A.实参可以是常量、变量、或表达式B.形参可以是常量、变量或表达式C.实参可以为任意类型D.形参应与其对应的实参类型一致2.以下程序有语法性错误,有关错误原因的正确说法是:()int main(){ int G=5,k;void prt_char();……k=prt_char(G);……}A.语句 void prt_char();有错,它是函数调用语句,不能用 void 说明B.变量名不能使用大写字母C.函数说明和函数调用语句之间有矛盾D.函数名不能使用下划线3.以下正确的说法是:()A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可嵌套C.函数的定义和调用均不可以嵌套D.函数的定义和调用均可以嵌套4.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是:()A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参5.以下所列的各函数首部中,正确的是:()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)6.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是:()A、地址传递B、单向值传递C、由实参传给形参,再由形参传回实参D、传递方式由用户指定7.有以下程序void fun (int a,int b,int c){ a=456; b=567; c=678;}int main(){ int x=10, y=20,z=30;fun (x,y,z);printf("%d,/%d,%d\n",x,y,z);return 0;}输出结果是:()A、30,20,10B、10,20,30C、456,567,678D、678,567,4568.下述函数定义形式正确的是()。
C语言(函数)习题与答案
一、单选题1、以下说法中正确的是?A.总是从main( )函数开始执行;B.C语言程序总是从第一个定义的函数开始执行;C.C语言程序中,要调用的函数必须在main( )函数中定义;D.main( )函数必须放在程序的开始部分;正确答案:A解析: A、C语言程序由函数组成,不可以嵌套定义,每个程序有且只能有一个main 函数,在执行时总是从main函数开始运行,在main函数中结束,与main函数定义所在位置无关。
2、以下叙述正确的是?A.C语言函数可以嵌套调用,例如:fun(fun(x));B.C语言函数不能单独编译;C.C语言程序是由过程和函数组成;D.C语言中除了main函数,其他函数不能作为单独文件形式存在;正确答案:A3、在函数调用时,以下说法正确的是?A.主调函数和被调函数总是在同一个文件里;B.函数间的数据传递不可以使用全局变量;C.实际参数和形式参数可以同名;D.函数调用后必须带回返回值;正确答案:C解析: C、形参是局部变量,在与实参结合时,从实参中拷贝实参的值,和实参的名字无关,所以可以同名。
D、一些只完成功能的函数是不需要返加值的4、若函数调用时,用数组名作为函数的参数,以下叙述中正确的是?A.实参与对应的形参共用同一段存储空间;B.实参与对应的形参占用相同的存储空间;C.实参将地址传递给形参,等同实现了参数之间的双向值的传递;D.实参将地址传递给形参,同时形参也会将该地址传递给实参;正确答案:C5、下列程序的输出结果是()。
#include "stdio.h"void fun(int a,int b,int c){c = a * b;}int main( ){int c;fun(2,3,c);printf("%d\n", c);return 0;}A.6B.0C.1D.无法确定正确答案:D解析: D、main函数中的c 与fun函数中的c都是局部变量,作用域只属于自己的函数,而程序输出是在main函数中进行的,所以输出的是main函数中的局部变量c,而此变量c在main函数中只是定义了,并没有赋值,所以它的值不能确定。
C语言函数习题及答案
9.请编写函数fun,实现的功能是:求出能整除x且是偶数的各整数, 并按从小到大的顺序依次存放在y所指定的数组中,这些除数的个数 通过函数返回。仅在fun函数体内编写代码即可。图12-1是输入40后 的运行结果图。 #include "stdio.h" int fun(int x,int y[]) {int i,j=0; for(i=2;i<x;i++) if(x%i==0&&i%2==0)y[j++]=i; return j; } main() {int x,a[100],n,i; printf("请输入一个整数:"); scanf("%d",&x); n=fun(x,a); for(i=0;i<n;i++) printf("%4d",a[i]); printf("\n");}
2.编写一个函数fun,实现将一个字符串反序存放。例如:在 主函数中输入字符串“abcdefg”,在调用fun函数后,则应输出 “gfedcba”。 #include <stdio.பைடு நூலகம்>
#include <string.h> #define N 81 char fun(char s[],int n) {int i; char c; for(i=0;i<=(n-1)/2;i++) {c=s[i]; s[i]=s[n-1-i]; s[n-1-i]=c;} } main() { char s [N]; int l; printf("input a string:");gets(s); l=strlen(s); fun(s,l); printf("The new string is :");puts(s); }
函数练习题[C语言]带答案(可编辑修改word版)
C语言函数练习题一、选择题1.一个完整的C源程序是【】. A)要由一个主函数或一个以上的非主函数构成B)由一个且仅由一个主函数和零个以上的非主函数构成C)要由一个主函数和一个以上的非主函数构成 D)由一个且只有一个主函数或多个非主函数构成2.以下关于函数的叙述中正确的是【】.A)C语言程序将从源程序中第一个函数开始执行B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D)main可作为用户标识符,用以定义任意一个函数3.以下关于函数的叙述中不正确的是【】.A)C程序是函数的集合,包括标准库函数和用户自定义函数B)在C语言程序中,被调用的函数必须在main函数中定义C)在C语言程序中,函数的定义不能嵌套D)在C语言程序中,函数的调用可以嵌套4.在一个C程序中,【】.A)main函数必须出现在所有函数之前B)main函数可以在任何地方出现C)main函数必须出现在所有函数之后D)main函数必须出现在固定位置5.若在C语言中未说明函数的类型,则系统默认该函数的数据类型是【】A)float B)longC)int D)double6.以下关于函数叙述中,错误的是【】. A)函数未被调用时,系统将不为形参分配内存单元B)实参与形参的个数应相等,且实参与形参的类型必须对应一致C)当形参是变量时,实参可以是常量、变量或表达式 D)形参可以是常量、变量或表达式7.若函数调用时参数为基本数据类型的变量,以下叙述正确的是【】.A)实参与其对应的形参共占存储单元B)只有当实参与其对应的形参同名时才共占存储单元 C)实参与对应的形参分别占用不同的存储单元 D)实参将数据传递给形参后,立即释放原先占用的存储单元9. 函数调用时,当实参和形参都是简单变量时,他们之间数据传递的过程是【】.A)实参将其地址传递给形参,并释放原先占用的存储单元 B)实参将其地址传递给形参,调用结束时形参再将其地址回传给实参C)实参将其值传递给形参,调用结束时形参再将其值回传给实参D)实参将其值传递给形参,调用结束时形参并不将其值回传给实参10.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是【】.A)函数的实参和其对应的形参共占同一存储单元 B)形参只是形式上的存在,不占用具体存储单元C)同名的实参和形参占同一存储单元 D)函数的形参和实参分别占用不同的存储单元11.若用数组名作为函数调用的实参,则传递给形参的是【】.A> 数组的首地址B> 数组的第一个元素的值C> 数组中全部元素的值D> 数组元素的个数12.若函数调用时,用数组名作为函数的参数,以下叙述中正确的是【】.A)实参与其对应的形参共用同一段存储空间B)实参与其对应的形参占用相同的存储空间 C)实参将其地址传递给形参,同时形参也会将该地址传递给实参D)实参将其地址传递给形参,等同实现了参数之间的双向值的传递13.13.如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合语句中定义了一个变量,则该变量【】 .b5E2RGbCAP A)为全局变量,在本程序文件范围内有效 B)为局部变量,只在该函数内有效C)为局部变量,只在该复合语句中有效D)定义无效,为非法变量14.C语言中函数返回值的类型是由【】决定.A)return语句中的表达式类型 B)调用函数的主调函数类型 C)调用函数时临时 D)定义函数时所指定的函数类型15.15.若在一个C源程序文件中定义了一个允许其他源文件引用的实型外部变量a,则在另一文件中可使用的引用说明是【】.p1EanqFDPwA)extern static float a。
C语言函数习题及答案
第6章函数习题一、选择题1.一个完好的 C 源程序是【】。
A)要由一个主函数或一个以上的非主函数组成B)由一个且仅由一个主函数和零个以上的非主函数组成C)要由一个主函数和一个以上的非主函数组成D)由一个且只有一个主函数或多个非主函数组成2. 以下对于函数的表达中正确的选项是【】。
A) C 语言程序将从源程序中第一个函数开始履行B)能够在程序中由用户指定随意一个函数作为主函数,程序将此后开始履行C) C 语言规定一定用main 作为主函数名,程序将此后开始履行,在此结束D) main 可作为用户表记符,用以定义随意一个函数3.以下对于函数的表达中不正确的选项是【】。
A) C 程序是函数的会合,包含标准库函数和用户自定义函数B)在 C 语言程序中,被调用的函数一定在main 函数中定义C)在 C 语言程序中,函数的定义不可以嵌套D)在 C 语言程序中,函数的调用能够嵌套4.在一个 C 程序中 ,【】。
A) main 函数一定出此刻所有函数以前B) main 函数能够在任何地方出现C) main 函数一定出此刻所有函数以后D) main 函数一定出此刻固定地点5.若在 C 语言中未说明函数的种类,则系统默认该函数的数据种类是【】A) float B) longC) int D) double6. 以下对于函数表达中,错误的选项是【】。
A)函数未被调用时,系统将不为形参分派内存单元B)实参加形参的个数应相等,且实参加形参的种类一定对应一致C)当形参是变量时,实参能够是常量、变量或表达式D)形参能够是常量、变量或表达式7. C 程序中各函数之间能够经过多种方式传达数据,以下不可以用于实现数据传达的方式是【】。
A)参数的形实(哑实)联合B)函数返回值C)全局变量D)同名的局部变量8. 若函数调用时参数为基本数据种类的变量,以下表达正确的选项是】。
【A)实参加其对应的形参共占储存单元B)只有当实参加其对应的形参同名时才共占储存单元C)实参加对应的形参分别占用不一样的储存单元D)实参将数据传达给形参后,立刻开释原来占用的储存单元9.函数调用时 ,当实参和形参都是简单变量时,他们之间数据传达的过程是【】。
C语言习题及解答
第1部分课后练习题第1章C语言概述一、选择题1.一个C程序的执行是从。
A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束2.以下叙述正确的是。
.在C程序中,main函数必须位于程序的最前面A)C程序的每行中只能写一条语句B)C语言本身没有输入输出语句C)在对一个C程序进行编译的过程中,可发现注释中的拼写错误3.以下叙述不正确的是。
A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数C)C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面4.C语言规定:在一个源程序中,main函数的位置。
A) 必须在最开始 B) 必须在系统调用的库函数的后面C) 可以任意 D) 必须在最后5.一个C语言程序是由。
A) 一个主程序和若干子程序组成 B) 函数组成C) 若干过程组成 D) 若干子程序组成6.C语言中的语句需要符号作为结尾。
A) : B) ; C)。
D) //7.C 语言程序中可以对程序进行注释,注释部分用符号_____括起来。
A)‘{‘ 和’}’ B)‘[‘和’]’C)“/*”和”*/” D)“*/”和”/*”8.C语言中注释的位置。
A) 必须在程序的最开始 B) 必须在程序的结尾C) 可以在程序的任何位置 D) 不可以写到main函数里面9.C语言程序能够在不同的操作系统下面运行,这说明c语言具有很好的。
A) 适应性 B)移植性 C)兼容性 D) 操作性10.C语言经过编译后生成的文件的后缀是。
A).c B) .cpp C) .exe D) .obj11.C语言编译程序的首要工作是。
A) 检查C语言程序的语法错误 B) 检查C语言程序的逻辑错误C)检查程序的完整性 D) 同时检查语法和逻辑错误12. C语言经过链接后生成的文件的后缀是。
c语言函数测试(答案+分析)
c语言函数测试(答案+分析)大家一定要认真做完,标清题号和答案,打包提交,最后我会把答案通过群邮件发给大家!一、单项选择题1.在C程序中有如下语句:char *func(int x,int y); 它是:A)对函数func的定义。
B)对函数func的调用。
C)对函数func的原型说明。
D)不合法的。
2.以下说法中正确的是:A)C语言程序总是从第一个的函数开始执行B)在C语言程序中,要调用的函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分3.在函数中默认存储类型说明符的变量应该是存储类型:A)内部静态B)外部C)自动D)寄存器4.会直接导致函数返回的指令是:A)breakB)returnC)continueD)end5.以下不正确的描述是A)在主函数中,定义变量可以不需要指定类型。
B)在定义函数时,必须指定形参的类型。
C)形参和实参之间可以是值传递。
D)数组名可以作为参数进行传递。
6.关于建立函数的目的之一,以下正确的说法是:A)提高程序的执行效率B)提高程序的可读性C)减少程序的篇幅D)减少程序文件所占内存7.以下正确的说法是:A)用户若需调用标准库函数,调用前必须重新定义B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义C)系统根本不允许用户重新定义标准库函数D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调8.以下正确的函数定义形式是: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);9.以下正确的函数形式是: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; }10.在C语言中以下正确的说法是:A)实参和与其对应的形参各占用独立的存储单元B)实参和与其对应的形参共占用一个存储单元C)只有当实参和与其对应的形参同名时才共占用存储单元D)形参是虚拟的,不占用存储单元11.若调用一个函数,且此函数中没有return语句,则正确的说法是:A)该函数没有返回值B)该函数返回若干个系统默认值C)该函数能返回一个用户所希望的函数值D)该函数返回一个不确定的值12.关于C语言规定,以下不正确的说法是:A)实参可以是常量、变量或表达式B)形参可以是常量、变量或表达式C)实参可以为任意类型D)形参应与其对应的实参类型一致13.以下正确的说法是:A)定义函数时,形参的类型说明可以放在函数体内B)return后边的值不能为表达式C)如果函数值的类型与返回值类型不一致,以函数值类型为准D)如果形参与实参的类型不一致,以实参类型为准14.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是:A)地址传递B)单向值传递C)由实参传给形参,再由形参传回给实参D)由用户指定传递方式15.以下程序有语法性错误,有关错误原因的正确说法是:main(){int G=5,k;void prt_char();……k=prt_char(G);……}A)语句void prt_char();有错,它是函数调用语句,不能用void 说明B)变量名不能使用大写字母C)函数说明和函数调用语句之间有矛盾D)函数名不能使用下划线16.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是:A)float型B)int型C)long型D)double型17.C语言规定,函数返回值的类型是由:A)return语句中的表达式类型所决定B)调用该函数时的主调函数类型所决定C)调用该函数时系统临时决定D)在定义该函数时所指定的函数类型所决定18.下面函数调用语句含有实参的个数为:func((exp1,exp2),(exp3,exp4,exp5));A)1 B)2 C)4 D)519.关于函数调用,以下错误的描述是:A)出现在执行语句中B)出现在一表达式中C)做为一个函数的实参D)做为一个函数的形参20.在C语言程序中以下正确的描述是:A)函数的定义可以嵌套,但函数的调用不可以嵌套B)函数的定义不可以嵌套,但函数的调用可以嵌套C)函数的定义和函数的调用均不可以嵌套D)函数的定义和函数的调用均可以嵌套21.以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,‘A’,‘B’,‘C’);则符合程序段运行结果的选项是:void move(char getone,char putone){printf(“%c-->%c\n”,getone,putone);}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);}}A)A-->C B)A-->C C)A-->CD)A-->CA-->B A-->B A-->BA-->BC-->B C-->A C-->BC-->BB-->A A-->B A-->CA-->CC-->B B-->C B-->AA-->BA-->C A-->C B-->CB-->CA-->B A-->B A-->CA-->C22.若用数组名作为函数调用的实参,传递给形参的是:A)数组的首地址B)数组第一个元素的值C)数组中全部元素的值D)数组元素的个数23.已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的错误定义方式为:int a[3][4]; f(a);A)f(int array[][6])B)f(int array[3][])第一维长度可以不给出C)f(int array[][4])D)f(int array[2][5])24.若使用一维数组名作函数实参,则以下正确的说法是:A)必须在主调函数中说明此数组的大小B)实参数组类型与形参数组类型可以不匹配C)在被调函数中,不需要考虑形参数组的大小D)实参数组名与形参数组名必须一致25.以下正确的说法是,如果在一个函数中的复合语句中定义了一个变量,则该变量:A)只在该复合语句中有效B)在该函数中有效C)在本程序范围内均有效D)为非法变量26.以下不正确的说法为:A)在不同函数中可以使用相同名字的变量B)形式参数是局部变量C)在函数内定义的变量只在本函数范围内有效D)在函数内的复合语句中定义的变量在本函数范围内有效27.以下程序的正确运行结果是:#define MAX 10int a[MAX],i;main(){ printf(“\n”); sub1(); sub3(a); sub2(); sub3(a); } sub2(){int a[MAX],i,max;max=5;for(i=0;i}sub1(){ for(i=0;i<="">sub3(int a[]){int i;for(i=0;i<="">printf(“\n”);}A)0 2 4 6 8 10 12 14 16 180 1 2 3 4B)0 1 2 3 40 2 4 6 8 10 12 14 16 18C)0 1 2 3 4 5 6 7 8 90 1 2 3 4D)0 2 4 6 8 10 12 14 16 180 2 4 6 8 10 12 14 16 1828.以下程序的正确运行结果是:#includevoid num()extern int x,y;int a=15,b=10;x=a-b;y=a+b;}int x,y;main(){int a=7,b=5;x=a+b;y=a-b;num();printf(“%d,%d\n”,x,y);}A)12,2 B)不确定C)5,25 D)1,1229.凡是函数中未指定存储类型的局部变量,其隐含的存储类别为:A)自动(auto)B)静态(static)C)外部(extern)D)寄存器(register)30.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是:A)extern B)register C)auto D)static31.以下程序的正确运行结果是:main(){int a=2,i;for(i=0;i<3;i++) printf(“%4d”,f(a));}f(int a)int b=0;static int c=3;b++; c++;return(a+b+c);}A)7 7 7 B)7 10 13 C)7 9 11 D)7 8 932.以下程序的正确运行结果是:#includemain(){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,16 C)8,20 D)8,8首先输出结果是8,17第二,你上面这个程序编译不了的,有2个问题1),函数的返回值类型没写;2),func()函数体放在了main()函数后面且没再main()函数中声明。
c语言函数部分习题校对版有答案版
练习64函数调用声明(20)若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是A.main() B.float fun(int a,int ){……}{……x=fun(2,10);……}main()float fun(int a,int b){……} {……x=fun(i,j);……}C.float fun(int,int);D.main()main() {float fun(int i,int j);{……x=fun(2,10);……}……x=fun(i,j);……}float fun(int a,int b){…… } float fun(int a,int b){……}数组名作实参(35)有以下程序fun(char p[][10]){int n=0,i;for(i=0;i<7;i++)if(p[i][0]==′T′)n++;return n;}main(){char str[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};printf("%d\n",fun(str));}程序执行后的输出结果是A.1B.2C.3D.0函数嵌套调用(33)有以下程序int fun1(double a){return a*=a;}int fun2(double x,double y){double a=0,b=0;a=fun1(x);b=fun1(y);return(int)(a+b);}main(){double w;w=fun2(1.1,2.0);……}程序执行后变量w中的值是A.5.21B.5C.5.0D.0.0函数递归调用(39)有以下程序int fun(int n){if(n==1) return 1;elsereturn(n+fun(n-1));}main(){int x;scanf("%d",&x); x=fun(x);printf("%d\n",x);}执行程序时,给变量X输入10,程序的输出结果是A.55B.54C.65D.45静态局部变量(40)有以下程序int fun(int x[],int n){static int sum=0,i;for(i=0;i<n;i++) sum+=x[i];return sum;}main(){int a[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序执行后的输出结果是A.45B.50C.60D.55函数(46)以下叙述中错误的是A.C程序必须由一个或一个以上的函数组成B.函数调用可以作为一个独立的语句存在C.若函数有返回值,必须通过return语句返回D.函数形参的值也可以传回给对应的实参预处理(49)以下叙述中正确的是A.预处理命令行必须位于C源程序的起始位置B.在C语言中,预处理命令行都以"#"开头C.每个C程序必须在开头包含预处理命令行:#include<stdio.h> D.C语言的预处理不能实现宏定义和条件编译的功能数组名作实参(9)当运行以下程序时,输入abcd,程序的输出结果是:【9】。
c语言第六章函数习题答案
c语言第六章函数习题答案
C语言第六章函数习题答案
在C语言学习的过程中,函数是一个非常重要的概念。
函数可以帮助我们将程序分解成模块化的部分,使得代码更加清晰和易于维护。
在第六章的函数习题中,我们将会通过一些练习来巩固对函数的理解和运用。
第一道习题是编写一个函数,计算两个整数的最大公约数。
这个习题考察了我们对函数的参数传递和返回值的运用。
我们可以使用欧几里德算法来实现这个函数,通过递归的方式不断求解两个数的余数,直到余数为0,此时较小的数就是最大公约数。
第二道习题是编写一个函数,判断一个数是否为素数。
这个习题需要我们对循环和条件判断的运用。
我们可以遍历2到该数的平方根之间的所有数,如果能被整除,则该数不是素数;否则就是素数。
第三道习题是编写一个函数,将一个字符串中的大写字母转换为小写字母。
这个习题考察了我们对字符数组和指针的操作。
我们可以使用循环遍历字符串中的每一个字符,然后通过条件判断来进行大小写转换。
通过这些习题的练习,我们可以更加熟练地运用函数来解决问题。
函数的灵活运用可以让我们的程序更加模块化和易于理解。
希望大家在学习C语言的过程中能够多加练习,不断提升自己的编程能力。
C语言程序设计-第八章函数练习题【附答案】
第八章 函数-习题第八章 函数8.1 选择题【题8.1】以下正确的说法是 。
建立函数的目的之一是A)提高程序的执行效率B)提高程序的可读性C)减少程序的篇幅D)减少程序文件所占内存【题8.2】以下正确的说法是 。
A)用户若需调用标准库函数,调用前必须重新定义B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义C)系统根本不允许用户重新定义标准库函数D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调【题8.3】以下正确的函数定义形式是 。
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.4】以下正确的函数形式是 。
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; }【题8.5】以下正确的说法是 。
在C语言中A)实参和与其对应的形参各占用独立的存储单元B)实参和与其对应的形参共占用一个存储单元C)只有当实参和与其对应的形参同名时才共占用存储单元D)形参是虚拟的,不占用存储单元【题8.6】若调用一个函数,且此函数中没有return语句,则正确的说法是 。
该函数A)没有返回值B)返回若干个系统默认值C)能返回一个用户所希望的函数值D)返回一个不确定的值【题8.7】以下不正确的说法是 。
C语言规定A)实参可以是常量、变量或表达式B)形参可以是常量、变量或表达式C)实参可以为任意类型D)形参应与其对应的实参类型一致【题8.8】以下正确的说法是 。
C语言函数习题及答案
函数习题之阳早格格创做一、采用题1. 一个完备的C源步调是【】.A)要由一个主函数或者一个以上的非主函数形成B)由一个且仅由一个主函数战整个以上的非主函数形成C)要由一个主函数战一个以上的非主函数形成D)由一个且惟有一个主函数或者多个非主函数形成2. 以下闭于函数的道述中精确的是【】.A)C谈话步调将从源步调中第一个函数启初真止B)不妨正在步调中由用户指定任性一个函数动做主函数,步调将今后启初真止C)C谈话确定必须用main动做主函数名,步调将今后启初真止,正在此中断D)main可动效率户标记符,用以定义任性一个函数3. 以下闭于函数的道述中不精确的是【】.A)C步调是函数的集中,包罗尺度库函数战用户自定义函数B)正在C谈话步调中,被调用的函数必须正在main函数中定义C)正在C谈话步调中,函数的定义不克不迭嵌套D)正在C谈话步调中,函数的调用不妨嵌套4. 正在一个C步调中,【】.A)main函数必须出当前所有函数之前B)main函数不妨正在所有场合出现C)main函数必须出当前所有函数之后D)main函数必须出当前牢固位子5. 若正在C谈话中已证明函数的典型,则系统默认该函数的数据典型是【】A)floatB)longC)intD)double6. 以下闭于函数道述中,过失的是【】.A)函数已被调用时,系统将不为形参调配内存单元B)真介进形参的个数应相等,且真介进形参的典型必须对于应普遍C)当形参是变量时,真参不妨是常量、变量或者表白式D)形参不妨是常量、变量或者表白式7. C步调中各函数之间不妨通过多种办法传播数据,下列不克不迭用于真止数据传播的办法是【】.A)参数的形真(哑真)分离B)函数返回值C)局部变量D)共名的局部变量8. 若函数调用时参数为基础数据典型的变量,以下道述精确的是【】. A)真介进其对于应的形参共占保存单元B)惟有当真介进其对于应的形参共名时才共占保存单元C)真介进对于应的形参分别占用分歧的保存单元D)真参将数据传播给形参后,坐时释搁本先占用的保存单元9. 函数调用时,当真参战形参皆是简朴变量时,他们之间数据传播的历程是【】.A)真参将其天面传播给形参,并释搁本先占用的保存单元B)真参将其天面传播给形参,调用中断时形参再将其天面回传给真参C)真参将其值传播给形参,调用中断时形参再将其值回传给真参D)真参将其值传播给形参,调用中断时形参本去不将其值回传给真参10. 若函数调用时的真参为变量时,以下闭于函数形参战真参的道述中精确的是【】.A)函数的真参战其对于应的形参共占共一保存单元B)形参不过形式上的存留,不占用简曲保存单元C)共名的真参战形参占共一保存单元D)函数的形参战真参分别占用分歧的保存单元11. 若用数组名动做函数调用的真参,则传播给形参的是【】.A) 数组的尾天面 B) 数组的第一个元素的值C) 数组中局部元素的值 D) 数组元素的个数12. 若函数调用时,用数组名动做函数的参数,以下道述中精确的是【】.A)真介进其对于应的形参共用共一段保存空间B)真介进其对于应的形参占用相共的保存空间C)真参将其天面传播给形参,共时形参也会将该天面传播给真参D)真参将其天面传播给形参,等共真止了参数之间的单背值的传播13. 如果一个函数位于C步调文献的上部,正在该函数体内证明语句后的复合语句中定义了一个变量,则该变量【】.A)为局部变量,正在本步调文献范畴内灵验B)为局部变量,只正在该函数内灵验C)为局部变量,只正在该复合语句中灵验D)定义无效,为非法变量14. C谈话中函数返回值的典型是由【】决断.A)return语句中的表白式典型B)调用函数的主调函数典型C)调用函数时临时D)定义函数时所指定的函数典型15. 若正在一个C源步调文献中定义了一个允许其余源文献引用的真型中部变量a,则正在另一文献中可使用的引用证明是【】.A)extern static float a; B)float a;C)extern auto float a;D)extern float a;16. 定义一个void型函数表示着调用该函数时,函数【】A)通过return返回一个用户所期视的函数值B)返回一个系统默认值C)不返回值D)返回一个不决定的值17. 若定义函数float *fun( ),则函数fun的返回值为【】.A)一个真数B)一个指背真型变量的指针C)一个指背真型函数的指针D)一个真型函数的出心天面18.C谈话确定,步调中各函数之间【】.A)既允许曲交递归调用也允许间交递归调用B)不允许曲交递归调用也不允许间交递归调用C)允许曲交递归调用不允许间交递归调用D)不允许曲交递归调用允许间交递归调用19. 若步调中定义函数float myadd(float a, float b){ return a+b;}并将其搁正在调用语句之后,则正在调用之前应付于该函数举止证明.以下证明中过失的是【】.A)float myadd( float a,b);B)float myadd(float b, float a);C)float myadd(float, float);D)float myadd(float a, float b);20. 闭于以下fun函数的功能道述中,精确的是【】.intfun(char*s){char*t=s;while(*t++) ;t--;return(t-s);}A) 供字符串s的少度B) 比较二个串的大小C) 将串s复造到串t D) 供字符串s所占字节数21. 底下步调段运止后的输出截止是【】(假设步调运止时输进5,3回车)int a, b;void swap( ){int t;t=a; a=b; b=t;}main(){scanf("%d,%d", &a, &b);swap( );printf ("a=%d,b=%d\n",a,b);}A) a=5,b=3B) a=3,b=5C)5,3D)3,522. 以下步调运止后的输出截止是【】.fun(int a, int b){if(a>b) return a;elsereturn b;}main(){int x=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf("%d\n",r);}A) 3B) 6C) 8D) 1223. 以下步调的运止截止是【】.void f(int a, int b){int t;t=a; a=b; b=t;}main(){int x=1, y=3, z=2;if(x>y) f(x,y);else if(y>z) f(x,z);else f(x,z);printf("%d,%d,%d\n",x,y,z);}A)1,2,3B) 3,1,2C) 1,3,2D) 2,3,124. 以下步调运止后的输出截止为【】.int *f(int *x, int *y){if(*x<*y)return x;else return y;}main(){int a=7,b=8,*p,*q,*r;p=&a, q=&b;r=f(p,q);printf("%d,%d,%d\n",*p,*q,*r);}A)7,8,8B) 7,8,7C) 8,7,7D) 8,7,825. 以下步调的精确运止截止是【】.#inclued<stdio.h>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,16 C)8,20 D)8,826. 以下步调的功能是估计函数F(x,y,z)=(x+z)/(y-z)+(y+2×z)/(x-2×z)的值,请将步调补充完备.#include<stdio.h>float f(float x,float y){float value;value= 【1】;return value;}main(){float x,y,z,sum;scanf("%f%f%f",&x,&y,&z);sum=f(x+z,y-z)+f(【2】);printf("sum=%f\n",sum);}【1】A) x/yB) x/zC) (x+z)/(y-z)D) x+z/y-z【2】A) y+2z,x-2zB) y+z,x-zC) x+z,y-zD) y+z*z,x-2*z27. 以下步调的功能是根据输进的字母,正在屏幕上隐现出字符数组中尾字符与其相共的字符串,若不存留,则隐现“No find,good bye!”,请将步调补充完备.#include<stdio.h>char PriStr(char ch1){int i=0,j=0;static char *ch2[]={"how are you", "glad to meet you","anything new","everything is fine","very well,thank you","see youtomorrow"};while(i++<6)if(ch1==【1】 ){puts(【2】);j=1;}return j;}main(){char ch;printf("\nPleae enter a char:");ch=getchar();ch=PriStr(ch);if(ch==【3】)puts("No find, good bye! ");}【1】A)ch2[i][0]B)ch2[i-1][0]C)*ch2[i]D) *ch2[i-1][0]【2】A)ch2[i]B)*ch2[i]C)*ch2[i-1]D) ch2[i-1]【3】A)’0’B)’48’C) 0D) 3028. 以下步调是将输进的一个整数反序挨印出去,比圆输进1234,则输出4321,输进-1234,则输出-4321.请将步调补充完备.void printopp(long int n){int i=0;if(n==0)return ;elsewhile(n){if(【1】)printf("%ld",n%10);elseprintf("%ld",-n%10);i++;【2】;}}main(){long int n;scanf("%ld",&n);printopp(n);printf("\n");}【1】A)n<0&&i==0B)n<0||i==0C)n>0&&i==0D)n>0||i==0【2】A)n%=10B)n%=(-10)C)n/=10D)n/=)-10)29. 底下的步调用递归定义的要领真止供菲波推契数列1、1、2、3、5、8、13、21……第7项的值fib(7),菲波推契数列第1项战第2项的值皆是1.请将步调补充完备.#include<stdio.h>long fib(【1】){switch(g){case 0: return 0;case 1:case 2: return 1;}return (【2】);}main(){long k;k=fib(7);printf("k=%d\n",k);}【1】A)gB)kC)long int gD)int k【2】A)fib(7)B)fib(g)C)fib(k)D)fib(g-1)+fib(g-2)int fun(int n){if(n==1) return 1;elsereturn(n+fun(n-1));}main(){int x;scanf("%d",&x);x=fun(x);printf("%d\n",x);}步调真止时,若输进10,步调的输出截止是【】.A)55B)54C)65D)4531. 底下是一个估计1至m的阶乘并依次输出的步调.步调中应挖进的精确选项是【】.#include<stdio.h>double result=1;factorial( int j){result=result*j;return;}main(){int m,i=0,x;printf("Please enter an integer:");scanf("%d",&m);for(;i++<m;){x=factorial(i);printf("%d!=%.0f\n", 【】 );}}A)i,factorial(i)B)i,xC)j,xD)i,result32. 以下步调的功能是供任性二个整数a战b的最大契约数,并给予隐现.请将步调补充完备.#include<stdio.h>#include<stdlib.h>long codivisor(long n1,long n2){long t;while( n2!=0 ){【1】; n1=n2; n2=t;}return (【2】);}main(){long a,b,x;printf("please input two numbers:");scanf("%ld%ld",&a,&b);x=codivisor(a,b);printf("maximum common divisor of %ld and %ld is : %ld\n", a,b,x);}【1】A)t=n1/n2B)t=n1%n2C)t=n2%n1D)t=n2/n1【2】A)labs(n1)B)labs(a)C)labs(b)D)labs(n2)33. 以下步调的功能是估计并隐现一个指定止数的杨辉三角形(形状如下),请将步调补充完备.11112113311464115101051步调:#include<stdio.h>#define N 15void yanghui(int b[][N], int n){int i,j;for(i=0; 【1】; i++){b[i][0]=1; b[i][i]=1;}for(【2】;++i<=n;)for(j=1;j<i;j++)b[i][j]= 【3】 ;for(i=0;i<n;i++){for(j=0;j<=i;j++)printf("%4d",b[i][j]);printf("\n");}}main(){int a[N][N]={0},n;printf("please input size of yanghui triangle(<=15)");scanf("%d",&n);printf("\n");yanghui(a,n);}【1】A)i<NB)i<=NC)i<nD)i<=n【2】A)i=0B)i=1C)i=2D)i=3【3】A)b[i-1][j-1]+b[i-1][j]B) b[i-2][j-1]+b[i-1][j]C)b[i-1][j-1]+b[i-1][j+1]D) b[i-2][j-2]+b[i-1][j]34. 底下的步调用去将一个十进造正整数转移成八进造数,比圆输进一个正整数25,则输出31,请将步调补充完备.#include<stdio.h>main(){int i=0,j=0,a,b[10]={0};printf("\nPlease input a integer: ");scanf("%d",&a);sub(a,b);for(;i<10;i++){if(【1】)j++;if(j!=0)printf("%d",b[i]);}}sub(int c, int d[]){int e, i=9;while(c!=0){e=c%8;d[i]=e;【2】;i--;}return;}【1】A)b[i]<0B)b[i-1]!=0C)b[i]<=0D)b[i]!=0【2】A)c=sub(c/8)B)c=c%8C)c=c/8D)c=e%835. 函数bisearch 的效率是应用合半查找法从存有N个整数的降序数组a中对于闭键字key举止查找.请将步调补充完备.#include<stdio.h>#define N 15bisearch(int a[N], int key){int low=0, high=N-1, mid;while(【1】){mid=(low+high)/2;if(key<a[mid])【2】;elseif(key>a[mid])low=mid+1;elsereturn mid;}return 【3】 ;}main(){int b[N],n,I,j;printf("Please input a %d element increasing sequence: ", N);for(i=0;i<N;i++){printf("b[%d]= ",i);scanf("%d",&b[i]);}printf("Please input a searching key: ");scanf("%d",&n);j=bisearch(b,n);if(j<-5)printf("Don’t find %d\n",n);elseprintf("b[%d]=%d\n",j,n);}【1】A)low<highB)low!=highC)low<=highD)low<=high-1【2】A)high=mid-1B)low=mid+1C)high=mid+1D)low=mid-1【3】A)0B)-10C)-1D)136. 如果步调及其运止截止隐现如下,请将步调补充完备.21046152324785132The value is 15.步调:#include<stdio.h>func(【1】){int 【2】,j;for(j=0;j<4;j++){b[3][j]=2*b[0][j];printf("%4d",b[3][j]);b[3][j]=0;}printf("\n");for(j=0;j<4;j++)if(b[i][j]<5&&b[i][2]>5)k+=b[i][j];return k;}main(){static int a[4][4]={ 【3】};int i,j,k;k=func(a,9);for(i=0;i<4;i++){for(j=0;j<4;j++)if(a[i][j]!=0)printf("%4d",a[i][j]);if(a[i][4]!=0)printf("\n");}printf("The value is %d\n",k);}【1】A)int b[4][],kB)int b[][4],kC)int b[4,4],int kD)int b[][4],int k 【2】A)i=0B)i=1C)i=2D)i=3【3】A){1,5,2,3},{2,4,7,8},{5,1,3,2}B){2,10,4,6},{1,5,2,3},{2,4,7,8},{5,1,3,2}C) {1,5,2,3},{2,4,7,8},{5,1,2,3}D){2,10,4,6},{1,5,2,3},{2,4,7,8},{5,1,2,3} 37.以下步调的功能是用二分法供圆程f(x)=x41+x3+1=0正在区间(-1.0,-0.5)中的一个真根,并央供千万于缺面不超出0.001.二分法的基础思维是:假设正在区间(a,b)中f(a)与f(b)同号,先与区间的中面m,如果f(m)与f(a)同号,则与新的解区间为(a,m),可则与新的解区间为(m,b).不竭对于解区间对于分,曲到解区间已经小于给定的缺面时,与该区间的中面动做解的近似值.请将步调补充完备.#include<stdio.h>#include<math.h>float f(float x){return (pow(x,41)+pow(x,3)+1);}float solv(float a,float b){float m;m=(a+b)/2;while(f(m)*f(b)!=0){if(【1】)a=m;elseb=m;if(【2】)break;m=(a+b)/2;}return m;}main(){float r;r=solv(-1.0,-0.5);printf("approximate solution of f(x)=0 is %f f(%f)=%.6f\n",r,r,【3】);}【1】A)f(m)*f(b)<0B)f(m)*f(b)>=0C)f(m)*f(b)<=0D)f(m)*f(b)>0【2】【3】A)f(r)B)f(m)C) rD)m38. 以下步调是选出能被3整除且起码有一位是5的所有三位正整数k(个位为a0,十位为a1,百位为a2),挨印出所有那样的数及其个数.请将步调补充完备.#include<stdio.h>sub(int m,int n){int a0,a1,a2;。
c语言函数设计题库及详解答案
c语言函数设计题库及详解答案1. 编写一个函数,实现两个整数的加法运算。
函数原型:`int add(int a, int b);`详解答案:```cint add(int a, int b) {return a + b;}```2. 设计一个函数,用于计算并返回一个字符串的长度。
函数原型:`int stringLength(const char *str);`详解答案:```cint stringLength(const char *str) {int length = 0;while (str[length] != '\0') {length++;}return length;}```3. 实现一个函数,用于交换两个整数的值。
函数原型:`void swap(int *x, int *y);`详解答案:```cvoid swap(int *x, int *y) {int temp = *x;*x = *y;*y = temp;}```4. 编写一个函数,用于计算一个整数的阶乘。
函数原型:`long factorial(int n);`详解答案:```clong factorial(int n) {if (n <= 1) {return 1;}return n * factorial(n - 1);}```5. 设计一个函数,用于判断一个整数是否为素数。
函数原型:`int isPrime(int num);`详解答案:```cint isPrime(int num) {if (num <= 1) {return 0;}for (int i = 2; i * i <= num; i++) { if (num % i == 0) {return 0;}}return 1;}```6. 实现一个函数,用于计算一个数的平方根。
函数原型:`double sqrt(double num);`详解答案:```cdouble sqrt(double num) {double guess = num / 2.0;while (guess * guess < num) {guess = (guess + num / guess) / 2.0;}return guess;}```7. 编写一个函数,用于将一个整数转换为字符串。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数组名作实参
(35)有以下程序
fun(char p[][10])
{int n=0,i;
for(i=0;i<7;i++)
if(p[i][0]==′T′)n++;
return n;
}
main()
{char str[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
fun(int a[],int n,int m)
{ int i,j;
for(i=m;i>=n;i--)a[i+1]=a[i];
}
main()
{
int i,a[N]={1,2,3,4,5,6,7,8,9,10};
fun(a,2,9);
for(i=0;i<5;i++)printf("%d",a[i]);
A)192 B)29 C)25 D)编译出错
(37)以下叙述中正确的是______。
A)预处理命令行必须位于源文件的开头
B)在源文件的一行上可以有多条预处理命令
C)宏名必须用大写字母表示
D)宏替换不占用程序的运行时间
宏定义
(7)以下程序运行后的输出结果是 【7】 。81
#define S(x) 4*x*x+1
函数递归调用
(10)下面程序的运行结果是:【10】。
fun(int t[],int n)
{int i,m;
if(n==1)return t[0];
else
if(n>=2){m=fun(t,n-1); return m;} //n=10 m=fun(a,9) n=9 m=fun(a,8)
}
n=8 m=fun(a,7)n=7 n=6 n=5 n=4 n=3 n=2
}
main()
{ int a=3,b=4;
swap(a,b); printf("%d %d",a,b);
}
练习 64
函数调用声明
(20)若各选项中所用变量已正确定义,函数 fun 中通过 return 语句返回一个函数
值,以下选项中错误的程序是
A.main()
B.float fun(int a,int ){……}
{……x=fun(2,10);……}
main()
float fun(int a,int b){……}
{ 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);
}
练习 54 数组名作实参
(31)有以下程序
#define N 20
if(a%i==0)【15】;return 0
【16】;
else return 1
}
练习 59
函数
(14)以下关于函数的叙述中正确的是
A.每个函数都可以被其它函数调用(包括 main 函数)
B.每个函数都可以被单独编译
C.每个函数都可以单独运行
D.在一个函数内部可以定义另一个函数
(30)设函数 fun 的定义形式为 void fun(char ch, float x ) { … }
}
当编译连接通过后,运行程序 T18 时,输入 Thank!则输出结果是:【11】。!knahT
函数返回值语句
(14)以下 isprime 函数的功能是判断形参 a 是否为素数,是素数,函数返回 1,
否则返回 0。请填空
int isprime(int a)
{int i;
for(i=2;i<=a/2;i++)
{……x=fun(i,j);……}
C.float fun(int,int);
D.main()
main()
{float fun(int i,int j);
{……x=fun(2,10);……}
……x=fun(i,j); ……}
float fun(int a,int b){…… }
float fun(int a,int b){……}
printf("%d\n", s);
}
程序运行后的输出结果是
A.26
B.28
C.29
D.24
递归调用
(12)有以下程序
int sub(int n) { return (n/10+n%10); }
main()
{ int x,y;
scanf("%d",&x);
y=sub(sub(sub(x))); 第三层 sub(1234) return 123+4=127
(40)有以下程序 int fun(int x[],int n) {static int sum=0,i; for(i=0;i<n;i++) sum+=x[i]; return sum; } main() {int a[]={1,2,3,4,5},b[]={6,7,8,9},s=0; s=fun(a,5)+fun(b,4);printf("%d\n",s); } 程序执行后的输出结果是
str[2]=str[1];str[1]=’*’ i=0
{char str[40];
str[0]=’a’str[1]=’*’str[2]=’b’
scanf("%s",str);insert(str);
str[3]=’*’str[4]=’c’str[5]=’*’
}
str[6]=’d'str[7]=’*’str[8]=/0
#include "myfun.c"
main()
{fun();printf("\n");}
myfun.c 文件如下:
void fun()
{char s[80],c; int n=0;
while((c=getchar())!=′\n′) s[n++]=c;
n--;
while(n>=0) printf("%c",s[n--]);
则以下对函数 fun 的调用语句中,正确的是 A.fun("abc",3.0); B.t=fun('D',16.5); C.fun('65',2.8); D.fun(32,32); 宏定义
(33)有以下程序 # define f(x) (x*x) main() { int i1, i2; i1=f(8)/f(4) ; i2=f(4+4)/f(2+2) ; printf("%d, %d\n",i1,i2); }
main()
n=1 m=11
{int a[]={11,4,6,3,8,2,3,5,9,2};
printf("%d\n",fun(a,10));
}
文件包含
(11)现有两个 C 程序文件 T18.c 和 myfun.c 同在 TC 系统目录(文件夹)下,其中
T18.c 文件如下:
#include <stdio.h>
printf("%d\n",fun(str));
}
程序执行后的输出结果是
A.1
B.2
C.3
D.0
函数嵌套调用
(33)有以下程序
int fun1(double a){return a*=a;}
int fun2(double x,double y)
{double a=0,b=0;
a=fun1(x);b=fun1(y);return(int)(a+b);
A.45 B.50 C.60 D.55 函数
(46)以下叙述中错误的是 A.C 程序必须由一个或一个以上的函数组成 B.函数调用可以作为一个独立的语句存在 C.若函数有返回值,必须通过 return 语句返回 D.函数形参的值也可以传回给对应的实参 预处理
(49)以下叙述中正确的是 A.预处理命令行必须位于 C 源程序的起始位置 B.在 C 语言中,预处理命令行都以"#"开头 C.每个 C 程序必须在开头包含预处理命令行:#include<stdio.h> D.C 语言的预处理不能实现宏定义和条件编译的功能 数组名作实参
程序运行后的输出结果是
A.64, 28 B.4, 4 C.4, 3 D.64, 64 数组值作实参
39)有以下程序 void sum(int a[]) { a[0] = a[-1]+a[1]; } main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; sum(&a[2]); printf("%d\n", a[2]); }
else { static int a=5; t += a++; } a=5 a=6 a=6
return t+a++;
t=0+5 t=0+4 t=0+6
}
main()
{ int s=a, i;
for( i=0; i<3; i++) s+=f(i); i=0 s=2+5+3 i=1 s=10+4+4 i=2 s=18+6+5=29