1.已知資料檔案中存有200個四位數, 並已呼叫讀函式readDat()把這些數存入陣列a中,請考生編制一函式jsVal(),其功能是: 把千位數字和十位數字重新組成一個新的十位數ab(新十位數的十位數字是原四位數的千位數字,新十位數的個位數字是原四位數的十位數字), 以及把個位數字和百位數字組成另一個新的十位數cd (新十位數的十位數字是原四位數的個位數字,新十位數的個位數字是原四位數的百位數字), 如果新組成的兩個十位數ab-cd>=10且ab-cd<=20且兩個數均是偶數,同時兩個新數的十位數字均不為零,則將滿足此條件的四位數按從大到小的順序存入陣列b中, 並要計算滿足上述條件的四位數的個數cnt。最後main()函式呼叫寫函式writeDat( )把結果cnt以及陣列b中符合條件的四位數輸出到檔案中。
注意: 部分源程式存在檔案PROG1.C檔案中。
程式中已定義陣列: a[200], b[200], 已定義變數: cnt
請勿改動資料檔案中的任何資料、主函式main()、讀函式readDat()和寫函式writeDat()的內容。
-------------------------
PROG1.C
#include
#define MAX 200
int a[MAX], b[MAX], cnt = 0;
void jsVal()
{int I,thou,hun,ten,data,j;
int ab,cd;
for(I=0;I<200;I++)
{thou=a[I]/1000; hun=a[I]%1000/100;
ten=a[I]%100/10; data=a[I]%10;
ab=10*thou+ten; cd=10*data+hun;
if ((ab-cd)>=0&&(ab-cd)<=10&&ab%2==1&&cd%2==1&&ab!=0&&cd!=0)
{b[cnt]=a[I];cnt++;}
}
for(I=0;I
for(j=I+1;j
if(b[I]
{data=b[I]; b[I]=b[j];b[j]=data;}
}
void readDat()
{ int i ;
FILE *fp ;
fp = fopen("", "r") ;
for(i = 0 ; i < MAX ; i++) fscanf(fp, "%d", &a[i]) ;
fclose(fp) ;
}
void main()
{ int i ;
readDat() ;
jsVal() ;
printf("滿足條件的數=%dn", cnt) ;
for(i = 0 ; i < cnt ; i++) printf("%d ", b[i]) ;
printf("n") ;
writeDat() ;
system("pause");
}
writeDat()
{ FILE *fp ;
int i ;
fp = fopen("", "w") ;
fprintf(fp, "%dn", cnt) ;
for(i = 0 ; i < cnt ; i++) fprintf(fp, "%dn", b[i]) ;
fclose(fp) ;
}
7153 8129 5795 2896 3019 7747 7607 8145 7090 4140
8626 7905 3735 9620 8714 9496 3640 5249 7671 5925
4687 2982 9387 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 8317
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 4952 4130 6953
1791 4229 5432 8147 5409 4275 5091 2278 6192 4898
6808 8866 3705 3025 2929 1503 5298 2233 5483 3635
4
9288
8866
8626
3262
2.已知資料檔案中存有200個四位數, 並已呼叫讀函式readDat()把這些數存入陣列a中,請考生編制一函式jsVal(),其功能是: 把千位數字和十位數字重新組成一個新的十位數ab(新十位數的十位數字是原四位數的千位數字,新十位數的個位數字是原四位數的十位數字), 以及把個位數字和百位數字組成另一個新的十位數cd (新十位數的十位數字是原四位數的個位數字,新十位數的個位數字是原四位數的'百位數字), 如果新組成的兩個十位數ab-cd>=0且ab-cd<=10且兩個數均是奇數, 同時兩個新數的十位數字均不為零,則將滿足此條件的四位數按從大到小的順序存入陣列b中, 並要計算滿足上述條件的四位數的個數cnt。最後main()函式呼叫寫函式writeDat( )把結果cnt以及陣列b中符合條件的四位數輸出到檔案中。
注意: 部分源程式存在檔案PROG1.C檔案中。
程式中已定義陣列: a[200], b[200], 已定義變數: cnt
請勿改動資料檔案中的任何資料、主函式main()、讀函式readDat()和寫函式writeDat()的內容。
-------------------------
PROG1.C
#include
#define MAX 200
int a[MAX], b[MAX], cnt = 0;
void jsVal()
{int I,thou,hun,ten,data,j;
int ab,cd;
for(I=0;I<200;I++)
{thou=a[I]/1000; hun=a[I]%1000/100;
ten=a[I]%100/10; data=a[I]%10;
ab=10*thou+ten; cd=10*data+hun;
if ((ab-cd)>=0&&(ab-cd)<=10&&ab%2==1&&cd%2==1&&ab!=0&&cd!=0)
{b[cnt]=a[I];cnt++;}
}
for(I=0;I
for(j=I+1;j
if(b[I]
{data=b[I]; b[I]=b[j];b[j]=data;}
}
void readDat()
{ int i ;
FILE *fp ;
fp = fopen("", "r") ;
for(i = 0 ; i < MAX ; i++) fscanf(fp, "%d", &a[i]) ;
fclose(fp) ;
}
void main()
{ int i ;
readDat() ;
jsVal() ;
printf("滿足條件的數=%dn", cnt) ;
for(i = 0 ; i < cnt ; i++) printf("%d ", b[i]) ;
printf("n") ;
writeDat() ;
system("pause");
}
writeDat()
{ FILE *fp ;
int i ;
fp = fopen("", "w") ;
fprintf(fp, "%dn", cnt) ;
for(i = 0 ; i < cnt ; i++) fprintf(fp, "%dn", b[i]) ;
fclose(fp) ;
}
7153 8129 5795 2896 3019 7747 7607 8145 7090 4140
8626 7905 3735 9620 8714 9496 3640 5249 7671 5925
4687 2982 9387 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 8317
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 4952 4130 6953
1791 4229 5432 8147 5409 4275 5091 2278 6192 4898
6808 8866 3705 3025 2929 1503 5298 2233 5483 3635
4
8317
7577
5795
1791