c语言函数测试(答案+分析)
C语言程序设计 第六章 函数 试题及答案

B)形参可以是常量、变量或表达式
C)实参可以是任意类型
D)实参应与其对应的形参类型一致
参考答案:B
6.8以下正确的说法是。
A)定义函数时,形参的类型说明可以放在函数体内
B)return后面的值不能为表达式
C)如果函数的类型与返回值类型不一致,以函数类型为准
D)如果形参与实参的类型不一致,以实参类型为准
A)float型B)int型C)long型D)double型
参考答案:B
6.12 C语言规定,函数返回值的类型是由所决定。
A)return语句中的表达式类型
B)调用该函数时的主调函数类型
C)调用该函数是系统临时指定
D)在定义该函数时所指定的函数类型
参考答案:D
*6.13下面函数调用语句含有实参的个数为。
if(m!=-1) n=m;
}
printf("\nn=%d",n);
}
【1】A)k*10 B)k%10 C)k/10 D)k*10%10
【2】A)a2*10 B)a2 C)a2/10 D)a2%10
参考答案:【1】C【2】A
6.18以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,'A','B','C');则符合程序段运行结果的选项是。
A-->C A-->C B-->C B-->C
A-->B A-->B A-->C A-->C
参考答案:C
6.19若用数组名作为函数调用的实参,传递给形参的是。
A)数组的首地址B)数组第一个元素的值
C)数组中全部元素的值D)数组元素的个数
c语言测试题目及答案

c语言测试题目及答案一、选择题1. C语言中用于表示逻辑“与”操作的关键字是()。
A. &&B. ||C. &D. &&=答案:A2. 下列哪个选项是C语言中的合法整型常量?A. 0x10FB. 0xA1BC. 8191D. -0X1答案:A3. 在C语言中,若定义了int a[5],则对数组元素的正确访问方式是()。
A. a[-1]B. a[5]C. a(2)D. a(-3)答案:B4. 下列哪个函数不能正确计算字符串长度?A. strlen()B. strlength()C. strlenf()D. strsize()答案:B5. 在C语言中,若要交换两个变量的值,以下哪种方法是正确的?A. 使用第三个临时变量进行交换B. 直接利用加减法进行交换C. 利用位运算进行交换D. 以上都是答案:D二、填空题1. 在C语言中,使用关键字________声明一个全局变量,其作用域是整个程序。
答案:extern2. C语言中的switch语句中,case标签后面必须跟________类型的表达式。
答案:整型3. 使用C语言的printf函数输出字符串时,需要使用格式说明符________。
答案:%s4. 在C语言中,定义一个指向函数的指针,需要使用关键字________。
答案:指针5. 若要在C语言中定义一个无限循环,可以使用while循环配合________关键字实现。
答案:break三、简答题1. 请简述C语言中的指针和引用的主要区别。
答:指针是一个变量,其存储的是另一个变量的地址;而引用是指针的别名,它必须在定义时初始化,且不能重新指向另一个变量。
指针可以直接被修改以指向不同的地址,而引用则总是指向初次被初始化的那个变量。
2. 解释C语言中的动态内存分配及其优点。
答:动态内存分配是指在程序运行时,根据需要通过malloc、calloc、realloc等函数动态地分配和释放内存。
C语言试题及答案解析

C语言试题及答案解析C语言一、选择题(第题2分,共20分)1.一个C程序的执行是从A。
A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序文件的第一个函数开始,到本程序main 函数结束D)本程序的main函数开始,到本程序文件的最后一个函数结束2.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为C。
x=(i=4,j=16,k=32)A) 4 B) 16 C) 32 D) 523.设C语言中,一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为C。
A) 0~255 B) 0~C) 0~ D) 0~.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为D。
A) float B) char C) int D) double 5.putchar函数可以向终端输出一个D。
A)整型变量表达式B)实型变量值C)字符串D)字符或字符型变量值6.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。
如果字符串长度大于5,则输出按方式B;如果字符串长度小于5,则输出按方式C。
A)从左起输出该字符串,右补空格B)按原字符长从左向右全部输出C)右对齐输出该字符串,左补空格D)输出错误信息7.判断char型变量ch是否为大写字母的正确表达式是C。
A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’)C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch)8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是B。
if(x>y) z=x; x=y; y=z;A) x=10, y=20, z=30 B) x=20, y=30, z=30C) x=20, y=30, z=10 D) x=20, y=30, z=209.以下步伐段______C__.x=-1;do{x=x*x;}while(!x);A)是死轮回B)轮回履行二次C)循环执行一次D)有语法错误10.以下正确的描绘是___B____.A)continue语句的感化是竣事全部轮回的履行B)只能在循环体内和switch语句体内使用break语句C)在循环体内使用break语句或continue语句的作用相同D)从多层循环嵌套中退出时,只能使用goto语句二、填空题(每空2分,共20分)3.复合语句是将多个语句用花括号括起来构成一个语句。
c语言编写函数笔试题及答案

