资源描述
第四十一套
一、程序填空题
下列给定程序中,函数fun的功能是:将形参s所指字符串中的所有字母字符顺序前移,其它字符顺序后移,处理后将新字符串的首地址作为函数值返回。
例如,若s所指字符串为:"asd123fgh543df",处理后新字符串为:"asdfghdf123543"。
【参考答案】
(1) s[i] (2) k (3) '\0'或0
二、程序改错题
下列给定程序中函数fun的功能是:将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在w所指的数组中。要求t1和t2所指字符串的长度相同。
例如,当s所指字符串中的内容为:"abcdabfabc",t1所指串中的内容为"ab",t2所指子串中的内容为"99"时,结果在w所指的数组中的内容应为"abcdabf99c"。
【参考答案】
(1)while (*w)
(2)if ( *r ==*p )
第四十二套
一、程序填空题
给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。
【参考答案】
(1)FILE*(2)fclose(fp)(3)fp
二、程序改错题
下列给定程序中,函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生的数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
【参考答案】
(1)t=calloc(m,sizeof(STU));
(2)t[k]=b[j];
第四十三套
一、程序填空题
下列给定程序中,函数fun的功能是:计算N×N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。要求先累加主对角线元素中的值,再累加反向对角线元素中的值。
例如,若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9
首先累加1、5、9,然后累加3、5、7,函数返回值为30。
【参考答案】
(1) sum=0 (2) t[i][i] (3) 1
二、程序改错题
下列给定程序中函数fun和funx的功能是:用二分法求方程的一个根,并要求绝对误差不超过0.001。
例如,若给m输入-100,n输入90,则函数求得的一个根为2.000。
请改正程序中的错误,使它能得出正确的结果。
【参考答案】
(1)double r ;
(2)while (fabs(n-m) >0.001)
第四十四套
一、程序填空题
下列给定程序中,函数fun的功能是:找出100到x(x≤999)之间各位上的数字之和为15的所有整数,并在屏幕输出;将符合条件的整数的个数作为函数值返回。
例如,当n值为500时,各位数位之和为15的整数有:159、168、177、186、195、249、258、267、276、285、294、339、348、357、366、375、384、393、429、438、447、456、465、474、483、492。共有26个。
【参考答案】
(1) 0 (2) x (3) t++
二、程序改错题
下列给定程序中函数fun的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串之后。
例如:当s所指的字符串为"ABCDE"时,t所指的字符串应为"EDCBAABCDE"。
【参考答案】
(1)int i, sl;
(2)t[i]=s[sl-i-1];
第四十五套
一、程序填空题
下列给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串中后面的字符删除,只保留前面的k个字符。ss所指字符串数组中共有N个字符串,且串长小于M。
【参考答案】
(1) [M] (2) N (3)'\0'
二、程序改错题
下列给定程序中函数fun的功能是:根据以下公式求π值,并作为函数值返回。
例如,当给指定精度的变量eps输入0.0005时,应输出Pi=3.140578。
π/2=1+1/3+1/3×2/5+1/3×2/5×3/7+1/3×2/5×3/7×4/9+……
【参考答案】
(1)t=1.0;
(2)return(s*2);
第四十六套
一、程序填空题
下列给定程序中,函数fun的功能是:将自然数1~10及其平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。
【参考答案】
(1) fp (2) fclose(fp)
(3) fname
二、程序改错题
下列给定程序中fun函数功能是:将n个无序整数从小到大排序。
【参考答案】
(1)for(i=j+1;i<n;i++)
(2)p=i;
第四十七套
一、程序填空题
下列给定程序中,函数fun的功能是:将形参n所指变数中,各位上为偶数的数去掉,剩余的数按原来从高位到低位元的顺序组成一个新数,并通过形参指标n传回所指变量。
例如,若输入一个数27638496,则新数为739。
【参考答案】
(1) 10 (2) 0 (3) x
二、程序改错题
下列给定程序中函数fun的功能是:计算n!。
例如,给n输入5,则输出120.000000。
【参考答案】
(1)if( n==0)
(2)result *=n--;或{result *=n; n--;}
第四十八套
一、程序填空题
下列给定程序中,函数fun的功能是:将N×N矩阵中元素的值按列向右移动1个位置,右边被移出矩阵的元素绕回左边第1列。
例如,N=3,有下列矩阵
1 2 3
4 5 6
7 8 9
计算结果为
3 1 2
6 4 5
9 7 8
【参考答案】
(1) N (2) N-1 (3) 0
二、程序改错题
下列给定程序中函数fun的功能是:计算并输出下列级数的前N项和SN,直到SN+1的值大于q为止,q的值通过形参传入。
例如,若q的值为50.0,则函数值应为49.394948。
【参考答案】
(1)s=s +(double)(n+1)/n;
(2)return t;
第四十九套
一、程序填空题
下列给定程序中,函数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) a[] (2) 2 (3) i+1
二、程序改错题
下列程序中函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,则多余部分忽略不计。
例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。
【参考答案】
(1)sum=0.0;
(2)if((i+1)%5==0)
第五十套
一、程序填空题
下列给定程序中,函数fun的功能是:在带头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。
【参考答案】
(1) NULL (2) n
(3) head,ch
二、程序改错题
下列给定程序中函数fun的功能是:删除指针p所指字符串中的所有空格符(包括制表符、回车符及换行符)。
输入字符串时用'#'结束输入。
【参考答案】
(1)for(i=0,t=0;p[i];i++)
(2)c[t]= '\0';
第五十一套
一、程序填空题
下列给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位元的顺序组成一个新数,作为函数值返回。
例如,从主函数输入一个整数27638496,则函数返回值为26846。
【参考答案】
(1) 1 (2) s>0 (3) i*10
二、程序改错题
下列给定程序中函数fun的功能是:输出M×M整数方阵,然后求两条对角在线元素之和,并作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
【参考答案】
(1)int fun(int n,int xx[][M])
(2)printf("%d",xx[i][j]);
第五十二套
一、程序填空题
下列给定程序中,函数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
二、程序改错题
下列给定程序中函数fun的功能是:按以下递归公式求函数的值。
例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。
【参考答案】
(1)int fun (int n)
(2)if (n==1)
第五十三套
一、程序填空题
下列给定程序中,函数fun的功能是:统计带头结点的单向链表中结点的个数,并存放在形参n所指的存储单元中。
【参考答案】
(1) *n (2) next (3) head
二、程序改错题
下列给定程序中函数fun的功能是:求出s所指字符串中最后一次出现的t所指字符串的地址,并通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。
例如,当字符串中的内容为"abcdabfabcdx",t中内容为"ab"时,输出结果应是"abcdx"。
当字符串中的内容为"abcdabfabcdx",t中内容为"abd"时,则程序输出未找到信息"not be found!"。
【参考答案】
(1)a=NULL; (2)if(*r==*p)
第五十四套
一、程序填空题
下列给定程序的功能是调用fun函数建立班级通讯簿。通讯簿中记录每位学生的编号、姓名和电话号码。班级人数和学生信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。
【参考答案】
(1) STYPE (2) FILE (3) fp
二、程序改错题
下列给定程序中,函数fun的功能是:先将字符串s中的字符按正序存放到字符串t中,然后把s中的字符按逆序连接到字符串t的后面。
例如,当s中的字符串为"ABCDE"时,则t中的字符串应为"ABCDEEDCBA"。
【参考答案】
(1)for ( i=0; i<sl;i++)
(2)t[2*s1]='\0'
第五十五套
一、程序填空题
程序通过定义学生结构体数组,存储若干名学生的学号、姓名和三门课的成绩。函数fun的功能是:将存放学生数据的结构体数组,按姓名的字典序(从小到大)排序。
【参考答案】
(1) struct student (2) n-1
(3) a[i].name,a[j].name
二、程序改错题
下列给定程序中函数fun的功能是:从p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。
例如,调用fun函数之前给字符串输入"ABCDeFGH",调用后字符串中的内容应为"eABCDFGH"。
【参考答案】
(1)q=p+i;
(2)while(q>p)
第五十六套
一、程序填空题
人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。函数fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。
【参考答案】
(1) STU (2) std[i].num
(3) std[i]
二、程序改错题
下列给定程序中,函数fun的功能是:从s所指字符串中,找出t所指字符串的个数作为函数值返回。例如,当s所指字符串中的内容为"abcdabfab",t所指字符串的内容为"ab",则函数返回整数3。
【参考答案】
(1)if(*r==*p) {r++;p++; }
(2)if(*r=='\0')
第五十七套
一、程序填空题
人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。函数fun的功能是:找出指定出生年份的人员,将其资料放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。
【参考答案】
(1)std[i].year (2)std[i]
(3)n
二、程序改错题
下列给定程序的功能是:读入一个整数k(2≤k≤10000),输出它的所有质因子(即所有为素数的因子)。例如,若输入整数2310,则应输出:2,3,5,7,11。
【参考答案】
(1)IsPrime(int n) (2)if(!(n%i))
第五十八套
一、程序填空题
给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系数a。
【参考答案】
(1)STU (2)score[i] (3)&std
二、程序改错题
下列给定程序中,函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。例如,若k=10,则应输出3628800。
【参考答案】
if(k>1)
第五十九套
一、程序填空题
给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。
【参考答案】
(1)std[] (2)PERSON (3)std
二、程序改错题
下列给定程序中函数fun的功能是:将m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指存储区中。例如:把三个串"abc"、"CD"、"EF"连接起来,结果是"abcCDEF"。
【参考答案】
(1)int k, q, i;
(2)pt[i] = str[k][i];
第六十套
一、程序填空题
给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。
【参考答案】
(1)std[0] (2)std[i].age (3)max.name
二、程序改错题
下列给定程序中,函数fun的功能是:实现两个整数的交换。例如,给a和b分别输入60和65,输出为:a=65 b=60。
【参考答案】
(1)void fun(int *a,int *b)
(2)t=*b; *b=*a; *a=t;
三、程序设计题
规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:使字符串的前导*号不得多于n个,若多于n个,则删除多余的*号;若少于或等n个,则不做处理,字符串中间和尾部的*号不删除。
例如,字符串中的内容为:*******A*BC*DEF*G***,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G***;若n的值为8,则字符串中的内容仍为:*******A*BC*DEF*G****。n的值在主函数中输入。在编写函数时,
【参考答案】
void fun( char *a, int n )
{int i=0;
int k=0;
char *p,*t;
p=t=a;
while(*t=='*')
{k++;t++;}
if(k>n)
{ while(*p)
{ a[i]=*(p+k-n);
i++; p++;
}
a[i]='\0';
}
}
三、程序设计题
函数fun的功能是:将a、b的两个两位正整数合并成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上。
例如,当a=45,b=12,调用该函数后c=1425。
【参考答案】
void fun(int a, int b, long *c)
{
*c=a%10+(b%10)*10+(a/10)*100
+(b/10)*1000;
}
三、程序设计题
规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:除了字符串前导和尾部的*号外,将串中其它的*号全部删除。形参h已指向字符串中第一个字母,形参p指向字符串的中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。
例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****ABCDEFG********。
【参考答案】
void fun( char *a, char *h,char *p )
{ int i=0;
char *q=a;
while(q<h)
{ a[i]=*q; q++;i++;}
while(q<p)
{ if(*q!='*')
{ a[i]=*q; i++; }
q++;
}
while(*q)
{ a[i]=*q; i++; q++;}
a[i]='\0';
}
三、程序设计题
请编写函数fun,该函数的功能是:删除一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,若一维数组中的数据是:
2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10
删除后,数组中的内容应该是:
2 3 4 5 6 7 8 9 10。
【参考答案】
int fun(int a[], int n)
{
int i,j=1;
for(i=1;i<n;i++)
if(a[j-1]!=a[i])
a[j++]=a[i];
return j;
}
三、程序设计题
编写函数fun,其功能是:将s所指字符串中ASCII值为奇数的字符删除,剩余字符形成的新串放在t所指数组中。
例如,若s所指字符串中的内容为:"ABCDEFG12345",其中字符A的ASCII码值为奇数,字符1的ASCII码值也为奇数,都应当删除,其它依此类推。最后t所指的数组中的内容应是:"BDF24"。
【参考答案】
void fun(char *s, char t[])
{
int i,j=0,n;
n=strlen(s);
for(i=0;i<n;i++)
if(s[i]%2==0)
{ t[j]=s[i];
j++;
}
t[j]='\0';
}
三、程序设计题
编写函数fun,其功能是:将ss所指字符串中所有下标为奇数位元上的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入"abc4EFg",则应输出"aBc4EFg"。
【参考答案】
void fun ( char *ss )
{
int i;
for(i=0;ss[i]!='\0';i++)
if(i%2==1&&ss[i]>='a'&&ss[i]<='z')
ss[i]=ss[i]-32;
}
【参考答案】
(1)sum=0.0;
(2)if((i+1)%5==0)
三、程序设计题
学生的记录由学号和成绩组成,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<N;i++)
av=av+a[i].s;
av=av/N;
for(i=0;i<N;i++)
if(a[i].s<av) b[j++]=a[i];
*n=j;
return av;
}
三、程序设计题
编写函数fun,其功能是:求Fibonacci数列中大于t的最小的数,结果由函数返回。Fibonacci数列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 < t) ;
return f ;
}
三、程序设计题
请编写函数fun,其功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串"-1234",则函数把它转换为整数值-1234。
【参考答案】
long fun ( char *p)
{
long n=0;
int flag=1;
if(*p=='-')
{p++;flag= -1;}
else if(*p=='+')
p++;
while(*p!='\0')
{n=n*10+*p-'0';
p++;
}
return n*flag;
}
三、程序设计题
编写函数fun,其功能是:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。
例如,当a=45,b=12时,调用该函数后c=2514。
【参考答案】
void fun(int a, int b, long *c)
{
*c=a/10+(b/10)*10+(a%10)*100
+(b%10)*1000;
}
三、程序设计题
学生的记录由学号和成绩组成,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<N;i++)
if(a[i].s>=l&&a[i].s<=h)
b[j++]=a[i];
return j;
}
三、程序设计题
函数fun的功能是:将两个两位数的正整数 a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,b=12时,调用该函数后c=4152。
【参考答案】
void fun(int a, int b, long *c)
{ *c=b%10+(a%10)*10+(b/10)*100
+(a/10)*1000;
}
三、程序设计题
编写函数fun,其功能是:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,b=12时,调用该函数后,c =5142。
【参考答案】
void fun(int a, int b, long *c)
{
*c=b%10+(a/10)*10+(b/10)*100
+(a%10)*1000;
}
三、程序设计题
规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:使字符串中尾部的*号不多于n个,若多于n个,则删除多余的*号;若少于或等于n个,则不做任何操作,字符串中间和前面的*号不删除。
例如,字符串中的内容为"****A*BC*DEF*G*******",若n的值为4,删除后,字符串中的内容应为"****A*BC*DEF*G****";若n的值为7,则字符串中的内容仍为"****A*BC*DEF*G*******"。
【参考答案】
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<t+n+1)
{ a[i]=*p; i++;p++; }
a[i]='\0';
}
}
三、程序设计题
编写函数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)*10+
(b%10)*100+(a/10)*1000;
}
三、程序设计题
请编一个函数void fun(int tt[M][N], int pp[N]), tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。
【参考答案】
void fun(int tt[M][N],int pp[N])
{
int i,j,max;
for(j=0;j<N;j++)
{
max=tt[0][j];
for(i=0;i<M;i++)
if(tt[i][j]>max)
max=tt[i][j];
pp[j]=max;
}
}
三、程序设计题
下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),该函数的功能是:将数组左下半三角元素中的值全部置成0。例如a数组中的值为:
1 9 7
2 3 8
4 5 6
则返回主程序后a数组中的值应为:
0 9 7
0 0 8
0 0 0
【参考答案】
void fun (int a[][N])
{
int i,j;
for(i=0;i<N;i++)
for(j=0;j<=i;j++)
a[i][j]=0;
}
三、程序设计题
程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N],int n),该函数的功能是:使数组左下半三角元素中的值乘以n。例如,若n的值为3,a数组中的值为:
则返回主程序后a数组中的值应为:
【参考答案】
void fun(int a[ ][N], int n)
{
int i,j;
for(i=0;i<N;i++)
for(j=0;j<=i;j++)
a[i][j]=a[i][j]*n;
}
三、程序设计题
已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。
【参考答案】
fun(STU a[], STU *s)
{
int i;
*s=a[0];
for(i=0;i<N;i++)
if(s->s<a[i].s)
*s=a[i];
}
三、程序设计题
请编写函数fun,该函数的功能是:将s所指字符串中ASCII码值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为"ABCDEFG12345",其中字符B的ASCII码值为偶数,字符2的ASCII码值为偶数,都应当删除,其它依此类推。最后t所指的数组中的内容应是"ACEG135"。
【参考答案】
void fun(char *s, char t[])
{
int i=0;
for(;*s!='\0';s++)
if(*s%2==1)
t[i++]=*s;
t[i]='\0';
}
展开阅读全文