计算机二级c语言上机百题题库Word文件下载.docx

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

计算机二级c语言上机百题题库Word文件下载.docx

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

计算机二级c语言上机百题题库Word文件下载.docx

pi+=one;

n++;

up=up*n;

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

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

}

returnpi*2;

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

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

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

例如,输入beijing<

CR>

shanghai<

(<

为回车键)

函数将返回shanghai。

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

{

intfirst=0,second=0;

char*p,*q;

p=s;

q=t;

while(*p++!

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

first++;

while(*q++!

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

second++;

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

returns;

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

elseif(first>

second)/*返回较长的字符串*/

else

returnt;

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

使字符串最前面连续的*号不得多于n个;

若多于n个,则删除多余的*号;

若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。

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

****A*BC*DEF*G****;

若n的值为8,则字符串中的内容仍为:

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

n的值在主函数中输入。

voidfun(char*a,intn)

{charb[81];

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

while(a[i]=='

){s++;

if(s>

n)

{for(k=0;

k<

n;

k++)

{b[j]='

while(a[i])

{b[j]=a[i];

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<

i++)

sum+=a[i];

/*对数组中的各个元素求和*/

average=(float)sum/n;

/*计算平均值*/

returnaverage;

/*返回平均值*/

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

求出该学生的平均分放在记录的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;

N;

i++)

{aver=aver+(*p).s[i];

}/*求和*/

(*p).ave=aver/N;

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

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

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

{inti,j;

*n=0;

aver=aver+a[i].s;

/*求和*/

aver=aver/N;

/*计算平均分*/

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;

{p=i;

for(j=i+1;

j++)/*按分数从高到低进行排序*/

if(a[p].s<

a[j].s)p=j;

if(p!

=i)

{t=a[p].s;

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

a[i].s=t;

for(k=0;

{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];

if(strcmp(a[i].num,b)==0){p=a[i];

f=1;

}/*通过字符串比较函数将指定的学号与每一个学生的学号进行比较,若相同,则返回指定的学生数据*/

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

{p.num[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;

if((a[i].s>

=l)&

&

(a[i].s<

=h))/*判断该学生的分数是否在范围之内*/

{for(k=0;

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

b[j].s=a[i].s;

/*满足条件的学生的分数放在另一数组b中*/

j++;

f++;

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

return(f);

/*返回学生人数*/

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

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

例如,若学生的成绩是:

85,76,69,85,91,72,64,87;

则平均分应当是:

78.625。

doublefun(STREC*h)

{STREC*p;

p=h->

next;

while(p!

=0)

{aver=aver+p->

s;

/*从链表首结点开始,累计成绩之和*/

p=p->

/*p后移一个结点*/

/*求成绩的平均值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;

=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];

/*假定第一个数组元素为最大*/

i<

t;

i=i+1){/*建立循环,查找出数组s[]中的最大元素*/

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

if(max_integer<

s[i]){

max_integer=s[i];

*k=i;

return*k;

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

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

例如,若输入字符串"

-1234"

,则函数把它转换为整数值-1234。

longfun(char*p)

longn=0;

intflag=0;

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

while(*p!

){

if(*p=='

-'

)/*判断其是否为负号*/

flag=1;

elseif(*p=='

+'

)/*判断其是否为正号*/

flag=0;

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

n=n*10+(*p-'

0'

);

/*将数字字符转化为相应的数值*/

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

returnn;

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

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

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

711142122283335424449

#include<

conio.h>

stdio.h>

#defineM100

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

inti,count=0;

/*count用于计数*/

for(i=1;

=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用于存放数组下标*/

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的长度*/

slenth;

i+=2)/*循环语句将数组下标为奇数的元素的值存入数组t中*/

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

t[n]='

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;

8;

{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)

doublesum=0.0;

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

if(n>

1&

n<

=100)

{for(i=1;

=n;

sum+=1.0/(2*i-1)-1.0/(2*i);

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

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

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

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

s=0.583333。

要求n的值不大于100。

{inti;

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

if(n>

0&

{for(i=1;

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

sum+=1.0/i;

/*累加自然数的倒数之和,放入变量sum中*/

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

计算并输出当x<

0.97时下列多项式的值,直到|S(n)-S(n-1)|<

0.000001为止。

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

s=1.100000。

math.h>

可以通过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。

doublefun(doublex[10])

/*定义变量*/

doubleavg=0.0;

doubleabs=0.0;

doublefc;

i++)/*循环开始*/

sum+=x[i];

/*计算已结定的10个数之和,并将其值赋给变量sum中*/

avg=sum/10;

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

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。

inti,j=0;

/*定义两个整型变量*/

doubles=0;

/*定义变量s为双精度型*/

for(i=3;

{for(j=2;

i;

if(i%j==0)break;

/*如果i能被j整除就说明i不是素数,继而退出循环体*/

if(j==i)s=s+sqrt(i);

/*sqrt(i)函数是计算i的平方根*/

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)

s=534.188884。

/*定义一个整形变量*/

doublefac=1.0;

/*定义变量fac、sum为双精度型*/

doublesum=1.0;

for(i=2;

{fac+=sqrt(i);

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

当前位置:首页 > 高等教育 > 文学

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

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