c语言编写函数笔试题及答案C语言编写函数笔试题及答案1. 题目一:计算阶乘编写一个函数,计算并返回一个整数的阶乘。
阶乘定义为:n! = n * (n-1) * (n-2) * ... * 1,其中n! = 1,当n=0。
函数原型:```clong long factorial(int n);```答案:```c#include <stdio.h>long long factorial(int n) {if (n == 0) return 1;long long result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;}int main() {int num;printf("Enter a number: ");scanf("%d", &num);printf("Factorial of %d is %lld\n", num, factorial(num)); return 0;}```2. 题目二:字符串反转编写一个函数,接受一个字符串作为参数,将其反转并返回。
函数原型:```cchar* reverseString(char* str);```答案:```c#include <stdio.h>#include <string.h>char* reverseString(char* str) {int length = strlen(str);char temp;for (int i = 0; i < length / 2; i++) {temp = str[i];str[i] = str[length - i - 1];str[length - i - 1] = temp;}return str;}int main() {char str[] = "Hello, World!";printf("Reversed string: %s\n", reverseString(str));return 0;}```3. 题目三:寻找数组中的最大值编写一个函数,接受一个整数数组和数组的长度作为参数,返回数组中的最大值。
C语言在线实验第5次(第七章函数)-题目与答案

第五次实验题目-第七章函数教学目标31.一元二次方程的系数:a、b、c由主函数输入,编写函数求方程的根。
#include <stdio.h>#include <math.h>void root(double a, double b, double c){ double delta,x1,x2,m,n;if (fabs(a) <= 1e-6){if (fabs(b) <= 1e-6)puts("Not an equation");elseprintf("x=%.2lf",-c/b);return;}else{delta=b*b - 4*a*c;m = -b / (2*a);n = sqrt(fabs(delta)) / (2*a);x1 = m + n;x2 = m - n;if (fabs(delta) <= 1e-6)printf("x1=%.2lf, x2=%.2lf", x1, x1);else if (delta < 0)printf("x1=%.2lf+%.2lfi, x2=%.2lf-%.2lfi",m,n,m,n);elseprintf("x1=%.2lf, x2=%.2lf", x1, x2);}}int main( ){ double a,b,c;scanf("%lf%lf%lf",&a,&b,&c);root(a,b,c);return 0;}教学目标32.输入一串字符,统计其中英文字母的个数,编写统计英文字母个数的函数。
#include<stdio.h>int numberOfLetter(char str[]) {int i=0;int num = 0;//统计字母个数while (str[i]!=’\0’) {if ((str[i]>='A'&& str[i]<='Z')||( str[i]>='a'&& str[i]<='z')) num++;i++;}return num;}int main( ) {char str[100];int letterNum;printf("Enter a string: ");gets(str);letterNum = numberOfLetter(str);printf("Number of letters is %d.\n", letterNum);return 0;}教学目标33. 求100以内所有素数的和。
C语言函数题库及答案

