全国计算机二级C考试题库程序设计部分.docx

上传人:b****8 文档编号:9146882 上传时间:2023-05-17 格式:DOCX 页数:42 大小:53.73KB
下载 相关 举报
全国计算机二级C考试题库程序设计部分.docx_第1页
第1页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第2页
第2页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第3页
第3页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第4页
第4页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第5页
第5页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第6页
第6页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第7页
第7页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第8页
第8页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第9页
第9页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第10页
第10页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第11页
第11页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第12页
第12页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第13页
第13页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第14页
第14页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第15页
第15页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第16页
第16页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第17页
第17页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第18页
第18页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第19页
第19页 / 共42页
全国计算机二级C考试题库程序设计部分.docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

全国计算机二级C考试题库程序设计部分.docx

《全国计算机二级C考试题库程序设计部分.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C考试题库程序设计部分.docx(42页珍藏版)》请在冰点文库上搜索。

全国计算机二级C考试题库程序设计部分.docx

全国计算机二级C考试题库程序设计部分

1、找出2xM整型二维数组中最大元素的值,并将此值返回调用函数。

intfun(inta[][M])

{

inti,j,max=a[0][0];

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

for(j=0;j

if(max

max=a[i][j];

returnmax;}

2、

根据以下公式求π值。

doublefun(doubleeps)

{doubles=0.0,s1=1.0;

intn=0;

while(s1>=eps)

{s=s+s1;

s1=s1*n/(2*n+1);

n++;

}

return2*s;

}

3、求出1~1000之间能被7或11整除但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。

voidfun(int*a,int*n)

{inti,j=0;

for(i=1;i<=1000;i++)

if((i%7==0||i%11==0)&&i%77!

=0)

a[j++]=i;

*n=j;

}

4、删除字符串中所有*号。

voidfun(char*a)

{inti,j=0;

for(i=0;a[i]!

='\0';i++)

if(a[i]!

='*')

a[j++]=a[i];

a[j]='\0';

}

5、实现两个字符串的连接(不要同时使用库函数),即把p2所指的字符串连接到p1所指的字符串的后面。

voidfun(charp1[],charp2[])

{

inti,j;

for(i=0;p1[i]!

='\0';i++);

for(j=0;p2[j]!

='\0';j++)

p1[i++]=p2[j];

p1[i]='\0';}

6、某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能:

求出平均分,并放入记录的ave成员中。

voidfun(STREC*a)

{inti;

a->ave=0.0;

for(i=0;i

a->ave=a->ave+a->s[i];

a->ave/=N;}

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

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

doublefun(STREC*h)

{doubleave=0.0;

STREC*p=h->next;

while(p!

=NULL)

{ave=ave+p->s;

p=p->next;

}

returnave/N;}

8、将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过K返回。

voidfun(intm,int*k,intxx[])

{inti,j,n=0;

for(i=4;i

{for(j=2;j

if(i%j==0)break;

if(j

}

*k=n;

}

9、求ss所指字符串中指定字符的个数,并返回此值。

intfun(char*ss,charc)

{inti=0;

for(;*ss!

='\0';ss++)

if(*ss==c)

i++;

returni;

}

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

floatfun(float*a,intn)

{inti;

floatav=0.0;

for(i=0;i

av=av+a[i];

return(av/n);

}

11、学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,求最高的学生数据放在b所指的数组中。

注意:

分数最高的学生可能不止一个,函数返回分数最高的学生的人数。

intfun(STREC*a,STREC*b)

{inti,j=0,max=a[0].s;

for(i=0;i

if(max

for(i=0;i

if(max==a[i].s)

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

returnj;}

12、除了字符串前导的*号之外,将串中其他*号全部删除。

voidfun(char*a)

{inti=0;

char*p=a;

while(*p&&*p=='*')

{a[i]=*p;

i++;

p++;

}

while(*p)

{if(*p!

='*')

{a[i]=*p;i++;}

p++;

}

a[i]='\0';

}

13、统计在tt所指的字符串中’a’到’z’26个小写字母给出现的次数,并依次放在pp所指数组中。

voidfun(char*tt,intpp[])

{inti;

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

pp[i]=0;

for(;*tt!

='\0';tt++)

if(*tt>='a'&&*tt<='z')

pp[*tt-'a']++;

}

14、将字符串尾部的*号全部删除,前面和中间的*号不动。

voidfun(char*a)

{while(*a!

='\0')

a++;

a--;

while(*a=='*')

a--;

*(a+1)='\0';}

15、比较字符串的长度,函数返回较长的字符串,如果相同,则返回第一个字符串。

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

{inti,j;

for(i=0;s[i]!

='\0';i++);

for(j=0;t[j]!

='\0';j++);

if(i<=j)

returnt;

else

returns;}

16、学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构体数组s中,函数返回该学生的学生数据,指定的学号在主函数中输入。

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

STRECfun(STREC*a,char*b)

{inti;

STRECstr={"\0",-1};

for(i=0;i

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

str=a[i];

returnstr;

}

17、将s所指字符串中除下标为偶数同时ASCII码值也为偶数的字符外,其余的全部删除字符串中剩余的字符所形成的新串放在t数组中。

voidfun(char*s,chart[])

{

inti,j=0;

for(i=0;s[i]!

='\0';i++)

if(i%2==0&&s[i]%2==0)

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

t[j]='\0';

}

18、利用下面的简单迭代方法求方程cos(x)-x=0的一个实根s

doublefun()

{doublex0,x1;

x1=0.0;

do

{

x0=x1;

x1=cos(x0);

}while(fabs(x0-x1)>=1e-6);

returnx1;

}

19、将字符串中的前导*号全部移到字符串尾部。

voidfun(char*a)

{inti=0,n=0;

char*p;

p=a;

while(*p=='*')/*判断*p是否是*号,并统计*号的个数*/

{

n++;p++;

}

while(*p)/*将前导*号后的字符传递给a*/

{

a[i]=*p;i++;p++;

}

while(n!

=0)

{

a[i]='*';i++;n--;

}

a[i]='\0';}

20、N名学生的数据已放入主函数中的结构体数组中,把分数最低的学生数据放入b所指的数组中。

intfun(STREC*a,STREC*b)

{inti,j=0,min=a[0].s;

for(i=0;i

if(min>a[i].s)

min=a[i].s;/*找出最小值*/

for(i=0;i

if(min==a[i].s)

b[j++]=a[i];/*找出成绩与min相等的学生的记录,存入结构体b中*/

returnj;

}

21、计算

doublefun(intm)

{inti;

doubles=0.0;

for(i=1;i<=m;i++)

s=s+log(i);

returnsqrt(s);

}

22、只删除字符前导和尾部的*号,串中字母间的*号都不删除。

voidfun(char*a,intn,inth,inte)

{inti,j=0;

for(i=h;i

a[j++]=a[i];

a[j]='\0';}

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

voidfun(char*s,chart[])

{inti,j=0,k=strlen(s);

for(i=1;i

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

t[j]='\0';}

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

合并方式是:

将a中的十位和个位依次放在变量c的百位和个位上,B中的十位和个位数依次放在变量c的十位和千位上。

voidfun(inta,intb,long*c)

{

*c=a%10+(b/10)*10+(a/10)*100+(b%10)*1000;

}

25、除了尾部的*号之外,将字符中的其他的*号全部删除。

形参p已指向字符串最后的一个字母。

voidfun(char*a,char*p)

{char*t=a;

for(;t<=p;t++)

if(*t!

='*')

*(a++)=*t;

for(;*t!

='\0';t++)

*(a++)=*t;

*a='\0';

}

26、N名学生的数据已放入主函数中的结构体数组中,按分数降序排列学生的记录,高分在前,低分在后。

voidfun(STRECa[])

{inti,j;

STRECt;

for(i=1;i

for(j=0;j

if(a[j].s

{t=a[j];a[j]=a[j+1];a[j+1]=t;}

}

27、N名学生的数据已放入主函数中的结构体数组中,把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。

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

{

inti;

doubleav=0.0;

*n=0;

for(i=0;i

av=av+a[i].s;

av=av/N;

for(i=0;i

if(av<=a[i].s)

{b[*n]=a[i];*n=*n+1;}

returnav;}

28、将1~m之间(含m)能被7或11整除的所有整数放在数组a中,并通过n返回这些数的个数。

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

{inti,j=0;

for(i=1;i<=m;i++)

if(i%7==0||i%11==0)

a[j++]=i;

*n=j;}

29、将字符串中的前导*号全部删除,中间和尾部的*号不删除。

voidfun(char*a)

{char*p=a;

while(*p=='*')p++;

for(;*p!

='\0';p++,a++)

*a=*p;

*a='\0';}

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

找出学生的最高分。

doublefun(STREC*h)

{doublemax=h->s;

while(h!

=NULL)

{if(maxs)max=h->s;

h=h->next;

}

returnmax;

}

30、找出一维整型数组元素最大的值及其所在的下标,并通过形参传回。

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

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

{inti;

*max=a[0];

*d=0;

for(i=0;i

if(*max

{*max=a[i];*d=i;}

}

31、将s所指字符串中除了下标为奇数同时ASCII值也为奇数的字符之外,其余的所有字符全部删除,串在剩余字符所形成的一个新串放在t所指的数组中。

voidfun(char*s,chart[])

{inti,j=0,n;

n=strlen(s);

for(i=0;i

if(i%2!

=0&&s[i]%2!

=0)

{t[j]=s[i];

j++;

}

t[j]='\0';}

32、实现B=A+’A’,即将矩阵A加上A的转置,存放在矩阵B中。

voidfun(inta[3][3],intb[3][3])

{inti,j;

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

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

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

33、将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。

voidfun(int(*s)[10],int*b,int*n,intmm,intnn)

{inti,j;

for(j=0;j

for(i=0;i

{

b[*n]=*(*(s+i)+j);

*n=*n+1;

}

}

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

合并的方式是:

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

voidfun(inta,intb,long*c)

{

*c=a/10+(b%10)*10+(a%10)*100+(b/10)*1000;

}

35、将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并成一个新的字符串。

voidfun(chara[M][N],char*b)

{inti,j,k=0;

for(i=0;i

for(j=0;a[i][j]!

='\0';j++)

b[k++]=a[i][j];

b[k]='\0';

}

36、删除一个字符串中指定下标的字符。

a指向原字符后的字符串存放在b所指的数组中,n中存指定的下标。

voidfun(chara[],charb[],intn)

{inti,k=0;

for(i=0;a[i]!

='\0';i++)

if(i!

=n)

b[k++]=a[i];

b[k]='\0';

}

37、移动一维数组中的内容,若数组中有n个整数,要求把下标从0~p(含p,p小于等于n-1)的数组元素平移到数组的最后。

voidfun(int*w,intp,intn)

{intx,j,ch;

for(x=0;x<=p;x++)

{ch=w[0];

for(j=1;j

{

w[j-1]=w[j];

}

w[n-1]=ch;

}

}

38、将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。

voidfun(char(*s)[N],char*b)

{inti,j,k=0;

for(i=0;i

for(j=0;j

b[k++]=s[j][i];

b[k]='\0';

}

39、计算

floatfun(intn)

{inti,s1=0;

floats=0.0;

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

{s1=s1+i;

s=s+1.0/s1;

}

returns;

}

40、将s所指字符串中ASCCII值为奇数的字符删除,剩余字符形成的新串放在t所指数组中

voidfun(char*s,chart[])

{inti,j=0,n;

n=strlen(s);

for(i=0;i

if(s[i]%2==0)

{t[j]=s[i];

j++;

}

t[j]='\0';

}

42、删除一维数组中所有相同的数使之只剩一个。

数组中的数已按由小到大的顺序排列函数返回删除后数组的数据。

intfun(inta[],intn)

{inti,j=1;

for(i=1;i

if(a[j-1]!

=a[i])

a[j++]=a[i];

returnj;

}

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

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

{inti=0;

char*q=a;

while(q

{a[i]=*q;q++;i++;}

while(q

{if(*q!

='*')

{a[i]=*q;

i++;

}

q++;

}

while(*q)

{a[i]=*q;i++;q++;}

a[i]='\0';

}

44、将a,b的两个两位正整数合并成一个新的整数放在c中,合并方式是:

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

voidfun(inta,intb,long*c)

{

*c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000;

}

45、使字符串的前导*号不得多于n个,若多于n个,则删除多余的*号,若少于或等于n个,则不做处理,字符串中间和尾部的*号不删除。

voidfun(char*a,intn)

{inti=0;

intk=0;

char*p,*t;

p=t=a;

while(*t=='*')

{k++;t++;}

if(k>n)

{while(*p)

{a[i]=*(p+k-n);

i++;

p++;

}

a[i]='\0';

}

}

46、将两个两位数的正整数a,b合并成一个整数放在c中,合并方式是:

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

voidfun(inta,intb,long*c)

{

*c=a/10+(b/10)*10+(a%10)*100+(b%10)*1000;

}

47、将一个数字字符串转换为一个整数。

答案:

ongfun(char*p)

{longn=0;

intflag=1;

if(*p=='-')

{p++;flag=-1;}

elseif(*p=='+')

p++;

while(*p!

='\0')

{n=n*10+*p-'0';

p++;

}

returnn*flag;

}

48、求Fibonacc数列中大于t的最小的数,结果由函数返回。

Fibonacc数列F(n)定义为

intfun(intt)

{intf0=0,f1=1,f;

do{

f=f0+f1;

f0=f1;

f1=f;

}while(f

returnf;

}

49、把低于平均分的学生数据放入b所指的数组中低于平均分的学生人数通过形参n返回,平均分通过函数值返回

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

{inti,j=0;

doubleav=0.0;

for(i=0;i

av=av+a[i].s;

av=av/N;

for(i=0;i

if(a[i].s

*n=j;

returnav;

}

50、将ss所指字符串所有下标为奇数位上的字母转换为大写。

voidfun(char*ss)

{inti;

for(i=0;ss[i]!

='\0';i++)

if(i%2==1&&ss[i]>='a'&&ss[i]<='z')

ss[i]=ss[i]-32;

}

51、将a,b两个正整数合并成一个新的整数放在c中。

合并方式:

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

voidfun(inta,intb,long*c)

{*c=b/10+(a%10)*10+(b%10)*100+(a/10)*1000;

}

52、使字符串中尾部的*号不多于n个,若多于n个,则删除多余的*号,若少于或等于n个,则不做任何操作,字符中间的*不删除。

voidfun(char*a,intn)

{inti=0,k=0;

char*p,*t;

p=t=a;

while(*t)

t++;

t--;

while(*t=='*')

{k++;t--;}

if(k>n)

{while(*p&&p

{a[i]=*p;

i++;p++;

}

a[i]='\0';

}

}

53、将a,b两个正整数合并成一个新的整数放在c中。

合并方式:

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

voidfun(inta,intb,long*c)

{*c=b%10+(a/10)*10+(b/10)*100+(a%10)*1000;

}

54、将a,b两个正整数合并成一个新的整数放在c中。

合并方式:

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

voidfun(inta,intb,long*c)

{

*c=b%10+(a%1

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2