数列F(n)的定义为: F(0)=0,F(1)=1
F(n)=F(n-1)+F(n-2)
例如,当t=1000时,函数值为1597
int fun(int t) {
int f0=0, f1=1,f; do{
f=f0+f1; f0=f1; f1=f; }while(f 四十就套 1.下列给定程序中,函数fun的功能是:把形参a所指数组中的最大值放在a[0]中,接着求出a所指数组中的最小值放在a[1]中,再把a所指数组元素中的次大值放在a[2]中,把a数组元素中的次小值放在a[3]中,以此类推。例如,若a所指数组中的数据最初排列为:1、4、2、3、9、6、5、8、7,按规则移动后,数据排列为:9、1、8、2、7、3、6、4、5。形参n中存放a所指数组中数据的个数。 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 (1) int a[] (2) 2 (3) i+1 2.下列程序中函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,则多余部分忽略不计。 例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。 请改正程序的错误,使它能得出正确结果。 (1)sum=0.0; (2)if((i+1)%5==0) 3.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun ,其功能是:把低于平均分的学生数据放入b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。 double fun(STREC *a, STREC *b, int *n) { int i,j=0; double av=0.0; for(i=0;i av=av/N; /*求平均值*/ for(i=0;i if(a[i].s *n=j; /*指针传回低于平均值的学生人数*/ return av; /*返回平均值*/ } 五十套 1.下列给定程序中,函数fun的功能是:在带头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 (1) NULL (2) n (3) head,ch 2.下列给定程序中函数fun的功能是:删除指针p所指字符串中的所有空白字符(包括制表符、回车符及换行符)。 输入字符串时用'#'结束输入。 请改正程序中的错误,使它能输出正确的结果。 1)for(i=0,t=0;p[i];i++) (2)c[t]= ′\\0′; 3.编写函数fun,其功能是:将ss所指字符串中所有奇数位上的字母转换为大写(若该位置上不是字母,则不转换)。 例如,若输入\,则应输出\。 void fun(char *ss) { int i; for(i=0;ss[i]!=′\\0′;i++) /*将ss所指字符串中所有下标为奇数位置的字母转换为大写*/ if(i%2==1&&ss[i]>=′a′&&ss[i]<=′z′) ss[i]=ss[i]-32; } 五十一套 1.下列给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位的顺序组成一个新数,作为函数值返回。 例如,从主函数输入一个整数27638496,则函数返回值为26846。 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 (1) 1 (2) s (3) i*10 2.下列给定程序中函数fun的功能是:输出M×M整数方阵,然后求两条对角线上元素之和,并作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。 (1)int fun(int n,int xx[][M]) (2)printf(\,xx[i][j]); 3.编写函数fun,其功能是:将a、b中的两个两位数正整数合并成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次在变量c的个位和百位上。 例如,当a=45,b=12,调用该函数后c=4251 void fun(int a,int b,long *c) { *c=b/10+(a)*10+(b)*100+(a/10)*1000; } 五十二套 1.下列给定程序中,函数fun的功能是:把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把奇数从数组中删除,偶数的个数通过函数值返回。 例如,若a所指数组中的数据最初排列列为:9、1、4、2、3、6、5、8、7,删除奇数后a所指数组中的数据为:4、2、6、8,返回值为4。 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 (1) a[i]%2 (2) a[j] (3) j 2.下列给定程序中函数fun的功能是:按以下递归公式求函数的值。 10 (n=1) fun(n)= fun(n-1)+2 (n>1) 例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。 请改正程序中的错误,使它能得出正确结果。 (1)int fun (int n) (2)if (n==1) 3.规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:使字符串中尾部的*号不多于n个,若多于n个,则删除多余的*号;若少于或等于n个,则不做任何操作,字符串中间和前面的*号不删除。 例如,字符串中的内容为:****A*BC*DEF*G*******,若n的值为4,删除后,字符串中的内容应为:****A*BC*DEF*G****;若n的值为7,则字符串中的内容仍为:****A*BC*DEF*G*******。n的值在主函数中输入。编写函数时,不得使用C语言提供的字符串函数。 void fun( char *a,int n ) { int i=0,k=0; char *p, *t; p=t=a; while(*t) t++; t--; while(*t==′*′) {k++;t--;} if(k>n) {while(*p&&p i++;p++; } a[i]=′\\0′; } } 五十三套 1.下列给定程序中,函数fun的功能是:统计带头结点的单向链表中结点的个数,并存放在形参n所指的存储单元中。 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 (1) *n (2) next (3) head 2.下列给定程序中函数fun的功能是:求出s所指字符串中最后一次出现的t所指字符串的地址,并通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。 例如,当字符串中的内容为:\,t中内容为:\时,输出结果应是:abcdx。 当字符串中的内容为:\,t中内容为:\时,则程序输出未找到信息:not be found!。 请改正程序中的错误,使它能得出正确的结果。 (1)a=NULL; (2)if(*r==*p) 3.函数fun的功能是:将s所指字符串中除下标为偶数同时ASCII码值也为偶数的字符外,其余的全部删除;字符串中剩余字符所形成的新串放在t所指的数组中。 例如,若s所指字符串中的内容为:\,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;字符2的ASCII码值为偶数,但在数组中的下标为奇数,因此不应当删除,其它依此类推。最后t所指的数组中的内容应是\。 void fun(char*s, char t[]) { int i,j=0; for(i=0;s[i]!=′\\0′;i++) if(i%2==0&&s[i]%2==0) /*将s所指字符串中下标和ASCII码值都为偶数的字符放入数组t中*/ t[j++]=s[i]; t[j]=′\\0′ /*在字符串最后加上结束标识*/ } 五十四套 1.下列给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码。班级人数和学生信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 (1) STYPE (2) FILE (3) fp 2.下列下列给定程序中,函数fun的功能是:先将字符串s中的字符按正序存放到字符串t中,然后把s中的字符按逆序连接到字符串t的后面。 例如,当s中的字符串为\时,则t中的字符串应为:\。 请改正程序中的错误,使它能得出正确的结果。 (1)for ( i=0; i 3.函数fun的功能是:将两个两位数的正整数 a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。 例如,当a=45,b=12时,调用该函数后c=4152。 void fun(int a,int b,long *c) { *c=b+(a)*10+(b/10)*100+(a/10)*1000; } 五十五套 1.程序通过定义学生结构体数组,存储若干名学生的学号、姓名和3门课的成绩。函数fun的功能是:将存放学生数据的结构体数组,按姓名的字典序(从小到大)排序。 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 (1) struct student (2) n-1 (3) a[i].name,a[j].name 2.下列给定程序中函数fun的功能是:从p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。 例如,调用fun函数之前给字符串输入:ABCDeFGH,调用后字符串中的内容应为:eABCDFGH。 请改正程序中的错误,使它能得出正确的结果 (1)q=p+i; (2)while(q>p) 3.学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。 例如,输入的分数是60 69,则应当把分数在60~69的学生数据输出,包含60分和69分的学生数据。主函数中把60放在low中,把69放在heigh中。 int fun (STREC *a, STREC *b, int l, int h ) { int i,j=0; for(i=0;i if(a[i].s>=l&&a[i].s<=h) /*将分数高于l,低于h的学生记录存于结构体数组b中*/ b[j++]=a[i]; return j; /*返回分数范围内的学生人数*/