第六部分函数一、单项选择题1.C语言中的函数返回值的类型是由(D)决定A.return语句中的表达式B.调用函数的主调函数C.调用函数时临时D.定义函数时所指定的函数类型2.下面不正确的描述是(B)。
A.调用函数时,实参可以是表达式B.调用函数时,实参和形参可以共用内存单元C.调用函数时,将形参分配内存单元D.调用函数时,实参与形参的类型必须一致3.在C语言中,调用一个函数时,实参变量和形参变量之间的数据传递是(D)A.地址传递B.值传递C.由实参传递给形参,并由形参传回给实参D.由用户指定传递方式4.下面的函数调用语句中含有(A)个实参inta,b,c;intsum(intx1,intx2);……total=sum((a,b),c);A.2B.3C.4 D.55.在C语言中(C)A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义和调用均不可以嵌套C.函数的定义不可以嵌套,但是函数的调用可以嵌套D.函数的定义和调用均可以嵌套6.关于C语言中的return语句正确的是(C)A.只能在主函数中出现B.在每个函数中都必须出现C.可以在一个函数中出现多次D.只能在除主函数之外的函数中出现7.两个形参中,第一个形参为指针类型、第二个形参为整型,则对函数形参的说明有错误的是(D)A.inta(floatx[],intn)B.inta(float*x,intn)C.inta(floatx[10],intn)D.inta(floatx,intn)8.在C语言中,函数的数据类型是指(A)A.函数返回值的数据类型B.函数形参的数据类型C.调用该函数时的实参的数据类型D.任意指定的数据类型9.已知如下定义的函数:fun1(a){printf("\n%d",a);}则该函数的数据类型是(C)A.与参数a的类型相同B.void型C.整型D.无法确定10.定义一个函数实现交换x和y的值,并将结果正确返回。
C语言程序设计:函数的定义及调用单元测试与答案

一、单选题1、下面对函数的叙述,正确的是( )。
A.函数的返回值是通过return语句获得的B.函数中没有return语句,说明不带回值C.函数不能嵌套定义D.函数中无论是否有return语句,都能返回正确值正确答案:C2、下面叙述中错误的是( )。
A.一般来说,函数的形参和实参的类型要一致B.若函数的定义出现在主调函数之前,则可以不必再加说明C.函数的形参和实参必须要使用相同名字的变量D.函数的形式参数,在函数未被调用时不被分配存储空间正确答案:C3、若函数的调用形式如下:f((x1,x2,x3),(y1,y2))则函数形参个数是()。
A.4B.2C.5D.3正确答案:B4、下列程序段中,有错误的是()。
A. int f(){int x;scanf("%d", &x);return x++, x+5;}B. int f2(int x){return (x>1?printf("Y"): putchar('N'));}C. void change(int x, int y){int t;t=x; x=y; y=t;}D.int main(){float a=2.6 , b;b=max(2.1, 3.6)=a++;printf("%f", a+b);}正确答案:D5、关于函数正确的说法是()。
A.主函数可以写在其他函数之后,函数内不可以嵌套定义函数B.主函数必须写在其他函数之前,函数内可以嵌套定义函数C.主函数必须在写其他函数之后,函数内可以嵌套定义函数D.主函数必须写在其他函数之前,函数内不可以嵌套定义函数正确答案:A6、关于函数原型,叙述错误的是()。
A.函数可以不必进行声明,可以放在程序的任意位置B.当自定义函数被放在了主调函数的后面,就需要在函数调用之前,加上函数的原型声明C.被调用函数在主调函数之前定义,可以省略函数原型声明D.所有函数定义放在main函数之前,可以省略原型声明正确答案:A二、判断题1、函数可以根据需要通过参数与调用函数之间进行数据传递。
C语言试卷(含答案)

一、单项选择题(每小题2分,共40分)1、sizeof(float)是()A. 一个双精度型表达式B. 一个整型表达式C. 一种函数调用D. 一个不合法的表达式2、设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值: scanf("i=%d,f=%f",&i,&f);为了把100和分别赋给i和f,则正确的输入为()。
A. 100B. i=100,f=765.12C. 100<回车>D. x=100y=3、#include<>voidmain(){inta=3,b=2,c=1;intx=10,y=20;if(a<b)if(b!=0)if(!x)y=1;elseif(x)y=0;y=-1;printf("%d",y);}上面的C程序的输出结果是()。
A. 20B. 1C. 0D. -14、C语言中,while和do…while循环的主要区别是()。
A. do…while的循环体至少无条件执行一次B. while的循环控制条件比do…while的循环控制条件严格C. do…while允许从外部转到循环体内D. do…while的循环体不能是复合语句5、执行下面的C程序段后,输出结果是()。
inta=5;while(a--);printf("%d",a);A. 54321B. 4321C. 0D. -16、在C语言中,()是在所有函数外部声明的。
A. 全局变量B. 局部变量C. 形参D.实参7、分析下面的C程序:#include<>voidmain(){intnum=0;while(num<=2){num++;printf("%d",num);}}输出结果是()。
A. 123B. 012C. 23D. 128、下面的C语言代码段的输出结果是()。
C语言程序设计实验六函数答案《西北民大电气学院》

