欢迎来到天天文库
浏览记录
ID:49654345
大小:36.99 KB
页数:13页
时间:2020-03-03
《初级程序员2011下半年下午试题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、初级程序员2011下半年下午试题试题一 阅读以下说明和流程图。 [说明] 以下流程图用于检查数组A[1:n]中的元素是否为自然数1~n的一个排列(含有1~n各数)。若是,则输出OK,否则输出所缺的自然数及其个数m。 为检查A[1:n]中是否含有k,只要判断P(k)=(A(1)-k)*(A(2)-k)*…*(A(n-k)是否等于0即可。 [流程图] 试题二1、 阅读以下说明和C程序代码。 [说明] 下面是一个待修改的C程序,其应该完成的功能是:对于输入的一个整数num,计算其位数k,然后将其各位数字按逆序转换为字符串保存并输出。若num为负整数,则输出
2、字符串应有前缀“-”。例如,将该程序修改正确后,运行时若输入“14251”,则输出“15241”;若输入“-6319870”,则输出“-0789136”。 下面给出的C程序代码中有五处错误,请指出错误代码所在的行号并给出修改正确后的完整代码行。[C程序代码]行号代码01020304#include<stdio.h>#include<stdlib.h>intmain(){0506070809101112131415161718longnum=0,t=0;char*pstr,i=0,k=0;scanf("%1d",num);/*输入一个整数,存入num*/t=num;k
3、=num!=0?0:1;while(t>=0){/*计算位数*/t=t/10;k++;}pstr=(char*)malloc((k+2)*sizeof(char));/十申请字符串的存储空间*/if(pstr=0)return-1;i=0:192021222324252627282930if(num<0){num=-num;pstr[0]='-';i=1;}for(;k>0;k--){/*形成字符串*/pstr[i++]=num%10;num=num/10;}pstr[k]='\0’;/*设置字符串结尾*/printf("%s",pstr);free(pstr);
4、return0:}试题三阅读以下说明和C代码。 [说明] 某市在进行市长选举,该市共分为M个选区(1<M<6,从1开始顺序编号),共有N个竞选者参选(1<N<5,从A开始顺序编号)。经投票后,所得选票数据如表3-1所示。表3-1选票数据选区竞选者A竞选者B竞选者C竞选者D1192482063721479031221318612121384114214083952671338229 现已将选票数据存入文本文件data.txt,该文件内容格式如下:共有M行,每行N+1个整数,第一个整数为选区编号,随后为N个竞选者在该选区所得票数。 下面的程序先从文件中读入选票数据
5、存入二维数组data,然后完成下列功能: a.计算并显示每个竞选者获得的选票数及占总选票数的百分比; b.如果任一竞选者获得的选票数超过总选票数的50%,则显示该竞选者获胜; c.如果没有竞选者获得总选票数的50%以上,则显示两位得票最高的竞选者需再进行决选。 在下面的程序代码中,竞选者A的编号为1,竞选者B的编号为2,以此类推。 [C代码] #include<stdio.h> #include<stdlib.h> #defineM 5 /*选区数*/ #defineN 4 /*竞选者人数*/ int main(int argc,c
6、har argv[]) { FILE*fin; int data[M+1][N+1]; /*data[][0]存放选区编号,data[M][j]存放j号竞选者得票总数*/ intMAXP1,cd1; /*MAXP1、cd1存放得票最多者的票数和竞选者编号*/ int MAXP2,cd2; /*MAXP2、cd2存放得票次多者的票数和竞选者编号*/ inti,j,totalP; /*totalP存放总票数*/ fin=fopen("data.txt","r"); if (!fin)return-1; i=
7、0; j=0; while(!feof(fin)){ /*从文件读入数据*/ fscanf(fin,"%d",&data[i][j]); (1); if(j>N) {j=0; i++;} } fclose(fin); totalP=0; MAXP1=0; MAXP2=0; cd1=0;cd2=0; for(j=1;j<N+1;j++) { data[M][j]= (2); /*设置竞选者得票总数初始值*/ for(i=0;i<M;i++) /*计算j号竞选者的得票总
此文档下载收益归作者所有