资源说明: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
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。