实验六函数一,实验目的:1,掌握定义函数的方法.2,掌握函数实参与形参的对应关系,以及"值传递"的方式.3,掌握函数的嵌套调用和递归调用的方法.4,掌握全局变量和局部变量动态变量,静态变量的概念和使用方法.二,实验准备:1,复习函数调用的基本理论知识.2,复习函数的嵌套调用和递归调用的方法.3,复习全局变量,局部变量;静态变量,动态变量;外部变量等概念和具体使用. 4,源程序.三,实验步骤及内容:1,运行程序并回答问题(1)程序main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n")}void print_message(){ printf("Good Friend! \n");}void play(n)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}}问题:运行后出现什么错误为什么应如何修改请上机调试.修改:main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n");(缺少分号)}void print_message(){ printf("Good Friend! \n");}play(n)(原先void的与声明类型不同)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}getch();}运行结果(2)以下程序用于计算1+2+3+4+5.main(){ int i,sum;for(i=1;i<=5;++i)sum=add(i);printf("sum=%d\n",sum);getch();}add (a)int a;{static int s=0;s=s+a;return(s);}运行结果:问题:此程序能否得到正确结果为什么请在不增加语句的条件下,修改程序并上机调试.(3)程序int x=567,y=890;main(){ printf("x=%d,y=%d\n",x,y);}运行结果:问题:运行程序后出现什么错误为什么如何修改答:定义位置出错,y的定义在主函数之后了,将y的定义改在和x一样的位置处。
C语言scanf函数题(含答案)

实验三: 编程题:
1、编一程序:从键盘输入两个数,输出此两数之和。 #include <stdio.h> main() { Float a,b,c; scanf("%d,%d",&a,&b); printf("a=%d,b=%d\n",a,b); c=a+b; printf("c=%d",c); getch(); } 2、编一程序,输入三角形边长,求面积。三角形的面积公 式为:
程序四:
#include <stdio.h> main() {
int a; char b; float x; scanf("%d,%c,%f",&a,&b,&x); printf("a=%d b=%c x=%f",a,b,x); getch(); } 1、程序运行时,输入 25,a,6.789,然后回车。则运行结果为: A=25 b=a x=6.789000 2、程序运行时,输入 25a6.789,然后回车。则运行结果为: A=25 b=_ x=0.000000
#include <math.h> main () {
float a,b,c,area; double s=0,t=0; printf("enter a,b,c:"); scanf("%f,%f,%f",&a,&b,&c); s=1.0/2.0*(a+b+c); t=s*(s-a)*(s-b)*(s-c); area=sqrt(t); printf("area=%f",area); }
#include <stdio.h> main() {
C语言练习题(带详解答案)

一、编程题1.输入2个整数,求两数的平方和并输出。
#include <stdio。
h〉int main(void){ intt a ,b,s;printf("please input a,b:\n”);scanf("%d%d”,&a,&b);s=a*a+b*b;printf("the result is %d\n",s);return 0;}2。
输入一个圆半径r,当r〉=0时,计算并输出圆的面积和周长,否则,输出提示信息。
#include <stdio.h>#define PI 3。
14int main(void){double r ,area ,girth;printf(”please input r:\n");scanf(”%lf”,&r);if (r>=0){ area =PI*r*r;girth =2*PI*r ;printf("the area is %.2f\n”, area);printf("the girth is %。
2f\n”, girth);}elseprintf(”Input error!\n”);return 0;}3、已知函数y=f(x),编程实现输入一个x值,输出y值。
2x+1 (x〈0)y= 0 (x=0)2x-1 (x〉0)#include 〈stdio.h〉void main(){int x,y;scanf(“%d",&x);if(x〈0)y=2*x+1;else if(x>0) y=2*x-1;else y=0;printf(“%d”,y);}4。
从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,等级为A;80≤score〈90,等级为B;70≤score<80,等级为C;60≤score〈70,等级为D;score〈60,等级为E。
C语言试卷(含答案)

