C 语言 南开一百题
文件大小: 851k
源码售价: 10 个金币 积分规则     积分充值
资源说明:C语言 南开一百题void num(int m,int k,int xx[]) /*标准答案*/ {int data=m+1; int half,n=0,I; while(1) {half=data/2;for(I=2;I<=half;I++) if(data%I==0)break; if(I>half) {xx[n]=data;n++;} if(n>=k)break; data++; } } 或者: void num(int m,int k,int xx[]) {int i,j,s=0; for(i=m+1;k>0;i++) {for(j=2;j0;m++) if(isP(m)) { xx[i++]=m; k--; } } #include #include void readwriteDAT() ; int isP(int m) { int i ; for(i = 2 ; i < m ; i++) if(m % i == 0) return 0 ; return 1 ; } void num(int m,int k,int xx[]) { } main() { int m, n, xx[1000] ; clrscr() ; printf("\nPlease enter two integers:") ; scanf("%d,%d", &m, &n ) ; num(m, n, xx) ; for(m = 0 ; m < n ; m++) printf("%d ", xx[m]) ; printf("\n") ; readwriteDAT() ; system("pause"); } void readwriteDAT() { int m, n, xx[1000], i ; FILE *rf, *wf ; rf = fopen("in.dat", "r") ; wf = fopen("out.dat", "w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%d %d", &m, &n) ; num(m, n, xx) ; for(m = 0 ; m < n ; m++) fprintf(wf, "%d ", xx[m]) ; fprintf(wf, "\n") ; } fclose(rf) ; fclose(wf) ; } IN.DAT 17 5 101 7 321 5 32 4 55 6 76 6 99 4 781 5 22 6 66 3 OUT.DAT 19 23 29 31 37 103 107 109 113 127 131 137 331 337 347 349 353 37 41 43 47 59 61 67 71 73 79 79 83 89 97 101 103 101 103 107 109 787 797 809 811 821 23 29 31 37 41 43 67 71 73 2题目: 题目2:已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是: 如果四位数各位上的数字均是0或2或4或6或8, 则统计出满足此条件的个数cnt, 并把这些四位数按从大到小的顺序存入数组b中。最后main()函数调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。 注意: 部分源程序存在文件PROG1.C文件中。 程序中已定义数组: a[200], b[200], 已定义变量: cnt 请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。 ------------------------- void jsVal() /*标准答案*/ {int bb[4]; int I,j,k,flag; for (I=0;I<200;I++) {bb[0]=a[I]/1000; bb[1]=a[I]00/100; bb[2]=a[I]0/10; bb[3]=a[I]; for (j=0;j<4;j++) {if (bb[j]%2==0) flag=1; else {flag=0;break;} } if (flag==1) { b[cnt]=a[I]; cnt++;} } for(I=0;I #define MAX 200 int a[MAX], b[MAX], cnt = 0; void jsVal() { } void readDat() { int i ; FILE *fp ; fp = fopen("in.dat", "r") ; for(i = 0 ; i < MAX ; i++) fscanf(fp, "%d", &a[i]) ; fclose(fp) ; } void main() { int i ; readDat() ; jsVal() ; printf("满足条件的数=%d\n", cnt) ; for(i = 0 ; i < cnt ; i++) printf("%d ", b[i]) ; printf("\n") ; writeDat() ; system("pause"); } writeDat() { FILE *fp ; int i ; fp = fopen("out.dat", "w") ; fprintf(fp, "%d\n", cnt) ; for(i = 0 ; i < cnt ; i++) fprintf(fp, "%d\n", b[i]) ; fclose(fp) ; } IN.DAT 6012 5099 9012 7025 8088 7055 5334 7607 8145 6012 5099 9012 7025 8088 7055 5334 5795 2896 3019 7747 7607 8145 7090 4140 8626 7905 3735 9620 8714 9496 3640 5249 7671 5925 4687 2982 6227 6478 2638 2793 8298 8246 5892 9861 5795 2896 3019 7747 7607 8145 6012 5099 9012 7025 8088 7055 5334 5795 2896 3019 7747 7607 8145 7090 4140 8626 7905 3735 9620 8714 9496 3640 5249 7671 5925 4687 2982 6227 6478 2638 2793 8298 8246 5892 9861 9110 2269 6951 9800 2439 5339 1064 9994 6762 5752 1001 1030 7989 2845 2958 3820 3010 9486 9798 4014 2783 1604 1628 6466 4101 4128 7127 3262 6332 2076 1860 5834 4580 9057 2614 7852 3789 2897 9194 6317 6276 4285 5610 6945 9137 8348 5434 9162 4303 6779 5025 5137 4630 3535 4048 2697 2438 9791 3903 3650 4899 1557 4745 2573 6288 5421 1563 9385 6545 5061 3905 1074 7840 4596 7537 5961 8327 2104 1055 3317 1282 5368 6571 5440 8274 1919 6789 4542 3570 1500 7044 9288 5302 7577 4018 4619 4922 2076 3297 5898 1699 9276 4439 2729 8725 7507 2729 6736 2566 3227 7901 2973 2353 4805 2546 3406 4824 2060 8645 5886 7549 9279 3310 5429 6344 4100 9604 1146 9234 6202 3477 1492 4800 2194 9937 1304 3454 5477 9230 5382 4064 8472 8262 6724 7219 9968 3398 OUT.DAT 10 8626 8626 8246 8246 8088 8088 8088 6466 6288 4048 3题目: 题目3:函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编制函数STROR(),其函数功能是:以行为单位把字符串中的所有小写字母O左边的字符串内容移到该串的右边存放,然后并把小写字母O删除,余下的字符串内容移到已处理字符串的左边存放.最后把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT.DAT中. 例如:原文:You can create an index on any field. you have the correct record. 结果: n any field.You can create an index rd.yu have the crrect rec 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格. ------------------- 类型:字符串(单词)的倒置和删除。 答案: void StrOR(void) /*标准答案*/ {int I,j,k,index,strl; char ch; for(I=0;I=index;j--) {ch=xx[I][strl-1]; for(k=strl-1;k>0;k--) xx[I][k]=xx[I][k-1]; xx[I][0]=ch;} } } 或者: void StrOR(void) { int i; char a[80],*p; for(i=0;i=0;j--) {if(xx[i][j]=='o') {righto=j;break;} } for(j=righto+1;j=xx[i]) p1--; memcpy(t1,p1+1,p2-p1); t1[p2-p1]=0; strcat(t,t1); strcat(t," "); if(p1='A'&&c<='Z')||(c>='a'&&c<='z')||c==' ') ; else xx[I][j]=' '; } for(l=0;l='a'&&xx;[l][I]<='z')||(xx[l][I]>='A'&&xx;[l][I]<='z'))&&I>=0) {for(j=k;j>=0;j--) pp[j+1]=pp[j]; pp[0]=xx[l][I]; k++;I--; } strcat(ch,pp);strcpy(pp, """");k=1; if(I==-1)break; while((xx[l][I]<'A'||xx[l][I]>'z')&&I>=0) {for(j=k;j>=0;j--) pp[j+1]=pp[j]; pp[0]=xx[l][I]; k++; I--;} strcat(ch,pp); strcpy(pp,""""); k=0; if(I==-1)break;} strcpy(xx[l],ch); }} 或者: void StrOL(void) { int i,j,k,m,n,ll; char yy[80]; for(i=0; i < maxline; i++) { ll=strlen(xx[i]); k=n=0; for(j=ll-1; j>=0; j--) { if(isalpha(xx[i][j])) k++; else { for(m=1; m<=k; m++) yy[n++]=xx[i][j+m]; k=0; } if(xx[i][j]==' ') yy[n++]=' '; } for(m=1; m<=k; m++) yy[n++]=xx[i][j+m]; yy[n]=0; strcpy(xx[i],yy); } } PROG1.C # include"stdio.h" # include"string.h" # include"conio.h" # include"ctype.h" char xx[50][80]; int maxline=0; int ReadDat(void); void WriteDat(void); void StrOR(void) { } void main() {clrscr(); if(ReadDat()) {printf("Can't open the file!\n"); return;} StrOR(); WriteDat(); system("pause"); } int ReadDat(void) {FILE *fp;int i=0;char *p; if((fp=fopen("in.dat","r"))==NULL) return 1; while(fgets(xx[i],80,fp)!=NULL) {p=strchr(xx[i],'\n'); if(p) *p=0; i++; } maxline=i; fclose(fp); return 0; } void WriteDat(void) {FILE *fp; int i; fp=fopen("out.dat","w"); for(i=0;iaa[j]00) {data=aa[I];aa[I]=aa[j];aa[j]=data;} else if(aa[I]00==aa[j]00) if(aa[I] #include #include int aa[200],bb[10]; void jsSort() { } void main() {readDat(); jsSort(); writeDat(); system("pause"); } readDat() {FILE *in; int i; in=fopen("in.dat","r"); for(i=0; i<200; i++) fscanf(in,"%d,",&aa;[i]); fclose(in); } writeDat() {FILE *out; int i; clrscr(); out=fopen("out.dat","w"); for(i=0; i<10; i++){ printf("i=%d,%d\n",i+1,bb[i]); fprintf(out,"%d\n",bb[i]); } fclose(out); } IN.DAT 6012 5099 9012 7025 8088 7055 5334 7607 8145 6012 5099 9012 7025 8088 7055 5334 5795 2896 3019 7747 7607 8145 7090 4140 8626 7905 3735 9620 8714 9496 3640 5249 7671 5925 4687 2982 6227 6478 2638 2793 8298 8246 5892 9861 5795 2896 3019 7747 7607 8145 6012 5099 9012 7025 8088 7055 5334 5795 2896 3019 7747 7607 8145 7090 4140 8626 7905 3735 9620 8714 9496 3640 5249 7671 5925 4687 2982 6227 6478 2638 2793 8298 8246 5892 9861 9110 2269 6951 9800 2439 5339 1064 9994 6762 5752 1001 1030 7989 2845 2958 3820 3010 9486 9798 4014 2783 1604 1628 6466 4101 4128 7127 3262 6332 2076 1860 5834 4580 9057 2614 7852 3789 2897 9194 6317 6276 4285 5610 6945 9137 8348 5434 9162 4303 6779 5025 5137 4630 3535 4048 2697 2438 9791 3903 3650 4899 1557 4745 2573 6288 5421 1563 9385 6545 5061 3905 1074 7840 4596 7537 5961 8327 2104 1055 3317 1282 5368 6571 5440 8274 1919 6789 4542 3570 1500 7044 9288 5302 7577 4018 4619 4922 2076 3297 5898 1699 9276 4439 2729 8725 7507 2729 6736 2566 3227 7901 2973 2353 4805 2546 3406 4824 2060 8645 5886 7549 9279 3310 5429 6344 4100 9604 1146 9234 6202 3477 1492 4800 2194 9937 1304 3454 5477 9230 5382 4064 8472 8262 6724 7219 9968 3398 OUT.DAT 1001 3010 9012 9012 9012 6012 6012 6012 4014 4018
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。