全国计算机等级考试C语言上机考试题库4160套Word文件下载.docx

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

全国计算机等级考试C语言上机考试题库4160套Word文件下载.docx

《全国计算机等级考试C语言上机考试题库4160套Word文件下载.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试C语言上机考试题库4160套Word文件下载.docx(131页珍藏版)》请在冰点文库上搜索。

全国计算机等级考试C语言上机考试题库4160套Word文件下载.docx

z'

))||((s[i]>

A'

Z'

))){

/**********found**********/

t[j]=__1__;

j++;

}

else

{p[k]=s[i];

k++;

}

__2__;

i++)t[j+i]=p[i];

t[j+k]=__3__;

returnt;

main()

{chars[80];

printf("

Pleaseinput:

"

);

scanf("

%s"

s);

\nTheresultis:

%s\n"

fun(s));

【参考答案】

(1)s[i]?

?

(2)k?

(3)'

\0'

或0

【考点分析】

本题考查:

数组元素赋值操作;

for循环语句中循环变量的取值范围;

字符串结束标识'

【解题思路】

填空1:

将字符串s中所有字母元素赋给数组t。

填空2:

字符串中所有非字母元素放到字母元素后面,所以取值范围是0~k。

填空3:

最后给字符串加入结束标识'

2、程序修改

下列给定程序中函数fun的功能是:

将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在w所指的数组中。

要求t1和t2所指字符串的长度相同。

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

abcdabfabc"

,t1所指串中的内容为"

ab"

,t2所指子串中的内容为"

99"

时,结果在w所指的数组中的内容应为"

abcdabf99c"

请改正程序中的错误,使它能得出正确的结果。

部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!

voidfun(char*s,char*t1,char*t2,char*w)