C语言试卷(含答案)一、单项选择题(每小题2分,共40分)1、sizeof(float)是()A. 一个双精度型表达式B. 一个整型表达式C. 一种函数调用D. 一个不合法的表达式2、设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值: scanf("i=%d,f=%f",&i,&f);为了把100和分别赋给i和f,则正确的输入为()。
A. 100B. i=100,f=765.12C. 100<回车>D. x=100y=3、#include<>voidmain(){inta=3,b=2,c=1;intx=10,y=20;if(a<b)< p="">if(b!=0)if(!x)y=1;elseif(x)y=0;y=-1;printf("%d",y);}上面的C程序的输出结果是()。
A. 20B. 1C. 0D. -14、C语言中,while和do…while循环的主要区别是()。
A. do…while的循环体至少无条件执行一次B. while的循环控制条件比do…while的循环控制条件严格C. do…while允许从外部转到循环体内D. do…while的循环体不能是复合语句5、执行下面的C程序段后,输出结果是()。
inta=5; while(a--);printf("%d",a);A. 54321B. 4321C. 0D. -16、在C语言中,()是在所有函数外部声明的。
A. 全局变量B. 局部变量C. 形参D.实参7、分析下面的C程序:#include<>voidmain(){intnum=0;while(num<=2){num++;printf("%d",num);}}输出结果是()。
A. 123B. 012C. 23D. 128、下面的C语言代码段的输出结果是()。
C语言函数习题及答案

}
void main( )
{ int array[10],i;
for (i=0;i<10;i++)
{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=பைடு நூலகம்trlen(s);
fun(s,l);
2021/3/26
printf("The new string is :");puts(s);
2
}
3.编写一个函数fun实现字符串连接功能(不允许使用strcat函数)。
#include "stdio.h"
#include "string.h"
void fun(char s[],char t[])
{int i,j;
j=strlen(s);
for(i=0;t[i]!='\0';i++)
s[j++]=t[i];
s[j]='\0';
}
main()
{char s[100],t[100];
gets(s);gets(t);
fun(s,t);
printf("\nThe result is :%s\n",s);
for(j=i+n;str[j]!='\0';j++)
c语言函数的试题及答案

c语言函数的试题及答案1. 以下关于C语言函数定义的描述,正确的是:A) 函数必须在程序的开始部分定义B) 函数可以嵌套定义C) 函数的定义必须在调用之前D) 函数可以没有返回值答案:C2. 以下哪个关键字用于定义C语言函数?A) structB) classC) functionD) void答案:D3. 函数的返回类型void表示:A) 函数返回一个整数B) 函数返回一个浮点数C) 函数不返回任何值D) 函数返回一个字符答案:C4. 以下哪个选项是C语言中函数参数的正确传递方式?A) 值传递B) 引用传递C) 指针传递D) 所有选项答案:D5. 以下哪个函数原型是正确的?A) int add(int x, int y);B) int add(int, int);C) int add(int x, y);D) int add(int x, int y) int z;答案:A6. 以下哪个函数调用是正确的?A) int result = add(5, 3);B) int result = add(5);C) int result = add(5, 3, 2);D) int result = add(x, y);答案:A7. 如果一个函数需要返回一个数组,它应该返回什么类型?A) intB) int[]C) int*D) void*答案:C8. 以下哪个函数声明是正确的?A) int func(int a, int b);B) int func(int, int);C) int func(a, b);D) int func(int a, int);答案:A9. 在C语言中,函数的默认存储类别是什么?A) autoB) staticC) externD) register答案:B10. 以下哪个函数声明允许在函数内部定义变量?A) static int func();B) int func();C) void func();D) extern int func();答案:B。
函数练习题c语言)带答案

