南開計算機等級考試上機100題(三級)
發(fā)布時間:2008-04-04 閱讀數(shù): 次 來源:網(wǎng)樂原科技
1. 函數(shù)ReadDat()實現(xiàn)從文件ENG.IN中讀取一篇英文文章,存入到字符串數(shù)組xx中;請編制函數(shù)encryptChar(),按給定的替代關(guān)系對數(shù)組xx中的所有字符進行替代,仍存入數(shù)組xx的對應(yīng)的位置上,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件PS10.DAT中。
替代關(guān)系:f(p)=p*11 mod 256 (p是數(shù)組中某一個字符的ASCII值,f(p)是計算后新字符的ASCII值),如果原字符的ASCII值是偶數(shù)或計算后f(p)值小于等于32,則該字符不變,否則將f(p)所對應(yīng)的字符進行替代。部分源程序已給出,原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個字符。請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。
#include
#include
#include
#include
unsigned char xx[50][80];
int maxline=0;/*文章的總行數(shù)*/
int ReadDat(void)
void WriteDat(void)
void encryptChar()
{ int i,j;
char *p;
for(i=0;i='a'&&xx[j]='0'&&p='A'&&p='0'&&xx[j]='A'&&xx[j]='a'&&p130)
;
else xx[j]=p; } }
11.函數(shù)ReadDat()實現(xiàn)從文件in.dat中讀取20行數(shù)據(jù)存放到字符串數(shù)組xx中(第行字符串長度均小于80)。請編制函數(shù)jsSort(),其函數(shù)的功能是:以行為單位對字符串按給定的條件進行排序,排序后的結(jié)果仍按行重新存入字符串數(shù)組xx中,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件out.dat中。
條件:從字符串中間一分為二,左邊部分按字符的ASCII值升序排序,排序后左邊部分與右邊部分進行交換。如果原字符串長度為奇數(shù),則最中間的字符不參加處理,字符仍放在原位置上。
例如:位置 0 1 2 3 4 5 6 7 8
源字符串 d c b a h g f e
4 3 2 1 9 8 7 6 5
則處理后字符串 h g f e a b c d
8 7 6 5 9 1 2 3 4
部分源程序已給出?!≌埼鸶膭又骱瘮?shù)main()、讀函數(shù)ReadDat()和寫函數(shù)WriteDat()的內(nèi)容。
#include
#include
#include
char xx[20][80];
void jsSort()
{ int i,j,k,m;
char c;
for(i=0;ixx[m])
{ c=xx[j];
xx[j]=xx[m];
xx[m]=c; }
for(j=0;jxx[m])
{ c=xx[j];
xx[j]=xx[m];
xx[m]=c; } }
}
14.函數(shù)ReadDat()實現(xiàn)從文件in.dat中讀取20行數(shù)據(jù)存放到字符串數(shù)組xx中(第行字符串長度均小于80)。請編制函數(shù)jsSort(),其函數(shù)的功能是:以行為單位對字符串變量的下標為奇數(shù)的字符按其ASCII值從小到大的順序進行排序,排序后的結(jié)果仍按行重新存入字符串數(shù)組xx中,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件out.dat中。
例如:位置 0 1 2 3 4 5 6 7
源字符串 h g f e d c b a
則處理后字符串 h a f c d e b g
部分源程序已給出。請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。
void jsSort()
{ int i,j,k,m;
char c;
for(i=0;ixx[m])
{ c=xx[j];
xx[j]=xx[m];
xx[m]=c; } } }
15.函數(shù)ReadDat()實現(xiàn)從文件in.dat中讀取20行數(shù)據(jù)存放到字符串數(shù)組xx中(第行字符串長度均小于80)。請編制函數(shù)jsSort(),其函數(shù)的功能是:以行為單位對字符串按給定的條件進行排序,排序后的結(jié)果仍按行重新存入字符串數(shù)組xx中,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件out.dat中。條件:從字符串中間一分為二,右邊部分按字符的ASCII值升序排序,排序后左邊部分與右邊部分進行交換。如果原字符串長度為奇數(shù),則最中間的字符不參加排序,字符仍放在原位置上。
例如:位置 0 1 2 3 4 5 67 8
源字符串 d c b a h g f e
8 7 6 5 9 1 2 3 4
則處理后字符串 e f g h d c b a
5 6 7 8 9 4 3 2 1
部分源程序已給出。請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù) WriteDat()的內(nèi)容。
void jsSort()
{ int i,j,k,m,n;
char c;
for(i=0;ixx[m])
{ c=xx[j];
xx[j]=xx[m];
xx[m]=c; }
for(j=0;jxx[m])
{ c=xx[j];
xx[j]=xx[m];
xx[m]=c; }
if(k%2==0)
n=k/2;
else n=k/2+1;
for(j=n;jn)
{ c=aa;
aa=aa[j];
aa[j]=c; }
if(m==n)
{ if(aa(aa.x2+aa.x3))
bb[k++]=aa;
for(i=0;ibb[j].x1+bb[j].x3)
{ m=bb;
bb=bb[j];
bb[j]=m; }
return k;
}
void main()
{ int count;
readDat();
count=jsSort(); /*返回滿足條件的個數(shù)*/
writeDat(count); }
readDat(int count)
{ FILE *in;
int i;
in=fopen(\"in.dat\",\"r\");
for(i=0; ia[j].s)
{ *s=a;
a=a[j];
a[j]=*s; }
return a[0].s;
}
main()
{
STU a[N]={ {"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},
{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71} }, m ;
int i;
clrscr();
printf("***** The original data *****\n");
for(i=0; i0;m++)
if(isP(m))
{ xx[i++]=m;
k--; } }
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 sell[j].je)
{ c=sell;
sell=sell[j];
sell[j]=c; } } }
33..已知在文件IN.DAT中存有100個產(chǎn)品銷售記錄,每個產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位),產(chǎn)品名稱mc(字符型10位),單價dj(整型),數(shù)量sl(整型),金額je(長整型)四部分組成。其中:金額=單價*數(shù)量計算得出。函數(shù)ReadDat()是讀取這100個銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請編制函數(shù)SortDat(),其功能要求:按產(chǎn)品名稱從大到小進行排列,若產(chǎn)品名稱相同,則按金額從大到小進行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件OUT6.DAT中。
部分源程序已給出。請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。
void SortDat()
{ int i,j;
PRO c;
for(i=0;isell[j].je)
{ c=sell;
sell=sell[j];
sell[j]=c; }
else
if(sell.je==sell[j].je)
if(strcmp(sell.dm,sell[j].dm)sell[j].je)
{ c=sell;
sell=sell[j];
sell[j]=c; }
else
if(sell.je==sell[j].je)
if(strcmp(sell.dm,sell[j].dm)>0)
{ c=sell;
sell=sell[j];
sell[j]=c; } } }
37.已知在文件IN.DAT中存有100個產(chǎn)品銷售記錄,每個產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位),產(chǎn)品名稱mc(字符型10位),單價dj(整型),數(shù)量sl(整型),金額je(長整型)四部分組成。其中:金額=單價*數(shù)量計算得出。函數(shù)ReadDat()是讀取這100個銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請編制函數(shù)SortDat(),其功能要求:按金額從大到小進行排列,若金額相等,則按產(chǎn)品代碼從小到大進行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件OUT3.DAT中。部分源程序已給出。
請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。
void SortDat()
{ int i,j;
PRO c;
for(i=0;i0)
{ c=sell;
sell=sell[j];
sell[j]=c; } } }
38.已知在文件IN.DAT中存有100個產(chǎn)品銷售記錄,每個產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位),產(chǎn)品名稱mc(字符型10位),單價dj(整型),數(shù)量sl(整型),金額je(長整型)四部分組成。其中:金額=單價*數(shù)量計算得出。函數(shù)ReadDat()是讀取這100個銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請編制函數(shù)SortDat(),其功能要求:按產(chǎn)品名稱從小到大進行排列,若產(chǎn)品名稱相等,則按金額從小到大進行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件OUT5.DAT中。部分源程序已給出。請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。
void SortDat()
{ int i,j;
PRO c;
for(i=0;i0)
{ c=sell;
sell=sell[j];
sell[j]=c; }
else
if(strcmp(sell.mc,sell[j].mc)==0)
if(sell.je>sell[j].je)
{ c=sell;
sell=sell[j];
sell[j]=c; } } }
39.已知在文件IN.DAT中存有100個產(chǎn)品銷售記錄,每個產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位),產(chǎn)品名稱mc(字符型10位),單價dj(整型),數(shù)量sl(整型),金額je(長整型)四部分組成。其中:金額=單價*數(shù)量計算得出。函數(shù)ReadDat()是讀取這100個銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請編制函數(shù)SortDat(),其功能要求:按產(chǎn)品名稱從大到小進行排列,若產(chǎn)品名稱相等,則按金額從小到大進行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件OUT7.DAT中。部分源程序已給出。請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。
void SortDat()
{ int i,j;
PRO c;
for(i=0;isell[j].je)
{ c=sell;
sell=sell[j];
sell[j]=c; } } }
40.已知在文件IN.DAT中存有100個產(chǎn)品銷售記錄,每個產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位),產(chǎn)品名稱mc(字符型10位),單價dj(整型),數(shù)量sl(整型),金額je(長整型)四部分組成。其中:金額=單價*數(shù)量計算得出。函數(shù)ReadDat()是讀取這100個銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請編制函數(shù)SortDat(),其功能要求:按產(chǎn)品代碼從小到大進行排列,若產(chǎn)品代碼相等,則按金額從小到大進行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件OUT9.DAT中。部分源程序已給出。請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。
void SortDat()
{ int i,j;
PRO c;
for(i=0;i0)
{ c=sell;
sell=sell[j];
sell[j]=c; }
else
if(strcmp(sell.dm,sell[j].dm)==0)
if(sell.je>sell[j].je)
{ c=sell;
sell=sell[j];
sell[j]=c; } } }
41.請編寫一個函數(shù)jsvalue(int m,int k,int xx[]),該函數(shù)的功能是:將大于整數(shù)m且緊靠m的k個素數(shù)存入數(shù)組xx傳回。最后調(diào)用函數(shù)writeDat()讀取10組數(shù)據(jù),分別得出結(jié)果且把結(jié)果輸出到文件out.dat中。例如:若輸入17,5,則應(yīng)輸出:19,23,29,31,37。請勿改動主函數(shù)main()和寫函數(shù)writeDat()的內(nèi)容。
#include
int ss(int k)
{ int i,j;
j=1;
for(i=2;i if(k%i==0) j=0;
return j; }
void jsvalue(int m,int k,int xx[])
{ int i=0;
for(m=m+1;k>0;m++)
if(ss(m))
{ xx[i++]=m;
k--; } }
main()
{int m,n,zz[100];
printr(\"\\n請輸入兩個整數(shù):\");
scanf(\"%d%d\",&m,&n);
jsvalue(m,n,zz);
for(m=0;maa[j])
{ k=aa;
aa=aa[j];
aa[j]=k; } }
for(i=0;i(aa.x1+aa.x3))
bb[m++]=aa;
for(i=0;i0;m--)
a[m]=a[m-1];
a[0]=c; } }
}
main()
{int a[10][9]={{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=100) b[0]=k;
if(sn=1000) b[1]=k;
if(sn=10000)
{ b[2]=k;
break; }
sn=sn+an;
a1=a2;
a2=an;
k++; }
}
main()
{jsvalue();
printf(\"M=100,n=%d\\nM=1000,n=%d\\nM=10000,n=%d\\n\",b[0],b[1],b[2]);
writeDat() }
writeDat()
{FILE *fp;
fp=fopen(\"out.dat\",\"w\");
fprintf(fp,\"%d\\n%d\\n%d\\n\",b[0],b[1],b[2]);
fclose(fp); }
OUT.DAT文件
6
9
11
47---56題in.dat文件
You can create an index on any field, on several fields to be used
together, or on parts thereof, that you want to use as a key. The
keys in indexes allow you quick access to specific records and define
orders for sequential processing of a ISAM file. After you no longer
need an index, you can delete it. Addition and indexes have no effect
on the data records or on other indexes.
You may want a field in field in each record to uniquely identify that
record from all other records in the file. For example, the Employee
Number field is unique if you do not assign the same number to two
different employees, and you never reassign these numbers to other
employees. If you wish to find or modify the record belonging to a
specific employee, this unique field saves the thouble of determining
whether you have the correct record.
If you do not have a unique field, you must find the first record
the matches your key and determine whether the record is the one you
want. If it is not the correct one, you must search again to find others.
If you know that you have a unique field within your records, you
can include this fact in the key description, and ISAM will allow only
unique keys. For example, if you specify that the employee numbers are
unique, ISAM only lets you add records to the file for, or change
numbers to, employee numbers that do not alreadly exist int file.
47..函數(shù)ReadDat()實現(xiàn)從文件IN.DAT中讀取一篇英文文章存 入到字符串數(shù)組xx中,請編制函數(shù)CharConvA(),其函數(shù)的功能是:以行為單位把字符串中的最后一個字符的ASCII值右移4位后加最后第二個字符的ASCII值,得到最后一個新的字符,最后第二個字符的ASCII值右移4位后加最后第三個字符的ASCII值,得到最后第二個新的字符,依此類推一直處理到第二個字符,第一個字符的ASCII值加原最后一個字符的ASCII值,得到第一個新的字符,得到的新字符分別存放在原字符串對應(yīng)的位置上。最后已處理的字符串仍按行重新存入字符串數(shù)組xx中,最后調(diào)用函數(shù)writeDat()把結(jié)果xx輸出到文件OUT10.DAT中。原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個字符,含標點符號和空格。部分源程序已給出。請勿改動主函數(shù)main()和寫函數(shù)writeDat()的內(nèi)容。
#include
#include
#include
char xx[50][80] ;
int maxline = 0 ; /* 文章的總行數(shù) */
int ReadDat(void) ;
void WriteDat(void) ;
void CharConvA(void)
{ int i,j;
char p,c;
for(i=0;i { p=xx[strlen(xx)-1];
c=xx[0];
for(j=strlen(xx)-1;j>0;j--)
xx[j]=(xx[j]>>4)+xx[j-1];
xx[0]=p+c; }
}
void main()
{
clrscr() ;
if(ReadDat()) {
printf("數(shù)據(jù)文件IN.DAT不能打開!\n\007") ;
return ;
}
CharConvA() ;
WriteDat() ;
}
int ReadDat(void)
{
FILE *fp ;
int i = 0 ;
char *p ;
if((fp = fopen("IN.DAT", "r")) == NULL) return 1 ;
while(fgets(xx, 80, fp) != NULL) {
p = strchr(xx, ''\n'') ;
if(p) *p = 0 ;
i++ ;
}
maxline = i ;
fclose(fp) ;
return 0 ;
}
void WriteDat(void)
{
FILE *fp ;
int i ;
clrscr() ;
fp = fopen("OUT10.DAT", "w") ;
for(i = 0 ; i >4)+xx[j];
}
void main()
{
clrscr() ;
if(ReadDat()) {
printf("數(shù)據(jù)文件IN.DAT不能打開!\n\007") ;
return ;
}
StrCharJR() ;
WriteDat() ;
}
int ReadDat(void)
{
FILE *fp ;
int i = 0 ;
char *p ;
if((fp = fopen("IN.DAT", "r")) == NULL) return 1 ;
while(fgets(xx, 80, fp) != NULL) {
p = strchr(xx, '\n') ;
if(p) *p = 0 ;
i++ ;
}
maxline = i ;
fclose(fp) ;
return 0 ;
}
void WriteDat(void)
{
FILE *fp ;
int i ;
clrscr() ;
fp = fopen("OUT8.DAT", "w") ;
for(i = 0 ; i ='b'&&xx[j]100))
xx[j]+=c; }
}
void main()
{
clrscr() ;
if(ReadDat()) {
printf("數(shù)據(jù)文件IN.DAT不能打開!\n\007") ;
return ;
}
StrCharJL() ;
WriteDat() ;
}
int ReadDat(void)
{
FILE *fp ;
int i = 0 ;
char *p ;
if((fp = fopen("IN.DAT", "r")) == NULL) return 1 ;
while(fgets(xx, 80, fp) != NULL) {
p = strchr(xx, ''\n'') ;
if(p) *p = 0 ;
i++ ;
}
maxline = i ;
fclose(fp) ;
return 0 ;
}
void WriteDat(void)
{
FILE *fp ;
int i ;
clrscr() ;
fp = fopen("OUT7.DAT", "w") ;
for(i = 0 ; i 100))
xx[j]+=c; }
}
void main()
{
clrscr() ;
if(ReadDat()) {
printf("數(shù)據(jù)文件IN.DAT不能打開!\n\007") ;
return ;
}
StrCharJL() ;
WriteDat() ;
}
int ReadDat(void)
{
FILE *fp ;
int i = 0 ;
char *p ;
if((fp = fopen("IN.DAT", "r")) == NULL) return 1 ;
while(fgets(xx, 80, fp) != NULL) {
p = strchr(xx, ''\n'') ;
if(p) *p = 0 ;
i++ ;
}
maxline = i ;
fclose(fp) ;
return 0 ;
}
void WriteDat(void)
{
FILE *fp ;
int i ;
clrscr() ;
fp = fopen("OUT7.DAT", "w") ;
for(i = 0 ; i 想要全部的請留信箱??!