C语言2作业参考答案

上传人:痛*** 文档编号:101163729 上传时间:2022-06-04 格式:DOC 页数:59 大小:275.50KB
返回 下载 相关 举报
C语言2作业参考答案_第1页
第1页 / 共59页
C语言2作业参考答案_第2页
第2页 / 共59页
C语言2作业参考答案_第3页
第3页 / 共59页
点击查看更多>>
资源描述
C语言2作业1一、判断题1. 程序是由函数构成的,每一个函数完成相对独立的功能.2分2. 被main函数调用的函数只能是库函数.2分3. 只有在函数被调用时,其形式参数才临时地占有存储空间.2分4. 函数若无返回值,则它一定无形参.2分5. 如果函数类型不定义为空类型,即使在return后面没有表达式,而实际上函数也是有一个不确定的返回值的.2分6. 函数必须有形参2分7. 函数必须有return语句2分8. 函数调用语句:funcrec1,rec2+rec3,;中,含有的实参个数是52分二、选择题1.一个数据类型为void的函数中可以没有return语句,那么函数被调用时.A2分A. 没有返回值B. 返回一个系统默认值C. 返回值由用户临时决定D. 返回一个不确定的值2.在C语言中,函数的数据类型是指_.A2分A. 函数返回值的数据类型B. 函数形参的数据类型C. 调用该函数时的实参的数据类型D. 任意指定的数据类型3.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是_.D2分A. 函数调用可以作为独立的语句存在B. 函数调用可以作为一个函数的实参C. 函数调用可以出现在表达式中D. 函数调用可以作为一个函数的形参4.阅读下面程序段,则执行后输出的结果是_.#include void main int m=4,n=2,k;k=fun; printf;int fun return;C2分A. 64B. 8C. 56D. 05.编写求两个双精度数之和的函数,选项中正确的是_.Adouble add double s; s=a+b; return s; Bdouble add double s; s=a+b; return ;Cdouble add double s; s=a+b; returns;Ddouble add double a,b,s; s=a+b; return ;A2分A. AB. BC. CD. D6.现有如下程序段#include int aa;void main int a=24,b=16,c;c=aa; printf; int aa int w; while w=x%y; x=y; y=w; return x;则程序段的输出结果是_.D2分A. 5B. 6C. 7D. 87.函数的值通过return语句返回,下面关于return语句的形式描述错误的是_.C2分A. return 表达式;B. return 表达式;C. 一个return语句可以返回多个函数值D. 一个return语句只能返回一个函数值8.阅读下面程序,则执行后的结果为_.#include void main fun3fun1,fun2; fun1 int k=20;return k; fun2 int a=15; return a; fun3 int k; k=*; printf;B2分A. 0B. 175C. 184D. 编译不通过9.阅读下列程序,则执行后输出的结果是_.#include void fun k+; k=k*6;void main int k=1; fun; printf;A2分A. 1B. 2C. 6D. 12三、程序设计题1. 第5章 四、110分题目描述输入一个整数x,输出下面分段函数f的值.要求将分段函数的计算定义成函数.当x0时 f=1;当x=0时 f=0;当x0时 f=-1. 输入描述输入一个整数 输出描述输出分段函数f的值 样例输入100 样例输出f=1 参考答案1参考答案2#include int f int y; if0 y=1; else if y=0; else y=-1;return y;void main int x; scanf; printff=%dn,x,f;#include int f / 函数定义 if0 return 1; else if return 0; else return -1;void main int x,y; scanf; y=f; / 函数调用 printff=%dn,x,y;2. 第5章四、410分题目描述输入三个数,输出它们的最小值.要求定义一个函数,返回两个数的最小值. 输入描述输入三个实数中间用空格间隔 输出描述输出结果保留三位小数 样例输入5.7 98.32 -123.45678 参考答案2#include double min double m;ifx m=x; else m=y; return m;void main double a,b,c,m; scanf; m=min; m=min; printf;样例输出-123.457 参考答案1#include double min ifx return x; else return y;void main double a,b,c,m; scanf;m=minmin,c;printf;3. 第5章 四、510分题目描述在主函数中输入字符c和m,调用函数prn,连续将字符c输出m次.定义函数prn,完成连续将某个字符c输出m次后换行. 输入描述先输入要输出字符,再输入一个整数,两者之间用空格间隔 输出描述在一行中输出 样例输入# 5 样例输出# 参考答案#include void prn int i; fori=1;iputchar; printf;void main char c; int m; scanf; prn;C语言2作业2一、判断题1. 函数即可以嵌套定义,又可以嵌套调用.2分2. 空函数没有返回值,除此之外,有些函数可以带回一个或一个以上的返回值.2分3. return后面括号里的表达式的值即是此函数的值.2分4. 定义在main函数后的任何函数都需在main中进行函数声明.2分5. 如果被定义函数的返回值是整型,可以不必进行声明.2分6. 求n!既可以用递归的方式,也可以用递推的方式.2分7. 递归函数在实现过程中,要使用堆栈这种数据结构来保存递归调用过程中的值.2分8. 在C语言中,所有函数之间都可以相互调用.2分9. 函数的递归调用不过是一个函数直接或间接地调用它自身.2分二、选择题1.在下面的函数声明中,存在着语法错误的是.C2分A.BC;B.BC;C.BC;D. BC;2.以下程序的输出结果是_. #include int fun int s;ifs=2; else s=n-fun;return s; void main printf%dn,fun; A2分A. 1B. 2C. 3D. 43.C语言中,若未说明函数的类型,则系统默认该函数的类型是.C2分A. float型B. double型C. int型D. void型4.以下程序中有语法错误,有关错误原因的正确说法是.main int G=5,k; void par_char; k=par_char; C2分A. 语句void par_char;有错,不能用void说明函数的类型B. 变量名G不能使用大写字母C. 函数说明和函数调用语句之间有矛盾D. 函数名中不能使用下划线5.在C语言中,以下正确的说法是.D2分A. 形参不占用存储单元B. 只有当实参和与其对应的形参同名时才共占用存储单元C. 实参和与其对应的形参共占一个存储单元D. 实参和与其对应的形参各占用独自的存储单元6.下列叙述中,正确的叙述项是 .B2分A. 定义函数时,必须要有形参B. 函数中可以没有return语句,也可以有多条return语句C. 函数f可以用ff形式调用,这种调用形式是递归调用D. 函数必须有返回值7.根据下面函数print的定义,选出调用函数print的值是 .void print if return ; else print; printf;return ; A2分A. 5 3 7 8B. 8 7 3 5C. 3 5 7 8D. 8 7 5 38.下述程序输出的结果是 .#include void fun a=456;b=567;c=678;void main int x=10,y=20,z=30; fun; printf;A2分A. 30,20,10B. 10,20,30C. 456,567,678D. 678,567,4569.下述程序输出的结果是 .#include Fun c=a*a+b*b;void main int x=22; fun; printf;C2分A. 20B. 21C. 22D. 2310.在下列程序中,调用f的值是intfifreturn;elseifreturn;elsereturnf+f;D2分A. 13B. 21C. 55D. 3411.有函数定义int fun return ;,则调用fun后的函数返回值是_.B2分A. 3B. 4C. 3和4D. 程序出错三、程序设计题1. 水仙花数210分题目描述水仙花数是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+33.现在要求输出所有在m和n范围内的水仙花数. 100=m=n=999. 编程要求,要求编写一个判断水仙花数的函数,在主函数调用该函数判断某个数是否为水仙花数. 输入描述输入数据包括两个整数m和n 输出描述要求输出所有在给定范围内的水仙花数如果有多个,则要求在一行内输出,之间用一个空格隔开; 如果给定的范围内不存在水仙花数,则输出no; 样例输入样例输入1:100 999样例输入2:200 300 样例输出样例输出1:153 370 371 407样例输出2:no 参考答案#include#includeint isflower/ 判断整数x是否水仙花数 int a,b,c; a=x%10; b=x/10%10; c=x/100; if return 1;/ 若是水仙花数返回1,否则返回0else return 0;void main int n,m,i,c=0; / 变量c统计水仙花数个数scanf;fori=m;i if isflower=1 printf; c+;/ 或c=1; 则用变量c标识有否水仙花数if printf;/ 若在此范围内无水仙花数,则输出no2. 计算x的n次幂210分题目描述输入一个实数x和一个整数nn0,计算x的n次幂.要求将计算x的n次幂定义成函数,不允许使用库函数pow. 输入描述一个实数和一个整数,中间用空格间隔 输出描述输出结果保留三位小数 样例输入2.4 3 样例输出参考答案2#include double f /递归函数 if return 1;/ x0=1 else return x*f; / xn=xxn-1void main double x,y; int n; scanf; y=f; printf;13.824 参考答案1#includedouble mypow int i; double y; fori=y=1;iy=y*x; return y;void main int n; double x,y=1;scanf;y=mypow; printf;C语言2作业3一、判断题1. 静态局部变量只在本函数内可用.2分2. 外部变量是全局变量.2分3. 如果函数类型不定义为空类型,即使在return后面没有表达式,而实际上函数也是有一个不确定的返回值的.2分4. 在函数体内定义的变量称全局变量,可以被程序中的所有函数引用.2分二、选择题1.以下程序的输出结果是_.int f static int i=0; int s=1; s+=i; i+; return s;main int i,a=0; fori=0;i a+=f; printf;D2分A. 20B. 24C. 25D. 152.若有以下程序#include void f;main void f; f;void f printf; 则以下叙述中不正确的是_.C2分A. 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB. 若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数fC. 对于以上函数程序,编译时系统会提示出错信息;提示对f函数重复说明D. 函数f无返回值,所以可用void将其类型定义为无值型3.以下程序的输出结果是_.int x=3;main int i; fori=1;i incre;incre static int x=1; x*=x+1; printf;C2分A. 3 3B. 2 2C. 2 6D. 2 54.设有以下函数;f int b=0; static int c=3; b+;c+; return; 如果在下面的程序中调用该函数,则输出结果是_. main int a=2, i; fori=0;i printf%dn,f; A B C D 7 7 7 7 8 9 10 7 9 11 13 7A2分A. AB. BC. CD. D5.若程序中定义了以下函数double myaddreturn;并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是_.A2分A. double myadd;B. double myadd;C. double myadd;D. double myadd;三、程序填空题1. 功能:通过函数的递归调用计算阶乘.5分#includelong power long f; if1 f=_; else f=1; return;void main int n; long y; scanf; y=_;printf%d!=%ldn,n,_; 答案2分power*n 答案2分power 答案1分y 2. 功能:利用全局变量计算长方体的体积与三个面的面积.5分#includeint s1,s2,s3;int vs int v; v=_; s1=a*b; s2=_; s3=a*c; return v;int main int v,l,w,h; printf;scanf%d%d%d,_,&w,&h; _; printf; 答案2分a*b*c 答案1分b*c 答案1分&l 答案1分v=vs 四、程序设计题1. 统计整数中含某数字个数10分题目描述编写函数int ndigitint n,int k统计整数n中含数字k的个数.如:ndigit返回值为2,ndigit返回值为3,ndigit返回值为0.在主函数中输入整数n和k,调用函数ndigit计算出n中含k的个数,并在主函数输出.如果输入的k值不是一位整整则输出error. 输入描述输入一个整数和一个09的数字 输出描述输出一个相应的 整数 样例输入输入样例1:345464 4输入样例2:0 0输入样例3:4565 -6 样例输出输出样例1:3输出样例2:1输出样例3:error 参考答案#includeint ndigit int c=0; do / 若用while语句,则在前面要加ifreturn 1;if c+; n/=10;while;return c;void main int n,k; scanf;if9|k printf;else printf%dn,ndigit;2. 双胞胎数10分题目描述除1和它本身外,不能被其它整数整除的正整数称为素数注:1不是素数,2是素数.若两素数之差为2 ,则称两素数为双胞胎数,给定一段连续的正整数,请判断其中有多少对双胞胎数.要求将判断某数是否素数写成函数. 输入描述输入数据包含2个正整数A和B0AB=100000,分别表示连续整数段的2端; 输出描述请判断并输出A,B范围内一共有多少对双胞胎数. 样例输入31 601 样例输出22 参考答案#include int prime int i,k; ifx return0;k=sqrt; fori=2;iif return 0; return 1; void main int i,n=0,a,b; scanf; fori=a;i if prime&primen+; printf; C语言2作业4一、选择题1.下列能正确定义一维数组a的语句是_.Aint a; Bint n=10,an;Cint n;scanf;int an; D#define n 10 int an;D2分A. AB. BC. CD. D2.若有定义语句int a10;则下列对a中数组元素正确引用的是_.A2分A. a10/25B. a10C. a4.5D. a3.设有程序:main int i,a11; printf; for i=0;i scanf%d,; . . printf; fori=0;i=10;i+ printf%d,; 则在程序中的两个园括号中分别应填入:_C2分A. &ai和&aiB. ai和&aiC. &ai和aiD. ai和ai4.阅读程序:#include void main int a2=0,i,j,k=2; fori=0;iforj=0;j aj=ai+1; printf;以上程序的输出结果是_.D2分A. 1B. 2C. 3D. 不确定的值5.若定义数组int a10 ,其最后一个数组元素为_.C2分A. a0B. a1C. a9D. a106.若定义数组并初始化int a10= 1,2,3,4,以下哪一个不成立_.B2分A. a8 的值为0B. a1 的值为1C. a3 的值为4D. a9 的值为07.在定义一个一维数组时,不能用来表示数组长度的是_.D2分A. 常量B. 符号常量C. 常量表达式D. 已被赋值的变量8.若float型变量占用4个字节,有定义float a20=1.1,2.1,3.1;则数组a在内存中所占的字节数是_.D2分A. 12B. 20C. 40D. 809.以下程序的输出结果是_.#include void main int i, k, a10, p3; k=5; for i=0;i ai =i; for i=0;i pi =ai *; for i=0;i k+=pi *2; printf;B2分A. 20B. 21C. 22D. 2310.有以下程序main int p7=11,13,14,15,16,17,18, i=0,k=0;whilei k =k+ pi; i+; printf; 执行后输出结果是_.D2分A. 58B. 56C. 45D. 24二、程序设计题1. 与平均值最接近的数10分题目描述输入nn20和n个实数,输出平均值与与平均值相差最小的数若有多个,只需输出第一个. 输入描述输入n和n个实数,各数之间用空格分隔 输出描述第一行输出平均值,第二行输出与平均值相差最小的数.输出结果均保留两位小数. 样例输入6 2.3 4 -5 8.5 -9 15 样例输出2.63参考答案2#include #include #define N 20void main double aN,v=0; int i,k=0,n; scanf; / 实际元素个数 fori=0;i scanf; v+=ai; v=v/n; fori=1;i iffabsfabs k=i; / 记录最接近元素下标 printf;2.30参考答案1#include #include #define N 20void main double xN,v,d;int i,n; scanf;fori=0,v=0;i scanf; v+=xi; v=v/n; d=x0; fori=1;iiffabsfabsd=xi; printf;2. 最大值和第一个数交换位置10分题目描述参考答案2#include void main int a20,max,k,i,n; scanf; fori=0;i scanf; max=a0;k=0; / 用来记录最大元素下标 fori=1;i ifmax max=ai; / max放最大元素值 k=i; / 还要记录最大元素下标 ak=a0;a0=max; /原元素值在max中 fori=0;i printf; / 思考:若交换时用语句t=a0;a0=max;/ max=t; 有何问题?输入nn20和n个整数放在一维数组中,找出其中最大的数,将它与数组最前面的元素交换后输出这些数. 输入描述输入n和n个整数 输出描述输出数据占一行,数据间用一个空格分开. 样例输入5 78 99 34 112 67 样例输出112 99 34 78 67 参考答案1#include #define N 20void main int aN,n; int i,k=0,t; scanf; fori=0;i scanf; fori=1;i ifak k=i;t=ak;ak=a0; a0=t; fori=0;i printf;printf; C语言2作业5一、判断题1. 如果想使一个数组中全部元素的值为1,可以写成 int a10=1*10;2分2. C允许对数组的大小作动态定义,即可用变量定义数组的大小.2分3. 数组定义 int a10; 也可以写成 int a; .2分4. 在对全部数组元素赋初值时,可以不指定数组长度.2分5. 数组定义 int a10; 表示数组名为a,此数组有10个元素.2分6. 数组定义 int a10; 表示数组名为a,此数组有10个元素,第10个元素为a10.2分二、选择题1.下面的程序中哪一行有错误_.#include void main float array5=0.0; /第A行 int i; fori=0;i scanf; fori=1;iarray0=array0+arrayi;/第B行 printf; /第C行D2分A. 第A行B. 第B行C. 第C行D. 没有2.int a4=5,3,8,9;其中 a3的值为_.D2分A. 5B. 3C. 8D. 93.若有以下数组说明,则数值最小的和最大的元素下标分别是_.int a12 =1,2,3,4,5,6,7,8,9,10,11,12;B2分A. 1,12B. 0,11C. 1,11D. 0,124.下面程序的运行结果是_.#include void main int a10=1,2,2,3,4,3,4,5,1,5; int n=0,i,j,c,k; fori=0;i c=ai; forj=i+1;j if fork=j;k ak=ak+1; n+; fori=0;i printf; printf;C2分A. 1 2 2 3 4 3 4 5 1 5B. 2 2 2 2 2C. 1 2 3 4 5D. 1 2 3 4 5 3 4 5 1 5三、程序填空题1. 以下程序在a 数组中查找与x 值相同的元素的所在位置.5分#include void main int a11, x,i; printf; fori=1;iscanf; printf;scanf; a0= _ ;i=10; while _; if _ printf; else printf; 答案2分x 答案2分i- 答案1分i!=0 2. 以下程序在a 数组中按正序从小到大存放数据,查找其中与x 值相同的元素的所在位置.5分#include #define n 11void main int p,x,low,mid,high,find;int an,i; printf;fori=0;i scanf; printf; scanf; low=0; high=_; p=0; find=0; whilelow&!find mid=/2; if find=1; else ifamid low=mid+1; else _ ; p+; if _ printf; else printf; 答案2分n-1 答案2分high=mid-1 答案1分find 四、程序设计题1. 绝对值排序10分题目描述输入nn个整数,按照绝对值从大到小排序后输出.题目保证对于每一个测试实例,所有的数的绝对值都不相等. 输入描述每组输入数据的第一个数字为n,接着是n个整数. 输出描述对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开. 样例输入3 3 -4 2 样例输出-4 3 2 参考答案#include#includevoid main int a100,i,j,n,temp;scanf; fori=0;i scanf;fori=0;iforj=0;j iffabsfabs temp=aj;aj=aj+1;aj+1=temp;fori=0;i printf;printf;2. 按逆序输出原输入数据10分题目描述输入n,再输入n个整数放到一个数组中,要求将这个数组中的元素按逆序存放后输出这n个数.其中n值小于100 输入描述输入n和n个整数 输出描述按原来输入数据的逆序输出这n个数. 样例输入参考答案2#include void main int a100,n,i,t; scanf; fori=0;i scanf;fori=0;i t=ai;ai=an-1-i;an-1-i=t; fori=0;i printf; printf;5 6 18 9 7 20 样例输出20 7 9 18 6 参考答案1#include void main int a100,n,i,j,t;scanf; fori=0;iscanf;fori=0,j=n-1;i t=ai;ai=aj;aj=t; fori=0;i printf;printf;C语言2作业6一、选择题1.下面程序的运行结果是_.#include void main int a10=11,2,3,24,25,16,7,18,23,10; int k,s,i; float ave; fork=s=i=0;i if continue; s+=ai; k+; if ave=s/k; printf;B2分A. The number is:10,The average is :13.000000B. The number is:5,The average is :13.000000C. The number is:5,The average is :14.000000D. The number is:5,The average is :13.8000002.若输入11,以下程序的运行结果是_.#include int sub int c; c=a%2; return c;ma
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!