函数练习题(C语言)带答案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)long C)int D)double6. 以下关于函数叙述中,错误的是【】。
A)函数未被调用时,系统将不为形参分配内存单元B)实参与形参的个数应相等,且实参与形参的类型必须对应一致 C)当形参是变量时,实参可以是常量、变量或表达式 D)形参可以是常量、变量或表达式7. C程序中各函数之间可以通过多种方式传递数据,下列不能用于实现数据传递的方式是【】。
A)参数的形实结合 B)函数返回值 C)全局变量 D)同名的局部变量8. 若函数调用时参数为基本数据类型的变量,以下叙述正确的是【】。
A)实参与其对应的形参共占存储单元 B)只有当实参与其对应的形参同名时才共占存储单元C)实参与对应的形参分别占用不同的存储单元D)实参将数据传递给形参后,立即释放原先占用的存储单元9. 函数调用时,当实参和形参都是简单变量时,他们之间数据传递的过程是【】。
C语言各章节单元测试题及答案——函数

第5章函数5.1典型考试题剖析5.1.1选择题【例1】下列程序执行后的结果是_______。
#include <stdio.h>f(int a){int b=0;static c=3;a=c++,b++;return(a);}main(){int a=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}A) 3 B) 0 C) 5 D) 4✧考点:变量的作用域。
✧分析:此题函数f中的变量c是一个静态变量。
第一次调用函数时,使用的参数是a,值为2,进入子函数f内,变量b=0,c=3,然后语句“a=c++,b++;”是一个逗号表达式,不是赋值表达式,a被赋的值是c的值,不同逗号表达式的值,所以a=3,此时c的值同时变为4;第二次调用函数,使用的参数是a,值为3,进入子函数内,变量b=0,c=4(这是静态变量的特性)。
✧答案:D【例2】下面程序的输出是_______。
int w=3;fun(int k);main(){int w=10;printf("%d\n",fun(5)*w);}fun(int k){ if (k==0)return(w);return(fun(k-1)*k);}A) 360 B) 3600 C) 1080 D) 1200✧考点:函数的递归调用和全局变量。
✧分析:此题涉及到了函数的递归调用和全局变量的用法,最容易出错的地方是变量w,程序首先定义了全局变量w,并赋了初值为3,然后在主函数中又定义了一个局部变量w,并赋初值为10,在子函数中引用了变量w,一定要认清这个变量是全局变量w的值而不是主函数中局部变量w 的值。
✧答案:B【例3】有以下程序#include <stdio.h>int abc(int u,int v);main(){int a=24,b=16,c;c=abc(a,b);printf("%d\n",c);}int abc(int u,int v){int w;while(v){ w=u%v;u=v;v=w;}return(u);}输出结果为。
c语言函数试题及答案

c语言函数试题及答案C语言函数试题及答案一、选择题1. 在C语言中,以下哪个关键字用于声明函数?A. intB. voidC. returnD. function2. 以下哪个函数原型声明是正确的?A. void myFunction();B. int myFunction() {}C. int myFunction();D. myFunction(int, int);3. 在C语言中,函数的返回值通过哪个关键字返回?A. returnB. outputC. resultD. yield二、填空题4. 在C语言中,如果一个函数没有返回值,其返回类型应该是________。
5. 函数的参数可以是常量、变量或________。
三、简答题6. 简述C语言中函数的作用。
四、编程题7. 编写一个C语言函数,该函数接受两个整数作为参数,并返回它们的和。
五、分析题8. 阅读以下C语言函数代码,并指出其功能及可能存在的问题。
```cvoid swap(int *x, int *y) {int temp;temp = *x;*x = *y;*y = temp;}```答案:一、选择题1. C2. C3. A二、填空题4. void5. 表达式三、简答题6. 函数在C语言中用于封装一段代码,使其可以重复使用。
函数可以接收参数,执行特定的任务,并可选择性地返回一个值。
四、编程题7.```cint add(int a, int b) {return a + b;}```五、分析题8. 该函数的功能是交换两个整数的值。
它通过指针参数接收两个整数的地址,并在函数内部交换这两个整数的值。
可能存在的问题是,如果传入的参数不是有效的整数地址,或者指针所指向的内存区域不可写,那么将会导致程序错误或崩溃。
c语言历考题真题解析

