C语言程序设计程序填空题库及答案

上传人:z**** 文档编号:148206370 上传时间:2022-09-04 格式:DOCX 页数:67 大小:57.46KB
收藏 版权申诉 举报 下载
C语言程序设计程序填空题库及答案_第1页
第1页 / 共67页
C语言程序设计程序填空题库及答案_第2页
第2页 / 共67页
C语言程序设计程序填空题库及答案_第3页
第3页 / 共67页
资源描述:

《C语言程序设计程序填空题库及答案》由会员分享,可在线阅读,更多相关《C语言程序设计程序填空题库及答案(67页珍藏版)》请在装配图网上搜索。

1、导读:在程序填空题中,已经给出了程序的主干,读者首先要理 解程序的思路,再选择正确的内容填入空白处,使程序完成既定 的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。 本节习题的难度适中,可能有些典型的程序在课堂上已经有所接 触,读者一定要独立完成它,这样就可以逐步提高自己的编程能 力。在程序设计语言学习的中期,读者对程序设计已经有了初步 的了解,而自己编写程序又不知从何处入手,此时解答此类题目 可以避免盲目性,从而提高学习的效率。【】下面程序的功能是不用第三个变量,实现两个数的对调操作 #include main() int a,b ;scanf(%d%d,&a,&b); printf

2、(a=%d,b=%dn,a,b); a= ; b= ; a= ;printf(a=%d,b=%dn,a,b);【】下面程序的功能是根据近似公式:兀2/6匕1/12+1/22+1/32+ +l/n2,求 n 值。#include double pi(long n) double s= ; long i; for(i=l ;i=n;i+) s=s+ ; return( );【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) int p; for(p=0,*k=p;pt;p+) if(sps*k) ; main() int al0,i,*k=&i

3、; for(i=0;il0;i+) scanf(%d,&ai); findmin(a,l0,k);printf(%d,%dn,*k,a*k);【】下面程序的功能是计算1-3+5-7+-99+101的值。main() int i,t=1,s=0;for(i=1;i=101;i+=2);s=s+t; ; printf(%dn,s);【】有以下程序段:s=;for(k=1 ;kamax) amax=x ;if( ) amin=x;scanf(%f,&x);printf(namax=%fnamin=%fn,amax,amin);【】下面程序的功能是将形参x的值转换为二进制数,所得的二进 制数放在一个一

4、维数组中返回,二进制数的最低位放在下标为 0的 元素中。fun(int x,int b) int k=0,r ; do r=x% ; bk+=r; x/= ; while(x);【 】下面程序的功能是输出1到100之间每位数的乘积大于每位数 的和的数。例如数字 26,数位上数字的乘积 12大于数字之和8。 main() int n,k=1,s=0,m ; for(n=1;ns)printf(%d,n);【】下面程序的功能是统计用0 至9 之间的不同的数字组成的三位 数的个数。main() int i,j,k,count=0 ; for(i=1;i=9;i+) for(j=0;j=9;j+) i

5、f( ) continue; else for(k=0;k=9;k+) if( ) count+; printf(%d,count);【】下面程序的功能是输出 100 以内的个位数为 6、且能被 3 整除 的所有数。main() int i,j ;for(i=0; ;i+) j=i*10+6 ;if( ) countinue; printf(%d,j);【】下面程序的功能是用辗转相除法求两个正整数m和n的最大公 约数。hcf(int m,int n) int r; if(mn) r=m;n=r;r=m%n; while( ) m=n;n=r; r=m%n; ;【】下面程序的功能是使用冒泡法对输

6、入的 10 个浮点数从小到大 进行排序。排好序的 10 个数分两行输出。程序如下: #include main();int i,j;printf(Input 10 numbers pleasen); for(i=0; ;i+ ) scanf(%f, &ai); printf(n); for(i=2; ;i+ ) for(j=0; ;j+ ) if( ) x=aj ; aj+1=x; printf(The sorted 10 numbers;n); for(i=0; ;i+ ) if( ) printf(n);printf(%ft,ai);printf(n);【】下面程序的功能是读入 20 个整

7、数,统计非负数个数,并计算 非负数之和。#include main() int i,a20,s,count ; s=count=0; for(i=0;i20;i+ ) scanf(%d, ); for(i=0;i20;i+) if(ai0);s+=ai; count+;printf(s=%dt count=%dn,s,count);】下面程序的功能是删除字符串 s 中的空格。#include main() char *s=Beijing ligong daxue ;int i,j;for(i=j=0;si!=0;i+)if(si!= ) ;else ;sj= 0; printf(%s,s);【

