计算机c语言二级十套题Word格式文档下载.docx
《计算机c语言二级十套题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《计算机c语言二级十套题Word格式文档下载.docx(28页珍藏版)》请在冰点文库上搜索。
voidfun(longs,long*t)
(2)错误:
s=s_0;
s=s/100;
【解析】错误1:
函数由指针来完成参数的传递,所以没有返回值,应定义函数的类型为void。
错误2:
此处要注意特殊运算符号"
%"
--取余和"
/"
--整除的区别。
将一个数整除100则可得到由其百位数以上的数组成的新数字,将一个数整除100取余则可得到由十位数和个位数组成的新数。
2011年计算机二级C语言十套上机题3
3.
编程题
请编写一个函数fun(),它的功能是:
求出一个4×
M整型二维数组中最小元素的值,并将此值返回调用函数。
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#defineM4
fun(inta[][M])
intarr[4][M]={11,3,9,35,42,-4,24,32,6,48,-32,7,23,34,12,-7};
min=%dn"
fun(arr));
inti,j,min=a[0][0];
for(i=0;
i<
4;
i++)
for(j=0;
j
if(min>
a[i][j])
min=a[i][j];
/*求出二维数组的最小值*/
returnmin;
【解析】此类求最大值或最小值的C语言问题,我们可以采用逐个比较的方式。
要求数组中的所有元素走动一遍,并从中找出最大、最小值,要注意一开始应使min存放数组中的第一个元素的值。
可按逐行查找也可按逐列查找的方式,本题采用的是逐行查找的方式。
即行下标在外层循环,列下标在内层循环,因为在循环的嵌套中越在内层循环,循环变化就越快。
2011年计算机二级C语言十套上机题4
1.填空题
请补充函数fun(),该函数的功能是:
分类统计一个字符串中元音字母和其他字符的个数(不区分大小写)。
例如,输入aeiouAOUpqrt,结果为A:
2E:
1I:
1O:
2U:
2other:
4。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
#defineN100
voidfun(char*str,intbb[])
char*p=str;
inti=0;
6;
【1】;
while(*p)
switch(*p)
case'
A'
:
a'
bb[0]++;
break;
E'
e'
bb[1]++;
I'
i'
bb[2]++;
O'
o'
bb[3]++;
U'
u'
bb[4]++;
default:
【2】;
【3】
charstr[N],ss[6]="
AEIOU"
;
inti;
intbb[6];
Inputastring:
n"
gets(str);
thestringis:
puts(str);
fun(str,bb);
5;
n%c:
%d"
ss[i],bb[i]);
nother:
bb[i]);
【1】bb[i]=0【2】bb[5]++【3】p++;
【解析】填空1:
数组bb[6]用来存放5个元音字母和其他字符的个数,在使用之前需要清零。
填空2:
数组元素bb[5]用来存放其他字符的个数,当指针p所指的字符不是元音字母时,则认为是其他字符,bb[5]加1。
填空3:
指针p指向字符串str,通过p自加1来移动指针,访问字符串中的所有字符。
2011年计算机二级C语言十套上机题5
下列给定的程序中,函数fun()的功能是:
计算并输出k以内最大的6个能被7或11整除的自然数之和。
K的值由主函数传入,若k的值为500,则函数的值为2925。
intfun(intk)
intm=0,mc=0,j;
while(k>
=2)&
&
(mc<
6)
if((k%7=0)||(k_=0))
m=k;
mc++;
k--;
returnm;
%dn"
fun(500));
while(k>
while((k>
6))
if((k%7=0)||(k_=0))
if((k%7==0)||(k_==0))
(3)错误:
m=k;
m=m+k;
C语言规定while语句后的表达式两侧必须要有圆括号。
if语句的判断条件应用关系运算符,而不是赋值运算符。
错误3:
根据题意,将满足条件的数求累加和。
2011年计算机二级C语言十套上机题6
将ss所指字符串中所有下标为偶数位置的字母转换为小写(若该位置上不是字母,则不转换)。
例如,若输入ABC4efG,则应输出aBc4efg。
voidfun(char*ss)
chartt[81];
nPleaseenteranstringwithin80characters:
n"
gets(tt);
nnAfterchanging,thestringn%s"
tt);
fun(tt);
nbecomesn%sn"
ss[i]!
='
'
i++)/*将ss所指字符串中所有下标为偶数位置的字母转换为小写*/
if(i%2==0&
ss[i]>
ss[i]<
Z'
)
ss[i]=ss[i]+32;
【解析】从C语言的学习中我们知道,只要将小写字母减去32则转成大写字母,将大写字母加上32则转成小写字母。
该程序是用if语句实现该功能转化的。
2011年计算机二级C语言十套上机题7
str是全部由小写字母字符和空格字符组成的字符串,由num传入字符串的长度。
请补充函数fun(),该函数的功能是:
统计字符串str中的单词个数,结果由变量num传回。
每个单词之间都由空格隔开,并且字符串str开始不存在空格。
例如:
str=“howdoyoudo”,结果为:
num=4。
#include<
stdio.h>
#defineN80
voidfun(char*s,int*num)
inti,n=0;
【1】;
if(s[i]>
=’a’&
s[i]<
=’z’&
(s[i+1]==
’’||s[i+1]==’’))
【2】;
【3】;
charstr[N];
intnum=0;
Enterastring:
while(str[num])
num++;
fun(str,&
num);
Thenumberofwordis:
%dnn"
num);
【1】i<
*num【2】n++【3】*num=n
*num传入字符串的长度,所以for循环中变量i的变化范围是从0到*num-1。
如果当前判断的字符是小写字母,并且它的下一个字符是空格或者是字符串结束标记符,则表示当前字符是一个单词的最后一个字母,统计单词数的变量n要加上1。
题目要求结果由变量num传回,所以要将n的值赋给指针num所指的单元。
2011年计算机二级C语言十套上机题8
下列给定程序中,fun()函数的功能是:
根据形参m,计算下列公式的值。
t=1-1/2+1/3-1/4+…+(-1)(m+1)/m
例如,若输入5,则应输出0.783333。
#include<
conio.h>
intfun(intm)
doublet=1.0,j=1.0;
for(i=1;
m;
{j=-1*j;
t+=j/i;
}
returnt;
intm;
nPleaseenter1integernumber:
m);
nTheresultis%lfn"
fun(m));
}答案及评析:
(1)错误:
intfun(intm)正确:
doublefun(intm)
for(i=1;
i++)正确:
for(i=2;
=m;
【解析】错误:
函数的返回值为实型数,所以应定义为double类型。
根据题目的公式,参加运算的数应从2到m,包括m。
2011年计算机二级C语言十套上机题9
请编写函数fun(),它的功能是:
求出1到1000之内能被5或13整除、但不能同时被5和13整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。
voidfun(int*a,int*n)
main()
intaa[1000],n,k;
clrscr();
fun(aa,&
n);
for(k=0;
k<
n;
k++)
if((k+1)%10==0)
%5d"
aa[k]);
n"
/*一行写10个数*/
else
voidfun(int*a,int*n)
{inti,j=0;
=1000;
i++)/*求1到1000之内能被5或13整除、但不能同时被5和13整除的所有整数,并放入数组a中*/
if((i%5==0||i%13==0)&
i%65!
=0)
a[j++]=i;
*n=j;
/*传回满足条件的数的个数*/
【解析】注意本题题目是找出能被5或13整除但不能同时被5和13整除的所有整数。
能同时被5和13整除的整数一定能被65整除,且不能被65整除的数不一定就是能被5或13整除的数。
所以可得出程序中的if()。
按运算优先级可知(i%5==0||i%13==0),注意,两边必须要有小括号。
2011年计算机二级C语言十套上机题10
str是一个由数字和字母字符组成的字符串,由变量num传入字符串长度。
把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。
str=“Bcd123e456hui890”,结果为:
123456890。
intbb[N];
intfun(chars[],intbb[],intnum)
inti,n=0;
for(i=0;
num;
{
if(【1】)
bb[n]=【2】;
n++;
}
return【3】;
charstr[N];
intnum=0,n,i;
printf("
gets(str);
while(str[num])
num++;
n=fun(str,bb,num);
nbb="
【1】s[i]>
=′0′&
=′9′【2】s[i]-′0′【3】n
如果当前字符的ASCII码大于字符′0′的ASCII码,而小于字符′9′的ASCII码,则说明当前字符是数字字符。
将数字字符转换为数字的方法是,用当前数字字符的ASCII码减去字符′0′的ASCII码。
题目要求函数返回数组bb的长度,而变量n记录了数字字符的个数,也就是数组bb的长度,所以函数应该返回n。
2011年计算机二级C语言十套上机题11
下列给定程序中,函数fun()的功能是:
从n个学生的成绩中统计出高于平均分的学生人数,人数由函数值返回,平均分存放在形参aver所指的存储单元中。
例如输入8名学生的成绩:
8565.56995.5875562.575
则高于平均分的学生人数为4(平均分为74.312500)。
#defineN20
intfun(float*s,intn,float*aver)
intave,t=0;
intcount=0,k,i;
for(k=0;
t+=s[k];
ave=t/n;
if(s[i]<
ave)
count++;
aver=ave;
returncount;
{floats[30],aver;
intm,i;
clrscr();
nPleaseenterm:
scanf("
nPleaseenter%dmark:
m);
%f"
s+i);
nThenumberofstudents:
%dn"
fun(s,m,&
aver));
Ave=%fn"
aver);
intave,t=0;
正确:
floatave,t=0.0;
(2)错误:
if(s[i]<
ave)正确:
if(s[i]>
aver=ave;
*aver=ave;
ave和t分别用来存放成绩的平均值和总分,应为实型数。
根据题意,找出高于平均分的数,所以此处的关系运算符应为"
>
"
aver是指针,而ave是一个数,不能将一个数赋值给一个指针,而要用符号'
*'
。
2011年计算机二级C语言十套上机题12
比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较短的字符串。
若两个字符串长度相等,则返回第1个字符串。
例如,输入nanjing<
CR>
nanchang<
(<
为回车键),函数将返回nanjing。
char*fun(char*s,char*t)
{chara[20],b[10],*p,*q;
inti;
Input1thstring:
gets(a);
Input2thstring:
gets(b);
%s"
fun(a,b));
{inti,j;
s[i]!
='
i++);
/*求字符串的长度*/
for(j=0;
t[j]!
j++);
if(i<
=j)/*比较两个字符串的长度*/
returns;
/*函数返回较短的字符串,若两个字符串长度相等,则返回第1个字符串*/
else
returnt;
【解析】本题中,第1个for循环的作用是求出s的字符个数i,第2个for循环的作用是求出t的字符个数j,因为任何循环都要控制一条语句,所以在每一个for循环条件后面必须要有一个分号。
本题也可用如下技巧:
string.h>
/*一定要注意在最前面加#include<
*/
char*fun(char*s,char*t)
if(strlen(s)>
=strlen(t)
elsereturnt;
2011年计算机二级C语言十套上机题13
从键盘输入一组无符号整数并保存在数组xx[N]中,以整数0结束输入,要求这些数的最大位数不超过4位,其元素的个数通过变量num传入函数fun()。
从数组xx中找出个位和十位的数字之和大于5的所有无符号整数,结果保存在数组yy中,其个数由函数fun()返回。
当xx[8]={123,11,25,222,42,333,14,5451}时,
bb[4]={