预览加载中,请您耐心等待几秒...
在线预览结束,喜欢就下载吧,查找使用更方便
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
全国计算机等级考试二级C机试试题18一、填空题下列给定程序中,函数fun的功能是:把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。例如,形参s所指字符串为abcdefgh,执行结果为ahcbedgf。请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include<stdio.h>voidfun(char*s){inti,n,k;charc;n=0;for(i=0;s[i]!='\0';i++)n++;/**********found**********/if(n%2==0)k=n-___1___;elsek=n-2;/**********found**********/c=___2___;for(i=k-2;i>=1;i=i-2)s[i+2]=s[i];/**********found**********/s[1]=___3___;}main(){chars[80]="abcdefgh";printf("\nTheoriginalstringis:%s\n",s);fun(s);printf("\nTheresultis:%s\n",s);}二、改错题下列给定程序中fun函数的功能是:求表达式s=aa…aa-…-aaa-aa-a(此处aa…aa表示n个a,a和n的值在1至9之间)例如,a=3,n=6,则以上表达式为:s=333333-33333-3333-333-33-3其值是296298。a和n是fun函数的形参,表达式的值作为函数值传回main函数。请改正程序中的错误,使它能计算出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构!#include<stdio.h>longfun(inta,intn){intj;/**************found**************/longs=0,t=1;for(j=0;j<n;j++)t=t*10+a;s=t;for(j=1;j<n;j++){/**************found**************/t=t%10;s=s-t;}return(s);}main(){inta,n;printf("\nPleaseenteraandn:");scanf("%d%d",&a,&n);printf("Thevalueoffunctionis:%ld\n",fun(a,n));}三、编程题编写函数voidfun(char*tt,intpp[]),统计在tt所指的字符串中'a'到'z'26个小写字母各自出现的次数,并依次放在pp所指的数组中。例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:33322110000000000000000000注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include<stdio.h>#include<string.h>voidfun(char*tt,intpp[]){}main(){charaa[1000];intbb[26],k;printf("\nPleaseenteracharstring:");scanf("%s",aa);fun(aa,bb);for(k=0;k<26;k++)printf("%d",bb[k]);printf("\n");}答案一、填空题【参考答案】(1)1(2)s[k]或*(s+k)(3)c【考点分析】本题考查:指针型变量;if…else语句;赋值语句。【解题思路】填空1:函数fun中变量n统计字符的长度,假如长度为偶数,则k=n-1;假如长度为奇数,则k=n-2,使得下标为奇数的最后一个元素有效(不是′\0′)。填空2:了解变量k的作用后,则将最右边的奇数位置的数赋值给变量c。填空3:将最后一个下标为奇数的元素移到第一个奇数位置。二、改错题【参考答案】(1)longs=0,t=0;(2)t=t/10;【考点分析】本题考查:变量赋初值操作;求余运算和除法运算的区别。【解题思路】(1)t用来存放每次循环后的多位数,第一次循环时,t应当是个位数,所以t的初始值应为0。(2)根据题意,这里不需要求余数,而是要去掉个位数,重新组合一个数,因