8、】下面程序的功能是将字符串s中所有的字符C删除。请选择填 空。#inCludemain( ) Char s80;int i,j;gets(s);for(i=j=0;si!= 0;i+ )if(si!= C) ;sj= 0; puts(s);【】下面程序的功能是输出两个字符串中对应相等的字符。请选择 填空。#include char x=programming;char y=Fortran;main() int i=0 ;while(xi!= 0 & yi!= 0)if(xi=yi)printf(%c, );elsei+;【】下面程序的功能是将字符串 s 中的每个字符按升序的规则插到 数组 a

9、中, 字符串 a 已排好序。#include main() char a20=cehiknqtw ;char s=fbla;int i,k,j; for(k=0;sk!= 0;k+ ) j=0 ;while(sk=aj & aj!= 0 )j+;for( );aj=sk;puts(a);【】下面程序的功能是对键盘输入的两个字符串进行比较,然后输 出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的 两个字符串分别为abcdefg和abceef,则输出为-1。#include main() char str 1 1 00,str2 1 00,c ;int i,s;printf(Ente

10、r string 1: ); g ets(str 1 );printf(Enter string 2: ); gets(str2);i=0;while(str1i = str2i & str1i!= ) i+; s= ;printf(%dn, s);【】下面的函数 expand 在将字符串 s 复制到字符串 t 时, 将其中 的换行符和制表符转换为可见的转义字符表示,即用n表示换行 符,用t表示制表符。expand(char s,char t) int i,j;for(i=j=0;si!= 0;i+ )switch (si) case n: t = ;tj+ = n;break;case t:

11、 t = ;tj+ = t;break;default: t = si;break;tj = ;【】下面的函数index(char s, char t)检查字符串s中是否包含字 符串t,若包含,则返回t在s中的开始位置(下标值),否则送回 -1。index(char s, char t) int i,j,k;for(i=0;si!= 0;i+ ) for(j=i,k=0; & sj=tk;j+,k+) ;if( ) return (i);return(-1);n【】下面程序的功能是计算S= k!。k=0long fun(int n) int i;long s;for(i=1;i ;i+)s*=

12、i;return( );main() int k,n ;long s; scanf(%d,&n); s= ; for(k=0;k=n;k+) s+= ; printf(%ldn,s); 【】下面程序的功能是显示具有n个元素的数组s中的最大元素。#define N 20main() int i,aN; for(i=0;iN;i+) scanf(%d,&ai); printf(%dn, );fmax(int s,int n) int k,p;for(p=0,k=p;psk) ;return(k);【】下面程序的功能是由键盘输入n,求满足下述条件的x、y: nx和ny的末3位数字相同,且x手y x、

13、y、n均为自然数,并使 x+y 为最小。#include pow3(int n,int x) int i, last;for(last=1,i=1;i=x;i+ )last= ;return(last);main() int x,n,min,flag=1;scanf(%d, &n);for(min=2;flag;min+) for(x=1;xmin & flag;x+ ) if( & pow3(n,x)=pow3(n,min-x) printf(x=%d,y=%dn, x, min-x ) ; ;【】下面的程序是用递归算法求a的平方根。求平方根的迭代公式如下:#include double m

14、ysqrt( double a, double x0 ) double x1, y ;x1 = ;if( fabs(x1-x0) )y = mysqrt( ) ;else y = x1;return( y );main() double x ; printf(Enter x: ); scanf(%lf, &x); printf(The sqrt of %lf=%lfn, x, mysqrt( x, ); 【】以下程序是计算学生的年龄。已知第一位最小的学生年龄为 10 岁,其余学生的年龄一个比一个大 2岁,求第5个学生的年龄。 #include age( int n ) int c ;if( n

15、=1 ) c=10;else c= ;return(c);main() int n=5 ;printf(age:%dn, );【】下面的函数sum(int n)完成计算1n的累加和。sum(int n) if(n=0)printf(data errorn);if(n=1) ;else ;【】下面的函数是一个求阶乘的递归调用函数。facto(int n) if( n = 1 ) ;else return( );【】组合问题,由组合的基本性质可知:(1) C(m,n)=C(n-m,n)(2) C(m,n+1)=C(m,n)+C(m-1,n)公式 (2)是一个递归公式,一直到满足 C(1,n)=n

