年全国计算机等级考试c语言上机考试题库4160套Word文档格式.docx
- 文档编号:20996659
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:97
- 大小:83.20KB
年全国计算机等级考试c语言上机考试题库4160套Word文档格式.docx
《年全国计算机等级考试c语言上机考试题库4160套Word文档格式.docx》由会员分享,可在线阅读,更多相关《年全国计算机等级考试c语言上机考试题库4160套Word文档格式.docx(97页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 年全国计算机等级考试c语言上机考试题库 4160套 全国 计算机等级考试 语言 上机 考试 题库 4160
![提示](https://static.bdocx.com/images/bang_tan.gif)