c语⾔历考题真题解析1.C语⾔规定,在⼀个源程序中main函数的位置 ______ 。
(2010年春选择题第21题)A.必须在最开始B.必须在最后C.必须在预处理命令的后⾯D.可以在其他函数之前或之后【解析】main函数也叫主函数,是C语⾔编译系统提供的特殊函数,可以放在程序中的任何位置,但不能定义在其他函数体内。
C程序总是从main函数的第⼀条语句开始执⾏。
【答案】D2.以下叙述中正确的是________ 。
(2009年秋选择题第21题)A.C语⾔系统以函数为单位编译源程序B.main函数必须放在程序开始C.⽤户定义的函数可以被⼀个或多个函数调⽤任意多次D.在⼀个函数体内可以定义另外⼀个函数【解析】C语⾔系统以程序为单位编译源程序,程序由函数组成。
main函数可以放在其他函数之前或之后。
除了main函数外,函数可以被其他函数多次调⽤。
函数不能定义在其他函数体内,即不能嵌套定义。
【答案】C3.以下叙述中正确的是_________ 。
(2008年秋选择题第21题)A.在编译时可以发现注释中的拼写错误B.C语⾔程序的每⼀⾏只能写⼀条语句C.main(){}必须位于程序的开始D.C语⾔程序可以由⼀个或多个函数组成【解析】C程序的注释不产⽣编译代码,编译时跳过去,发现不了其中错误。
C程序书写格式⾃由,⼀⾏内可以写⼏个语句,⼀个语句可以分写在多⾏上。
main 函数可以放在程序中的任何位置。
C程序可以由⼀个或多个函数组成,函数可以为空函数,包括main函数。
【答案】D4.以下关于C语⾔源程序的叙述中错误的是________。
(2007年春选择题第21题)A.⼀个C源程序由若⼲个函数定义组成,其中必须有且仅有⼀个名为main 的函数定义B.函数定义由函数头部和函数体两部分组成C.在⼀个函数定义的函数体中允许定义另⼀个函数D.在⼀个函数定义的函数体中允许调⽤另⼀个函数或调⽤函数⾃⾝【解析】⼀个C语⾔源程序由若⼲个函数定义组成,其中必须有且仅有⼀个名为main的函数定义,函数定义由函数头部和函数体两部分组成。
高中c语言测试题及答案

高中c语言测试题及答案高中C语言测试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义函数?A. structB. intC. returnD. void答案:D2. 在C语言中,以下哪个选项不是合法的变量名?A. _123B. $nameC. name123D. name答案:B3. 下列哪个选项是C语言中正确的注释?A. // 这是一个注释B. /* 这是一个注释 */C. /* 这是一个注释D. // 这是一个注释答案:A4. C语言中,以下哪个选项表示逻辑与运算?A. &&B. ||C. !D. ==答案:A5. 以下哪个选项是C语言中正确的字符串定义?A. char str[] = "Hello";B. char str[] = 'Hello';C. char str[] = {"Hello"};D. char str[] = "Hello", "World";答案:A6. C语言中,以下哪个选项是正确的数组定义?A. int arr[5] = {1, 2, 3};B. int arr[] = {1, 2, 3};C. int arr[5] = {1, 2};D. int arr[] = {1, 2, 3, 4, 5, 6};答案:B7. 在C语言中,以下哪个选项是正确的文件包含指令?A. #include "stdio.h"B. #include <stdio.h>C. #include "stdio.h"D. #include <stdio.h>答案:B8. C语言中,以下哪个选项是正确的条件语句?A. if (x > y)B. if (x > y) {C. if (x > y)D. if (x > y) {答案:D9. C语言中,以下哪个选项是正确的循环语句?A. for (int i = 0; i < 10; i++)B. for (int i = 0; i < 10; i++)C. for (int i = 0; i < 10; i++)D. for (int i = 0; i < 10; i++)答案:A10. C语言中,以下哪个选项是正确的函数定义?A. int add(int a, int b) { return a + b; }B. int add(int a, int b) { return a, b; }C. int add(int a, int b) { return a; }D. int add(int a, int b) { return a + b; }答案:A二、填空题(每题2分,共20分)1. C语言中,用于定义一个字符常量的数据类型是________。
C语言练习4(函数)=参考答案