16、为止。当 n2*m 时,可先用公式(1) 进行简化,填写程序中的空白,使程序可以正 确运行。#includemain() int m,n ;printf(Input m,n=);scanf(%d%d, &m, &n);printf(The combination numbeers is %dn, combin(m,n) ; combin( int m, int n) int com ;if( n2*m ) m=n-m;if( m=0 ) com=1;else if(m=1) ;else ;return(com);【】下列函数是求一个字符串str的长度。 int strlen( char *st

17、r ) if( ) return (0); else return ( );【】用递归实现将输入小于 32768 的整数按逆序输出。如输入 12345,则输出 54321 。#includemain() int n ;printf(Input n : );scanf(%d, );r(n); printf(n);r( int m ) printf(%d, );m = ;if( );【】输入 n 值,输出高度为 n 的等边三角形。例如当 n=4 时的图形 如下:*x* *x*Y* *Y* *y* *Y*x* *x* *x# *x# *x# *x# *x#*Y* *Y* *y* *Y* *Y* *T

18、*#include void prt( char c, int n ) if( n0 ) printf( %c, c ) ; ;main() int i, n ; scanf(%d, &n);for( i=1;i=n;i+ ); printf(n);【】下面的函数实现N层嵌套平方根的计算。double y(double x, int n) if( n=0 ) return(0); else return ( sqrt(x+( ) );【】函数revstr(s)将字符串s置逆,如输入的实参s为字符串 abcde,则返回时s为字符串edcba。递归程序如下: revstr( char *s ) c

19、har *p=s, c; while(*p) p+; ; if(sp) c=*s;*s=*p; ;revstr(s+1); ;如下是由非递归实现的revstr(s)函数:revstr (s) char *s; char *p=s, c ;while( *p ) p+; ;while( s2 ) invent ( , n-2); else ;【】从键盘上输入 10个整数,程序按降序完成从大到小的排序。#include int array10;sort( int *p, int *q ) int *max, *s ;if( )return;max=p; for( s=p+1; s *max ) ;

20、 swap( );sort( ); swap( int *x, int *y ) int temp; temp=*x;*x=*y;*y=temp;i+)main() int i; printf(Enter data :n) ; for( i=0; i10 scanf(%d, &arrayi); sort( ); printf(Output:);for( i=0; i10; i+) printf(%d , arrayi);【】下面函数的功能是将一个整数存放到一个数组中。存放时按逆 序存放。例如:483 存放成384。#include void convert(char *a, int n) in

21、t i ;if(i=n/10) !=0 )convert( , i );*a = ;char str10= ;main() int number ;scanf(%d, &number);convert( str, number );puts(str);【】下面程序的功能是实现数组元素中值的逆转。#include main() int i,n=10,a10=1,2,3,4,5,6,7,8,9,10 ;invert(a,n-1);for(i=0;i10;i+)printf(%4d,ai);printf(n);invert(int *s,int num) int *t,k ; t=s+num; wh

22、ile( ) k=*s ;*s=*t;*t=k; ; ;【】下面程序通过指向整型的指针将数组a34的内容按3行x 4 列的格式输出,请给 printf( )填入适当的参数,使之通过指针 p 将 数组元素按要求输出。#include int a34=1,2,3,4,5,6,7,8,9,10,11,12, *p=a; main() int i,j ; for(i=0;i3;i+ ) for(j=0 ; j4 ; j+ ) printf(%4d , );【】下面程序的功能是:从键盘上输入一行字符,存入一个字符数 组中,然后输出该字符串。#include main ( ) char str81, *s

23、ptr ;int i;for(i=0;iwp) ;for(i=*n;i=p;i-) ;wp=x;+*n;【】下面程序的功能是从键盘上输入两个字符串,对两个字符串分 别排序;然后将它们合并,合并后的字符串按ASCII码值从小到大 排序,并删去相同的字符。#include strmerge(a, b, c) /* 将已排好序的字符串 a、b 合并到 c */char *a, *b, *c; char t , *w ;w=c;while( *a!= 0 *b!=0 ) t= *a+:*bv*a *b+ :();/* 将*a、*b 的小者存入 t */if( *w 0 ) *w=t;else if(

