计算机二级c语言上机百题题库.docx

上传人:b****7 文档编号:9717399 上传时间:2023-02-06 格式:DOCX 页数:65 大小:57.71KB
下载 相关 举报
计算机二级c语言上机百题题库.docx_第1页
第1页 / 共65页
计算机二级c语言上机百题题库.docx_第2页
第2页 / 共65页
计算机二级c语言上机百题题库.docx_第3页
第3页 / 共65页
计算机二级c语言上机百题题库.docx_第4页
第4页 / 共65页
计算机二级c语言上机百题题库.docx_第5页
第5页 / 共65页
点击查看更多>>
下载资源
资源描述

计算机二级c语言上机百题题库.docx

《计算机二级c语言上机百题题库.docx》由会员分享,可在线阅读,更多相关《计算机二级c语言上机百题题库.docx(65页珍藏版)》请在冰豆网上搜索。

计算机二级c语言上机百题题库.docx

计算机二级c语言上机百题题库

1假定输入的字符串中只包含字母和*号。

请编写函数fun,它的功能是:

除了字符串前导和尾部的*号之外,将串中其它*号全部删除。

形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。

在编写函数时,不得使用C语言提供的字符串函数。

例如,字符串中的内容为:

****A*BC*DEF*G********,删除后,字符串中的内容应当是:

****ABCDEFG********。

在编写函数时,不得使用C语言提供的字符串函数。

voidfun(char*a,char*h,char*p)

{charb[81],*x;

inti=0,j=0;

x=a;

while(x

while(h<=p)

if(*h!

='*'){b[j]=*h;j++;h++;}

elseh++;

p++;

while(*p){b[j]=*p;j++;p++;}

b[j]='\0';j=0;

while(b[j])

{a[i]=b[j];i++;j++;}

a[i]='\0';

}

2请编写一个函数fun,它的功能是:

根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):

程序运行后,如果输入精度0.0005,则程序输出为3.140578。

doublefun(doubleeps)

{

intn=0;

doubledown=1,up=1;

doubleone,pi=0;

one=(double)up/(double)down;

while(one>=eps){/*通过循环语句判断公式中某项是否在精度范围之内*/

pi+=one;

n++;

up=up*n;

down=down*(2*n+1);

one=(double)up/(double)down;

}

returnpi*2;

}

3请编写一个函数fun,它的功能是:

比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。

若两个字符串长度相同,则返回第一个字符串。

例如,输入beijingshanghai为回车键)

函数将返回shanghai。

char*fun(char*s,char*t)

{

intfirst=0,second=0;

char*p,*q;

p=s;

q=t;

while(*p++!

='\0')/*判断是否到了字符串s的结尾*/

first++;

while(*q++!

='\0')/*判断是否到了字符串t的结尾*/

second++;

if(first==second)/*判断两个字符串的长度是否相等*/

returns;/*若上述条件成立,则返回第一个字符串*/

elseif(first>second)/*返回较长的字符串*/

returns;

else

returnt;

}

4规定输入的字符串中只包含字母和*号。

请编写函数fun,它的功能是:

使字符串最前面连续的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。

例如,字符串中的内容为:

*******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:

****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为:

*******A*BC*DEF*G****。

n的值在主函数中输入。

在编写函数时,不得使用C语言提供的字符串函数。

voidfun(char*a,intn)

