ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:21.35KB ,
资源ID:3812121      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3812121.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(9396C语言试题.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

9396C语言试题.docx

1、9396C语言试题第93套1.填空题请补充main函数,该函数的功能是:求n!。例如7!=5040。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。试题程序:#include#includemain() int i,n; long f=1; clrscr(); printf(Input n: ); scanf(%d,【1】); for(【2】;i=n;i+) 【3】; printf(%d!=%ldn,n,f);【1】&n 【2】i=1或i=2 【3】f*=i【解析】填空1:本题考查对调用标准输入函数scanf()的掌

2、握,地址列表中都是地址值,所以在变量名前要加上取址运算符&。填空2:n的阶乘是将1、2、3n累积相乘,所以for循环中i从1开始取数。但因为1乘以任何数都等于这个数本身,所以i也可以从2开始取数。填空3:掌握了阶乘的算法,这空就非常简单了。2. 改错题下列给定程序中,函数fun()的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15。程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得

3、更改程序的结构。试题程序:#include int fun() int i,j,k,sum=0; printf(nThe result :nn );/*found*/ for(i=0;i=3;i+) for (j=1;j=1&k=6) sum=sum+1; printf(red:%4d white:%4d black:%4dn ,i,j,k); return sum;main() int sum; sum=fun(); printf(sum=%4dnn ,sum);(1)错误:for(i=0;i=3;i+)正确:for(i=1;i=1&k=1&k=6)&(i!=0)&(j!=0)|(k=0)【

4、解析】该题是一道教材习题的变体,如果单纯从数学的排列组合角度来分析,实在简单不过,那怎么才能用C语言实现题目中的要求呢?这就需要我们有一个清晰的编程思想。红球数i的总数为3,但最小值为1,循环条件中,i的值是从0开始的,所以不应该是for(i=0;i=3;i+),而是for(i=1;i=1&k=1&k=6)&(i!=0)&(j!=0)|(k=0)。3. 编程题请编写函数fun(),它的功能是计算下列级数和,和值由函数值返回。S=1+x+x2/2!+x3/3!+xn/n!例如,当n=10,x=0.3时,函数值为1.349859。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内

5、容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#include#includedouble fun(double x, int n) main() clrscr(); printf(%f ,fun(0.3,10);【解析】本程序中用s1来表示每项的分母(即各项中的阶乘),要注意本程序中s和s1的初值都为1。double fun(double x, int n) int i; double s=1.0,s1=1.0; for(i=1;i=n;i+) s1=s1*i; /*各项中的阶乘*/ s=s+pow(x,i)/s1; /*按公式求出*/ return s;第94

6、套1.填空题数组xxN保存着一组4位无符号整数,其元素的个数通过变量num传入函数fun()。请补充函数fun(),该函数的功能是:从数组xx中找出个位和百位的数字相等的所有无符号整数,结果保存在数组yy中,其个数由函数fun()返回。例如:当xx8=1111,2413,2321,2222,4245,3333,1414,5335时,bb6=11112321,2222,4245,3333,1414。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序:#include#include#define N 1000int

7、 fun(int xx,int bb,int num) int i,n=0; int g,b; for(i=0;inum;i+) g=【1】; b=xxi/100%10; if(g=b) 【2】; return【3】;main() int xx8=1111,2413,2321,2222,4245,3333,1414,5335; int yyN; int num=0,n=0,i=0; num=8; clrscr(); printf(*original data *n ); for(i=0;inum;i+) printf(%u ,xxi); printf(nnn); n=fun(xx,yy,num

8、); printf(nyy= ); for(i=0;in;i+) printf(%u ,yyi);【1】xxi%10 【2】bbn+=xxi 【3】n【解析】填空1:变量b存放了4位数的百位数字,所以变量g应该存放4位数的个位数字,将这个4位数对10求余,则得到这个数的个位数字。填空2:将个位数字与百位数字相等的整数存于数组bb中。填空3:变量n记录了个位数字等于百位数字的整数的个数,题目要求个数由函数fun()返回,所以应返回n。2. 改错题下列给定程序中,函数fun()的功能是:求整数x的y次方的低3位值。例如,整数5的6次方为15625,此值的低3位值为625。请改正程序中的错误,使它能

9、得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include long fun(int x, int y, long *p) int i; long t=1;/*found*/ for(i=1;iy;i+) t=t*x; *p=t;/*found*/ t=t/1000; return t;main() long t, r; int x, y; printf(nInput x and y: ); scanf(%1d%1d,&x,&y); t=fun(x,y,&r); printf(nnx=%d, y=%d,r=%ld, last=%ldnn ,x,

10、 y, r,t);(1)错误:for(i=1;iy;i+)正确:for(i=1;i=y;i+)(2)错误:t=t/1000;正确:t=t%1000;【解析】我们先用简单的思想理解一下该程序,如果当x=y=1时,程序的问题出在哪儿?很简单吧,所以for(i=1;iy;i+)的循环条件应该是for(i=1;i=y;i+),另外,t=t/1000;中的错误是混淆了/和%的定义,大家对这样的细节问题务必注意。3. 编程题假定输入的字符串中只包含字母和*号。请编写函数fun(),它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。例如,若字符串中的内容为*A*BC*DEF*G*,删除后,字

11、符串中的内容则应当是A*BC*DEF*G*。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include void fun (char *a) main() char s81; printf(Enter a string :n); gets(s); fun(s); printf(The string after deleted:n);puts(s);【解析】在前面的改错题和编程题中,相关试题已经出现好多次了,我们在此提供另一种解答方法。#includevoid fun(char *a)char

12、 *p=a;while(*p=*) p+;strcpy(a,p);void fun (char *a) char *p=a; while(*p=*) p+; /*指针p指向字符串第一个字母*/ for(;*p!=0;p+,a+) *a=*p; /*从第一个字母开始,其后的字符都放入指针a所指的字符串中*/ *a=0; /*在字符串最后加上结束标记符*/第95套1.填空题请补充main函数,该函数的功能是:把文本文件B中的内容追加到文本文件A的内容之后。例如,文件B的内容为Im ten.,文件A的内容为Im a student!,追加之后文件A的内容为Im a student ! Im ten.

13、注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数main的横线上填入所编写的若干表达式或语句。试题程序:#include#include#define N 80main() FILE *fp,*fp1,*fp2; int i; char cN,t,ch; clrscr(); if(fp=fopen(A.dat,r)=NULL) printf(file A cannot be openedn); exit(0); printf(n A contents are : nn); for(i=0;(ch=fgetc(fp)!=EOF;i+) ci=ch; putchar

14、(ci); fclose(fp); if(fp=fopen(B.dat,r)=NULL) printf(file B cannot be openedn); exit(0); printf(nnnB contents are : nn); for(i=0;(ch=fgetc(fp)!=EOF;i+) ci=ch; putchar(ci); fclose(fp); if(fp1=fopen(A.dat,a) 【1】 (fp2=fopen(B.dat,r) while(ch=fgetc(fp2)!=EOF) 【2】; else printf(Can not open A B !n); fclose

15、(fp2); fclose(fp1); printf(n*new A contents*nn); if(fp=fopen(A.dat,r)=NULL) printf(file A cannot be openedn); exit(0); for(i=0;(ch=fgetc(fp)!=EOF;i+) ci=ch; putchar(ci); 【3】;【1】& 【2】fputc(ch,fp1) 【3】fclose(fp)【解析】填空1:当两个文件都被成功打开时,才能将文件B中的内容追加到文件A中,所以应该用与运算符-&。填空2:fputc( )函数用于将一个字符写到磁盘文件上去,调用形式为:fput

16、c(要输出的字符,文件指针);。填空3:对一个文件进行操作后,应该关闭它,以防它再被误用。调用形式为:fclose(文件指针);。2. 改错题下列给定程序中,函数fun()的功能是:用下面的公式求的近似值,直到最后一项的绝对值小于指定的数(参数num)为止。/41-1/3+1/5-1/7+例如,程序运行后,输入0.0001,则程序输出3.1414。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include float fun(float num) int s; float n,t, pi; t=1;p

17、i=0;n=1;s=1;/*found*/ while(t=num) pi=pi+t; n=n+2; s=-s;/*found*/ t=s%n; pi=pi*4; return pi;main() float n1, n2; clrscr(); printf(Enter a float number: ); scanf(%f,&n1); n2=fun(n1); printf(%6.4fn ,n2);(1)错误:while(t=num)正确:while(fabs(t)=num)(2)错误:t=s%n;正确:t=s/n;【解析】函数fun()中while语句的含义是,当新的一项大于给定参数时,循环

18、累计,计算s的值。而题目要求是最后一项的绝对值小于给定参数,因此循环条件应当为while(fabs(t)=num),而非while(t=num)。3. 编程题假定输入的字符串中只包含字母和*号。请编写函数fun(),它的功能是:使字符串中前部的*号不得多余n个;若多余n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。例如,字符串中的内容为*A*BC*DEF*G*,若n的值为2,删除后,字符串中的内容则应当是*A*BC*DEF*G*;若n的值为4,则字符串中的内容仍为*A*BC*DEF*G*。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。

19、注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include void fun(char *a,int n)main()char s81;int n;printf(Enter a string :n);gets(s);printf(Enter n : );scanf(%d,&n);fun( s,n );printf(The string after deleted :n);puts(s);【解析】while()循环的作用是计算出前部星号的个数;if()的作用是判断星号个数是否多于n个,若是则只

20、保留n个星号,即从字符串前部的倒数第n个星号开始,到最后一个字符都存入数组a中,最后记得在字符串最后加上结束标志位。void fun(char *a,int n ) int i=0, k=0; char *p, *t;p=t=a; /*开始时,p与t同时指向数组的首地址*/while(*t=*) /*用k来统计前部星号的个数*/ k+; t+;if(kn) /*如果k大于n,则使p的前部保留n个星号,其后的字符依次存入数组a中*/ while(*p) ai=*(p+k-n); i+; p+; ai=0; /*在字符串最后加上结束标志位*/ 第96套1.填空题请补充函数fun(),该函数的功能是

21、:寻找两个整数之间的的所有素数(包括这两个整数),把结果保存在数组bb中,函数返回素数的个数。例如,输入6和21,则输出为:7 11 13 17 19 21。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#include#include#define N 1000int fun(int n,int m,int bbN) int i,j,k=0,flag; for(j=n;j=m;j+) 【1】; for(i=2;ij;i+) if(【2】) flag=0; break; if(【3】) bbk+=j;

22、return k;main() int n=0,m=0,i,k; int bbN; clrscr(); printf(Input nn); scanf(%d,&n); printf(Input mn); scanf(%d,&m); for(i=0;im-n;i+) bbi=0; k=fun(n,m,bb); for(i=0;ik;i+) printf(%4d,bbi);【1】flag=1 【2】j%i=0 【3】flag=1【解析】填空1:由flag决定当前判断的数是否为素数,先置flag为1,如果判断出当前数不是素数,则将flag清零。填空2:如果一个数能被除了1和其自身之外的数整除,即余数

23、为0,则这个数不是素数。填空3:如果flag等于1,则说明当前数是素数,则把它存入数组bb中。2. 改错题下列给定程序中,函数fun()的功能是:计算并输出下列级数的前N项之和SN,直到SN+1大于q为止,q的值通过形参传入。SN=2/1+3/2+4/3+(N+1)/N例如,若q的值为50.0,则函数值为49.394948。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include /*found*/double fun(double q) int n; double s,t; n=2; s=2.0;

24、 while(s=q) t=s;/*found*/ s=s+(n+1)/n; n+; printf(n=%dn ,n);/*found*/ return s;main() clrscr(); printf(%fn ,fun(50);(1)错误:double fun(double q)正确:double fun(int q)(2)错误:s=s+(n+1)/n;正确:s=s+(double)(n+1)/n;(3)错误:return s;正确:return t;【解析】该程序中多次出现了函数调用过程中定义混乱的错误,关于类似问题,我们在前面的试题中已经做过比较详细的解释,主要是对基础知识的把握。在这

25、里我们再对函数调用规则做一简单说明。C语言规定,在以下几种情况下可以不在调用函数前对被调用函数做类型说明。(1)如果函数的值(函数的返回值)是整型或字符型,可以不必进行说明,系统对它们自动按整型说明。但为清晰起见,建议都加以说明为好。(2)如果被调用函数的定义出现在主调函数之前,可以不必加以说明。因为编译系统已经先知道了已定义的函数类型,会自动处理的。也就是说,将被调用的函数的定义放在主调函数之前,就可以不必另加类型说明。(3)如果已在所有函数定义之前,在文件的开头,在函数的外部已说明了函数类型,则在各个主调函数中不必对所调用的函数再做类型说明。除了以上3种情况外,都应该按上述介绍的方法对所调用函数的返回值做类型说明,否则编译时就会出现错误。3. 编程题请编写函数fun(),其功能是:计算并输出下列多项式的值。S=1+1/(1+2)+1/(1+2+3)+1/(1+2+3+n)例如,若主函数从键盘给n输入50后,则输出为S=1.960784。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include double fun(int n) main() int n; double s; printf(nInput n: ); scanf(%d,&n); s=fun(n); print

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1