24、t*w) *+w=t;/*将与水不相同的t存入w */while( *a != 0 ) /*以下将a或b中剩下的字符存入w */if( *a != *w ) *+w=*a+;else a+; while( *b != 0)if( *b != *w ) *+w=*b+;else b+;*+w = ;strsort( char *s ) /* 将字符串 s 中的字符排序 */ int i , j , n ;char t,*w;for( n=0;*w != 0; )w+;for( i=0;in-1;i+ )for( j=i+1;jsj )main( ) char s1100 ,s2100 ,s320

25、0 ; printf(nPlease Input First String:); scanf(%s,s1);printf(nPlease Input Second String:); scanf(%s,s2);strsort(s1);strsort(s2); = 0 ;strmerge(s1,s2,s3); printf(nResult:%s,s3);【】已知某数列前两项为 2 和 3,其后继项根据前面最后两项的乘 积,按下列规则生成: 若乘积为一位数,则该乘积即为数列的后继项; 若乘积为二位数,则该乘积的十位上的数字和个位上的数字依 次作为数列的两个后继项。下面的程序输出该数列的前N项及它们

26、的和,其中,函数sum(n,pa) 返回数列的前 N 项和,并将生成的前 N 项存入首指针为 pa 的数组 中,程序中规定输入的 N 值必须大于 2,且不超过给定的常数值 MAXNUM。例如:若输入N的值为10,则程序输出如下内容:sum(10)=442 3 6 1 8 8 6 4 2 4#include #define MAXNUM 100int sum(n, pa)int n, *pa; int count, total, temp ;*pa = 2; =3 ; total=5; count=2; while( count+n ) temp = *(pa-1) * *pa if( temp

