二级机试题库.docx
- 文档编号:30021364
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:156
- 大小:76.54KB
二级机试题库.docx
《二级机试题库.docx》由会员分享,可在线阅读,更多相关《二级机试题库.docx(156页珍藏版)》请在冰豆网上搜索。
二级机试题库
第01套:
给定程序中,函数fun的功能是:
将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。
例如,输入一个数:
27638496,新的数:
为739。
第一处:
t是通
过取模的方式来得到*n的个位数字,所以应填:
10。
第二处:
判断是否是奇数,所以应填:
0。
第三处:
最后通形参n来返回新数x,所以应填:
x。
***************************************************
给定程序MODI1.C中函数fun的功能是:
计算n!
。
例如,给n输入5,则输出120.000000。
第一处:
条件语句书写格式错误,应改为:
if(n==0)。
第二处:
语句后缺少分号。
***************************************************
请编写一个函数fun,它的功能是:
将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
例如,若输入字符串"-1234",则函数把它转换为整数值-1234。
函数fun中给出的语句仅供参考。
参考答案:
#include
#include
longfun(char*p)
{
/*以下代码仅供参考*/
inti,len,t;/*len为串长,t为正负标识*/
longx=0;
len=strlen(p);
if(p[0]=='-')
{t=-1;len--;p++;}
elset=1;
/*以下完成数字字符串转换为一个数字*/
while(*p)x=x*10-48+(*p++);
returnx*t;
}
main()/*主函数*/
{chars[6];
longn;
printf("Enterastring:
\n");
gets(s);
n=fun(s);
printf("%ld\n",n);
NONO();
}
NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*fp,*wf;
inti;
chars[20];
longn;
fp=fopen("c:
\\test\\in.dat","r");
wf=fopen("c:
\\test\\out.dat","w");
for(i=0;i<10;i++){
fscanf(fp,"%s",s);
n=fun(s);
fprintf(wf,"%ld\n",n);
}
fclose(fp);
fclose(wf);
}
注意:
由于NONO()这个函数是改卷人用的,与考生没有什么关系,故下面从第2套试题开始均省略NONO()
※※※※※※※※※※※※※※※※※※※※※※※※※
第02套:
给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本
文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结
果。
第一处:
定义文本文件类型变量,所以应填:
FILE*。
第二处:
判断文件是否结束,所以应填:
fp。
第三处:
显示读出的字符,所以应填:
ch。
***************************************************
给定程序MODI1.C中函数fun的功能是:
依次取出字符串中所有数字字符,形
成新的字符串,并取代原字符串。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
第一处:
要求是取出原字符串中所有数字字符组成一个新的字符串,程序中是使用变量j
来控制新字符串的位置,所以应改为:
s[j++]=s[i];。
第二处:
置新字符串的结束符,所以应改为:
s[j]='\0';.
***************************************************
请编写函数fun,函数的功能是:
将M行N列的二维数组中的字符数据,按列的
顺序依次放到一个字符串中。
例如,二维数组中的数据为:
WWWW
SSSS
HHHH
则字符串中的内容应是:
WSHWSHWSH。
参考答案:
voidfun(chars[][N],char*b)
{
inti,j,n=0;
for(i=0;i { for(j=0;j b[n]=s[j][i]; n=i*M+j+1; } } b[n]='\0'; } ※※※※※※※※※※※※※※※※※※※※※※※※※ 第03套: 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。 所 有学生数据均以二进制方式输出到文件中。 函数fun的功能是重写形参filename所 指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学 生的数据不变。 第一处: 从指定的文件中读出数据,所以应填: filename。 第二处: 读取文件fp的最后一条记录,所以应填: fp。 第三处: 再把读出的记录,写入文件fp指定的位置上,所以应填: fp。 *************************************************** 给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并 为各结点数据域赋0到m-1的值。 请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。 } 第一处: 指向刚分配的结构指针,所以应改为: p=(NODE*)malloc(sizeof(NODE)); 第二处: 在动态分配内存的下一行语句是,使用临时结构指针变量h保存p指针的初始位置, 最后返回不能使用p,是因为p的位置已经发生了变化,所以应改为返回h。 *************************************************** 请编写函数fun,函数的功能是: 统计一行字符串中单词的个数,作为函数值返 回。 一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干 个空格隔开,一行的开始没有空格。 参考答案: intfun(char*s) { intk=1; while(*s){ if(*s=='')k++; s++; } returnk; } ※※※※※※※※※※※※※※※※※※※※※※※※※ 第04套: 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。 所 有学生数据均以二进制方式输出到文件中。 函数fun的功能是从形参filename所指 的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的 学生数据输出到filename所指的文件中,覆盖原来的文件内容。 。 第一处: 建立文件的类型,考虑到是把结构中的数据(结构中的数据包含不打印的字符) 从文件中读出,所以应填: "rb"。 第二处: 判断当前学号是否大于刚读出的学号进行相比,如果大于,则进行交换,所以应 填: >。 第三处: 把已排序的结构数据,重新写入文件,所以应填: fwrite。 *************************************************** 给定程序MODI1.C中函数fun的功能是: 在字符串的最前端加入n个*号,形成 新串,并且覆盖原串。 注意: 字符串的长度最长允许为79。 第一处: 指针p应指向s,所以应改为: p=s;。 第二处: 死循环,当dowhile循环执行一次,临时变量p应该指向字符串的下一位置,所以 应改为: while(*p++);。 *************************************************** 请编写函数fun,函数的功能是: 统计各年龄段的人数。 N个年龄通过调用随机 函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0] 中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中, 其余依此类推,把100岁(含100)以上年龄的人数都放在d[10]中。 结果在主函数 中输出。 参考答案: voidfun(int*a,int*b) { inti,j; for(i=0;i for(i=0;i j=a[i]/10; if(j>10)b[M-1]++;elseb[j]++; } } doublernd() {statict=29,c=217,m=1024,r=0; r=(r*t+c)%m;return((double)r/m); } ※※※※※※※※※※※※※※※※※※※※※※※※※ 第05套: 给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本 文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将 字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。 第一处: 定义文本文件类型变量,所以应填: FILE*。 第二处: 关闭刚写入的文件,所以应填: fclose(fp)。 第三处: 从文件中读出数据,所以应填: fp。 *************************************************** 给定程序MODI1.C中函数fun的功能是: 对N名学生的学习成绩,按从高到低的 顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存 储区中,此存储区的首地址作为函数值返回。 第一处: 语句最后缺少分号。 第二处: 应该使用方括号,而不是圆括号。 像此类,使用编译,即可发现。 *************************************************** 请编写函数fun,函数的功能是: 删去一维数组中所有相同的数,使之只剩一 个。 数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如,一维数组中的数据是: 2223445666677899101010。 删除后,数组中的内容应该是: 2345678910。 参考答案: intfun(inta[],intn) { inti,j=1,k=a[0]; for(i=1;i if(k! =a[i]){ a[j++]=a[i]; k=a[i]; } a[j]=0; returnj; } ※※※※※※※※※※※※※※※※※※※※※※※※※ 第06套: 给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。 当调用正 确时,程序输出: x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000 第一处: 程序中使用双精度double类型进行计算,所以函数的返回值类型也为double,所 以应填: double。 第二处: 当i等于1时,则返回f1函数的值,所以应填: f1。 第三处: 如果i不等于1,则返回f2函数的值,所以应填: f2。 *************************************************** 给定程序MODI1.C中函数fun的功能是: 比较两个字符串,将长的那个字符串 的首地址作为函数值返回。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 第一处: 试题要求返回字符串的首地址,所以应改为: char*fun(char*s,char*t) 第二处: 取字符串指针ss的下一个位置,所以应改为: ss++;。 第三处: 取字符串指针tt的下一个位置,所以应改为: tt++;。 *************************************************** 请编写函数fun,函数的功能是: 移动字符串中的内容,移动的规则如下: 把第 1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。 例如,字符串中原有的内容为: ABCDEFGHIJK,m的值为3,则移动后,字符串 中的内容应该是: DEFGHIJKABC。 参考答案: voidfun1(char*w)/*本函数的功能是将字符串中字符循环左移一个位置*/ { inti;chart; t=w[0]; for(i=0;i w[i]=w[i+1]; w[strlen(w)-1]=t; } voidfun(char*w,intm)/*可调用fun1函数左移字符*/ { inti; for(i=0;i } ※※※※※※※※※※※※※※※※※※※※※※※※※ 第07套: 程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。 函 数fun的功能是输出这位学生的信息。 第一处: tt变量在函数体fun已经使用,所以应填: tt。 第二处: 利用循环分别输出学生的成绩数据,所以应填: tt.score[i]。 第三处: 函数的调用,所以应填: std。 *************************************************** 给定程序MODI1.C中函数fun的功能是: 求出数组中最大数和次最大数,并 把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。 第一处: 外循环每循环一次,把当前位置i赋值给m,所以应改为: m=i;。 第二处: 通过内循环来找出最大的一个数的位置k,所以应改为: if(a[k]>a[m])m=k;。 *************************************************** 请编写一个函数unsignedfun(unsignedw),w是一个大于10的无符 号整数,若w是n(n≥2)位的整数,函数求出w的低n-1位的数作为函数值返 回。 例如: w值为5923,则函数返回923;w值为923则函数返回23。 参考答案: unsignedfun(unsignedw) { if(w>10000)w%=10000; elseif(w>1000)w%=1000; elseif(w>100)w%=100; elseif(w>10)w%=10; returnw; } ※※※※※※※※※※※※※※※※※※※※※※※※※ 第08套: 给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、 姓名和3门课的成绩。 函数fun的功能是将该学生的各科成绩都乘以一个系数a。 。 第一处: 实参ss是一个结构型指针变量,所以应填: STU。 第二处: 该学生的各科成绩都乘以一个系数a,所以应填: score[i]。 第三处: 函数的调用,由于函数定义时使用的指针结构型变量,所以应填: &std。 *************************************************** 给定程序MODI1.C中函数fun的功能是: 求k! (k<13),所求阶乘的值作为函 数值返回。 例如: 若k=10,则应输出: 3628800。 第一处: 条件判断缺少圆括号。 第二处: 判断相等的符号是==。 *************************************************** 程序定义了N×N的二维数组,并在主函数中自动赋值。 请编写函数 fun(inta[][N],intn),函数的功能是: 使数组左下三角元素中的值乘以n。 例如: 若n的值为3,a数组中的值为 |197||397| a=|238|则返回主程序后a数组中的值应为|698| |456||121518| 参考答案: intfun(inta[][N],intn) { inti,j; for(i=0;i for(j=0;j<=i;j++) a[i][j]*=n; } ※※※※※※※※※※※※※※※※※※※※※※※※※ 第09套: 给定程序中,函数fun的功能是将不带头节点的单向链表结点数据域中的数据从小到大排序。 即若原链表结点数据域从头至尾的数据为: 10、4、2、8、6,排序后链表结点数据域从头至尾的数据为: 2、4、6、8、10。 第一处: 由于外循环变量使用p指针,内循环变量使用q指针,所以q指向必须指向p的next 指针,因此应填写: p.next。 第二处: 判断内循环q指针是否结束,所以应填: q。 第三处: 外循环控制变量p指向自己的next指针,所以应填: p.next。 *************************************************** 给定程序MODI1.C中函数fun的功能是: 将s所指字符串中的字母转换为按字母 序列的后续字母(但Z转换为A,z转换为a),其它字符不变。 第一处: 使用while循环来判断字符串指针s是否结束,所以应改为: while(*s)。 第二处: 取字符串指针s的下一个位置,所以应改为: s++;。 *************************************************** 请编写函数fun,函数的功能是: 移动一维数组中的内容;若数组中有n个整 数,要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。 例如,一维数组中的原始内容为: 1,2,3,4,5,6,7,8,9,10;p的值为3。 移动 后,一维数组中的内容应为: 5,6,7,8,9,10,1,2,3,4。 参考答案: voidfun(int*w,intp,intn) { inti,j=0,b[N]; for(i=p+1;i for(i=0;i<=p;i++)b[j++]=w[i]; for(i=0;i } ※※※※※※※※※※※※※※※※※※※※※※※※※ 第10套: 给定程序中,函数fun的功能是: 判定形参a所指的N×N(规定N为奇数)的矩 阵是否是"幻方",若是,函数返回值为1;不是,函数返回值为0。 "幻方"的判定 条件是: 矩阵每行、每列、主对角线及反对角线上元素之和都相等。 例如,以下3×3的矩阵就是一个"幻方": 492 357 816 第一处: 行列变量row和colum的值初始化为0。 第二处: 两个条件只要有一个不满足就返回0,所以应填: ||。 第三处: 如果矩阵是“幻方”,则返回1。 *************************************************** 给定程序MODI1.C中fun函数的功能是: 根据整型形参m,计算如下公式的值。 111 t=1-------------……------ 23m 例如,若主函数中输入5,则应输出-0.283333。 请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能 计算出正确的结果。 第一处: 在除法运算中,如果除数和被除数都是整数,所么所除结果也是整数,因此应改 为t-=1./i。 第二处: 应是返回公式的值,函数中公式的值是存放在临时变量t中,所以应填returnt;。 *************************************************** 请编写一个函数,函数的功能是删除字符串中的所有空格。 例如,主函数中输入"asdafaaz67",则输出为"asdafaaz67"。 参考答案: intfun(char*str) { char*p=str; inti=0; while(*p){ if(*p! ='')str[i++]=*p; p++; } str[i]=0; } ※※※※※※※※※※※※※※※※※※※※※※※※※ 第11套: 给定程序中,函数fun的功能是将带头结点的单向链表逆置。 即若原链表中从 头至尾结点数据域依次为: 2、4、6、8、10,逆置后,从头至尾结点数据域依次为: 10、8、6、4、2。 第一处: 使用结构指针p,来控制链表的结束,p必须指向h结构指针的next指针,来定位p 的初始位置。 所以应填写: h->next。 第二处: 判断p指针是否结束,所以应填写: 0。 第三处: q指向原q的next指针,所以应填: r。 *************************************************** 给定程序MODI1.C中函数fun的功能是: 计算s所指字符串中含有t所指字符串 的数目,并作为函数值返回。 第一处: 程序中子串是由变量t来实现的,再根据下面while循环体中语句可知,所以应改 为: r=t;。 第二处: 是判断相等的条件,所以应改为: if(*r==0)。 *************************************************** 请编写函数fun,函数的功能是: 将放在字符串数组中的M个字符串(每串的长 度不超过N),按顺序合并组成一个新的字符串。 函数fun中给出的语句仅供参考。 例如,字符串数组中的M个字符串为 AAAA BBBBBBB CC 则合并后的字符串的内容应是: AAAABBBBBBBCC。 提示: strcat(a,b)的功能是将字符串b复制到字符串a的串尾上,成为一个新 串。 参考答案: #include #defineM3 #defineN20 voidfun(chara[M][N],char*b) { /*以下代码仅供参考*/ inti;*b=0; for(i=0;i strcat(b,a[i]); } ※※※※※※※※※※※※※※※※※※※※※※※※※ 第12套: 给定程序中,函数fun的功能是将不带头结点的单向链表逆置。 即若原链表中 从头至尾结点数据域依次为: 2、4、6、8、10,逆置后,从头至尾结点数据域依次 为: 10、8、6、4、2。 第一处: 由于链表中的所有结果要求通过函数进行返回,所以应填: NODE*。 第二处: 中间变量r用来保存q的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 试题库