计算机二级考试部分试题及答案讲解文档格式.docx
- 文档编号:19955555
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:48
- 大小:149.82KB
计算机二级考试部分试题及答案讲解文档格式.docx
《计算机二级考试部分试题及答案讲解文档格式.docx》由会员分享,可在线阅读,更多相关《计算机二级考试部分试题及答案讲解文档格式.docx(48页珍藏版)》请在冰豆网上搜索。
的操作,所以应该改为return(value);
二、填空题
1.题目要求
下列给定程序中,函数fun的功能是:
有NXN矩阵,以主对角线为对称线,对称元素相加并将结果
存放在左下三角元素中,右上三角元素置为0。
例如,若
N=3,有下列矩阵
1
2
3
4
5
6
7
8
9
计算后结果为
100
650
10149
请在程序的下划线处填入正确的内容并把下划线删除。
使程序得出正确的结果。
注意:
部分源程序在文件BLANK1.C中。
不得增行或删行,也不得改程序的结构!
#defineN4
voidfun(int(*t)1)
{inti,j;
for(i=1;
i<
N;
i++)
{for(j=0;
j<
i;
j++)
{
—2—=t[i][j]+t[j][i];
___3___=0;
intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;
\nTheoriginalarray:
'
n"
for(i=0;
j++)printf("
%2d"
t[i][j]);
fun(t);
\nTheresultis:
2•算法分析
1[N]
形参t被定义为行数组指针变量,它指向包含N个元素的一位数组。
2t[i][j]
以主对角线为对称线,对称元素相加的值应该赋予左下三角元素的t[i][j]。
3t[j][i]
根据题意,为零的应该是右上三角元素的值。
三、编程题
规定输入的字符串中只包含字母和*号。
编写函数fun,其功能是:
将字符串中的前导*号全部删除,中
间和尾部的*号不删除。
例如,字符串中的内容为:
*******a*bc*DEF*G****,删除后字符串中的内容应当是:
a*BC*DEF*G****
编写函数时,不得使用C语言提供的字符串函数。
部分源程序在文件PROG1.(中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
voidfun(char*a)
{chars[81];
voidNONO();
Enterastring:
);
gets(s);
fun(s);
Thestringafterdeleted:
puts(s);
NONO();
voidNONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*in,*out;
inti;
chars[81];
in=fopen("
in.dat"
"
r"
out=fopen("
out.dat"
w"
for(i=0;
i<
10;
i++){
fscanf(in,"
%s"
s);
fun(s);
fprintf(out,"
%s\n"
fclose(in);
fclose(out);
(1)主要数据结构
char*a
(2)算法描述
1记录第一个非*的符号的地址;
2将包括第一个在内的非*字符串全部赋予另一个数组。
3•实现代码
char*p=a;
while(*p=='
*'
)p++;
for(;
*p!
='
\0'
;
p++,a++)
*a=*p;
*a='
4•程序调试及测试结果
经运行程序调试,将出现的错误分析如下:
(1)编译错误
(2)连接错误
(3)运行错误
经过修改程序测试结果正确,符合要求。
第二套
、改错题
依次取出字符串中所有的数字字符,形成新的字符串,并取代
原字符串。
请改正函数fun中的错误,使它能得出正确的结果。
#include<
conio.h>
voidfun(char*s)
{inti,j;
for(i=0,j=0;
s[i]!
='
if(s[i]>
0'
&
s[i]<
=9)
s[j]=s[i];
s[j]=0”;
voidmain()
{charitem[80];
system("
CLS"
\nEnterastring:
"
gets(item);
printf("
\n\nThestringis:
%s\n”,item);
fun(item);
\n\nThestringofchangingis:
item);
1语句s[j]=s[i];
错误。
程序在这里应该执行将是数字的字符赋予s[j]并将j自加1,所以这里应该改
为s[j++:
=s:
i:
2语句s[j]=””错误。
这里应该是将字符\0'
赋予s[j],而非字符串,所以应该改为s:
j]=\0'
*二、填空题
给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此
文本文件中逐个读入并显示在终端屏幕上。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
voidfun(char*s,inta,double
_1_fp;
charch;
fp=fopen("
file1.txt"
"
fprintf(fp,"
%s%d%f\n"
s,a,f);
fclose(fp);
printf("
\nTheresult:
\n\n"
ch=fgetc(fp);
while(!
feof(__2__))
{putchar(__3__);
putchar('
\n'
fclose(fp);
intb=12345;
{chara[10]="
Hello!
doublec=98.76;
fun(a,b,c);
2•算法分析
1FILE*易知这里是为了定义文件指针fp,因此这里应该填FILE*;
2fp这里是为了对该文件类型数据进行操作,因此填写fp;
3ch为了实现用字符方式从此文本文件中逐个读入并显示在终端屏幕上,此处应该填写ch。
请编写函数fun,该函数的功能是:
将M亍N列的二维数组中的字符数据,按列的顺序依此放到一个字符串中。
例如,若二维数组中的数据为
WWWW
SSSS
HHHH
则字符串中的内容应是:
WSHWSHWSHWSH
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include<
#defineM3
voidfun(char(*s)[N],char*b){}
FILE*wf;
chara[100],w[M][N]={{'
W,'
W},{'
S'
'
},{'
H'
}};
inti,j;
Thematrix:
i<
M;
i++)
j<
j++)
%3c"
w[i][j]);
fun(w,a);
TheAstring:
puts(a);
]******************************]
wf=fopen("
fprintf(wf,"
a);
fclose(wf);
***************************
char(*s)[N],char*b
将原数组行列互换后逐一记录至另一个以为数组,记录完成后将另一个数组的最后加上结束标志'
\0'
。
voidfun(char(*s)[N],char*b)
inti,j,k=0;
for(j=0;
b[k++]=s[j][i];
b[k]='
\0:
经运行程序调试,将出现的错误分析如下:
第三套
用冒泡法对6个字符串进行升序排列。
请改正程序中的错误,使它能得出正确的结果。
部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构!
string.h>
#defineMAXLINE20fun(char*pstr[6]){inti,j;
char*p;
for(i=0;
5;
i++)
for(j=i+1,j<
6,j++)
if(strcmp(*(pstr+i),*(pstr+j))>
0)
p=*(pstr+i);
*(pstr+i)=pstr+j;
*(pstr+j)=p;
}main()
{inti;
char*pstr[6],str⑹[MAXLINE];
for(i=0;
6;
i++)pstr[i]=str[i];
printf("
\nEnter6string(1stringateachline):
\n"
i++)scanf("
pstr[i]);
fun(pstr);
Thestringsaftersorting:
i++)printf("
1语句for(j=i+1,j<
6,j++)错误。
for语句中的各语句之间应该用“;
”号隔开,而非“,”号,所以此处应
该改为for(j=i+1;
j<
6;
j++)。
2语句*(pstr+i)=pstr+j;
根据题意,这里程序想执行的是将数组的第j个元素赋予数组的第i个元素,
而非将数组的第j个元素的地址赋予数组的第i个元素,所以这里应该改为*(pstr+i)=*(pstr+j);
将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的次序。
例如,s所指的字符串为def35adh3kjsdf7,执行后结果为defadhajsdf3537。
请在程序的下划线处填入正确的内容把下划线删除,使程序得出正确的结果。
不得增行或删行,也不得更改程序的结构!
voidfun(char*s)
{inti,j=0,k=0;
chart1[80],t2[80];
for(i=0;
&
s[i]<
=9)
t2[j]=s[i];
—1
elset1[k++]=s[i];
t2[j]=0;
t1[k]=0;
k;
i++)_2
___3___;
i++)s[k+i]=t2[i];
main()
{chars[80]="
ba3a54j7sd567sdffs"
\nTheoriginalstringis:
%s\n"
s);
fun(s);
\nTheresultis:
t2中
j++使j自加一,当下一次条件再一次满足条件时,能够把对应s[i]的元素记录到数组
的下一个元素中;
2s[i]=t1[i]将非数字的元素组成的数组t1
逐个地把它的元素赋给数组s;
3j将由数字组成的数组t2中的元
素在t1后逐个赋给数组s中第
k后的元素。
求ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串123412132,输入字符为1,则输出3。
#defineM81intfun(char*ss,charc)
{chara[M],ch;
\nPleaseenterastring:
gets(a);
\nPleaseenterachar:
ch=getchar();
\nThenumberofthecharis:
%d\n"
fun(a,ch));
NONO();
voidNONO()
{/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。
FILE*rf,*wf;
chara[M],b[M],ch;
rf=fopen("
in.dat"
wf=fopen("
fscanf(rf,"
a);
b);
ch=*b;
fprintf(wf,"
%c=%d\n"
ch,fun(a,ch));
fclose(rf);
fclose(wf);
char*ss,charc
1得出字符数组的所包含的字符数的值并赋给m;
2逐一比较数组中与特定字符相同的字符,若有数组中有一个成立,就让j加上1,最后返回j的
值,j的值就是所要求的数组中与特定字符相同的字符个数。
intfun(char*ss,charc)
inti,j=0,m;
m=strlen(ss);
m;
if(ss[i]==c)j++;
returnj;
第四套
F列给定程序中函数fun的功能是:
删除s所指字符中所有的小写字母c。
部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!
voidfun(char*s)
{inti,j;
for(i=j=0;
i++)if(s[i]!
c'
)
s[i]=0;
{chars[80];
gets(s);
Theoriginalstring:
puts(s);
Thestringafterdeleted:
\n\n”);
当数组中的元素部位c是则记录下该元素并将它赋给元素s[j],同时让j
自加1,方便记录下下一个不是c的元素,所以这里应该改为s[j++]=s[i];
2语句s[i]=0;
错误。
根据题意,程序在这里想将所记录的最后一个不是c的元素的后面一位赋予结
束符号“\0”,所以这里应该改为s[j]='
\0'
、、填空题
程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。
函数fun的功能是:
将形参a所
指结构体变量中的数据赋给函数中的结构体变量b,并修改b中的学号和姓名,最后输出修改后的数据。
例如,a所指变量中的学号、姓名和三门课的成绩依次是:
10001、"
ZhangSan"
、95、80、88,则修改
后输出b中的数据应为:
10002、"
LiSi"
、95、80、88。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
#inelude<
structstudent{longsno;
charname[10];
floatseore[3];
};
voidfun(structstudenta)
{structstudentb;
inti;
b=__1__;
b.sno=10002;
strcpy(__2_,"
\nThedataaftermodified:
\nNo:
%ldName:
%s\nScores:
b.sno,b.name);
%6.2f"
b._3_);
for(i=0;
3;
i++)printf("
{structstudentinti;
s={10001,"
95,80,88};
\n\nTheoriginaldata:
%ldfor(i=0;
Name:
s.sno,s.name);
%6.2f"
s.score[i]);
2.算法分析
1a
2b.name
3score[i]
将a赋予b;
将子符串LiSi复制到原名子处,将LiSi作为新的b.name;
将三项成绩逐个输出。
请编写函数fun,其功能是:
将字符串中的前导*号全部移到字
符串的尾部。
*******a*bc*dEF*G****,移动后,字符串中的内容应当是:
A*BC*DEF*G***********。
在编写函数时,不得使用C语言提供的字符串函数。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 二级 考试 部分 试题 答案 讲解
![提示](https://static.bdocx.com/images/bang_tan.gif)