{charb[81];

inti=0,j=0,s=0,k;

while(a[i]=='*'){s++;i++;}

if(s>n)

{for(k=0;k

{b[j]='*';j++;}

while(a[i])

{b[j]=a[i];j++;i++;}

b[j]='\0';i=0;j=0;

while(b[j])

{a[i]=b[j];i++;j++;}

a[i]='\0';

}

}

5请编写一个函数fun,它的功能是:

计算n门课程的平均分,计算结果作为函数值返回。

例如:

若有5门课程的成绩是:

90.5,72,80,61.5,55,则函数的值为:

71.80。

floatfun(float*a,intn)

{

inti;

floataverage;

doublesum=0;

for(i=0;i

sum+=a[i];/*对数组中的各个元素求和*/

average=(float)sum/n;/*计算平均值*/

returnaverage;/*返回平均值*/

}

6某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。

请编写函数fun,它的功能是:

求出该学生的平均分放在记录的ave成员中。

请自己定义正确的形参。

例如,学生的成绩是:

85.5,76,69.5,85,91,72,64.5,87.5,他的平均分应当是:

78.875。

voidfun(STREC*p)

{inti;

doubleaver=0;/*将平均分赋初值0*/

for(i=0;i

{aver=aver+(*p).s[i];}/*求和*/

(*p).ave=aver/N;/*计算平均值*/

}

7学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:

把高于等于平均分的学生数据放在h所指的数组中,高于等于平均分的学生人数通过形参传回,平均分通过函数值返回。

doublefun(STREC*a,STREC*b,int*n)

{inti,j;

doubleaver=0;

*n=0;

for(i=0;i

aver=aver+a[i].s;/*求和*/

aver=aver/N;/*计算平均分*/

for(i=0;i

if(a[i].s>=aver)

{b[*n].s=a[i].s;/*将高于等于平均分的学生数据放在另一数组b中*/

for(j=0;j<10;j++)

b[*n].num[j]=a[i].num[j];

*n=*n+1;/*统计高于等于平均分的学生人数*/

}

return(aver);/*返回平均分*/

}

8学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:

按分数的高低排列学生的记录,高分在前。

voidfun(STRECa[])

{inti,j,p,t,k;

charh;

for(i=0;i

{p=i;

for(j=i+1;j

if(a[p].s

if(p!

=i)

{t=a[p].s;a[p].s=a[i].s;a[i].s=t;

for(k=0;k<10;k++)

{h=a[p].num[k];

a[p].num[k]=a[i].num[k];

a[i].num[k]=h;

}

}

}

}

9函数fun的功能是:

将两个两位数的正整数a、b合并形成一个整数放在c中。

合并的方式是:

将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。

例如,当a=45,b=12。

调用该函数后,c=2415。

voidfun(inta,intb,long*c)

{

inta_up,a_low,b_up,b_low;

a_up=a/10;/*求正整数a的十位数*/

a_low=a%10;/*求正整数a的个位数*/

b_up=b/10;/*求正整数b的十位数*/

b_low=b%10;/*求正整数b的个位数*/

*c=b_low*1000+a_up*100+b_up*10+a_low;/*将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上*/

}

10学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:

函数返回指定学号的学生数据,指定的学号在主函数中输入。

若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。

(用于字符串比较的函数是strcmp)。

STRECfun(STREC*a,char*b)

{inti,f=0;

STRECp;/*定义结构体变量*/

p=a[0];

for(i=0;i

if(strcmp(a[i].num,b)==0){p=a[i];f=1;}/*通过字符串比较函数将指定的学号与每一个学生的学号进行比较,若相同,则返回指定的学生数据*/

if(f==0)/*判断是否找到指定学号*/

{p.num[0]='\0';/*若没找到指定学号,在结构体变量中给学号置空串*/

p.s=-1;/*若没找到指定学号,在结构体变量中给成绩置-1*/

}

returnp;/*返回学号和成绩*/

}

11学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:

把指定分数范围内的学生数据放在h所指的数组中,分数范围内的学生人数由函数值返回。

例如,输入的分数是6069,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。

主函数中将把60放在low中,把69放在heigh中。

intfun(STREC*a,STREC*b,intl,inth)

{inti,j=0,k,f=0;

for(i=0;i

if((a[i].s>=l)&&(a[i].s<=h))/*判断该学生的分数是否在范围之内*/

{for(k=0;k<10;k++)

b[j].num[k]=a[i].num[k];

b[j].s=a[i].s;/*满足条件的学生的分数放在另一数组b中*/

j++;

f++;/*计算满足条件的学生人数*/

}

return(f);/*返回学生人数*/

}

12N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。

请编写函数fun,它的功能是:

求出平均分,由函数值返回。

例如,若学生的成绩是:

85,76,69,85,91,72,64,87;则平均分应当是:

78.625。

doublefun(STREC*h)

{STREC*p;

doubleaver=0;

p=h->next;

while(p!

=0)

{aver=aver+p->s;/*从链表首结点开始,累计成绩之和*/

p=p->next;/*p后移一个结点*/

}

aver=aver/N;/*求成绩的平均值aver*/

returnaver;/*返回结果*/

}

13请编写一个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n≥2)位的整数,函数求出w的低n-1位的数作为函数值返回。

例如:

w值为5923,则函数返回923;w值为923,则函数返回23。

unsignedfun(unsignedw)

{if(w>=10000)returnw%10000;

if(w>=1000)returnw%1000;

if(w>=100)returnw%100;

returnw%10;

}

14请编写一个函数intfun(int*s,intt,int*k),用来求出数组的最大元素在数组中的下标,用k返回。

例如,输入如下整数:

876675896101301401980431451777

则输出结果为:

6,980

intfun(int*s,intt,int*k)

{

intmax_integer=0;/*定义变量max_integer,用以存放数组s[]中的最大元素*/

inti=0;

max_integer=s[0];/*假定第一个数组元素为最大*/

for(i=0;i

/*将查找到的最大元素的下标赋给k,并传回主函数*/

if(max_integer

max_integer=s[i];

*k=i;

}

}

return*k;

}

15请编写一个函数fun,它的功能是:

将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。

例如,若输入字符串"-1234",则函数把它转换为整数值-1234。

longfun(char*p)

{

longn=0;

intflag=0;

/*通过循环语句移动指针,取出指针所在位置上的字符*/

while(*p!

='\0'){

if(*p=='-')/*判断其是否为负号*/

flag=1;

elseif(*p=='+')/*判断其是否为正号*/

flag=0;

else/*判断其是否为数字字符*/

n=n*10+(*p-'0');/*将数字字符转化为相应的数值*/

p++;

}

if(flag==1)n=-n;

returnn;

}

16请编写一个函数fun,它的功能是:

求出1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。

例如,若传送给m的值为50,则程序输出:

711142122283335424449

#include

#include

#defineM100

voidfun(intm,int*a,int*n)

{

inti,count=0;/*count用于计数*/

for(i=1;i<=m;i++){/*使用循环语句使循环变量依次从1递增到m*/

if(i%7==0||i%11==0){/*判断变量i是否能被7或者11整除*/

a[count++]=i;/*将符合条件的值存放入数组a中*/

}

}

*n=count;/*返回能被7或者11整除的数的个数*/

}

17请编写一个函数fun,它的功能是:

找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。

数组元素中的值已在主函数中赋予。

主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。

voidfun(inta[],intn,int*max,int*d)

{

inti,base,subscript;

base=a[0];/*假定第一个元素的值最大*/

subscript=0;/*subscript用于存放数组下标*/

for(i=1;i

if(a[i]>base){/*将数组中的其他元素与变量base作比较,如果大于它则交换两者的值*/

subscript=i;

base=a[i];

}

}

*max=base;/*将最大值元素的值赋给*max*/

*d=subscript;/*将最大值元素的下标赋给*d*/

}

18函数fun的功能是:

将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。

例如,当s所指字符串中的内容为:

"ABCDEFGHIJK",

在t所指数组中的内容应是:

"BDFHJ"。

voidfun(char*s,chart[])

{

inti,slenth,n=0;

slenth=strlen(s);/*通过strlen函数求字符串s的长度*/

for(i=1;i

t[n++]=s[i];

t[n]='\0';

}

19请编写函数fun,其功能是:

计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。

例如,给定数组中的9个元素依次为12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,输出应为:

s=35.951014。

doublefun(doublex[9])

{inti;

doubleavg=0.0,sum=0.0;/*将变量avg、sum定义为双精度型,并给其赋初值为0.0*/

for(i=0;i<8;i++)

{avg=(x[i]+x[i+1])/2;/*通过for循环分别求出相邻两个元素的平均值放入变量avg中*/

sum+=sqrt(avg);/*使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量sum*/

}

returnsum;/*返回计算结果*/

}

20请编写函数fun,其功能是:

计算并输出下列多项式的值:

例如,在主函数中从键盘给n输入8后,输出为:

s=0.662872。

注意:

要求n的值大于1但不大于100。

doublefun(intn)

{inti;

doublesum=0.0;/*定义sum为双精度型变量,并给其赋初值为0.0*/

if(n>1&&n<=100)

{for(i=1;i<=n;i++)

sum+=1.0/(2*i-1)-1.0/(2*i);/*计算出1.0/(2*i-1)-1.0/(2*i)相应的每一个多项式的值,同时累加到变量sum中*/

}

returnsum;/*返回计算结果*/

}

21请编写函数fun,它的功能是:

计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。

例如,在主函数中从键盘给n输入20后,输出为:

s=0.583333。

注意:

要求n的值不大于100。

#include

doublefun(intn)

{inti;

doublesum=0.0;/*将sum定义为双精度型变量,并给其赋初值为0.0*/

if(n>0&&n<=100)

{for(i=1;i<=n;i++)

if(i%5==0||i%9==0)/*判断i是否能被5或者9整除*/

sum+=1.0/i;/*累加自然数的倒数之和,放入变量sum中*/

}

returnsum;/*返回结果*/

}

22请编写函数fun,其功能是:

计算并输出当x<0.97时下列多项式的值,直到|S(n)-S(n-1)|<0.000001为止。

例如,在主函数中从键盘给x输入0.21后,输出为:

s=1.100000。

#include

#include

可以通过while循环求出各项表达式的值,然后进行累加。

doublefun(doublex)

{

intn=1;/*循环计数*/

doublesn=1;/*累计数*/

doublexn=1,xn1=0;/*x的n值,以及x的n-1值;*/

while(fabs(xn-xn1)>=0.000001)/*绝对值是否合格*/

{

xn=xn*x*(0.5-n+1)/n;/*表达式分解以后xn=(xn-1)*x*(0.5-n+1)/n*/

n+=1;

sn+=xn;/*sn累加上xn*/

}

return(sn);

}

23请编写函数fun,其功能是:

计算并输出给定10个数的方差:

┌110┐0.5

S=│─∑(Xk-X')^2│

└10k=1┘

110

其中X'=─∑Xk

10k=1

例如,给定的10个数为95.0、89.0、76.0、65.0、88.0、72.0、85.0、81.0、90.0、56.0,输出为s=11.730729。

#include

#include

doublefun(doublex[10])

{inti;/*定义变量*/

doubleavg=0.0;

doublesum=0.0;

doubleabs=0.0;

doublefc;

for(i=0;i<10;i++)/*循环开始*/

sum+=x[i];/*计算已结定的10个数之和,并将其值赋给变量sum中*/

avg=sum/10;/*计算已结定的10个数的平均值,并将其值赋给变量avg*/

for(i=0;i<10;i++)/*循环开始*/

abs+=(x[i]-avg)*(x[i]-avg);/*计算(Xk-X')的平方和,并将其值赋给变量abc*/

fc=sqrt(abs/10);/*sqrt(abs/10)函数是计算abs/10的平方根*/

returnfc;/*返回结果*/

}

24请编写函数fun,其功能是:

计算并输出3到n之间所有素数的平方根之和。

例如,在主函数中从键盘给n输入100后,

输出为:

sum=148.874270。

注意:

要求n的值大于2但不大于100。

#include

#include

doublefun(intn)

{

inti,j=0;/*定义两个整型变量*/

doubles=0;/*定义变量s为双精度型*/

for(i=3;i<=n;i++)

{for(j=2;j

if(i%j==0)break;/*如果i能被j整除就说明i不是素数,继而退出循环体*/

if(j==i)s=s+sqrt(i);/*sqrt(i)函数是计算i的平方根*/

}

returns;/*返回结果*/

}

25请编写函数fun,其功能是:

计算并输出S=1+(1+2^0.5)+(1+2^0.5+3^0.5)+……+(1+2^0.5+3^0.5+……+n^0.5)

例如,在主函数中从键盘给n输入20后,输出为:

s=534.188884。

注意:

要求n的值大于1但不大于100。

#include

#include

doublefun(intn)

{inti;/*定义一个整形变量*/

doublefac=1.0;/*定义变量fac、sum为双精度型*/

doublesum=1.0;

if(n>1&&n<=100)

for(i=2;i<=n;i++)

{fac+=sqrt(i);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学反思汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1