- 試題排行
- 最新熱點(diǎn)
- 最新推薦
2
3
4
5
6
7
8
9
10
2008年計(jì)算機(jī)等級考試二級C語言模擬試題(1)
2008年9月計(jì)算機(jī)等級考試二級C押題試卷和答
2008年4月計(jì)算機(jī)等級考試二級VF模擬試題(一
2008年4月計(jì)算機(jī)等級考試二級C模擬試題一答
2008年4月計(jì)算機(jī)等級考試二級VB壓題試卷及答
2008年計(jì)算機(jī)等級考試三級網(wǎng)絡(luò)預(yù)測試卷(一)
2008年計(jì)算機(jī)等級考試二級VFP模擬試題(1)
2008年9月計(jì)算機(jī)等級考試二級C模擬試題答案
2008年4月計(jì)算機(jī)等級考試三級網(wǎng)絡(luò)壓題試卷
1.已知在文件IN.DAT中存有100個(gè)產(chǎn)品銷售記錄,每個(gè)產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位),產(chǎn)品名稱mc(字符型10位),單價(jià)dj(整型),數(shù)量sl(整型),金額je(長整型)四部分組成。其中:金額=單價(jià)*數(shù)量計(jì)算得出。函數(shù)ReadDat()是讀取這100個(gè)銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請編制函數(shù)SortDat(),其功能要求:按產(chǎn)品代碼從大到小進(jìn)行排列,若產(chǎn)品代碼相同,則按金額從大到小進(jìn)行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件OUT10.DAT中。
部分源程序已給出。
請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。
#include
#include
#include
#include
#include
#define MAX 100
typedef struct{
char dm[5]; /*產(chǎn)品代碼*/
char mc[11]; /*產(chǎn)品名稱*/
int dj; /*單價(jià)*/
int sl; /*數(shù)量*/
long je; /*金額*/
}PRO;
PRO sell[MAX];
void ReadDat();
void WriteDat();
void SortDat()
{
}
void main()
{
memset(sell,0,sizeof(sell));
ReadDat();
SortDat();
WriteDat();
}
void ReadDat()
{
FILE *fp;
char str[80],ch[11];
int i;
fp=fopen("IN.DAT","r");
for(i=0;i<100;i++){
fgets(str,80,fp);
memcpy(sell[i].dm,str,4);
memcpy(sell[i].mc,str+4,10);
memcpy(ch,str+14,4);ch[4]=0;
sell[i].dj=atoi(ch);
memcpy(ch,str+18,5);ch[5]=0;
sell[i].sl=atoi(ch);
sell[i].je=(long)sell[i].dj*sell[i].sl;
}
fclose(fp);
}
void WriteDat(void)
{
FILE *fp;
int i;
fp=fopen("OUT10.DAT","w");
for(i=0;i<100;i++){
fprintf(fp,"%s %s %4d %5d %10Ld\n", sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
}
fclose(fp);
}"
--------------------------------------------------------------------------------
注:這時(shí)也是采用冒泡法進(jìn)行排序。與前面的冒泡法在寫法上有所不同請注意區(qū)分。
void SortDat()
{
int i,j;
PRO swap;
for(i=0;i for(j=0;j { if(strcmp(sell[j].dm,sell[j+1].dm)<0) /*用函數(shù)strcmp判斷兩個(gè)字符串的大小*/
{ swap=sell[j]; sell[j]=sell[j+1]; sell[j+1]=swap; }
if(strcmp(sell[j].dm,sell[j+1].dm)==0&&sell[j].je {
swap=sell[j];
sell[j]=sell[j+1];
sell[j+1]=swap;
}
}
}
若產(chǎn)品代碼相同,則按金額從大到小進(jìn)行排列沒有體現(xiàn)!
2.six+six+six=nine+nine的個(gè)數(shù)cnt及它們的和sum,s,i,n,e是0-9自然數(shù),但s,n不能為0.
如 984+984+984=1476+1476,
我臨時(shí)編的(可能算法不太好)
main()
{
int i,j,cnt=0;
float sum=0;
for(i=100;i<1000;i++)
for(j=1000;j<10000;j++)
{
if(i+i+i==j+j)
{
cnt++;
sum=sum+i+j;
printf("%d+%d+%d=%d+%d\n",i,i,i,j,j);
}
}
printf("%d,%f",cnt,sum);
}
參考這個(gè):for(i=666;i<1000;i++)
if((i/10%10=(3*i/2)/100%10)&&((i*3/2)/1000=(i*3/2)/10%10)
{cnt++;
sum+=(5/2)*i;
}
3.函數(shù)ReadDat()實(shí)現(xiàn)從文件ENG.IN中讀取一篇英文文章,存入到字符串?dāng)?shù)組xx中;請編制函數(shù)encryptChar(),按給定的替代關(guān)系對數(shù)組xx中的所有字符進(jìn)行替代,仍存入數(shù)組xx的對應(yīng)的位置上,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件PS4.DAT中。
替代關(guān)系:f(p)=p*11 mod 256 (p是數(shù)組中某一個(gè)字符的ASCII值,f(p)是計(jì)算后新字符的ASCII值),如果計(jì)算后f(p)值小于等于32或f(p)對應(yīng)的字符是大寫字母,則該字符不變,否則將f(p)所對應(yīng)的字符進(jìn)行替代。
部分源程序已給出。原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符。
請勿改動主函數(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()
{
}
void main()
{
clrscr();
if(ReadDat()){
printf(\"數(shù)據(jù)文件ENG.IN不能打開!\\n\\007\");
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(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(\"ps4.dat\",\"w\");
for(i=0;i printf(\"%s\\n\",xx[i]);
fprintf(fp,\"%s\\n\",xx[i]);
}
fclose(fp);
}
--------------------------------------------------------------------------------
注:下題1相似,只是它要求對f(p)進(jìn)行判斷。
void encryptchar()
{
int i;
char *pf;
for(i=0;i {pf=xx[i];
while(*pf!=0)
{if(*pf*11%256>='A'&&*pf*11%256<='Z'||*pf*11%256<32)
{pf++;continue;}
*pf=*pf*11%256;
pf++;
}
}
}
void encryptChar()
{
int i,j,t;
for(i=0;i {
for(j=0;j {
t=xx[i][j]*11%256;
if(t<=32 || t>='A' && t<='Z') continue;
xx[i][j]=t;
}
}
}
4.南開第一題
函數(shù)ReadDat()實(shí)現(xiàn)從文件ENG.IN中讀取一篇英文文章,存入到字符串?dāng)?shù)組xx中;請編制函數(shù)encryptChar(),按給定的替代關(guān)系對數(shù)組xx中的所有字符進(jìn)行替代,仍存入數(shù)組xx的對應(yīng)的位置上,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件PS10.DAT中。
替代關(guān)系:f(p)=p*11 mod 256 (p是數(shù)組中某一個(gè)字符的ASCII值,f(p)是計(jì)算后新字符的ASCII值),如果原字符的ASCII值是偶數(shù)或計(jì)算后f(p)值小于等于32,則該字符不變,否則將f(p)所對應(yīng)的字符進(jìn)行替代。
部分源程序已給出,原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符。
請勿改動主函數(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()
{
}
void main()
{
clrscr();
if(ReadDat()){
printf("數(shù)據(jù)文件ENG.IN不能打開!\n\007");
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(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("ps10.dat","w");
for(i=0;i printf("%s\n",xx[i]);
fprintf(fp,"%s\n",xx[i]);
}
fclose(fp);
}
--------------------------------------------------------------------------------
注:在ReadDat()函數(shù)中由于fgets()函數(shù)讀入數(shù)據(jù)時(shí)沒有讀入字符串結(jié)束符'\0',因
而用while()循環(huán)在xx數(shù)組每一行未尾將換行符'\n'替換成結(jié)束符'\0'。
編寫的函數(shù)如下:該函數(shù)的基本算法是——讓字符指針pf指向每一行的開頭然后逐一往
后移動,在移動過程中按要求進(jìn)行轉(zhuǎn)換。*pf%2==0用于判斷是否為偶數(shù)。if()條件語
句用于控制不替代字符。
解法1:
void encryptChar()
{
int i;
char *pf;
for(i=0;i {pf=xx[i]; /*每行字符個(gè)數(shù)*/
while(*pf!=0)
{if(*pf%2==0||*pf*11%256<32)
{pf++;continue;}
*pf=*pf*11%256;
pf++;
}
}
}
- 推薦給朋友
- 收藏此頁
·考試吧版2008年4月計(jì)算機(jī)等級考試二級C試題 (2008-4-13 11:25:45)
·考試吧版2008年4月計(jì)算機(jī)等級考試二級C答案 (2008-4-13 11:18:59)
·考試吧版2008年4月計(jì)算機(jī)等級考試二級VB答案 (2008-4-13 10:30:53)
·考試吧版2008年4月計(jì)算機(jī)等級考試二級VF答案 (2008-4-13 10:25:01)
·2007年9月全國計(jì)算機(jī)考試二級VB筆試答案 (2007-9-25 11:54:50)
全國計(jì)算機(jī)等級考試三級教程--數(shù)據(jù)庫技術(shù) |
計(jì)算機(jī)等級考試三級教程--網(wǎng)絡(luò)技術(shù) |
全國計(jì)算機(jī)等級考試一級B教程(2009年版) |
全國計(jì)算機(jī)等級考試三級教程--信息管理技術(shù) |
如果計(jì)算機(jī)等級考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系,我們將會及時(shí)處理。如轉(zhuǎn)載本計(jì)算機(jī)等級考試網(wǎng)內(nèi)容,請注明出處。