{

char*p,*r,*a;

strcpy(w,s);

/************found************/

while(w)

{p=w;

r=t1;

while(*r)

IF(*r==*p)

{r++;

p++;

elsebreak;

if(*r=='

)a=w;

w++;

r=t2;

while(*r){*a=*r;

a++;

r++;

chars[100],t1[100],t2[100],w[100];

\nPleaseenterstringS:

s);

\nPleaseentersubstringt1:

t1);

\nPleaseentersubstringt2:

t2);

if(strlen(t1)==strlen(t2))

{fun(s,t1,t2,w);

\nTheresultis:

w);

elseprintf("

\nError:

strlen(t1)!

=strlen(t2)\n"

(1)while(*w)

(2)if(*r==*p)

while循环语句,C语言中的关键字。

(1)这里要判断的是值的真假,而不是地址,所以改为while?

(*w)。

(2)C语言中关键字区分大小写,只需运行程序,就可以根据错误提示找到。

3、程序设计

编写函数fun,其功能是:

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

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

ABCDEFG12345"

,其中字符A的ASCII码值为奇数,字符1的ASCII码值也为奇数,都应当删除,其它依此类推。

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

BDF24"

部分源程序在文件PROG1.C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

voidfun(char*s,chart[])

chars[100],t[100];

voidNONO();

fun(s,t);

t);

NONO();

voidNONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。

*/

chars[100],t[100];

FILE*rf,*wf;

inti;

rf=fopen("

in.dat"

"

r"

);

wf=fopen("

out.dat"

w"

for(i=0;

i<

10;

i++){

fscanf(rf,"

s);

fun(s,t);

fprintf(wf,"

%s\n"

t);

fclose(rf);

fclose(wf);

void?

fun(char?

*s,char?

t[])

int?

i,j=0,n;

n=strlen(s);

for(i=0;

i<

i++)?

/*找出ASCII码值为偶数的字符依次存入数组中*/

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

{?

t[j]=s[i];

j++;

t[j]='

;

ASCII码值为奇数或偶数的判定方法,同时掌握删除字符的思想,即重新保留非删除字符。

要删除ASCII码值为奇数的字符,也就是要保留ASCII码值为偶数的字符,由于最终是要求出剩余字符形成的新串,所以本题的算法是对原字符串从头到尾扫描,并找出ASCII码值为偶数的字符依次存入数组中。

第四十二套

给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。

请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。

请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。

voidfun(char*s,inta,doublef)

__1__fp;

charstr[100],str1[100],str2[100];

inta1;

doublef1;

fp=fopen("

file1.txt"

"

fprintf(fp,"

%s%d%f\n"

s,a,f);

__2__;

fscanf(__3__,"

%s%s%s"

str,str1,str2);

fclose(fp);

a1=atoi(str1);

f1=atof(str2);

\nTheresult:

\n\n%s%d%f\n"

str,a1,f1);

{chara[10]="

Hello!

intb=12345;

doublec=98.76;

fun(a,b,c);

(1)FILE*?

(2)fclose(fp)?

(3)fp

从使用fp=fopen("

)可知fp应该是文件类型指针,因此本空因该填写FILE*。

当对fp作打开操作的时候,并进行不同的操作前,应该对其关闭,因为在第一次打开时是对fp进行写操作,而在第二次打开后进行的是读操作,因此应该先对fp进行关闭,本空填fclose(fp)。

fscanf()是把文本文件输出,因此本空只能填写fp。

对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生的数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。

请改正程序中的错误,使它能得出正确的结果。

部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构。

conio.h>

malloc.h>

#defineN10

typedefstructss

{charnum[10];

ints;

}STU;

STU*fun(STUa[],intm)

{STUb[N],*t;

inti,j,k;

/*************found**************/

*t=calloc(m,sizeof(STU));

N;

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

for(k=0;

k<

m;

k++)

{for(i=j=0;

i++)

if(b[i].s>

b[j].s)j=i;

t[k].num=b[j].num;

t[k].s=b[j].s;

b[j].s=0;

returnt;

outresult(STUa[],FILE*pf)

{inti;

fprintf(pf,"

No=%sMark=%d\n"

a[i].num,a[i].s);

\n\n"

voidmain()

{STUa[N]={{"

A01"

81},{"

A02"

89},{"

A03"

66},{"

A04"

87},{"

A05"

77},

{"

A06"

90},{"

A07"

79},{"

A08"

61},{"

A09"

80},{"

A10"

71}};

STU*pOrder;

inti,m;

system("

CLS"

*****THERESULT*****\n"

outresult(a,stdout);

\nGivethenumberofthestudentswhohavebetterscore:

%d"

&

m);

while(m>

10)

{printf("

pOrder=fun(a,m);

*****THERESULT*****\n"

Thetop:

\n"

%s%d\n"

pOrder[i].num,pOrder[i].s);

free(pOrder);

(1)t=calloc(m,sizeof(STU));

(2)t[k]=b[j];

(1)calloc应用于分配内存空间。

调用形式为?

(类型说明符*)calloc(n,size),功能:

在内存动态存储区中分配n块长度为"

size"

字节的连续区域,函数的返回值为该区域的首地址,(类型说明符*)用于强制类型转换。

calloc函数与malloc?

函数的区别在于calloc函数一次可以分配n块区域。

例如,ps=(struct?

stu*)?

calloc(2,sizeof?

(struct?

stu));

,其中的sizeof(struct?

stu)是求stu的结构长度。

该语句的意思是:

按stu的长度分配两块连续区域,强制转换为stu类型,并把其首地址赋予指针变量ps。

在本题中不用考虑那么复杂,根据定义类型STU?

b[N],*t;

就可以看出*t=calloc(m,sizeof(STU))中的错误。

(2)t[k].num=b[j].num的错误旨在考查对结构体概念的掌握和灵活应用程度。

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

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

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

例如,若一维数组中的数据是:

2?

3?

4?

5?

6?

7?

8?

9?

10?

10

删除后,数组中的内容应该是:

请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

#defineN80

intfun(inta[],intn)

{

FILE*wf;

inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;

Theoriginaldata:

i++)

%3d"

a[i]);

n=fun(a,n);

\n\nThedataafterdeleted:

\n\n"

/******************************/

wf=fopen("

fprintf(wf,"

fclose(wf);

/*****************************/

fun(int?

a[],?

n)

i,j=1;

for(i=1;

if(a[j-1]!

=a[i])?

/*若该数与前一个数不相同,则要保留*/

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

return?

j;

/*返回不相同数的个数*/?

该程序的流程是:

定义变量i和j,其中j用于控制删除后剩下的数在数组中的下标,i用于搜索原数组中的元素。

j始终是新数组中最后一个元素的下一个元素的下标,所以if语句中的条件是a[j-1]!

=a[i],其中a[j-1]就是新数组中的最后一个元素,若条件成立,则表示出现了不同的值,所以a[i]要保留到新数组中。

注意本题中i和j的初值都要从1开始,该算法只能用于数组已排序的题目中。

第四十三套

计算N×

N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。

要求先累加主对角线元素中的值,再累加反向对角线元素中的值。

例如,若N=3,有下列矩阵:

首先累加1、5、9,然后累加3、5、7,函数返回值为30。

#defineN4

fun(intt[][N],intn)

{inti,sum;

___1___;

sum+=___2___;

sum+=t[i][n-

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

当前位置:首页 > 工程科技 > 能源化工

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

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