计算机二级上机技巧文档格式.docx
- 文档编号:18105961
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:31
- 大小:45.61KB
计算机二级上机技巧文档格式.docx
《计算机二级上机技巧文档格式.docx》由会员分享,可在线阅读,更多相关《计算机二级上机技巧文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
r=fun(1,x1,x2);
r+=fun(2,x1,x2);
printf("
\nx1=%f,x2=%f,x1*x1+x1*x2=%f\n\n"
x1,x2,r);
其中第一空填写的就是函数返回值的类型名,根据return后面的表达式的值的类型就是函数返回值的类型,而return__2__(x);
和return__3__(x,y);
这样的表达形式只有在函数中存在,而我们定义的f1和f2函数在后面没有用到,不可能无缘无故的使用变量或函数,所以可以分析出这两空一定是填f1,f2函数,具体填哪个,根据他们的形式参数来确定,f1有一个形参,f2有两个形参,实际参数跟形式参数个数一致,类型一致,一一对应,所以第2空填写f1,第3空填写f2,第一空很明显填写double型。
运行后如果得到=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000,那就说明做正确了。
2、程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和3门课的成绩。
函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大)排序。
string.h>
structstudent{
longsno;
charname[10];
floatscore[3];
};
voidfun(structstudenta[],intn)
{
__1__t;
inti,j;
for(i=0;
i<
__2__;
i++)
for(j=i+1;
j<
n;
j++)
if(strcmp(__3__)>
0)
{t=a[i];
a[i]=a[j];
a[j]=t;
{structstudents[4]={{10001,"
ZhangSan"
95,80,88},{10002,"
LiSi"
85,70,78},
{10003,"
CaoKai"
75,60,88},{10004,"
FangFang"
90,82,87}};
\n\nTheoriginaldata:
\n\n"
);
for(j=0;
4;
{printf("
\nNo:
%ldName:
%-8sScores:
"
s[j].sno,s[j].name);
3;
i++)printf("
%6.2f"
s[j].score[i]);
\n"
fun(s,4);
\n\nThedataaftersorting:
这道题是有关结构体的题目,首先看清楚题目的要求,按照姓名的字典顺序从小到大排序,第一空就是函数体内的定义部分,定义t的类型,根据t=a[i];
我们发现他们的类型是一致的,已有定义structstudenta[],很明显t也是这个类型,这样第一空填structstudent。
第2空是填写循环条件,根据for(i=0;
i++)for(j=i+1;
j++),这是个循环嵌套,不断比较字符串的字典顺序,所以第二空填写n-1,第三空是一个字符串的函数strcmp,它的参数有2个,并且类型必须是指针类型,所以这空填a[i].name>
a[j].name。
运行后按照姓名的字典序(从小到大)排序,说明这题做对了。
(二)、while、if、for语句的表达式
8、给定程序中,函数fun的功能是:
在形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回所剩字符串的个数。
ss所指字符串数组中共有N个字符串,且串长小于M。
#defineN5
#defineM10
intfun(char(*ss)[M],intk)
{inti,j=0,len;
for(i=0;
__1__;
{len=strlen(ss[i]);
if(len<
=__2__)
strcpy(ss[j++],__3__);
returnj;
{
Charx[N][M]={"
Beijing"
"
Shanghai"
Tianjing"
Nanjing"
Wuhan"
inti,f;
\nTheoriginalstring\n\n"
i<
N;
i++)puts(x[i]);
f=fun(x,7);
Thestringwitchlengthislessthanorequalto7:
f;
i++)puts(x[i]);
printf("
这道题是有关字符串的题目,x[N][M]有5个字符串,删除所有串长超过k的字符串,第1空填写循环结束条件,比较完5个字符串长度是否超过k就结束,所以这空填N(常量5),第2空跟k比较长度,很明显填k,最后一空是字符串函数strcpy复制字符串,strcpy两个参数都必须为指针,这空只能填ss[i],把长度小于等于k的字符串全部复制到ss[j]中,j++实现j自增。
运行检验结果。
(三)、函数调用
5、给定程序中,函数fun的功能是将a和b所指的两个字符串转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含9个以下数字字符。
例如,主函数中输入字符串:
32486和12345,在主函数中输出的函数值为:
44831。
ctype.h>
#defineN9
longctod(char*s)
{longd=0;
while(*s)
if(isdigit(*s)){
d=d*10+*s-__1__;
__2__;
returnd;
longfun(char*a,char*b)
return__3__;
{chars1[N],s2[N];
do
Inputstrings1:
gets(s1);
while(strlen(s1)>
N);
Inputstrings2:
gets(s2);
while(strlen(s2)>
Theresultis:
%ld\n"
fun(s1,s2));
这道题是有关字符串的,把字符串转成数据并相加。
其中有2个函数,ctod和fun函数,其中fun函数内容很简单,直接return表达式,ctod函数定义后,主函数中没有被调用,所以第三空填写ctod函数调用。
isdigit函数是判断是否有数字,if(isdigit(*s))如果是数字,则执行语句d=d*10+*s-__1__;
,,具体减去什么,我们发现*s的内容是字符,如‘2’字符如何转化为数字2,我们只有通过ASCII码转换,减去48(‘0’的ASCII码码值)即可得到相应的数字。
所以第一空填‘0’,第二空是循环体的一部分,循环是由*s来控制,如果没变化就会产生死循环,所以第二空使指针s下移,不断地接收字符串中的值。
第3空根据题目要求要把两个数加起来,但是ctod参数只有一个,每一次只能转化一个字符串,所以这空填ctod(a)+ctod(b)。
运行后入字符串:
32486和12345,得到44831,说明做正确了。
函数调用特别要注意实际参数必须与形参个数一致,类型一致,一一对应,特别注意字符串函数stycpy,strcmp,strlen等函数的调用形式。
(四)、初值
6、给定程序中,函数fun的功能是:
计算下式前n项的和作为函数值返回。
例如,当形参n的值为10时,函数返回:
9.612558。
doublefun(intn)
{inti;
doubles,t;
s=__1__;
for(i=1;
=__2__;
{t=2.0*i;
s=s+(2.0*i-1)*(2.0*i+1)/__3__;
returns;
{intn=-1;
while(n<
0)
Pleaseinput(n>
0):
scanf("
%d"
&
n);
\nTheresultis:
%f\n"
fun(n));
这是一道有关数学的题目,先把这数学式子看下,思考下分子和分母有什么规律,然后再做题,第一空填的是s的初值,根据s=s+(2.0*i-1)*(2.0*i+1)/__3__;
我们可以看出s是用来求整个式子的和,式子的每一项都存在规律,所以初值为0,那么第一空就填0,第二空是控制循环的条件,这个式子(2.0*i-1)*(2.0*i+1)/__3__跟题目给出的式子比较,发现i最大只能为n,所以第二空填n,第三空之前有定义了一个变量t,没被用到过,所以第三空肯定是填跟t有关内容,根据分析第三空填t*t。
运行输入10,值为9.612558,说明做对了。
(五)、变量或指针的自增自减
14、给定程序中,函数fun的功能是:
将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。
例如,形参s所指的字符串为:
abs5def126jkm8,程序执行后的输出结果为:
22。
intfun(char*s)
{intsum=0;
while(*s){
if(isdigit(*s))sum+=*s-__1__;
return__3__;
{chars[81];
intn;
\nEnterastring:
gets(s);
n=fun(s);
%d\n\n"
n);
这道题跟第5题有点类似,都是把字符串中的数字字符转为对应的数值,不同的是第5题是把两个字符串转成面值相同的整数并相加,这道题把1个字符串中的各个数值相加。
第一空是把所有是数字的加进sum中,所以同样的第一空填写’0’,第2空指针下移,填写s++,最后一空返回的是这些数值的累加和,而sum正是求这些数值的累加和,所以填sum。
输入abs5def126jkm8,程序执行后的输出结果为22,则正确。
(六)、return表达式
前面的第1题,第5题,第14题都使用到return,这里就不再列举。
(七)、文件指针
28、给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。
stdlib.h>
voidfun(char*s,inta,doublef)
__1__fp;
charstr[100],str1[100],str2[100];
inta1;
doublef1;
fp=fopen("
file1.txt"
"
w"
fprintf(fp,"
%s%d%f\n"
s,a,f);
__2__;
r"
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);
这是一道典型的文件题目,第一空很明显填写定义指针的形式,回忆下文件那张,定义文件指针为FILE*fp,一定要大写还要记得加*号。
接着以写的方式打开文件,第二空之后又出现了以读的方式打开文件,我们知道文件打开完了要关闭文件,才能再对文件进行其他的读写操作。
所以第二空填写关闭文件,关闭文件调用fclose(文件指针),第二空填fclose(fp)。
fscanf函数中的第一个参数是我们要填写的,fscanf(文件指针,格式控制字符串,输入项表),所以第三空填fp。
文件中考得多的就是文件指针,如FILE*fp,feof(fp),fclose(fp),fp,还有就是文件打开方式读文本文件r、读二进制文件rb,写文本文件w、写二进制文件wb。
(八)、指向结构体成员运算符--->
和结构体成员运算符.
23、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。
函数fun的功能是对形参b所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。
例如:
b所指变量t中的学号、姓名、和三门课的成绩依次是:
10002、"
ZhangQi"
、93、85、87,修改后输出t中的数据应为:
10004、"
LiJie"
、93、85、87。
voidfun(structstudent*b)
b__1__=10004;
strcpy(b__2__,"
LiJie"
{structstudentt={10002,"
93,85,87};
inti;
%s\nScores:
t.sno,t.name);
t.score[i]);
fun(__3__);
\nThedataaftermodified:
这是一道结构体题,考的内容是函数之间结构体变量的数据传递,函数fun的功能是对形参b所指结构体变量中的数据进行修改,所以传递的是结构体变量的地址,第三空考的是函数调用,实际参数就是&
t,所以第三空填&
t,t中的学号10002变成10004,所以结构体指针变量b指向学号(sno)变成10004;
所以bsno=10004,第一空填—>
strcpy(b__2__,"
这是对姓名进行赋值的一种方式,所以第二空填name>
。
运行后结果为10004、"
、93、85、87,则正确。
47、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。
所有学生数据均以二进制方式输出到文件中。
函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。
typedefstructstudent{
}STU;
voidfun(char*filename)
{FILE*fp;
STUs[N],t;
fp=fopen(filename,__1__);
fread(s,sizeof(STU),N,fp);
N-1;
if(s[i].sno__2__)
{t=s[i];
s[i]=s[j];
s[j]=t;
fp=fopen(filename,"
wb"
__3__(s,sizeof(STU),N,fp);
{STUt[N]={{10005,"
95,80,88},{10003,"
{10002,"
90,82,87},
{10001,"
MaChao"
91,92,77}},ss[N];
inti,j;
FILE*fp;
student.dat"
fwrite(t,sizeof(STU),5,fp);
t[j].sno,t[j].name);
t[j].score[i]);
fun("
rb"
fread(ss,sizeof(STU),5,fp);
ss[j].sno,ss[j].name);
ss[j].score[i]);
这道题既有结构体又有文件,所有学生数据均以二进制方式输出到文件中。
函数fun的功能是从形参filename所指的文件中读入学
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 二级 上机 技巧