27、10 ) total += temp ; *(+pa) = temp;else = temp/10 ; total += *pa; if( countn ) count + ; pa+ ; = temp%10 ; total += *pa; ;main() int n, *p, *q, numMAXNUM ; do printf(Input N= (2N%d):, MAXNUM+1) ; scanf(%d, &n);while( ); printf(nsum(%d)=%dn, n, sum(n, num) ; for( p=num, q = ; pq; p+ ) printf(%4d, *p)

28、; printf(n);【】下面程序的功能是输入学生的姓名和成绩,然后输出 #include struct stuinf char name20 ; /* 学生姓名 */ int score; /* 学生成绩 */ stu, *p ; main ( ) p=&stu ; printf(Enter name:); gets( ); printf(Enter score: );scanf(%d, );printf(Output: %s, %dn, , );【】下面程序的功能是按学生的姓名查询其成绩排名和平均成绩 查询时可连续进行,直到输入 0 时才结束。 #include #include #de

29、fine NUM 4 struct student int rank ;char *name;float score; ; stu = 3,liming, 4 ,zhanghua, 1 ,anli, 2 ,wangqi,;main() char str10 ; int i ;do printf(Enter a name) ; scanf(%s ,str); for( i=0 ;i=NUM ) printf(Not foundn) ; while( strcmp(str ,0)!=0 );【】下面程序的功能是从终端上输入5个人的年龄、性别和姓名, 然后输出。#include struct man

30、 char name20 ; unsigned age; char sex7; main ( ) struct man person5 ;data_in(person,5);data_out(person,5);data_in(struct man *p, int n ) struct man *q = ;for( ;page, p-sex);data_out( struct man *p, int n ) struct man *q = _ _;for( ;pname, p-age, p-sex);【】输入 N 个整数,储存输入的数及对应的序号,并将输入的数按从小到大的顺序 进行排列。要求:

31、当两个整数相等时,整数的排列顺序由输入的先后次序决定。例 如:输入的第3个整数为5,第7个整数也为5,则将先输入的整数 5排在后输入的 整数 5 的前面。程序如下:#include #define N 10struct int no ;int num; arrayN ;main( ) int i,j, num;for( i=0;i=0&arrayj.num num; ) arrayj+1=arrayj; array .num=num; array .no=i;for( i=0;iN;i+ )printf(%d=%d,%dn,i,arrayi.num,arrayi.no);【】以下程序的功能是:

32、读入一行字符(如:a、.y、z),按输入时的逆序建立一个链 接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输 出,并释放全部结点。#include main( ) struct node char info;struct node *link; *top , *p;char c;top=NULL;while(c= getchar( ) ) p=(struct node *)malloc(sizeof(struct node) ) ;p-info=c;p-link=top;top=p;while( top ); top=top-link; putchar(p-info);

33、 free(p);【】下面函数将指针 p2 所指向的线性链表,串接到 p1 所指向的链表的末端。假定 p1 所指向的链表非空。#define NULL 0struct link float a ;struct link *next; ;concatenate ( p1,p2 )struct list *p1,*p2; if( p1-next=NULL )p1-next=p2;elseconcatenate( ,p2);【】下面程序的功能是从键盘输入一个字符串,然后反序输出输入的字符串#include struct node char data ;struct node *link;*head;

34、main() char ch ;struct node *p;head = NULL;while( ch=getchar()!=n ) p = (struct node *)malloc(sizeof(struct node) ; p-data = ch;p-link = ;head = ;while( p!=NULL ) printf(%c , p-data) ;p = p-link ;【】下面程序的功能是从键盘上顺序输入整数,直到输入的整数小于 0 时才停止输 入。然后反序输出这些整数。#include struct data int x ;struct data *link;*p;inp

35、ut() int num ; struct data *q; printf(Enter data:) scanf(%d, &num) if( numx = num; q-link = p;p=q;main() printf(Enter data until datax) ;【】下面函数的功能是创建一个带有头结点的链表,将头结点返回给主调函数。链表用于储存学生的学号和成绩。新产生的结点总是位于链表的尾部。struct student long num ;int score;struct student *next;struct student *creat() struct student *h

36、ead=NULL,*tail long num; int a;tail= malloc(LEN);do scanf(%ld,%d,&num,&a) ; if(num!=0) if(head=NULL) head=tail ;else ;tail-num=num; tail-score=a; tail-next=(struct student *)malloc(LEN);else tail-next=NULL;while(num!=0);return( );【】下面 create 函数的功能是建立一个带头结点的单向链表,新产生的结点总是插入 在链表的末尾。单向链表的头指针作为函数值返回。#inc

37、lude #define LEN sizeof(struct student)struct student long num ;int score; struct student *next; struct student *creat() struct student *head=NULL,*tail long num;int a;tail=( )malloc(LEN);do scanf(%ld,%d,&num,&a) ; if(num!=0) if(head=NULL) head=tail ; else tail=tail-next; tail-num=num; tail-score=a;

38、 tail-next=( )malloc(LEN);else tail-next=NULL;while(num!=0); ;【】下面程序的功能是统计文件中的字符的个数#include main() long num=0 ; *fp ;if(fp=fopen(, r)=NULL) printf(Cant open the file! ) ;exit(0);while( ) fgetc(fp) ;num+;printf(num=%dn,num);fclose(fp);【】下面程序的功能是把从键盘输入的文件(用 作为文件结束标志)复制到一个 名为的新文件中。#include FILE *fp;mai

39、n() char ch ;if(fp=fopen( )=NULL)exit(0);while(ch=getchar()!=)fputc(ch,fp);【】下面程序的功能是将磁盘上的一个文件复制到另一个文件中,两个文件名在命令 行中给出(假定给定的文件名无误)。#include main(int argc,char *argv) FILE &f1,*f2 ;if(argc ) printf(The command line error! ) ;exit(0);f1=fopen(argv1, r);f2=fopen(arhv2, w);while( )fputs(fgetc(f1), ); ; ;

40、【】下面程序的功能是根据命令行参数分别实现一个正整数的累加或阶乘。例如:如 果可执行文件的文件名是sm,则执行该程序时输入:sm + 10,可以实现10的累 加;输入: sm - 10,可以实现求10的阶乘。#include #include main (int argc,char *argv) int n ;void sum(),mult();void (*funcp)();n=atoi(argv2);if(argc!=3 | n=0)dispform( );switch ( ) case +: funcp=sum ;break;case -: funcp=mult;break;defaul

41、t: dispform( );void sum(int m) int i,s=0 ;for(i=1;im;i+ );printf(sum=%dn,s)void mult(int m) long int i, s=1 ;for(i=1;i0)n) ;exit (0);【】下面程序的功能是键盘上输入一个字符串,把该字符串中的小写字母转换为大写 字母,输出到文件中,然后从该文件读出字符串并显示出来。#include main() char str100 ;int i=0;FILE *fp;if(fp=fopen(, )=NULL) printf(Cant open the file.n) ;exit

42、(0);printf(Input a string:n);gets(str);while(stri) if(stri= a&stri= z)stri= ;fputc(stri,fp);i+;fclose(fp);fp=fopen(, );fgets(str,strlen(str)+1,fp);printf(%sn,str);fclose(fp);【】下面程序的功能是将从终端上读入的 10 个整数以二进制方式写入名为的新文 件中。#include FILE *fp;main() int i, j ;if( fp=fopen( , wb ) = NULL )exit (0);for( i=0;i1

43、0;i+ ) scanf(%d, &j ) ;fwrite( , sizeof(int), 1, );fclose( fp);【】以字符流形式读入一个文件,从文件中检索出六种C语言的关键字,并统计、 输出每种关键字在文件中出现的次数。本程序中规定:单词是一个以空格或t、 n结束的字符串。#include #include FILE *cp;char fname20, buf100;int num;struct key char word10 ;int count;keyword= if, 0, char, 0, int, 0,else, 0, while, 0, return, 0; char

44、 *getword (FILE *fp) int i=0 ;char c;while(c=getc(fp) != EOF & (c= |c=t|c=n) if( c=EOF ) return (NULL) ;else bufi+=c;while(c = & c!= & c!= t & c!= n )bufi+ = c;bufi= 0;return(buf);lookup(char *p) int i ;char *q, *s;for(i=0;inum;i+) q = ;s=p;while( *s & (*s=*q) )if( ) keywordi.count+ ;break;return;ma

45、in() int i ;char *word;printf(Input file name:);scanf(%s, fname);if(cp=fopen(fname, r) =NULL ) printf(File open error: %sn, fname) ;exit(0);num = sizeof(keyword) / sizeof(struct key);while( )lookup(word);fclose(cp);for(i=0;inum;i+)printf(keyword:%-20scount=%dn,keywordi.word,keywordi.count);【】下面程序的功能

46、是从键盘接受姓名(例如:输入ZHANG SAN),在文件中 查找,若文件中已经存入了刚输入的姓名,则显示提示信息;若文件中没有刚输入 的姓名,则将该姓名存入文件。要求:(1)若磁盘文件,已存在,则要保留文件中 原来的信息;若文件”不存在,则在磁盘上建立一个新文件;当输入的姓名为空 时(长度为 0),结束程序。#include main() FILE *fp ;int flag;char name30, data30; if(fp=fopen(, )=NULL ) printf(Open file errorn) ; exit(0);do printf(Enter name:) ;gets(na

47、me);if( strlen(name)=0 )break;strcat(name, n);flag=1;while( flag & (fgets(data, 30, fp) ) )if( strcmp(data, name) = 0 );if( flag ) fputs(name, fp); elseprintf(tData enter error !n); while( ) ;fclose(fp);【】答案: a+b a-b a-b【】答案:(float)(i*i) sqrt(6*s)【】答案:*k=p【】答案:t=t*it=tO-l:l【】答案:d=1k+kv=n【】答案: x=0 x0

48、m=m/10【】答案:i=jk!=i&k!=j【】答案:iv=9j%3!=0【】答案:m=nr!=0return(n)【】答案: float a10,x iv=9 iv=8 jv=9-i ajaj+1 aj=aj+1 iv=9 i%5=0【】答案:&aicontinue注释:是基本概念,使用scanf函数输入数组元素的值。当输入的元素值小于0时,应当跳过后面的语句,取下一个数,所以要填入continue。【】答案: sj+=si sj=si【】答案:sj+=si【】答案:xi+【】答案: i=strlen(a); i=j; i- ai+1=ai【】答案:0 strli-str2i【】答案:j+

49、j+j+0【】答案: tk!= 0 tk= 0【】答案: 时,则要继续迭代,因此处应当填写 a,x1。程序中调用了求绝对值的库函数fabs()。【】答案:2+age(n-1)age(5)注释:由于程序是递归算法,因此首先要建立问题的递归数学模型。根据原题的描 述可以写出如下递归公式:age(n) = 10 (n=1)age(n) = 2+age(n-1) (n1)对照程序和递归公式可以看出:n的含义是第n位学生。很显然,要求第5位学生的 年龄,处应当是调用函数age,实参的值应当是5。在处应该是函数的递归调用,根据递归公式,应当填写:2+age(n-l)。【】 答案: return(l) return (sum(n-l)+n)注释:按照常规的编程方法,此问题可采用一个循环语句实现。阅读程序,没有发 现循环语句,这时,应当认为原来的编程者使用的是非常规的算法。对于这样常规 算法需要用循环实现而没有使用循环的程序,就可以肯定地认为,一定是使用了递 归算法。将问题求1n的累加和的公式写成递归定义,可以是如下形式;sum(n)=l 当 n=l 时sum(n)=

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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