版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 半導(dǎo)體芯片制造工班組安全能力考核試卷含答案
- 餐廳服務(wù)員安全培訓(xùn)知識(shí)考核試卷含答案
- 婚姻家庭咨詢師崗前技術(shù)落地考核試卷含答案
- 計(jì)算機(jī)板級(jí)維修工安全文化測(cè)試考核試卷含答案
- 拖拉機(jī)熱處理加工生產(chǎn)線操作調(diào)整工誠(chéng)信評(píng)優(yōu)考核試卷含答案
- 減粘裂化裝置操作工崗前基礎(chǔ)技能考核試卷含答案
- 電線電纜鍍制工崗前崗位考核試卷含答案
- 味精原料粉碎工崗前個(gè)人防護(hù)考核試卷含答案
- 企業(yè)利潤(rùn)率出現(xiàn)不尋常的下滑
- 茶藝師崗前測(cè)試驗(yàn)證考核試卷含答案
- 汽輪機(jī)安裝施工方案與安全措施
- 光伏電站施工安全控制方案
- 2025年工業(yè)機(jī)器人維護(hù)與維護(hù)成本分析報(bào)告
- 光伏基礎(chǔ)吊裝施工方案
- 柴油發(fā)動(dòng)機(jī)檢修課件
- 專題05病句辨析與修改-2023年小升初語(yǔ)文高頻考點(diǎn)100題(部編版)
- 合肥市瑤海區(qū)S社區(qū)居家養(yǎng)老服務(wù)站建設(shè)研究:現(xiàn)狀、問(wèn)題與優(yōu)化路徑
- 《黃土原位測(cè)試規(guī)程》
- 2025年中國(guó)電熱式脫皮鉗市場(chǎng)調(diào)查研究報(bào)告
- 水平定向鉆施工技術(shù)應(yīng)用與管理
- 風(fēng)險(xiǎn)金管理辦法
評(píng)論
0/150
提交評(píng)論