收藏 分享(赏)

南开百题(精简无重复版).doc

上传人:11xg27ws 文档编号:7131097 上传时间:2019-05-06 格式:DOC 页数:21 大小:237.50KB
下载 相关 举报
南开百题(精简无重复版).doc_第1页
第1页 / 共21页
南开百题(精简无重复版).doc_第2页
第2页 / 共21页
南开百题(精简无重复版).doc_第3页
第3页 / 共21页
南开百题(精简无重复版).doc_第4页
第4页 / 共21页
南开百题(精简无重复版).doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、全国计算机等级考试三级 C 语言程序设计上机考试习题集(2004 年版)【终极无错孙通版】1题目 1 编写一个函数 jsValue(int m,int k,int xx),函数的功能是: 将大于整数 m 且紧靠 m 的 k 个素数存入数组 xx 传回。最后调用函数 writeDat()读取 10 组数据,分别得出结果且把结果输出到文件 out.dat 中。部分源程序存在文件 prog1.c 中。例如:若输入 17 5 则应输出: 19,23,29,31,37。#include #include void readwriteDat();int isP(int m) int i;for(i=2;i

2、0;m+)if(isP(m) xxs+=m; k-; main() int m,n,xx1000; clrscr();printf(“nPlease enter two integers:“);scanf(“%d%d“,num(m,n,xx);for(m=0;m #define MAX 200 int aMAX, bMAX, cnt = 0 ;void jsVal() int i,j,qw,bw,sw,gw;for(i=0;i #include #include char xx5080 ; int maxline = 0 ; /* 文章的总行数 */ int ReadDat(void) ; v

3、oid WriteDat(void) ;void StrOR(void)int i,righto,j,s,k; char tem80;for(i=0;i=0;j-) k=0; memset(tem,0,80); /*初始化字符串数组 tem*/if(xxij=o) /*如果当前字符为o,进入以下语句*/righto=j; /*则将此字符中位置 j 的值赋给 righto*/for(s=righto+1;s #include #include #include 全国计算机等级考试三级 C 语言程序设计上机考试习题集(2004 年版)【终极无错孙通版】3char xx5080; int maxli

4、ne=0;/*文章的总行数*/ int ReadDat(void); void WriteDat(void);void StrOL(void) (输入文件句末有标点的在输出文件中句前有空格*/ int i,j,k,s,m,strl; char str80;for(i=0;i=0;j-) /*从当前字符串尾部开始向前倒序循环,实现题意要求的倒排*/ if(isalpha(xxij) k+; /*如果当前字符是字母 az 或 AZ,则 k 加一*/else for(m=1;m=0;j-)if(!isalpha(xxij) strcat(str,xxi+j+1); strcat(str,“ “);

5、xxij=0; strcat(str,xxi); strcpy(xxi,str); 题目 5 在文件 in.dat 中有 200 个正整数,且每个数均在 1000 至 9999 之间。函数 ReadDat()读取这200 个数存放到数组 aa 中。请编制函数 jsSort(),其函数的功能是: 要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前 10 个数依次存入数组 bb 中,如果后三位的数值相等,则按原先的数值进行降序排列。最后调用函数 WriteDat()把结果 bb 输出到文件 out.dat 中。例:处理前 6012 5099 9012 7025 8088处理后 9012

6、 6012 7025 8088 5099#include #include #include int aa200,bb10;void jsSort()全国计算机等级考试三级 C 语言程序设计上机考试习题集(2004 年版)【终极无错孙通版】4 int i,j,data;for(i=0;iaaj%1000|aai%1000=aaj%1000 /*产品代码*/ char mc11; /*产品名称*/int dj; /*单价*/ int sl; /*数量*/ long je; /*金额*/ PRO;PRO sellMAX; void ReadDat(); void WriteDat();void S

7、ortDat()int i,j; PRO xy;for(i=0;i #include #include #include unsigned char xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void);void WriteDat(void);void encryptChar() int i,j;全国计算机等级考试三级 C 语言程序设计上机考试习题集(2004 年版)【终极无错孙通版】5for(i=0;i130) continue;else xxij=xxij*11%256; void main() clrscr();if(ReadDat()prin

8、tf(“数据文件 ENG.IN 不能打开!n007“); return; encryptChar(); WriteDat(); int ReadDat(void) FILE *fp; int i=0;unsigned char *p;if(fp=fopen(“eng.in“,“r“)=NULL) return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,n);if(p)*p=0;i+; maxline=i; fclose(fp); return 0; void WriteDat(void) fclose(fp); 题目 8 函数 ReadDat()实

9、现从文件 IN.DAT 中读取一篇英文文章存入到字符串数组 xx 中,请编制函数SortCharD(),其函数的功能是:以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组 xx 中,最后调用函数 writeDat()把结果 xx 输出到文件 OUT2.DAT 中。例:原文:dAe,BfC. CCbbAA结果:fedCBA. bbCCAA#include #include #include char xx5080; int maxline=0;/*文章的总行数*/int ReadDat(void);void WriteDat(void);void SortCharD(

10、void)int i,j,k,strl;char ch;for(i=0;i #include #include char xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void);void WriteDat(void);void ConvertCharA(void) int i,j;for(i=0;i=avoid chg(char *s)while(*s)if(*s=z|*s=Z) *s-=25; s+;else if(*s=avoid jsVal()int i,j,flag;for(i=0;iajelse flag=0;break;if(flag=1)

11、 bcnt+=ai; for(i=0;ibj) flag=bi;bi=bj;bj=flag; void readDat() int i ; FILE *fp ;全国计算机等级考试三级 C 语言程序设计上机考试习题集(2004 年版)【终极无错孙通版】7fp = fopen(“in.dat“, “r“) ;for(i = 0 ; i #include #include char xx5080; int maxline=0;/*文章的总行数*/ int ReadDat(void);void WriteDat(void);void StrCharJR()int i,j;for(i=0;i4);voi

12、d main() clrscr();if(ReadDat() printf(“数据文件 IN.DAT 不能打开!n007“); return; StrCharJR(); WriteDat(); int ReadDat(void) FILE *fp; int i=0; char *p;if(fp=fopen(“IN.DAT“,“r“)=NULL) return 1;while(fgets(xxi,80,fp)!=NULL) p=strchr(xxi,n); if(p)*p=0; i+; maxline=i; fclose(fp); return 0; void WriteDat(void) fc

13、lose(fp);题目 13 函数 READDAT()从文件 IN.DAT 中读取一篇文章存入到字符串数组 XX 中;编制 CHA(),功能是:以行为单位把字符串中的第一个字符的 ASCII 值加第二个字符的 ASCII 值,得到第一个亲朋字符,第二个字符的 ASCII 值加第三个字符的 ASCII 值,得到第二个新字符,依此类推一直处理到最后第二个字符,最后一个字符的 ASCII 值加原第一个字符的 ASCII 值,得到最后一个新的字符,得到的新字符分别存放在原字符串对应的位置上。最后把已处理的字符串逆转后按行重新存入字符串数组 XX 中,.原始数据文件存放的格式是:每行的宽度均小于 80

14、个字符,含标点符号和空格.#include #include #include char xx5080 ; int maxline = 0 ; /* 文章的总行数 */int ReadDat(void) ; void WriteDat(void) ;void ChA(void) int i,j; char ch;for(i=0;i#include #include int findStr(char *str,char *substr) int n=0; char *p , *r;while ( *str )p=str; r=substr;while(*r)if(*r=*p) r+; p+; e

15、lse break;if(*r=0)n+; str+; return n; main() char str81, substr3 ; int n ; clrscr() ;printf(“输入原字符串:“) ; gets(str) ;printf(“输入子字符串:“) ; gets(substr) ;puts(str) ; puts(substr) ; n=findStr(str, substr) ; printf(“n=%dn“, n) ; ReadWrite() ; ReadWrite() fclose(rf) ; fclose(wf) ;解法二:int findStr(char *str,

16、char *substr) int i,cnt=0;for(i=0;iint jsValue(int t) int f0=0,f1=1,fn;fn=f0+f1;while(fn #include #include 全国计算机等级考试三级 C 语言程序设计上机考试习题集(2004 年版)【终极无错孙通版】9float countValue() double x0,x1;x1=0.0;do x0=x1;x1=cos(x0);while(fabs(x0-x1)=0.000001);return x1; main()clrscr(); printf(“实根=%fn“,countValue();prin

17、tf(“%fn“,cos(countValue()-countValue();writeDat(); writeDat()题目 17 已知在文件 in.dat 中存有 N 个(个数 #include #define MAXNUM 200 float xxMAXNUM ;int N= 0 ; /* IN.DAT 中共有多少个实数 */ double aver=0.0; double sumint=0.0;/*整数部分之和*/ double sumdec=0.0;/*小数部分之和 */ int ReadDat(void) ; void WriteDat(void) ;void CalValue(v

18、oid) for (int i=0;iint jsValue(int bb)int i,j,k=0; int hun,ten,data;for(i=100;iint jsValue(long n)int i,strl,half; char xy20;ltoa(n,xy,10); /*注意这里不能使用 itoa()函数,因为 n 是 long 型的*/strl=strlen(xy);half=strl/2;for(i=0;i=half) return 1;else return 0; main()long m; FILE *out; out=fopen(“out.dat“,“w“);for(m=

19、11;m #include #define MAXNUM 200int xxMAXNUM; int totNum=0; /*共有多少个正整数*/ int totCnt=0; /*正整数的个数*/double totPjz=0.0; /*平均值*/ int ReadDat(void); void writeDat(void);void CalValue(void)int i,data;for(i=0;i0) totNum+;data=xxi1;if(data%2=0)totCnt+;totPjz+=xxi; if(totCnt=0) totPjz=0;else totPjz/=totCnt; v

20、oid main() int i; clrscr();for(i=0;i=0 且 ab-cd #define MAX 200 int aMAX, bMAX, cnt = 0 ;void jsVal()int i,j,thou,hun,ten,data,ab,cd;for(i=0;i=0 for(i=0;i #define MAX 200 int aMAX, bMAX, cnt = 0 ;void jsVal()int i,j,flag;for(i=0;ibj) flag=bi;bi=bj;bj=flag; void readDat() int i ; FILE *fp ; fp = fopen

21、(“in.dat“, “r“) ;for(i = 0 ; i #include #include #define MAX 1000int xxMAX,odd=0,even=0; double ave1=0.0,ave2=0.0,totfc=0.0;void WriteDat(void); int ReadDat(void)int i; FILE *fp; if(fp=fopen(“IN.DAT“,“r“)=NULL) return 1;/*编制函数 ReadDat()的部分*/for(i=0;i=M,这里 Sn=A1+A2+.+An,并依次把 n 值存入数组单元 b0,b1和 b2中,请编制j

22、sValue()函数来实现此功能, 最后调用函数 writeDat()把数组 b中的值输出到 out.dat 文件中。#include int b3;jsValue()int a1=1,a2=1,a12,sn,k=2;sn=a1+a2;while(1)a12=a1+2*a2;if(sn=100) b0=k;if(sn=1000) b1=k;if(sn=10000) b2=k;break;sn=sn+a12;a1=a2;a2=a12;k+; main() jsValue();printf(“M=100,n=%dnM=1000,n=%dnM=10000,n=%dn“,b0,b1,b2);write

23、Dat(); writeDat运行结果为:M=100,n=6 M=1000,n=9 M=10000,n=11题目 25 现有一个 10 个人 100 行的选票数据文件 IN.DAT,其数据存放的格式是每条记录的长度均为10 位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推 :内容均为字符 0和 1,1 表示此人被选中,0 表示此人未被选中,全选或不选均为无效的选票。给定函数 ReadDat()的功能是把选票数据读入到字符串数组 xx 中。请编制函数 CountRs()来统计每个人的选票数并把得票数依次存入 yy0到 yy9中。把结果 yy 输出到文件 OUT.DAT 中

24、。#include char xx10011; int yy10; int ReadDat(void); void WriteDat(void);void CountRs(void) int i,j,count;for(i=0;i int cnt,sum;void countValue() int s,i,x,n,e,six,nine;for(s=1;s #include #include char xx2080;void jsSort()全国计算机等级考试三级 C 语言程序设计上机考试习题集(2004 年版)【终极无错孙通版】14int i,j,k,strl;char ch;for(i=0;

25、ixxik) ch=xxij;xxij=xxik;xxik=ch;void main() readDat();jsSort();writeDat();readDat()FILE *in;int i=0; char *p; in=fopen(“in.dat“,“r“);while(i #include #include char xx2080;void jsSort() int i,j,k,strl,half;char temp;for(i=0;i=0;j-,k-) temp=xxij; xxij=xxik; xxik=temp; void main()readDat(); jsSort();

26、writeDat(); readDat() FILE *in; Int=0; char *p;in=fopen(“in.dat“,“r“);while(i #define MAX 200 int aMAX, bMAX, cnt = 0 ;void jsVal() int i,j,flag;for(i=5;iajelse flag=0;break;if(flag=1) bcnt+=ai; for(i=0;i #define N 100 #define S 1 #define M 10 int p100, n, s, m ; void WriteDat(void) ;void Josegh(voi

27、d) int i,j,s1,w; s1=s;for(i=1; i=2; i-) s1=(s1+m-1)%i;if(s1=0) s1=i; w=ps1-1;for(j=s1; j= 0 ; i-) printf(“%4d “, pi) ;fprintf(fp, “%4d“, pi) ;if(i % 10 = 0) printf(“n“) ; fprintf(fp, “n“) ; fclose(fp) ; 此题的另一种形式(实际上机的考试题 )设有 n 个人围坐一圈并按顺时针方向从 1 到 n 编号,从第 s 个人开始进行 1 到 m 的报数, 报数到第 m 个人, 此人出圈, 再从他的下一个人重

28、新开始 1 到 m 的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,给出这 n 个人的顺序表 p。请考生编制函数 Josegh()实现此功能并调用函数 WriteDat()把编号按照出圈的顺序输出到 OUT.DAT 文件中。注意:第 1 个出圈的编号存放在 p0中,第 2 个出圈的编号存放在 p1中,直至第 n 个出圈的编号存放在pn-1中。 设 n = 100, s = 1, m = 10 进行编程。#define N 100 #define S 1 #define M 10 int p100, n, s, m ; void WriteDat(void) ;void Joseg

29、h(void) int i,j,s1,w,q100;for(i=0;i=2; i-) s1=(s1+m-1)%i;if(s1=0) s1=i;w=ps1-1;全国计算机等级考试三级 C 语言程序设计上机考试习题集(2004 年版)【终极无错孙通版】16for(j=s1; j=0;i+,j-) /*也可改为 for(i=0,j=n-1;i #include #include typedef structint x1,x2,x3;data; data aa200,bb200;int jsSort()int i, j, cnt=0;data ch;for(i=0;iaai.x1+aai.x3) bb

30、cnt+=aai;for(i=0;i #include #define N 81void readwriteDAT();void chg(char *s) int i;char ch=*s;for(i=0;i int cnt,sum;int isPrime(int number) int i,tag=1;for(i=2;tag void countValue()int i,j,k=1;for(i=800;i500;i-) for(j=2;j #include #define MAXNUM 200 int xxMAXNUM;int totNum=0; /*有多少个正整数 */ int totCn

31、t=0; /*符合条件个数*/ double totPjz=0.0; /*平均值*/int ReadDat(void); void writeDat(void);void CalValue(void)int i,data;for(i=0;i0) totNum+; data=xxi1;if(data%2)totCnt+;totPjz+=xxi; if(totCnt=0) totPjz=0;else totPjz/=totCnt; 全国计算机等级考试三级 C 语言程序设计上机考试习题集(2004 年版)【终极无错孙通版】18void main() int i; clrscr(); for(i=0;

32、i #include #include char xx5080;int maxline=0;/*文章的总行数*/int ReadDat(void); void WriteDat(void);void StrCharJL(void) int i,j; char c;for(i=0;i100) xxij+=c; void main() if(ReadDat() printf(“数据文件 IN.DAT 不能打开!n007“); return; StrCharJL(); WriteDat();int ReadDat(void)FILE *fp; int i=0; char *p;if(fp=fopen

33、(“IN.DAT“,“r“)=NULL) return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,n); if(p)*p=0; i+; maxline=i;fclose(fp);return 0;void WriteDat(void) fclose(fp);题目 37 请编写函数 void countValue(int *a,int *n),它的功能是:求出 1 到 1000 之内能被 7 或 11 整除但不能同时被 7 或 11 整除的所有整数放在数组 a 中,并通过 n 返回这些数的个数。#include #include void count

34、Value(int *a,int *n) int i; *n=0;for(i=1;i #include #include char xx5080; int maxline=0; int ReadDat(void); void WriteDat(void);void SortCharA(void)int i,j,k,strl; char ch;for(i=0;ixxik)全国计算机等级考试三级 C 语言程序设计上机考试习题集(2004 年版)【终极无错孙通版】19ch=xxij; xxij=xxik; xxik=ch; void main() if(ReadDat() printf(“数据文件

35、IN.DAT 不能打开!n007“); return; SortCharA(); WriteDat();int ReadDat(void)FILE *fp; int i=0; char *p; if(fp=fopen(“IN.DAT“,“r“)=NULL) return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,n); if(p)*p=0; i+; maxline=i; fclose(fp); return 0; void WriteDat(void) fclose(fp); 题目 39 下列程序的功能是:将一正整数序列K1,K2,.,K9重新排列

36、成一个新的序列。新序列中,比 K1小的数都在 K1 的前面(左面),比 K1 大的数都在 K1 的后面(右面)。要求编写函数 jsValue()实现此功能,最后调用 writeDat()函数将新序列输出到文件 out.dat 中。说明:在程序中已给出了 10 个序列,每个序列有 9 个正整数,并存入数组 a109中,分别求出这10 个新序列。 例:序列6,8,9,1,2,5,4,7,3 经重排后成为 3,4,5,2,1,6,8,9,7#include jsValue(int a109) int i,j,k,val,num;for(i=0;i0;k-)aik=aik-1;ai0=num; mai

37、n() int a109=6,8,9,1,2,5,4,7,3,3,5,8,9,1,2,6,4,7,8,2,1,9,3,5,4,6,7,3,5,1,2,9,8,6,7,4,4,7,8,9,1,2,5,3,6,4,7,3,5,1,2,6,8,9,9,1,3,5,8,6,2,4,7,2,6,1,9,8,3,5,7,4,5,3,7,9,1,8,2,6,4,7,1,3,2,5,8,9,4,6,;int i,j; jsValue(a);for(i=0;i #include #define N 200void read_dat(int xxN) int i,j; FILE *fp; fp=fopen(“in

38、.dat“,“r“);for(i=0;i #include #define N 200void read_dat(int xxN) int i,j; FILE *fp;fp=fopen(“in.dat“,“r“);for(i=0;i #include #include #define MAX 1000int xxMAX,odd=0,even=0; double aver=0.0,totfc=0.0; void WriteDat(void);int ReadDat(void) int i; FILE *fp;if(fp=fopen(“IN.DAT“,“r“)=NULL) return 1;for

39、(i=0;i #include #include char xx5080; int maxline=0;/*文章的总行数*/int ReadDat(void); void WriteDat(void);void CharConvA() int i,j; char p,c;for(i=0;i0;j-)xxij=(xxij4)+xxij-1;xxi0=p+c; void main() if(ReadDat() printf(“数据文件 IN.DAT 不能打开!n007“); return; CharConvA();WriteDat();int ReadDat(void)FILE *fp; int

40、i=0; char *p;if(fp=fopen(“IN.DAT“,“r“)=NULL) return 1;while(fgets(xxi,80,fp)!=NULL); p=strchr(xxi,n); if(p)*p=0; i+;maxline=i; fclose(fp); return 0; void WriteDat(void) FILE *fp; int i;fp=fopen(“OUT10.DAT“,“w“);for(i=0;i #include #include #include char xx5080 ; int maxline = 0 ; /* 文章的总行数 */ int Rea

41、dDat(void) ; void WriteDat(void) ;void DelWord(void) int i,j,k,m,cnt; char *p, word20,str8020,abc80;for(i=0;i0) strcpy(word,strj);strcpy(strj,strm);strcpy(strm,word);for(j=0;jcnt;j+) strcat(abc,strj); strcpy(xxi,abc); void main() if(ReadDat() printf(“数据文件 ENG.IN 不能打开!n007“) ; return ; DelWord() ; WriteDat() ;int ReadDat(void)FILE *fp ; int i = 0 ; char *p ;if(fp = fopen(“eng.in“, “r“) = NULL) return 1 ;while(fgets(xxi, 80, fp) != NULL) p = strchr(xxi, n) ; if(p) xxip - xxi = 0 ; i+ ; maxline = i ; fclose(fp) ; return 0 ; void WriteDat(void)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报