C语言(函数,变量作用范围)一、选择题1 下列定义不正确的有 ( C ) 。
A)#define PI 3.141592 B)#define S 345C)int max(x,y); D)char c;int x,y ;{ }2 下列程序结构中,不正确的是 ( B )。
A)main() B) main(){float a,b,c; {float a,b,c;scanf("%f,%f",&a,&b); scanf("%f,%f",&a,&b);c=add(a,b); c=add(a,b);...... .....} }int add(float x,float y) float add(float x,float y) { ... } { ... }C)float add(float x,float y); D)float add(float x,float y) main() { ... }{float a,b,c; main()scanf("%f,%f",&a,&b); {float a,b,c;c=add(a,b); scanf("%f,%f",&a,&b);...... c=add(a,b);} .....float add(float x,float y) }{ ... }3 一个C语言的程序总是从( A )开始执行的.A)main函数B)文件中的第一个函数C)文件中的第一个子函数调用D)文件中的第一条语句4 以下正确的函数定义是( D ).A)double fun(int x,int y){z=x+y; return z;}B) double fun(int x,int y);{int z;z=x+y; return z;}C) fun(int x,y){int z; return z;}D) double fun(int x,int y){double z;z=x+y; return z;}5 以下正确的函数声明形式是( D ).A) double fun(int x,int y)B) double fun(int x;int y)C) double fun(int ,int )D) double fun(int ,int );6 以下说法中正确的是( A )在C语言中A)实参与其对应的形参各占用独立的存储单元B)实参与其对应的形参占用同一个存储单元C)只有当实参与形参同名时才占用同一个存储单元D)实参占用存储单元,但形参是虚拟的,不占用存储单元7 设有如下函数定义:int f(char *s){ char *p=s ;while(*p!='\0') p++;return(p-s) ;}如果在主程序中用下面的语句调用上述函数,则输出结果为( A ). printf("%d\n",f("goodbye!"));的输出结果是A) 3 B) 6 C) 8 D) 08 下面程序段中,主函数中变量a被初始化为 ( C )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大家一定要认真做完,标清题号和答案,打包提交,最后我会把答案通过群邮件发给大家!一、单项选择题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<max;i++) a[i]=i;}sub1(){ for(i=0;i<MAX;i++) a[i]=i+i; }sub3(int a[]){int i;for(i=0;i<MAX;i++) printf(“%d”,a[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.以下程序的正确运行结果是:#include <stdio.h>void 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.以下程序的正确运行结果是:#include <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,8首先输出结果是8,17第二,你上面这个程序编译不了的,有2个问题1),函数的返回值类型没写;2),func()函数体放在了main()函数后面且没再main()函数中声明。
第三,注释该程序:#include<stdio.h> //头文件void main() //修改1:增加了void{int k=4,m=1,p; //定义变量k,m,pint func(int,int); //修改2:声明函数funcp=func(k,m); //以k,m为参数,调用函数func,返回值赋给pprintf("%d, ",p); //输出p的值;p=func(k,m); //以k,m为参数,第二次调用函数func,返回值赋给pprintf("%d\n",p); //再输出p的值;}int func(int a,int b){static int m=0,i=2; //定义静态变量m,i,初值分别为0,2;i+=m+1; // i = i+m+1;第一次:i=2+0+1=3;第二次:i=3+8+1=12;m=i+a+b; //m = i+a+b;第一次:m=3+4+1=8;第二次:m=12+4+1=17;return m; //将m作为返回值第一次返回:8;第二次返回:17;}第四、说明一下“静态变量”在被调用的函数体内,如果声明了某些变量(非静态),那么这些变量仅在该函数被执行期间起作用,也就意味着当函数的一次调用结束的时候,这些变量所在的内存空间都被释放掉了。