2004年全国计算机等级考试三级C语言全真上机试题解析2004年全国.docVIP

  • 4
  • 0
  • 约5.48千字
  • 约 5页
  • 2018-12-01 发布于浙江
  • 举报

2004年全国计算机等级考试三级C语言全真上机试题解析2004年全国.doc

2004年全国计算机等级考试三级C语言全真上机试题解析2004年全国

2004年全国计算机等级考试三级C语言全真上机试题解析  2004年全国计算机等级考试三级C语言全真上机试题解析   第1题: 函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS10.DAT中。替代关系:f(p)=p*11 mod 256 (p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。 void encryptChar() {int i; char *pf; for(i=0;iMAXLINE;I++) {pf=xx[i]; while(*pf!=0) {if(*pf==*pf/2*2||*pf*11%25632) {pf++;continue;} *pf=*pf*11%256; pf++;}}} 注:在ReadDat()函数中由于fgets()函数读入数据时没有读入字符串结束符\0,因而用while()循环在xx数组每一行未尾将换行符\n替换成结束符\0。编写的函数如下:该函数的基本算法是——让字符指针pf指向每一行的开头然后逐一往后移动,在移动过程中按要求进行转换。*pf=*pf/2*2用于判断是否为偶数。if()条件语句用于控制不替代字符。  第2题: 函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(第行字符串长度均小于80)。请编制函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。   条件:从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。 例如:字符串 d c b a h g f e 则处理后字符串 h g f e a b c d void jsSort() {int i,strl,half,j,k; char ch; for(i=0;i20;i++) {strl=strlen(xx[i]); half=strl/2; for(j=0;jHALF-1;J++) for(k=j+1;kHALF;K++) if(xx[i][j]xx[i][k]) {ch=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=ch;} for(j=half-1,k=strl-1;j=0;j--,k--) {ch=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=ch;}} 注:先采用冒泡法对左边部分进行升序排序,然后将排序后的左半与右半按对应位进行调换。  第3题: 已知数据文件IN.DAT中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加百位数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数writeDat()把结果输出到OUT.DAT文件。例如:7153,7+1=5+3,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。8129,8+12+9,则该数不满足条件计算平均值pjz2. jsvalue() { int i,g,s,b,q,k=0; for(i=0;i300;i++) {g=a[i]%10; s=a[i]%100/10; b=a[i]/100%10; q=a[i]/1000; if((q+b)==(s+g)) {cnt++;pjz1+=a[i];} else {k++;pjz2+=a[i];} } pjz1/=cnt; pjz2/=k;} 注:该题的关键在于取出一个数的个、十、百、千位上的数。a[i]%10结果为个位数,a[i]%100/10先对100求余得出后两位数然后再除10,由于为整数因此得出上一个后两位数的第一位。依此类推 第4题: 下列程序的功能是:先出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档