09杨二级C上机题库Word文档下载推荐.docx
《09杨二级C上机题库Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《09杨二级C上机题库Word文档下载推荐.docx(78页珍藏版)》请在冰豆网上搜索。
{ s1=s1*n/(2*n+1);
s=s+s1;
n++;
}
Return2*s
3◆◆◆◆◆◆◆◆◆◆◆◆◆◆
【填空】给定程序中函数fun的功能是:
统计形参s所指的字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。
例如,若形参s所指的字符串为abcdef35adgh3kjsdf7,则输出结果为4。
【答案】【1】s[i]【2】'
9'
【3】*t=n
实现两个变量值的交换,规定不允许增加语句和表达式。
例如,变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。
【答案】【1】t=*x;
*x=y;
【2】return(t);
求出1到1000之间能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。
inti,j=0;
for(i=1;
=1000;
i++)
if((i%7==0||i%11==0)&
&
i%77!
=0)
a[j++]=i;
*n=j;
4◆◆◆◆◆◆◆◆◆◆◆◆◆◆
把形参a所指数组中的奇数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把偶数从数组中删除,奇数个数通过函数值返回。
例如:
若a所指数组中的数据最初排列为:
9、1、4、2、3、6、5、8、7,删除偶数后a所指数组中的数据为:
9、1、3、5、7,返回值为5。
【答案】【1】1【2】j++【3】j
求两个非零正整数的最大公约数,并作为函数值返回。
例如,若num1和num2分别为49和21,则输出的最大公约数为7;
若num1和num2分别为27和81,则输出的最大公约数为27。
【答案】【1】t=a;
a=b;
b=t;
【2】return(b);
【编程】规定输入的字符串中只包含字母和*号。
编写函数fun,其功能是:
删除字符串中所有的*号。
编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:
****A*BC*DEF*G*******,删除后字符串中的内容应当是:
ABCDEFG。
a[i]!
=′\0′;
if(a[i]!
=′*′)
a[j++]=a[i];
a[j]=′\0′;
5◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新数,作为函数值返回。
例如,输入一个整数27638496,函数返回值为64862。
【答案】【1】0【2】10*x【3】n/10
将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。
高位仍在高位,低位仍在低位。
例如,当s中的数为87653142时,t中的数为7531。
【答案】【1】*t=0;
【2】if(d%2!
=0)
实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串的后面。
例如,分别输入下面两个字符串:
FirstString—SecondString程序输出:
FirstString--SecondString
inti,j;
p1[i]!
i++);
p2[j]!
p1[i++]=p2[j];
p1[i]=′\0′;
6◆◆◆◆◆◆◆◆◆◆◆◆◆◆
【填空】下列给定程序中函数fun的功能是:
把形参a所指数组中的最小值放在元素a[0]中,接着把a所指数组中的最大值放在a[1]元素中;
再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3],以此类推。
例如,若a所指数组中的数据最初排列为:
9、1、4、2、3、6、5、8、7;
则按规则移动后,数据排列为:
1、9、2、8、3、7、4、6、5。
形参n中存放a所指数组中数据的个数。
规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。
【1】a[i]【2】a[j]【3】a[j]
用递归算法计算斐波拉契数列中第n项的值。
从第1项起,斐波拉契数列为:
1、1、2、3、5、8、13、21、……。
例如,若给n输入7,则该项的斐波拉契数值为13。
【答案】【1】去掉分号
【2】case1:
case2:
return1;
【编程】某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:
求出该学生的平均分,并放入记录的ave成员中。
例如,学生的成绩85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。
inti;
a->
ave=0.0;
N;
ave=a->
ave+a->
s[i];
7◆◆◆◆◆◆◆◆◆◆◆◆◆◆
【填空】下列给定程序中函数fun的功能是进行数字字符转换。
若形参ch中是数字字符'
0'
~'
,则将'
转换成'
,'
1'
8'
2'
7'
,……,'
;
若是其它字符则保持不变;
并将转换后的结果作为函数值返回。
【答案】【1】char
【2】ch<
='
【3】'
将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。
例如,若给a输入字符串:
ABCDEFGKHIJK,调用函数后,字符数组b中的内容为:
ABC DEF GHI JK。
【答案】【1】b[k]=*p;
【2】b[k]=′′;
k++;
【编程】N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。
请编写函数fun,其功能是:
求出平均分,并由函数值返回。
例如,若学生的成绩是:
85 76 69 85 91 72 64 87,则平均分应当是:
78.625。
doubleav=0.0;
STREC*p=h->
next;
while(p!
=NULL)
{ av=av+p->
s;
p=p->
returnave/N;
8◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指的变量中。
ss所指字符串数组中共有M个字符串,且串长小于N。
【答案】【1】M 【2】<
【3】k
将tt所指字符串中的小写字母全部改为对应的大写字母,其它字符不变。
例如,若输入"
Ab,cD"
,则输出"
AB,CD"
。
【答案】
【1】if((tt[i]>
=′a′)&
(tt[i]<
=′z′)
【2】tt[i]-=32;
将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回。
例如,若输入17,则应输出:
4 6 8 9 10 12 14 15 16。
inti,j,n=0;
for(i=4;
m;
{ for(j=2;
i;
if(i%j==0)break;
if(j<
i)xx[n++]=i;
*k=n;
9◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的次序。
例如,s所指的字符串为def35adh3kjsdf7,执行后结果为defadhajsdf3537。
【答案】【1】j++【2】s[i]=t1[i]
【3】j
用冒泡法对6个字符串由小到进行升序排列。
【1】for(j=i+1;
j<
6;
j++)
【2】*(pstr+i)=*(pstr+j);
求ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串123412132,输入字符为1,则输出3。
inti=0;
for(;
*ss!
ss++)
if(*ss==c)
i++;
returni;
10◆◆◆◆◆◆◆◆◆◆◆◆◆◆
【填空】下列给定程序中已建立一个带头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。
函数fun的功能是:
把形参x的值放入一个新结点并插入链表中,使插入后各结点数据域中的数据仍保持递增有序。
【答案】【1】x【2】p【3】s
计算正整数num各位上的数字之积。
例如,若输入252,则输出应该是20。
若输入202,则输出应该是0。
【答案】【1】longk=1;
【2】num/=10;
计算n门课程的平均分,结果作为函数值返回。
若有5门课程的成绩是:
90.5,72,80,61.5,55,则函数的值为:
71.80。
floatav=0.0;
n;
av=av+a[i];
return(av/n);
11◆◆◆◆◆◆◆◆◆◆◆◆◆◆
将形参a所指数组中的前半部分元素中的值与后半部分元素中的值对换。
形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。
若a所指数组中的数据为:
1、2、3、4、5、6、7、8、9,则调换后为:
6、7、8、9、5、1、2、3、4。
【答案】【1】1【2】i【3】a[p+i]
把从主函数中输入的3个数,最大的数放在a中,中间的数放在b中,最小的数放在c中。
例如,若输入的数为:
55 12 34,输出的结果应当是:
a=55.0,b=34.0,c=12.0。
【答案】【1】floatk;
【2】if(*a<
*c)
【编程】学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:
把分数最高的学生数据放在b所指的数组中。
注意:
分数最高的学生可能不止一个,函数返回分数最高的学生的人数。
inti,j=0,max=a[0].s;
if(max<
a[i].s)max=a[i].s;
if(max==a[i].s)b[j++]=a[i];
returnj;
12◆◆◆◆◆◆◆◆◆◆◆◆◆◆
从形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回剩余字符串的个数。
ss所指字符串数组中共有N个字符串,且串长小于M。
【答案】【1】N【2】k【3】ss[i]
逐个比较p、q所指两个字符串对应位置上的字符,并把ASCII值大或相等的字符依次存放到c所指的数组中,形成一个新的字符串。
例如,若主函数中a字符串为aBCDeFgH,b字符串为ABcd,则c中的字符串应为aBcdeFgH。
【答案】【1】intk=0;
【2】while(*p||*q)
除了字符串前导的*号之外,将串中其它*号全部删除。
在编写函数时,不得使用C语言提供的字符串函数。
****A*BC*DEF*G*******,删除后,字符串中的内容应当是:
****ABCDEFG。
char*p=a;
while(*p&
*p==′*′)
{
a[i]=*p;
p++;
while(*p)
if(*p!
=′*′)
a[i]=*p;
a[i]=′\0′;
13◆◆◆◆◆◆◆◆◆◆◆◆◆◆
把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:
字符串的长度大于等于2)。
例如,形参s所指字符串为abcdefgh,执行结果为ahcbedgf。
【答案】【1】1【1】s[k]【1】c
【改错】下列给定程序中fun函数的功能是:
求表达式s=aa…aa-…-aaa-aa-a(此处aa…aa表示n个a,a和n的值在1至9之间)例如,a=3,n=6,则以上表达式为:
s=333333-33333-3333-333-33-3其值是296298。
a和n是fun函数的形参,表达式的值作为函数值传回main函数。
【1】longs=0,t=0;
【1】t=t/10;
【编程】编写函数voidfun(char*tt,intpp[]),统计在tt所指的字符串中'
a'
到'
z'
26个小写字母各自出现的次数,并依次放在pp所指的数组中。
例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:
33322110000000000000000000
26;
pp[i]=0;
if(*tt>
=′a′&
*tt<
=′z′)
pp[*tt-′a′]++;
14◆◆◆◆◆◆◆◆◆◆◆◆◆◆
在形参ss所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置(即下标值),若未找到则返回-1。
ss所指字符串数组中共有N个内容不同的字符串,且串长小于M。
【答案】【1】N【2】i【3】-1
从整数10到55之间,查找能被3整除且有一位上的数值是5的数,把这些数放在b所指的数组中,这些数的个数作为函数值返回。
规定函数中al放个位数,a2放十位数。
【1】a2=k/10;
【2】return(i);
将字符串尾部的*号全部删除,前面和中间的*号不动。
****A*BC*DEF*G。
while(*a!
=′\0′)
a++;
a--;
while(*a==′*′)
*(a+1)=′\0′;
15◆◆◆◆◆◆◆◆◆◆◆◆◆◆
【填空】下列给定程序中已建立了一个带头结点的单向链表,在main函数中将多次调用fun函数,每调用一次,输出链表尾部结点中的数据,并释放该结点,使链表缩短。
【1】next【2】t->
data 【3】t
将字符串中的字符逆序输出,但不改变字符串中的内容。
例如,若字符串为abcd,则应输出:
dcba。
【答案】【1】voidfun(char*a)
【2】printf("
%c"
,*a);
比较字符串的长度,(不得使用C语言提供的求字符串长度的函数),函数返回较长的字符串。
若两个字符长度相同,则返回第一个字符串。
例如,输入beijing<
CR>
shanghai<
(<
为回车键),函数将返回shanghai。
s[i]!
=′\0′;
t[j]!
j++);
if(i>
=j)
returns;
else
returnt;
16◆◆◆◆◆◆◆◆◆◆◆◆◆◆
逆置数组元素中的值。
1、2、3、4、5、6、7、8、9,则逆置后依次为:
9、8、7、6、5、4、3、2、1。
形参n给出数组中数据的个数。
【答案】【1】n/2【2】i【3】a[n-i-1]
将一个由八进制数字字符组成的字符串转换成与其面值相等的十进制整数。
规定输入的字符串最多只能包含5位八进制数字字符。
例如,若输入77777,则输出32767。
【答案】【1】n=*p-′0′;
【2】n=n*8+*p-′0′;
【编程】学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:
函数返回该学号的学生数据,指定的学号在主函数中输入。
若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。
(用于字符串比较的函数是strcmp)。
STRECstr={"
\0"
,-1};
if(strcmp(a[i].num,b)==0)
str=a[i];
returnstr;
17◆◆◆◆◆◆◆◆◆◆◆◆◆◆
【填空】下列给定程序的功能是:
调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回1,失败时返回0。
在复制的过程中,把复制的内容输出到屏幕。
主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。
【答案】【1】"
r"
【2】fs 【3】ft
将长整型数中各位上为偶数的数依次取出,构成一个新数放在t中。
例如,当s中的数为87653142时,t中的数:
8642。
【答案】【1】if(d%2==0)
【2】s/=10;
【编程】函数fun的功能是:
将s所指字符串中除下标为偶数同时ASCII码值也为偶数的字符外,其余的全部删除;
字符串中剩余字符所形成的新串放在t所指的数组中。
例如,若s所指字符串中的内容为:
"
ABCDEFG123456"
,其中字符A的ASCII码值为奇数,因此应当删除;
其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;
字符2的ASCII码值为偶数,但在数组中的下标为奇数,因此不应当删除,其它依此类推。
最后t所指的数组中的内容应是"
246"
if(i%2==0&
s[i]%2==0)
t[j++]=s[i];
t[j]=′\0′
18◆◆◆◆◆◆◆◆◆◆◆◆◆◆
有N×
N矩阵,根据给定的m(m<
=N)值,将每行元素中的值均向右移动m个位置,左位置为0。
例如,N=3,m=2,有下列矩阵
1 2 3
4 5 6
7 8 9
程序执行结果为
0 0 1
0 0 4
0 0 7
【答案】【1】i++ 【2】m 【3】m
计算并输出high以内最大的10个素数的和。
high的值由主函数传给fun函数。
例如,若high的值为100,则函数的值为732。
【1】while((high>
=2)&
(n<
10))
【2】yes=0;
break;
利用下面的简单迭代方法求方程cos(x)-x=0的一个实根。
xn+1=cos(xn)
迭代步骤如下:
(1)取x1初值为0.0;
(2)x0=x1,将x1的值赋给x0;
(3)x1=cos(x0),求出一个新的x1;
(4)若x0-x1的绝对值小于0.000001,执行步聚(5),否则执行步聚
(2);
(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。
程序将输出结果Root=0.739086。
floatx1=0.0,x0;
do
x0=x1;
x1=cos(x0);
while(fabs(x0-x1)>
=1e-6);
returnx1;
19◆◆◆◆◆◆◆◆◆◆◆◆◆◆
【填空】程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。
将形参a所指结构体变量中的数据赋给函数中的结构体变量b,并修改b中的学号和姓名,最后输出修改后的数据。
例如,a所指变量中的学号、姓名和三门课的成绩依次是:
10001、"
ZhangSan"
、95、80、88,则修改后输出b中的数据应为:
10002、"
LiSi"
、95、80、88。
【答案】【1】a【2】b.name
【3】score[i]
删除s所指字符中所有的小写字母c。
【答案】【1】s[j++]=s[i];
【2】s[j]=′\0′;
将字符串中的前导*号全部移到字符串的尾部。
*******A*BC*DEF*G****,移动后,字符串中的内容应当是:
A*BC*DEF*G***