C语言二级考试编程题Word文档下载推荐.docx
- 文档编号:19624928
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:77
- 大小:58.77KB
C语言二级考试编程题Word文档下载推荐.docx
《C语言二级考试编程题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言二级考试编程题Word文档下载推荐.docx(77页珍藏版)》请在冰豆网上搜索。
例如,若形参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);
或returnt;
求出1~1000之间能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。
voidfun(int*a,int*n)
inti,j=0;
for(i=1;
=1000;
i++)/*求1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数,并放入数组a中*/
if((i%7==0||i%11==0)&
&
i%77!
=0)
a[j++]=i;
*n=j;
第四套
例如:
若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);
或returnb;
例如,字符串中的内容为:
****A*BC*DEF*G*******,删除后字符串中的内容应当是:
ABCDEFG。
voidfun(char*a)
a[i]!
='
;
if(a[i]!
*'
)
a[j++]=a[i];
/*若不是要删除的字符'
则留下*/
a[j]='
第五套
例如,输入一个整数27638496,函数返回值为64862。
(1)0
(2)10*x(3)n/10
例如,当s中的数为87653142时,t中的数为7531。
(1)*t=0;
(2)if(d%2!
=0)或if(d%2==1)
例如,分别输入下面两个字符串:
FirstString--
SecondString
程序输出:
FirstString--SecondString
voidfun(charp1[],charp2[])
inti,j;
p1[i]!
i++);
p2[j]!
p1[i++]=p2[j];
p1[i]='
第6套
例如,若a所指数组中的数据最初排列为:
9、1、4、2、3、6、5、8、7;
则按规则移动后,数据排列为:
1、9、2、8、3、7、4、6、5。
形参n中存放a所指数组中数据的个数。
(1)a[i]
(2)a[j] (3)a[j]
例如,若给n输入7,则该项的斐波拉契数值为13
(1)去掉分号
(2)case1:
case2:
return1;
例如,学生的成绩是:
85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。
voidfun(STREC*a)
inti;
a->
ave=0.0;
N;
ave=a->
ave+a->
s[i];
/*求各门成绩的总和*/
ave/=N;
/*求平均分*/
第7套
若形参ch中是数字字符'
0'
~'
,则将'
转换成'
,'
1'
8'
2'
7'
,……,'
;
若是其它字符则保持不变;
并将转换后的结果作为函数值返回。
(1)char
(2)ch<
(3)'
例如,若给a输入字符串:
ABCDEFGKHIJK,调用函数后,字符数组b中的内容为:
ABC DEF GHI JK。
(1)b[k]=*p;
(2)b[k]='
'
k++;
例如,若学生的成绩是:
85 76 69 85 91 72 64 87,则平均分应当是:
78.625。
doublefun(STREC*h)
doubleave=0.0;
STREC*p=h->
next;
while(p!
=NULL)
{ave=ave+p->
s;
p=p->
returnave/N;
第8套
求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指的变量中。
ss所指字符串数组中共有M个字符串,且串长小于N。
(1)M
(2)<
(3)k
例如,若输入"
Ab,cD"
,则输出"
AB,CD"
。
(1)if((tt[i]>
a'
)&
(tt[i]<
='
z'
))
(2)tt[i]-=32;
例如,若输入17,则应输出:
4 6 8 9 10 12 14 15 16。
voidfun(intm,int*k,intxx[])
inti,j,n=0;
for(i=4;
m;
i++)/*找出大于1小于整数m的非素数*/
{for(j=2;
i;
if(i%j==0)break;
if(j<
i)xx[n++]=i;
*k=n;
/*返回非素数的个数*/
第9套
例如,s所指的字符串为"
def35adh3kjsdf7"
,执行后结果为"
defadhajsdf3537"
(1)j++或j+=1或++j或j=j+1
(2)s[i]=t1[i] (3)j
用冒泡法对6个字符串进行升序排列。
例如,若输入字符串123412132,输入字符为1,则输出3。
intfun(char*ss,charc)
inti=0;
for(;
*ss!
ss++)
if(*ss==c)
i++;
/*求出ss所指字符串中指定字符的个数*/
returni;
第10套
下列给定程序中已建立一个带头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。
函数fun的功能是:
把形参x的值放入一个新结点并插入链表中,使插入后各结点数据域中的数据仍保持递增有序。
(1)x
(2)p (3)s;
例如,若输入252,则输出应该是20。
若输入202,则输出应该是0。
(1)longk=1;
(2)num/=10;
若有5门课程的成绩是:
90.5,72,80,61.5,55,则函数的值为:
71.80。
floatfun(float*a,intn)
floatav=0.0;
i<
n;
i++)/*求分数的总和*/
av=av+a[i];
return(av/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]或*(a+p+i)
例如,若输入的数为:
55 12 34,输出的结果应当是:
a=55.0,b=34.0,c=12.0。
【参考答案】
(1)floatk;
(2)if(*a<
*c)
学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:
把分数最高的学生数据放在b所指的数组中。
注意:
分数最高的学生可能不止一个,函数返回分数最高的学生的人数。
intfun(STREC*a,STREC*b)
inti,j=0,max=a[0].s;
/*找出最大值*/
a[i].s)max=a[i].s;
if(max==a[i].s)
b[j++]=a[i];
/*找出成绩与max相等的学生的记录,存入结构体b中*/
returnj;
/*返回最高成绩的学生人数*/
第十二套
下列给定程序中,函数fun的功能是:
从形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回剩余字符串的个数。
ss所指字符串数组中共有N个字符串,且串长小于M。
(1)N
(2)k (3)ss[i]
例如,若主函数中a字符串为"
aBCDeFgH"
,b字符串为"
Abcd"
,则c中的字符串应为"
aBcdeFgH"
(1)intk=0;
(2)while(*p||*q)
****A*BC*DEF*G*******,删除后,字符串中的内容应当是:
****ABCDEFG。
inti=0;
char*p=a;
while(*p&
*p=='
{
a[i]=*p;
p++;
while(*p)
if(*p!
{a[i]=*p;
i++;
a[i]='
第十三套
例如,形参s所指字符串为"
abcdefgh"
,执行结果为"
ahcbedgf"
(1)1
(2)s[k]或*(s+k) (3)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;
(2)t=t/10;
例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:
33322110000000000000000000
voidfun(char*tt,intpp[])
inti;
26;
pp[i]=0;
/*初始化pp数组各元素为0*/
*tt!
tt++)
if(*tt>
*tt<
pp[*tt-'
]++;
第十四套
在形参ss所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置(即下标值),若未找到则返回-1。
ss所指字符串数组中共有N个内容不同的字符串,且串长小于M。
(1)N
(2)i (3)-1
下列给定程序中函数fun的功能是:
从整数10到55之间,查找能被3整除且有一位上的数值是5的数,把这些数放在b所指的数组中,这些数的个数作为函数值返回。
规定函数中al放个位数,a2放十位数。
【参考答案】
(1)a2=k/10;
(2)returni;
"
****A*BC*DEF*G*******"
,删除后,字符串中的内容应当是:
****A*BC*DEF*G"
在编写函数时,不得使用C语言提供的字符串函数。
while(*a!
a++;
a--;
/*指针a指向字符串的尾部*/
while(*a=='
/*指针a指向最后一个字母*/
*(a+1)='
/*在字符串最后加上结束标志符*/
第十五套
下列给定程序中已建立了一个带头结点的单向链表,在main函数中将多次调用fun函数,每调用一次,输出链表尾部结点中的数据,并释放该结点,使链表缩短。
(1)next
(2)t->
data (3)t
例如,若字符串为"
abcd"
,则应输出:
dcba"
(1)voidfun(char*a)
(2)printf("
%c"
*a);
例如,输入beijing<
CR>
shanghai<
(<
为回车键),函数将返回shanghai。
char*fun(char*s,char*t)
s[i]!
i++);
/*求字符串的长度*/
t[j]!
j++);
if(i<
=j)/*比较两个字符串的长度*/
returnt;
/*函数返回较长的字符串,若两个字符串长度相等,则返回第1个字符串*/
else
returns;
16套:
下列给定程序中,函数fun的功能是:
形参n给出数组中数据的个数
(1)n/2
(2)i (3)a[n-i-1]或a[n-1-i]
例如,若输入77777,则输出32767。
(1)n=*p-'
(2)n=n*8+*p-'
函数返回该学号的学生数据,指定的学号在主函数中输入。
若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。
(用于字符串比较的函数是strcmp)。
STRECfun(STREC*a,char*b)
{inti;
STRECstr={"
\0"
-1};
/*若没找到指定的学号,在结构体变量中给学号置空串,给成绩置-1*/
if(strcmp(a[i].num,b)==0)/*找到指定学号的学生数据*/
str=a[i];
returnstr;
/*返回学生记录*/
17套
下列给定程序的功能是:
调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回1,失败时返回0。
在复制的过程中,把复制的内容输出到屏幕。
主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。
(1)"
r"
(2)fs (3)ft
例如,当s中的数为87653142时,t中的数:
8642
(1)if(d%2==0)
(2)s/=10;
例如,若s所指字符串中的内容为"
ABCDEFG123456"
其中字符A的ASCII码值为奇数,因此应当删除;
字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;
字符2的ASCII码值为偶数,在数组中的下标也为偶数,因此不应当删除,其他依此类推。
最后t所指的数组中的内容应是"
246"
voidfun(char*s,chart[])
if(i%2==0&
s[i]%2==0)/*将s所指字符串中下标和ASCII码值都为偶数的字符放入数组t中*/
t[j++]=s[i];
t[j]='
/*在字符串最后加上结束标识*/
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的值为100,则函数的值为732
(1)while((high>
=2)&
(n<
10))
(2)yes=0;
break;
利用下面的简单迭代方法求方程cos(x)-x=0的一个实根。
迭代步骤如下:
(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。
doublefun()
doublex0,x1;
x1=0.0;
do
x0=x1;
x1=cos(x0);
}while(fabs(x0-x1)>
=1e-6);
returnx1;
19套
例如,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];
或{s[j]=s[i];
j++;
(2)s[j]='
*******A*BC*DEF*G****"
,移动后,字符串中的内容应当是:
A*BC*DEF*G***********"
voidfun(char*a)
inti=0,n=0;
char*p;
p=a;
while(*p=='
)/*判断*p是否是*号,并统计*号的个数*/
n++;
p++;
while(*p)/*将前导*号后的字符传递给a*/
a[i]=*p;
while(n!
=0)
a[i]='
n--;
20套
从键盘输入若干行字符串(每行不超过80个字符),写入文件myfile4.txt中,用-1作字符串输入结束的标志,然后将文件的内容显示在屏幕上。
文件的读写分别由函数ReadText和WriteText实现。
(1)*fw
(2)str (3)str
例如,当s中的数为7654321时,t中的数为7531。
(1)voidfun(longs,long*t)
(2)sl=sl*10;
把分数最低的学生数据放入b所指的数组中,注意:
分数最低的学生可能不止一个,函数返回分数最低的学生人数。
inti,j=0,min=a[0].s;
if(min>
a[i].s)
min=a[i].s;
/*找出最小值*/
if(min==a[i].s)
/*找出成绩与min相等的学生的记录,存入结构体b中*/
21,有N×
N矩阵,将矩阵的外围元素做顺时针旋转。
(1)0
(2)j-- (3)j
当n的值为5时,函数值应为10.407143
(1)doublef(doublex)
(2)returns;
若m的值为20,则fun函数值为6.506583。
doublefun(intm)
doubles=0.0;
=m;
s=s+log(i);
/*计算s=ln
(1)+ln
(2)+ln(3)+…+ln(m)*/
returnsqrt(s);
/*对s求平方根并返回*/
22若没有,函数值为0,若有,函数值为非0
(1)N
(2)substr (3)0
若给主函数中的变量x1、x2、x3分别输入15 11 2,则输出结果应当是330。
(1)fun(intx,inty,intz)或intfun(intx,inty,intz)
(2)returnj;
字符串中的内容为:
A*BC*DEF*G"
voidfun(char*a,intn,inth,inte)
inti,j=0;
for(i=h;
n-e;
i++)/*第一个字母和最后一个字母之间的字符全不删除*/
}
23计算一个带头结点的单向链表中各结点的数据域中数值之和,结果作为函数值返回。
(1)data
(2)next (3)head
当s所指字符串中的内容为"
abcdabfab"
,t1所指子串中的内容为"
ab"
,t2所指子串中的内容为"
99"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 二级 考试 编程