上機(jī)和筆試模擬試題(含真題帶答案)_第1頁(yè)
上機(jī)和筆試模擬試題(含真題帶答案)_第2頁(yè)
上機(jī)和筆試模擬試題(含真題帶答案)_第3頁(yè)
上機(jī)和筆試模擬試題(含真題帶答案)_第4頁(yè)
上機(jī)和筆試模擬試題(含真題帶答案)_第5頁(yè)
已閱讀5頁(yè),還剩256頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

計(jì)算機(jī)二級(jí)C上機(jī)練習(xí)題匯總(共15套題)

第一套

(1)填空題

給定程序中,函數(shù)fun的功能是:在帶有頭結(jié)點(diǎn)的單向鏈表中,查找數(shù)據(jù)域中值為ch的結(jié)點(diǎn)。找到后通

過(guò)函數(shù)值返回該結(jié)點(diǎn)在鏈表中所處的順序號(hào);若不存在值為ch的結(jié)點(diǎn),函數(shù)返回0值。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

注意:源程序存放在考生文件夾下的BLANKl.CU」。

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<stdio.h>

#include<stdlib.h>

#defineN8

typedefstruct1st

{intdata;

struct1st*next;

}SLIST;

SLIST*(reatlist(char*);

voidouiist(SLIST*);

intfin(3AST*h,(harch)

{SLIST*p;intn=0;

p=h->next;

/**********found**********/

while(p!=__1___)

{n++;

/******************/

if(p->data==ch)return___2___:

elsep=p->next;

return0;

main()

{SLIST*head;intk;charch;

chara[N]={,mVp,;g,;a7w7x,;r7d,};

head=creatlist(a);

outlist(head);

printf("Enteraletter:");

scanf(”%c\&ch);

/**********found**********/

k=fun(___3___);

ifk==0)printf(M\nNotfound!\n");

elseprintf(HThesequencenunberE:%d\nn,k);

)

SLIST*(reatlist(char*a)

{SLIST*h,*p,*q;inti;

h=p=(SLIST*)malloc(sizeof(SLIST));

for(i=0;i<N;i++)

{q=(SLIST^malloc(sizeof(SLIST));

q->data=afi];p->next=q;p=q;

)

p->next=O;

returnh;

)

voidoutist(SLIST*h)

{SLIST*p;

p=h->next;

if(p==NULL)printf(n\nThelistisNULL!\nn);

else

{printf("\nHeadn);

do

{printf("->%c,,,p->data);p=p->next;}

while(p!=NULL);

printf("->End\n“);

第1處內(nèi)容:while(p!=0)

第2處內(nèi)容:if(p->data==ch)returnn;

第3處內(nèi)容:k二fun(head,ch);

(2)改錯(cuò)題

給定程序modi.。中,函數(shù)fun的功能是:給定n個(gè)實(shí)數(shù),輸出平均值,并統(tǒng)計(jì)在平均值以上(含平均值)

的實(shí)際個(gè)數(shù)。

例如,n=8時(shí)輸入:193.199、195.673、195.757>196.051、196.092、196.596、196.579、196.763

所得平均值為:195.838745,在平均值以上的實(shí)數(shù)個(gè)數(shù)應(yīng)為:5

請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<conio.h>

#include<stdio.h>

#include<windows.h>

intfun(floatx[],intn)

/************found************/

intj,c=0;floatxa=0.0;

for(j=0;j<n;j++)

xa+=x[j]/n;

printf("ave=%f\nM,xa);

for(j=0;j<n;j++)

/**不********nd****¥¥¥*****/

if(xfj]=>xa)

C++;

returnc;

main()

{floatx[100]={193.199fJ95.673fJ95.757fJ96.051f,196.092f,196.596f,196.579f,196.763f};

system("cls");

printf(n%d\n",fun(x,8));

)

第1intj,c=0;floatxa=0.0;應(yīng)改為{intj,c=0;floatxa=0.0;

第2處:if(x[j?xa)應(yīng)改為if(x[j]>=xa)

(3)程序設(shè)計(jì)

請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:找出一維整型數(shù)組元素中最大的值和它所在的下標(biāo),最大的值和它

所在的下標(biāo)通過(guò)形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個(gè)數(shù),

max存放最大值,index存放最大值所在元素的卜標(biāo)。

注意:部分源程序存在文件prog,c中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。

/******本答案只作參考。******/

#include<stdlib.h>

#include<stdio.h>

void£in(inta[],intn,rit*max,ht*d)

{

inti,base,subscript;

base=a[0];

subscript=O;

for(i=l;i<n;i++)

(

if(a[i]>base)

(

subscript=i;

base=a[ij;

*max=base;

"d二subscript;

main()

{inti,x[20],max,index,n=10;

intrandomize();

for(i=0;i<n;i++){x[i]=rand()%50;printf(u%4du,x[i]);}

printf(H\nn);

fun(x,n,&max,&index);

printf("Max=%5d,Index=%4d\nM,max,index);

第二套

(1)填空題

給定程序中,函數(shù)fun的功能是:統(tǒng)計(jì)出帶有頭結(jié)點(diǎn)的單向鏈表中結(jié)點(diǎn)的個(gè)數(shù),存放在形參n所指的存儲(chǔ)

單元中。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

注意:源程序存放在考生文件夾下的BLANKLC+o

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<stdio.h>

#include<stdlib.h>

#defineN8

typedefstruct1st

{intdata;

structlist*next;

}SLIST;

SLIST*creatlist(int*a);

voidoutlist(SLIST*);

voidfun(SLIST*h,int*n)

{SLIST*p;

/**********found**********/

—1—=0;

p=h->next;

while(p)

{(*n)++;

/*字字*******found******¥¥‘¥/

p=p->一2一;

)

main()

{SLIST*head;

inta[N]={12,87,45,32,91,16,20,48},num

head=creatlist(a);outlist(head);

/*¥¥*******fOUnd******¥¥¥‘/

fun(___3___,&num);

printf(,,\nnumber=%d\n",num);

SLIST*creatlist(inta[])

{SLIST*h,*p,*q;inti;

h=p=(SLIST*)malloc(sizeof(SLIST));

for(i=0;i<N;i++)

{q=(SLIST*)malloc(sizeof(SLIST));

q->data=a[i];p->next=q;p=q;

)

p->next=O;

returnh;

)

voidoutlist(SLIST*h)

{SLIST*p;

p=h->next;

if(p==NULL)printf(nThelistisNULL!\nn);

else

{printf(,'\nHead");

do

{printf("->%dn,p->data);p=p->next;}

while(p!=NULL);

printf(n->End\nn);

)

第1處:(*n)=0;

第2處:p=p->next;

第3處:fun(head,&num);

(2)改錯(cuò)題

給定程序modi,c中,fun函數(shù)的功能是:將n個(gè)無(wú)序整數(shù)從小到大排序。請(qǐng)改正程序中的錯(cuò)誤,使它能

得出正確結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

#include<windows.h>

fun(intn,int*a)

{inti,j,p,t;

for(j=O;j<n-l;j++)

{p=j;

/*字字*********found****不字不不****/

for(i=j+1;i<n-l;i++)

if(a[p]>a[i])

/***********************/

t=i;

if(p!=j)

{t=a[j];a[j]=a[p];a[p]=t;}

)

putarr(intn,int*z)

{inti;

for(i=1;i<=n;i++,z++)

{printf(n%4dn,*z);

if(!(i%10))printf(H\n");

}printf(n\nn);

main()

{intaa[20]={930,41,2,5,6,8,10,7),n=ll;

system(nclsu);

printf("\n\nBeforesorting%dnumbers:\n,\n);putarr(n,aa);

fun(n,aa);

printf(n\nAftersorting%dnumbers:\n",n);putarr(n,aa);

)

第1處:for(i=j+1;i<n-1;i++)應(yīng)改為for(i=j+l;i<n;i++)

第2處:t=i;改為p=i;

(3)程序設(shè)計(jì)

規(guī)定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun,它的功能是:除了字符串前后連續(xù)的*號(hào)之外,

將申中其它*號(hào)全部刪除。形參h已指向字符串中的第一個(gè)字母,形參p已指向字符串中最后一個(gè)字母。在編

寫函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。

例如,字符串中的內(nèi)容為:****A*BC*DEF*G******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:

****ABCDEFG*******。在編寫函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。

注意:部分源程序存在文件prog,c中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。

答案:

#include<stdio.h>

#include<conio.h>

voidfun(char*a,char*h,char*p)

{char*x;

inti=0j=0;

x=a;

while(x<h){a[j]=*x;x++;j++;}

while(h<=p)

if(*h!=*'){a[j]=*h;j++;h++;}

elseh++;

P++;

whilefp){a[j]=*p;j++;p++;}

afj]=,\O';

}

main()

{char

printf(HEnterastring:\n");gets(s);

t=f=s;

while(*t)t++;

t-;

while(*t==**')t—;

while(*f=='*‘)f++;

fun(s,f,t);

printf(MThestringafterdeleted:\n");puts(s);

第三套

(1)填空題

給定程序中,函數(shù)fun的功能是:計(jì)算出帶有頭結(jié)點(diǎn)的單向鏈表中各結(jié)點(diǎn)數(shù)據(jù)域之和作為函數(shù)值返回。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

注意:源程序存放在考生文件夾下的BLANK1.C4*。

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<stdio.h>

#include<stdlib.h>

#defineN8

typedefstruct1st

{intdata;

structlist*next;

}SLIST;

SLIST*creatlist(int*);

voidoutlist(SLIST*);

intfun(SLIST*h)

{SLIST*p;inis=0;

p=h->next;

while(p)

/**********found**********/

s+=p->一1一;

/**********found**********/

P=P->_2—;

)

returns;

main()

{SLIST*head;

inta[N]={12,87,45,32,91,16,20,48};

head=creatlist(a);outlist(head);

/**不*******tound**********/

printf(H\nsum=%d\n",fun(3));

)

SLIST*creatlist(inta[])

{SLIST*h,*p,*q;inti;

h=p=(SLIST*)malloc(sizeof(SLIST));

for(i=0;i<N;i++)

{q=(SLIST*)malloc(sizeof(SLIST));

q->data=a[i];p->next=q;p=q;

)

p->next=0;

returnh;

}

voidoutlist(SLIST*h)

{SLIST*p;

p=h->next;

if0==NULL)printf(MThelistisNULL!\n");

else

{printf(n\nHead");

do

{printf("->%d",p->data);p=p->next;}

while(p!=NULL);

printf("->End\n");

)

)

第1處:s+=p->data;

第2處:p=p->next;

第3處:printf(,z\nsum=%d\n,z,fun(head));

(2)改錯(cuò)題

給定程序modi.。中,函數(shù)fun的功能是:按順序給s所指數(shù)組中的元素賦予從2開(kāi)始的偶數(shù),然后再按順

序?qū)γ课鍌€(gè)元素求一個(gè)平均值,并將這些值依次存放在w所指的數(shù)組中,若s所指數(shù)組中元素的個(gè)數(shù)不是5

的倍數(shù),多余部分忽略不計(jì)。

例如,s所指數(shù)組有14個(gè)元素,則只對(duì)前10個(gè)元素進(jìn)行處理,不對(duì)最后的4個(gè)元素求平均值。

請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<stdio.h>

#defineSIZE20

fun(double*s,double*w)

{intk,idoublesum;

for(k=2,i=0;i<SIZE;i++)

{s[i]=k;k+=2;)

/*字不*********found****¥¥¥¥字學(xué)字字/

sun=0.0;

for(k=0,i=0;i<SIZE;i++)

{sum+=s[i];

/*,字*********found****字字字不字字字*/

if(i+l%5==0)

{w[k]=sum/5;sum=0;k++;}

)

returnk;

}

main()

{doublea[SIZE],b[SIZE/5];

inti,k;

k=fun(a,b);

printf(MTheoriginaldata:\n");

for(i=0;i<SIZE;i++)

{if(i%5==0)printf(n\nu);

printf(M%4.0f',a[i]);

}

printf("\n\nTheresult:\n");

for(i=0;i<k;i++)pintf(u%6.2f\b[i]);

printf(n\n\nn);

)

第1處:sun=0.0;改為sum=0.0;

第2處:if(i+l%5=0)改為if((i+l)%5==0)

(3)程序設(shè)計(jì)

請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:求出1到m之內(nèi)(含m)能被7或11整除的所有整數(shù)放在數(shù)組a中,通

過(guò)n返回這些數(shù)的個(gè)數(shù)。

例如,若傳送給m的值為50,則程序輸出:

711142122283335424449

注意:部分源程序存在文件prog.c中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。

/******本答案只作參考。******/

#include<conio.h>

#include<stdio.h>

#include<windows.h>

#defineM100

voidfun(intm,int*a,int*n)

inti,count=0;

for(i=l;i<=m;i++)

(

if(i%7==0IIi%ll==O)

(

a[count++]=i;

)

*n=count;

)

main()

{intaa[M],n,k;

system(nclsn);

fun(50,aa,&n);

for(k=0;k<n;k++)

if((k+l)%20==0)printf(n\nu);

elseprintf("%4du,aa[k]);

printf(^'\n',);

第四套

(1)填空題

人員的記錄由編號(hào)和出生年、月、日組成,N名人員的數(shù)據(jù)己在主函數(shù)中存入結(jié)構(gòu)體數(shù)組std中,且編

號(hào)唯一。函數(shù)fun的功能是:找出指定編號(hào)人員的數(shù)據(jù),作為函數(shù)值返回,由主函數(shù)輸出,若指定編號(hào)不存

在,返回?cái)?shù)據(jù)中的編號(hào)為空串。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

注意:源程序存放在考生文件夾下的BLANK1.C中。

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<stdio.h>

#include<string.h>

#defineN8

typedefstruct

{charnum[10J;

intyear,month,day;

}STU;

___1___fin(STU*std,(har*num)

STUa={””,9999,99,99};

for(i=0;i<N;i++)

/**********found********亭*/

if(strcmp(___2___,num)==0)

]**********found**********/

return(___3___);

returna;

}

main()

{STUstd[N]={{'llllir',1984,2,15},{“222222”,1983,9,21},{“333333”,1984,9,1},

{“444444、1983,7』5},{“555555984,9,28},{“666666”[983,11,15},

{“777777”』983,6,22},{“888888”,1984,8,19});

STUp;

charn[10]=,'666666M;

p=fun(std,n);

if(p.num[0]==0)

printf(n\nNotfound!\n");

else

{printf("\nSucceed!\n");

printf("%s%d-%d-%d\nn,p.num,p.year,p.month,p.day);

)

)

第1處:STUfun(STU*std,char*num)

第2處:if(strcmp(std[i].num,num)==0)

第3處:return(std[i]);

(2)改錯(cuò)題

給定程序modi,c中,函數(shù)fun的功能是:將s所指字符串的正序和反序進(jìn)行連接,形成一個(gè)新申放在t

所指的數(shù)組中。

例如,當(dāng)s所指字符串為:"ABCD〃時(shí),貝h所指字符串中的內(nèi)容應(yīng)為:〃ABCDDCBAJ

請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<conio.h>

#include<stdio.h>

#include<string.h>

#include<windows.h>

[*亭字********nd*****,*¥****/

voidfun(chars,chart)

inti,d;

d=strlen(s);

for(i=0;i<d;i++)t[i]=s[ij;

for(i=0;i<d;i++)t[d+i]=s[d-l-i];

/************found*****示******/

)

main()

chars[100],tf100];

system("cls");

printf("\nPleaseenterstringS:");scanf("%s",s);

fun(s.t);

printf("\nTheresultis:%s\n",t);

)

第1處:voidfun(chars,chart)改為voidfun(char*s,char*t)

第2處:t[2*d-l]='\0';改為t[2*d]='\0';

(3)程序設(shè)計(jì)

請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:根據(jù)以下公式求n的值(要求滿足精度0.0005,即某項(xiàng)小于0.0005

時(shí)停止迭代):

兀11X21X2X31X2X3X4lX2X---Xn

—=1+—+------+--------------+----------------+.........+--------------------------

233X53X5X73X5X7X93X5X---X(2n+l)

程序運(yùn)行后,如果輸入精度0.0005,則程序輸出為3.140578。

注意:部分源程序存在文件prog,c中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。

/******本答案只作參考。******/

#include<stdio.h>

#include<math.h>

doublefun(doibleeps)

(

intn=0;

doubledown=l,up=1;

doubleone,pi=0;

one=(double)up/(double)down;

while(one>=eps){

pi+=one;

n++;

up=up*n;

down=down*(2*n+1);

one=(double)up/(double)down;

)

returnpi*2;

)

main()

{doublex;

printf("Inputeps:");

scanf("%lf",&x);printf("\neps=%lf,PI=%lf\nH,x,fun(x));

)

第五套

(1)填空題

人員的記錄由編號(hào)和出生年、月、日組成,N名人員的數(shù)據(jù)已在主函數(shù)中存入結(jié)構(gòu)體數(shù)組std中。函數(shù)

fun的功能是:找出指定出生年份的人員,將其數(shù)據(jù)放在形參k所指的數(shù)組中,由主函數(shù)輸出,同時(shí)由函數(shù)

值返回滿足指定條件的人數(shù)。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)

果。

注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<stdio.h>

#defineN8

typedefstruct

{intnum;

intyear,month,day;

}STU;

intfun(STU*std,STU*k,intyear)

{inti,n=0;

for(i=0;i<N;i++)

/**********found**********/

if(—1—)

/**********found**********/

k[_2_]=std[i];

/**********found**********/

return(___3___);

)

main()

{STUstd[N]={{1,1984,2,15},{2,1983,9,21},{3,1984,9,1},{4,1983,7,15},

{5,1985,9,28},{6J982,11,15},{7,1982,6,22},{8J984,8,19}};

STUk[N];inti,n,year;

printf(MEnterayear:");scanf(M%dn,&year);

n=fun(std,k,year);

if(n==0)

printf("\nNopersonwasbomin%d\n",year);

else

{printf("\nThesepersonswerebomin%d\n",year);

for(i=0;i<n;i++)

printf("%d%d-%d-%d\nu,k[i].num,k[i].year,k[i].month,k[i].day);

)

)

第1處:if(std[i].year-year)

第2處:k[n++]=std[i];

第3處:return(n);

(2)改錯(cuò)題

給定程序modi,c中,函數(shù)fun的功能是:將從鍵盤上輸入的每個(gè)單詞的第一個(gè)字母寫為大寫字母,輸入

時(shí)各單詞必須用空格隔開(kāi),用結(jié)束輸入。

請(qǐng)改正程序中的錯(cuò)誤,使程序能輸出正確的結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<stdio.h>

intfun(char*c,intstatus)

(

/*¥¥*********f()Und****¥¥¥不****/

if(*c==n)return1;

else

(

if(status&&*c<='z*&&*c>='a')

/*xx*********tound*****亭*字****/

c+='A'?'a';

return0;

)

)

main()

(

intflag=l;

charch;

printf("請(qǐng)輸入一字符串,用點(diǎn)號(hào)結(jié)束輸入!\n)

do

ch=getchar();

flag=fun(&ch,flag);

putchar(ch);

}while(ch!=7);

printf(n\n");

)

第1處:if(*c==")return1;改為if(*c=='')return1;

第2處:c+=,A,-,a,;改為*c+='A'」a';

(3)程序設(shè)計(jì)

請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:比較兩個(gè)字符串的長(zhǎng)度,(不得調(diào)用C語(yǔ)言提供的求字符串長(zhǎng)度的

函數(shù)),函數(shù)返回較長(zhǎng)的字符串。若兩個(gè)字符串長(zhǎng)度相同,則返回第一個(gè)字符串。

例如,輸入beijingshanghai/,函數(shù)將返回shanghai。

注意:部分源程序存在文件prog,c中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。

/******本答案只作參考。******/

#include<stdio.h>

char*fun((har*s,char*t)

intfirst=0,second=0;

char*p,*q;

P=s;

q=t;

while(*p++!='\O')

first++;

while(*q++!=\O')

second++;

if(first==second)

returns;

elseif(first>second)

returns;

else

returnt;

)

main()

{chara[20],b[10];

printf("Input1thstring:'1);

gets(a);

printf(HInput2thstring:'1);

gets(b);

printf(n%s\n",fun(a,b));

第六套

(1)填空題

給定程序中,函數(shù)fun的功能是:求出形參ss所指字符串?dāng)?shù)組中最長(zhǎng)字符串的長(zhǎng)度,其余字符串左邊用

字符*補(bǔ)齊,使其與最長(zhǎng)的字符串等長(zhǎng)。字符串?dāng)?shù)組中共有M個(gè)字符串,且串長(zhǎng)〈N。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

注意:源程序存放在考生文件夾下的BLANK1.C中。

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<stdio.h>

#include<string.h>

#defineM5

#defineN20

voidfin(char(*ss)[NJ)

{inti,j,k=0,n,m,len;

for(i=0;i<M;i++)

{len=strlen(ss[i]);

if(i==0)n=len;

if(len>n){

/**¥*******foUnd******¥不¥¥/

n=len;__1___=i;

}

)

for(i=0;i<M;i++)

if(i!=k)

{m=n;

len=strlen(ss[i]);

/**********found**********/

for(j=_2__;j>=O;j-)

ss[i][m-]=ss[i][j];

fbr(j=O;j<n-len;j++)

/**********found**********/

3二';

main()

{charss[M][N]={"shanghai'1,,,guangzhou","beijing",,'tianjing,',',cchongqing,,};

inti;

printf(n\nTheoriginalstringsare:\nn);

for(i=0;i<M;i++)printf(n%s\n",ss[ij);

printfCAn1");

fun(ss);

printf("\nTheresult:\nH);

for(i=0;i<M;i++)printf("%s\n”,ss[i]);

第1處:n=len;k=i;

第2處:for(j=len;j>=0;j—)

第3處:ss[i][j]='*';

(2)改錯(cuò)題

給定程序modi.c中,函數(shù)fun的功能是:從低位開(kāi)始取出長(zhǎng)整型變量s中偶數(shù)位上的數(shù),依次構(gòu)成一個(gè)

新數(shù)放在t中。

例如,當(dāng)s中的數(shù)為:7654321時(shí),t中的數(shù)為:642。

請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<conio.h>

#include<stdio.h>

#include<windows.h>

/*¥**********tound*****x*亭****/

voidfun(longs,longt)

{longd=10;

s/=10;

*t=s%10;

/*¥¥*********f()Und****字¥¥字****/

while(s<0)

{s=s/100;

*t=s%10*sl+*t;

sl=sl*10;

main()

{longst;

system("clsu);

printf(M\nPleaseenters:");scanf("%kT,&s);

fun(s,&t);

printf(nTheresultis:%ld\n",t);

)

第1處:voidfun(longs,longt)改為voidfun(longs,long*t)

第2處:while(s<0)改為while(s>0)

(3)程序設(shè)計(jì)

函數(shù)fun的功能是:將兩個(gè)兩位數(shù)的正整數(shù)a、b合并形成一個(gè)整數(shù)放在c中。合并的方式是:將a數(shù)的十

位和個(gè)位數(shù)依次放在c數(shù)的百位和千位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的個(gè)位和十位上。

例如,當(dāng)a=45,b=12。調(diào)用該函數(shù)后,c=5421。

注意:部分源程序存在文件prog,c中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。

/******本答案只作參考。******/

#include<conio.h>

#include<stdio.h>

#include<windows.h>

voidfun(inta,intb,long*c)

(

inta_up,a_low,b_up,b_low;

a_up=a/10;

a_low=a%10;

b_up=b/10;

b_low=b%10;

*c=a」ow*1000+a_up*100+b」ow*10+b_up;

)

main()

{inta,b;bngc;

system(ncls");

printf("Inputa,b:");

scanf(u%d%d,',&a,&b);

fun(a,b,&c);

printf(uTheresultis:%ld\n",c);

)

第七套

(1)填空題

給定程序的功能是調(diào)用fun函數(shù)建立班級(jí)通訊錄。通訊錄中記錄每位學(xué)生的編號(hào)、姓名和電話號(hào)碼。班

級(jí)的人數(shù)和學(xué)生的信息從鍵盤讀入,每個(gè)人的信息作為一個(gè)數(shù)據(jù)塊寫到名為myfile5.dat的二進(jìn)制文件中。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

注意:源程序存放在考生文件夾卜.的BLANKLC中。

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<stdio.h>

#include<stdlib.h>

#defineN5

typedefstruct

{intnum;

charname[10];

chartel[10];

}STYPE;

voidcheck();

intfun(1*std)

___2___*fp;inti;

if((fp=fopen(',myfile5.datn,,(wb"))==NULL)

retum(O);

printf(n\nOutputdatatofile!\nM);

for(i=0;ivN;i++)

/**********found********亭*/

fwrite(&std[i],sizeof(STYPE),1,—3—);

fclose(fp);

return(1);

)

main()

{STYPEs[10]={{l/'aaaaaV'llllirjJ2Jbbbbb”,”222222”},{3,“ccccc”J333333”),

{4Jddddd”J444444”},{5,“eeeee”「555555”}};

intk;

k=fun(s);

if(k==l)

{printf(,'Succeed!");check();}

else

printf(HFail!H);

)

voidcheck()

{FILE*fp;inti;

STYPEs[10J;

if((fp=fopen(,'myfile5.dat",',rb"))==NULL)

{printf(Tail!!\nn);exit(O);}

printf(n\nReadfileandoutputtoscreenAn");

printf(n\nnumnametel\nM);

for(i=0;i<N;i++)

{fread(&s[i],sizeof(STYPE),1,f>);

printf("%6d%s%s\n",s[i].num,s[i].name,s[i].tel);

)

fclose(fp);

)

第1處:intfun(STYPE*std)

第2處:FILE*fp;inti;

第3處:fwrite(&std[i],sizeof(STYPE),1,fp);

(2)改錯(cuò)題

給定程序modi,c中,已知一個(gè)數(shù)列從第0項(xiàng)開(kāi)始的前三項(xiàng)分別為0,0,1,以后的各項(xiàng)都是其相鄰的前

三項(xiàng)之和。下列程序中,函數(shù)fun的功能是:計(jì)算并輸出該數(shù)列前n項(xiàng)的平方根之和sum。n值通過(guò)形參傳入。

例如,當(dāng)n=10時(shí),程序的輸出結(jié)果應(yīng)為:23.197745.

請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<conio.h>

#include<sldio.h>

#include<math.h>

#include<windows.h>

/***********ound************/

fun(intn)

{doublesum,sO,s1,s2,s;intk;

sum=1.0;

if(n<=2)sum=0.0;

s0=0.0;sl=0.0;s2=L0;

for(k=4;k<=n;k++)

{s=s0+sl+s2;

sum+=sqrt(s);

s0=sl;sl=s2;s2=s;

)

/************f^)und************/

returnsum;

)

main()

{intn;

system("clsu);

printf(MInputN=n);

scanf(n%dH,&n);

printf(M%f\nu,fun(n));

}

第1處:fun(intn)改為doublefun(intn)

第2處:returnsum;改為returnsum;

(3)程序設(shè)計(jì)

學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun,它

的功能是:把指定分?jǐn)?shù)范圍內(nèi)的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中,分?jǐn)?shù)范圍內(nèi)的學(xué)生人數(shù)由函數(shù)值返【可。

例如,輸入的分?jǐn)?shù)是6069,則應(yīng)當(dāng)把分?jǐn)?shù)在60到69的學(xué)生數(shù)據(jù)進(jìn)行輸出,包含60分和69分的學(xué)生數(shù)

據(jù)。主函數(shù)中將把60放在low中,把69放在heigh中。

注意:部分源程序存在文件prog,c中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STREC*a,STREC*b,intl,inth)

{inti,j=O,k,f=O;

for(i=0;i<N;i++)

if((a[i].s>=l)&&(a[i].s<=h))

{for(k=0;k<10;k++)

b[jJ.num[kJ=a[iJ.nuinLk];

b[j].s=a[i].s;

j++;

f++;

}

return(f);

)

main()

{STREC

s[N]={{"GA05",85},{',GA03",76},{"GA02n,69},{',GA04',,85},{',GA0r',91},{,,GA07,',72},{"GA

08,\64},{nGA06n,87},{,,GA015n,85),{nGA013n,91},{"GA012H,64},{"GA014',,91},{,,GA0H",91

},{HGAO17",64},{"GAO18H,64},{"GAO16”,72}};

STRECh[N];FILE*out;

inti,n,low,heigh,t;

printf("Enter2intergernumberlow&heigh:");

scanf(',%d%d',,&low,&heigh);

if(heigh<low){t=heigh;heigh=low;low=t;}

n=fun(s,h,low,heigh);

printf("Thestudent'sdatabetween%d--%d:\n",low,heigh);

for(i=0;i<n;i++)

printf(H%s%4d\nn,h[i].num,h[i].s);

printf(n\nn);

out=fopen("outl8.dat","w");

n=fun(s,h,8O,98);

fprintf(out,H%d\nM,n);for(i=0;i<n;i++)

fprintf(out,u%s%4d\n",h[i].num,h[i].s);

fclose(out);

第八套

(1)填空題

給定程序的功能是:在X數(shù)組中放入n個(gè)采樣值,計(jì)算并輸出方差值。

N(XK-X*)"2NXK

S=£-----------------,其中X'=E—

K=1NK=1N

例如n=8,輸入:193.199、195.673、195.757、196.051、196.092、196.596、196.579、196.763時(shí),

結(jié)果應(yīng)為:1.135907。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

注意:源程序存放在考生文件夾下的BLANK1.C中。

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<stdio.h>

doublefun(doublex[J,intn)

{intj;doublexa=0.0,s;

/*不*********************/

for(j=0;j<_1—;j++)

xa+=x[jj/n;

/************found******字*****/

s=—2—;

for(j=0;j<n;j++)

/*扉亭*************邛*不****/

s+=(x[j]-xa)*(x[j]-xa)/__3—;

returns;

)

main()

{doublex[100]={193.199,195,673,195,757,196.051,196.092,196.596,196,579,196.763};

printf(H%f\nn,fun(x,8));

)

第1處:for(j=0;j<n;j++)

第2處:s=0;

第3處:n;

(2)改錯(cuò)題

給定程序modi,c中函數(shù)fun的功能是:求兩個(gè)形參的乘積和商數(shù),并通過(guò)形參返回調(diào)用程序。

例如輸入:61.82和12.65,輸出為:

c=782.023000d=4.886957。

請(qǐng)改正fun函數(shù)中的錯(cuò)誤,使它能得出正確的結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<stdio.h>

#include<conio.h>

#include〈windows.h>

voidfun(doublea,b,doublex,y)

(

/*******¥¥]]d*¥不*孝孝****/

x=a*b;y=a/b;

}

main()

{doublea,b,qd;

systemC'cls");

printf("Entera,b:");

scanf(n%lf%ir,&a,&b);

fun(a,b,&c,&d);

printf("c=%fd=%f\n”,c,d);

)

第1處:voidfun(doublea,b,doublex,y)改為voidfun(doublea,doubleb,

double*x,double*y)

第2處:x=a*b;y=a/b;改為*x=a*b;*y=a/b;

(3)程序設(shè)計(jì)

請(qǐng)編制函數(shù)voidMtrx(intn),輸出一個(gè)如下的n階方陣。變量n從文件c9670503.in中讀取。

例如,若讀入4,則輸出

1234

8765

9101112

16151413

注意:此程序存貯在prog,c中。

請(qǐng)勿改動(dòng)主程序main]」的任何內(nèi)容,僅在函數(shù)Mtrx的橫線處填入適當(dāng)?shù)膬?nèi)容并刪除橫線。

#include<conio.h>

#include<stdio.h>

#include<windows.h>

#defineM4

/*本程序中的fopen、fprintf和fclose與考生無(wú)關(guān)*/

voidMlrx(intn)

(

inta[M]={0},d=0,ij,k;

FILE*fp;

fp=fopen(',dat52.datn,,,wn);

for(i=1;i<=n;i++){

for(j=0;j<n;j++)

{d+=1;a[j]=d;}

if(i%2)

for(k=0;k<n;k++)

{printf("%3d”,a[k]);fprintf?"%3dH,a[k]);}

else

for(k=n-l;k>=0;k-)

{printf(0%3d”,a[k]);fprintf(fp,n%3d",a[k]);}

fprintf(fp,n\nM);

)

fclose(fp);

)

main()

(

intn;

FILE*fp;

system(Mclsu);

fp=fopen(nc9670503.inM,nrH);

fscanf(fp,u%dn,&n);

fclose(fp);

Mtrx(n);

第九套

(1)填空題

給定程序的功能是根據(jù)形參m(2WmW9),在二維數(shù)組中存放?張m行m列的表格,由main。函數(shù)輸出。

例如,若輸入2|若輸入4

則輸出:I則輸出:

121234

24I2468

136912

1481216

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

注意:源程序存放在考生文件夾下的BLANK1.C中。

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<stdio.h>

#defineM10

inta[MJLMJ={0};

fun(inta[][M],intm)

{intj,k;

for(j=0;j<m;j++)

for(k=0;k<m;k++)

/*¥************found***x*亭********/

一1一=(k+l)*(j+l);

)

main()

{inti,jn;

printf('*Entern:");scanf(u%du,&n);

[*¥¥*********木*found***,*¥********/

fun(_2—);

for(i=0;i<n;i++)

{for(j=0;j<n;j++)

/*字不***********found**¥¥¥字********/

printf(n%4dn,—3—);

printf(n\nu);

}

第1處:a[j][k]=(k+l)*(j+l);

第2處:fun(a,n);

第3處:printf("%4d",a[i][j]);

(2)改錯(cuò)題

給定程序modi,c中函數(shù)fun的功能是:計(jì)算并輸出high以內(nèi)最大的10個(gè)素?cái)?shù)之和。high由主函數(shù)傳給fun

函數(shù)。

若high的值為100,則函數(shù)的值為732。

請(qǐng)改正函數(shù)fun中的錯(cuò)誤,使程序能輸出正確的結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<conio.h>

#include<stdio.h>

#include<math.h>

#include<windows.h>

intfun(inthigh)

{ntaim=0,n=0,j,yes;

/*,字********nd****字字字字****/

while((high>=2)&&(n<10)

{yes=1;

for(j=2;j<=high/2;j++)

/*字字********nd****¥¥¥*****/

if(high%j==0){yes=0;break}

if(yes){sum+=high;n++;}

high-;

returnsum;

main()

{system(',cls");

printfC^dXn'1,fun(lOO));

第1處:while((high>=2)&&(n<10)改為whi1e((high>=2)&&(n<10))

第2if(high%j==0){yes=O;break)改為if(high%j==0){yes=O;break;}

(3)程序設(shè)計(jì)

請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:計(jì)算n門課程的平均分,計(jì)算結(jié)果作為函數(shù)值返回。

例如:若有5門課程的成績(jī)是:90.5,72,80,61.5,55則函數(shù)的值為:71.80。

注意:部分源程序存在文件p「og.c中。

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。

#include<stdio.h>

floatfun(foat*a,intn)

floatave=0;

inti;

for(i=0;i<n;i++)

ave=ave+a[i];

ave=ave/n;

return(ave);

main()

{floatscore[30]={90.5,72,80,61.5,55},aver;

aver=fun(score,5);

printf("\nAveragescoreis:%5.2f\n",aver);

第十套

(1)填空題

給定程序中已建立個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,鏈表中的各結(jié)點(diǎn)按數(shù)據(jù)域遞增有序鏈接。函數(shù)fun的功

能是,刪除鏈表中數(shù)據(jù)域相同的結(jié)點(diǎn),使之只保留一個(gè)。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

注意:源程序存放在考生文件夾下的BLANKLCU」。

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<stdio.h>

#include<stdlib.h>

#defineN8

typedefstruct1st

{intdata;

structlist*next;

}SLIST;

voidfun(SJST*h)

{SLIST*p,*q;

p=h->next;

if(p!=NULL)

{

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論