C語言程序改錯(cuò)題庫_第1頁
C語言程序改錯(cuò)題庫_第2頁
C語言程序改錯(cuò)題庫_第3頁
C語言程序改錯(cuò)題庫_第4頁
C語言程序改錯(cuò)題庫_第5頁
已閱讀5頁,還剩72頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

━━━━━━━━━━━━━━━━━━一、程序改錯(cuò)共138題(共計(jì)1380分)━━━━━━━━━━━━━━━━━━第1題(10.0分)/*------------------------------------------------------功能:根據(jù)整型形參m,計(jì)算如下公式的值:y=1+1/3+1/5+1/7+...+1/(2m-3)------------------------------------------------------*/#include"stdio.h"doublefun(intm){/**********FOUND**********/doubley=1inti;/**********FOUND**********/for(i=3;i<m;i++)/**********FOUND**********/y+=1.0/(2i-3);return(y);}voidmain(void){intn;clrscr();printf("Entern:");scanf("%d",&n);printf("\nTheresultis%1f\n",fun(n));getch();}答案:1).doubley=1;2).for(i=3;i<=m;i++)或for(i=3;i<m+1;i++)3).y+=1.0/(2*i-3);第2題(10.0分)/*------------------------------------------------------功能:用選擇法對(duì)數(shù)組中的n個(gè)元素按從小到大的順序進(jìn)行排序。------------------------------------------------------*/#include<stdio.h>#defineN20voidfun(inta[],intn){inti,j,t,p;for(j=0;j<n-1;j++){/**********FOUND**********/p=jfor(i=j;i<n;i++)/**********FOUND**********/if(a[i]>a[p])/**********FOUND**********/p=j;t=a[p];a[p]=a[j];a[j]=t;}}main(){inta[N]={9,6,8,3,-1},i,m=5;printf("排序前的數(shù)據(jù):");for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");fun(a,m);printf("排序后的數(shù)據(jù):");for(i=0;i<m;i++)printf("%d",a[i]);printf("\n");getch();}答案:1).p=j;2).if(a[i]<a[p])或if(a[p]>a[i])3).p=i;第3題(10.0分)/*------------------------------------------------------功能:編寫一個(gè)程序,從鍵盤接收一個(gè)字符串,然后按照字符順序從小到大進(jìn)行排序,并刪除重復(fù)的字符。------------------------------------------------------*/#include<stdio.h>#include<string.h>voidmain(){charstr[100],*p,*q,*r,c;printf("輸入字符串:");gets(str);/**********FOUND**********/for(p=str;p;p++){for(q=r=p;*q;q++)if(*r>*q)r=q;/**********FOUND**********/if(r==p){/**********FOUND**********/c=r;*r=*p;*p=c;}}for(p=str;*p;p++){for(q=p;*p==*q;q++);strcpy(p+1,q);}printf("結(jié)果字符串:%s\n\n",str);getch();}答案:1).for(p=str;*p;p++)2).if(r!=p)3).c=*r;第4題(10.0分)/*------------------------------------------------------功能:編寫程序,求矩陣(3行3列)與5的乘積例如:輸入下面的矩陣:100200300400500600700800900程序輸出:50010001500200025003000350040004500------------------------------------------------------*/#include"stdio.h"intfun(intarray[3][3]){/**********FOUND**********/inti;j;/**********FOUND**********/for(i=1;i<3;i++)for(j=0;j<3;j++)/**********FOUND**********/array[i][j]=array[i][j]/5;}main(){inti,j;intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}};clrscr();for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%7d",array[i][j]);printf("\n");}fun(array);printf("Convertedarray:\n");for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%7d",array[i][j]);printf("\n");}getch();}答案:1).inti,j;2).for(i=0;i<3;i++)3).array[i][j]=array[i][j]*5;第5題(10.0分)/*------------------------------------------------------功能:用"起泡法"對(duì)連續(xù)輸入的十個(gè)字符排序后按從小到大的次序輸出.------------------------------------------------------*/#defineN10#include<stdio.h>#include<string.h>main(){inti;charstr[N];/***********FOUND***********/for(i=0;i<N;i++)scanf("%c",str[i]);/***********FOUND***********/sort(str[N]);for(i=0;i<N;i++)printf("%c",str[i]);printf("\n");}sort(charstr[N]){inti,j;chart;for(j=1;j<N;j++)/***********FOUND***********/for(i=0;i<N-j;i--)/***********FOUND***********/if(str[i]<str[i+1]){t=str[i];str[i]=str[i+1];str[i+1]=t;}}答案:1).for(i=0;i<N;i++)scanf("%c",&str[i]);2).sort(str);3).for(i=0;i<N-j;i++)4).if(str[i]>str[i+1])或if(str[i+1]<str[i])第6題(10.0分)/*------------------------------------------------------功能:讀入一行英文文本,將其中每個(gè)單詞的最后一個(gè)字母改成大寫,然后輸出此文本行(這里的“單詞”是指由空格隔開的字符串)。例如:若輸入“Iamastudenttotaketheexamination.”,則應(yīng)輸出“IaMAstudenTtOtakEthEexamination.”。------------------------------------------------------*/#include"conio.h"#include"stdio.h"#include"ctype.h"#include"string.h"up1st(char*p){/**********FOUND**********/integerk=0;for(;*p;p++)if(k){/**********FOUND**********/if(*p=''){k=0;/**********FOUND**********/*(p-1)=toupper(*(p-1);}}elseif(*p!='')k=1;*(p-1)=toupper(*(p-1));}main(){charchrstr[81];clrscr();printf("\nPleaseenterastring:");gets(chrstr);printf("\n\nBeforechanging:\n%s",chrstr);up1st(chrstr);printf("\nAfterchanging:\n%s",chrstr);}答案:1).intk=0;2).if(*p=='')3).*(p-1)=toupper(*(p-1));第7題(10.0分)/*------------------------------------------------------功能:在一個(gè)一維整型數(shù)組中找出其中最大的數(shù)及其下標(biāo)。------------------------------------------------------*/#defineN10/**********FOUND**********/floatfun(int*a,int*b,intn){int*c,max=*a;for(c=a+1;c<a+n;c++)if(*c>max){max=*c;/**********FOUND**********/b=c-a;}returnmax;}voidmain(void){inta[N],i,max,p=0;printf("pleaseenter10integers:\n");for(i=0;i<N;i++)/**********FOUND**********/get("%d",a[i]);/**********FOUND**********/m=fun(a,p,N);printf("max=%d,position=%d",max,p);}答案:1).intfun(int*a,int*b,intn)2).*b=c-a;3).scanf("%d",&a[i]);或scanf("%d",a+i);4).max=fun(a,&p,N);第8題(10.0分)/*------------------------------------------------------功能:為一維數(shù)組輸入10個(gè)整數(shù);將其中最小的數(shù)與第一個(gè)數(shù)對(duì)換,將最大的數(shù)與最后一個(gè)數(shù)對(duì)換,輸出數(shù)組元素。------------------------------------------------------*/voidmain(void){inta[10];voidinput();voidoutput();voidmax_min();input(a,10);max_min(a,10);output(a,10);}voidinput(int*arr,intn){int*p,i;p=arr;printf("pleaseenter10integers:\n");for(i=0;i<n;i++)/**********FOUND**********/scanf("%d",p);}voidmax_min(int*arr,intn){int*min,*max,*p,t;min=max=arr;for(p=arr+1;p<arr+n;p++)/**********FOUND**********/if(*p<*max)max=p;elseif(*p<*min)min=p;t=*arr;*arr=*min;*min=t;/**********FOUND**********/if(max=arr)max=min;t=*(arr+n-1);*(arr+n-1)=*max;*max=t;}voidoutput(int*arr,intn){int*p,i;p=arr;printf("Thechangedarrayis:\n");/**********FOUND**********/while(i=0;i<n;i++)printf("%3d",*p++);printf("\n");}答案:1).scanf("%d",p++);或scanf("%d",arr[i]);或scanf("%d",p+i);或scanf("%d",arr+i);2).if(*p>*max)或if(*max<*p)3).if(max==arr)4).for(i=0;i<n;i++)或for(i=0;n>i;i++)或for(p=arr;p<arr+n;)或for(i=0;i<=n-1;i++)或for(i=0;n-1>=i;i++)或for(p=arr;p<=arr+n-1;)或for(p=arr;arr+n-1>=p;)第9題(10.0分)/*------------------------------------------------------功能:求兩個(gè)形參的乘積和商數(shù),并通過形參返回調(diào)用程序。例如:輸入:61.82和12.65,輸出為:c=782.023000d=4.886957------------------------------------------------------*/#include<stdio.h>#include<conio.h>/**********FOUND**********/voidfun(doublea,b,double*x,double*y){/**********FOUND**********/x=a*b;/**********FOUND**********/y=a/b;}main(){doublea,b,c,d;clrscr();printf("Entera,b:");scanf("%lf%lf",&a,&b);fun(a,b,&c,&d);printf("c=%fd=%f\n",c,d);getch();}答案:1).voidfun(doublea,doubleb,double*x,double*y)2).*x=a*b;3).*y=a/b;第10題(10.0分)/*------------------------------------------------------功能:寫計(jì)算級(jí)數(shù)ex=1+x+x2/2!+x3/3!+...+xn/n!的值。------------------------------------------------------*/#include"stdio.h"main(){intm,n;floatx,term,ex1,ex2;printf("x,m=");scanf("%f%d",&x,&m);/**********FOUND**********/ex1==ex2=1;term=1;for(n=1;n<=m;n++){/**********FOUND**********/term*=x%n;ex1+=term;}ex2=term;/**********FOUND**********/for(n=m;n>1;n--){term*=n/x;ex2+=term;}printf("exforward=%fexbackrard=%f\n",ex1,ex2);getch();}答案:1).ex1=ex2=1;2).term*=x/n;3).for(n=m;n>=1;n--)第11題(10.0分)/*------------------------------------------------------功能:編制統(tǒng)計(jì)營(yíng)業(yè)員一天的營(yíng)業(yè)額的程序,設(shè)程序采用一個(gè)循環(huán)實(shí)現(xiàn),每次循環(huán)輸入一筆交易金額并累計(jì)營(yíng)業(yè)額。由于營(yíng)業(yè)員一天完成的交易次數(shù)是不確定的,為此以最后附加輸入一筆0或負(fù)數(shù)交易額作為交易金額已全部輸入結(jié)束的標(biāo)志。有以下統(tǒng)計(jì)營(yíng)業(yè)員一天營(yíng)業(yè)額的算法:統(tǒng)計(jì)營(yíng)業(yè)員一天營(yíng)業(yè)額{營(yíng)業(yè)額清0;輸入第一筆交易額;while(交易額>0.0){累計(jì)營(yíng)業(yè)額;輸入下一筆交易額;}輸出營(yíng)業(yè)額;}記一筆交易額為變量sale,營(yíng)業(yè)額為sigma。------------------------------------------------------*/#include<stdio.h>voidmain(){/**********FOUND**********/floatsale,sigmasigma=0.0;printf("Entersaledata.\n");/**********FOUND**********/scanf("%f",sale);while(sale>0.0){/**********FOUND**********/sigma+==sale;printf("Enternextsaledata(<=0tofinish).\n");scanf("%f",&sale);}printf("Sigmaofsaleis%.2f\n",sigma);getch();}答案:1).floatsale,sigma;2).scanf("%f",&sale);3).sigma+=sale;或sigma=sigma+sale;第12題(10.0分)/*------------------------------------------------------功能:根據(jù)整型形參n,計(jì)算某一數(shù)據(jù)項(xiàng)的值。A[1]=1,A[2]=1/(1+A[1]),A[3]=1/(1+A[2]),…,A[n]=1/(1+A[n-1])例如:若n=10,則應(yīng)輸出:a10=0.617977。------------------------------------------------------*/#include<conio.h>#include<stdio.h>/**********FOUND**********/intfun(intn){floatA=1;inti;/**********FOUND**********/for(i=2;i<n;i++)/**********FOUND**********/A=1.0\(1+A);returnA;}main(){intn;clrscr();printf("\nPleaseentern:");scanf("%d",&n);printf("A%d=%f\n",n,fun(n));}答案:1).floatfun(intn)2).for(i=2;i<=n;i++)3).A=1.0/(1+A);第13題(10.0分)/*------------------------------------------------------功能:求0-7這8個(gè)數(shù)字所能組成的奇數(shù)個(gè)數(shù)。------------------------------------------------------*/#include"stdio.h"main(){/**********FOUND**********/longsum=4;s=4;intj;for(j=2;j<=8;j++){/**********FOUND**********/printf("\n%d",sum);/**********FOUND**********/if(j<2)s*=7;elses*=8;sum+=s;}printf("\nsum=%ld",sum);getch();}答案:1).longsum=4,s=4;2).printf("\n%ld",sum);3).if(j<=2)或if(j<3)第14題(10.0分)/*------------------------------------------------------功能:將a所指字符串中的字符和b所指字符串中的字符,按排列的順序交叉合并到c所指數(shù)組中,過長(zhǎng)的剩余字符接在c所指數(shù)組的尾部。例如:當(dāng)a所指字符串中的內(nèi)容為“abcdefg”,b所指字符串中的內(nèi)容為“1234”時(shí),c所指數(shù)組中的內(nèi)容應(yīng)該為“a1b2c3d4efg”;而當(dāng)a所指字符串中的內(nèi)容為“1234”,b所指字符串中的內(nèi)容為“abcdefg”時(shí),c所指數(shù)組中的內(nèi)容應(yīng)該為“1a2b3c4defg”。------------------------------------------------------*/#include<conio.h>#include<stdio.h>#include<string.h>/**********FOUND**********/fun(chara,charb,charc){while(*a&&*b){*c=*a;c++;a++;*c=*b;c++;b++;}if(*a=='\0')/**********FOUND**********/while(*b)*c=*b;c++;b++;}else/**********FOUND**********/while(*a)*c=*a;c++;a++;}*c='\0';}main(){chars1[100],s2[100],t[200];clrscr();printf("\nEnters1string:");scanf("%s",s1);printf("\nEnters2string:");scanf("%s",s2);fun(s1,s2,t);printf("\nTheresultis:%s\n",t);}答案:1).voidfun(char*a,char*b,char*c)或fun(char*a,char*b,char*c)2).while(*b){*c=*b;c++;b++;}3).while(*a){*c=*a;c++;a++;}第15題(10.0分)/*------------------------------------------------------功能:以下程序能求出1*1+2*2+......+n*n<=1000中滿足條件的最大的n。------------------------------------------------------*/#include"string.h"main(){intn,s;/**********FOUND**********/s==n=0;/**********FOUND**********/while(s>1000){++n;s+=n*n;}/**********FOUND**********/printf("n=%d\n",&n-1);getch();}答案:1).s=n=0;2).while(s<=1000)3).printf("n=%d\n",n-1);第16題(10.0分)/*------------------------------------------------------功能:以下程序把兩個(gè)數(shù)按由大到小的順序輸出來.------------------------------------------------------*/#include<stdio.h>/***********FOUND***********/swap(int*p1,*p2){intp;p=*p1;*p1=*p2;*p2=p;}voidmain(void){inta,b,*p,*q;printf("inputa,b:");/***********FOUND***********/scanf("%d%d",a,b);p=&a;q=&b;if(a<b)swap(p,q);printf("a=%d,b=%d\n",a,b);/***********FOUND***********/printf("max=%d,min=%d\n",p,q);}答案:1).swap(int*p1,int*p2)或voidswap(int*p1,int*p2)2).scanf("%d%d",&a,&b);3).printf("max=%d,min=%d\n",*p,*q);或printf("max=%d,min=%d\n",a,b);第17題(10.0分)/*------------------------------------------------------功能:讀取7個(gè)數(shù)(1-50)的整數(shù)值,每讀取一個(gè)值,程序打印出該值個(gè)數(shù)的*。------------------------------------------------------*/#include"stdio.h"main(){inti,a,n=1;/**********FOUND**********/while(n<7){do{scanf("%d",&a);}/**********FOUND**********/while(a<1&&a>50);/**********FOUND**********/for(i=0;i<=a;i++)printf("*");printf("\n");n++;}getch();}答案:1).while(n<=7)或while(n<8)2).while(a<1||a>50);或while(a>50||a<1);3).for(i=1;i<=a;i++)第18題(10.0分)/*------------------------------------------------------功能:將6個(gè)數(shù)按輸入時(shí)順序的逆序進(jìn)行排列.------------------------------------------------------*/sort(char*p,intm){inti;charchange,*p1,*p2;for(i=0;i<m/2;i++){/***********FOUND***********/*p1=p+i;*p2=p+(m-1-i);change=*p1;*p1=*p2;*p2=change;}}main(){inti;/***********FOUND***********/charp,num[6];for(i=0;i<=5;i++)/***********FOUND***********/scanf("%d",num[i]);p=&num[0];/***********FOUND***********/sort(*p,6);for(i=0;i<=5;i++)printf("%d",num[i]);}答案:1).p1=p+i;p2=p+(m-1-i);2).char*p,num[6];3).scanf("%d",&num[i]);4).sort(p,6);第19題(10.0分)/*------------------------------------------------------功能:求廣義菲玻那契級(jí)數(shù)的第n項(xiàng)。廣義菲玻那契級(jí)數(shù)的前n項(xiàng)為:1,1,1,3,5,9,17,31,……項(xiàng)值通過函數(shù)值返回main()函數(shù)。例如:若n=15,則應(yīng)輸出:Thevalueis:2209。------------------------------------------------------*/#include<conio.h>#include<stdio.h>longfun(intn){longa=1,b=1,c=1,d=1,k;/**********FOUND**********/for(k=4;k<n;k++){d=a+b+c;/**********FOUND**********/a=bb=c;c=d;}/**********FOUND**********/returnk;}main(){intn=15;clrscr();printf("Thevalueis:%ld\n",fun(n));}答案:1).for(k=4;k<=n;k++)2).a=b;3).returnd;第20題(10.0分)/*------------------------------------------------------功能:將長(zhǎng)整型數(shù)中每一位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。例如:當(dāng)s中的數(shù)為:87653142時(shí),t中的數(shù)為:7531。------------------------------------------------------*/#include<conio.h>#include<stdio.h>voidfun(longs,long*t){intd;longsl=1;/**********FOUND**********/t=0;while(s>0){d=s%10;/**********FOUND**********/if(d%2==0){*t=d*sl+*t;sl*=10;}/**********FOUND**********/s\=10;}}main(){longs,t;clrscr();printf("\nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld\n",t);getch();}答案:1).*t=0;2).if(d%2)或if(d%2!=0)或if((d%2)!=0)3).s/=10;或s=s/10第21題(10.0分)/*------------------------------------------------------功能:將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5------------------------------------------------------*/#include"stdio.h"main(){intn,i;printf("\npleaseinputanumber:\n");scanf("%d",&n);printf("%d=",n);for(i=2;i<=n;i++){/**********FOUND**********/while(n==i){/**********FOUND**********/if(n%i==1){printf("%d*",i);/**********FOUND**********/n=n%i;}elsebreak;}}printf("%d",n);}答案:1).while(n!=i)2).if(n%i==0)或if(!(n%i))3).n=n/i;第22題(10.0分)/*------------------------------------------------------功能:刪除字符串s中的所有空白字符(包括Tab字符、回車符及換行符)。輸入字符串時(shí)用'#'結(jié)束輸入。-----------------------------------------------------*/#include<string.h>#include<stdio.h>#include<ctype.h>fun(char*p){inti,t;charc[80];/**********FOUND**********/for(i=1,t=0;p[i];i++)/**********FOUND**********/if(!isspace((p+i)))c[t++]=p[i];/**********FOUND**********/c[t]="\\0";strcpy(p,c);}main(){charc,s[80];inti=0;printf("Inputastring:");c=getchar();while(c!='#'){s[i]=c;i++;c=getchar();}s[i]='\0';fun(s);puts(s);}答案:1).for(i=0,t=0;p[i];i++)2).if(!isspace(*(p+i)))c[t++]=p[i];3).c[t]='\0';第23題(10.0分)/*------------------------------------------------------功能:有n個(gè)人圍成一圈,順序排號(hào)。從第一個(gè)人開始報(bào)數(shù)(從1到3報(bào)數(shù)),凡報(bào)到3的人退出圈子,問最后留下的是原來第幾號(hào)的那位。------------------------------------------------------*/#include"stdio.h"#definenmax50main(){inti,k,m,n,num[nmax],*p;printf("pleaseinputthetotalofnumbers:");scanf("%d",&n);/**********FOUND**********/p==num;for(i=0;i<n;i++)*(p+i)=i+1;i=0;k=0;m=0;/**********FOUND**********/while(m>n-1){if(*(p+i)!=0)k++;/**********FOUND**********/if(k!=3){*(p+i)=0;k=0;m++;}i++;if(i==n)i=0;}while(*p==0)p++;printf("%disleft\n",*p);getch();}答案:1).p=num;2).while(m<n-1)3).if(k==3)第24題(10.0分)/*------------------------------------------------------功能:輸入兩個(gè)雙精度數(shù),函數(shù)返回它們的平方和的平方根值。例如:輸入:22.936和14.121,輸出為:y=26.934415。------------------------------------------------------*/#include<stdio.h>#include<conio.h>#include<math.h>/**********FOUND**********/doublefun(double*a,*b){doublec;/**********FOUND**********/c=sqr(a*a+b*b);/**********FOUND**********/return*c;}main(){doublea,b,y;clrscr();printf("Entera,b:");scanf("%lf%lf",&a,&b);y=fun(&a,&b);printf("y=%f\n",y);}答案:1).doublefun(double*a,double*b)2).c=sqrt(*a**a+*b**b);3).returnc;第25題(10.0分)/*------------------------------------------------------功能:利用條件運(yùn)算符的嵌套來完成此題:學(xué)習(xí)成績(jī)>=90分的同學(xué)用A表示,60-89分之間的用B表示,60分以下的用C表示。------------------------------------------------------*/#include"stdio.h"main(){intscore;/**********FOUND**********/char*grade;printf("pleaseinputascore\n");/**********FOUND**********/scanf("%d",score);/**********FOUND**********/grade=score>=90?'A';(score>=60?'B':'C');printf("%dbelongsto%c",score,grade);}答案:1).chargrade;2).scanf("%d",&score);3).grade=score>=90?'A':(score>=60?'B':'C');第26題(10.0分)/*------------------------------------------------------功能:將八進(jìn)制轉(zhuǎn)數(shù)的字符串換為十進(jìn)制數(shù)。如輸入“127”,結(jié)果為87------------------------------------------------------*/#include"stdio.h"voidmain(void){/**********FOUND**********/charp,s[6];intn;p=s;gets(p);/**********FOUND**********/n==0;/**********FOUND**********/while(*p=='\0'){n=n*8+*p-'0';p++;}printf("%d",n);getch();}答案:1).char*p,s[6];2).n=0;3).while(*p!='\0')或while(*p)或while(*p!=0)第27題(10.0分)/*------------------------------------------------------功能:下題是一段有關(guān)結(jié)構(gòu)體變量傳遞的程序.------------------------------------------------------*/#include"stdio.h"structstudent{intx;charc;}a;main(){a.x=3;/**********FOUND**********/a.c='a'f(a);/**********FOUND**********/printf("%d,%c",a.x,b.c);getch();}f(structstudentb){b.x=20;/**********FOUND**********/b.c=y;}答案:1).a.c='a';2).printf("%d,%c",a.x,a.c);3).b.c='y';第28題(10.0分)/*------------------------------------------------------功能:編寫函數(shù)fun計(jì)算下列分段函數(shù)的值:x*20x<0且x≠-3f(x)=sin(x)0≤x<10且x≠2及x≠3x*x+x-1其它------------------------------------------------------*/#include<math.h>#include"stdio.h"floatfun(floatx){/**********FOUND**********/floaty/**********FOUND**********/if(x<0||x!=-3.0)y=x*20;elseif(x>=0&&x<10.0&&x!=2.0&&x!=3.0)y=sin(x);elsey=x*x+x-1;/**********FOUND**********/returnx;}voidmain(void){floatx,f;printf("Inputx=");scanf("%f",&x);f=fun(x);printf("x=%f,f(x)=%f\n",x,f);getch();}答案:1).floaty;2).if(x<0&&x!=-3.0)3).returny;或return(y);第29題(10.0分)/*------------------------------------------------------功能:編寫一個(gè)函數(shù),該函數(shù)可以統(tǒng)計(jì)一個(gè)長(zhǎng)度為3的字符串在另一個(gè)字符串中出現(xiàn)的次數(shù)。例如:假定輸入的字符串為:asdasasdfgasdaszx67asdmklo,字符串為:asd,則應(yīng)輸出n=4。------------------------------------------------------*/#include<stdio.h>#include<string.h>#include<conio.h>intfun(char*str,char*substr){/**********FOUND**********/inti,n=0/**********FOUND**********/for(i=0;i<=strlen(str);i++)if((str[i]==substr[0])&&(str[i+1]==substr[1])&&(str[i+2]==substr[2]))/**********FOUND**********/++i;returnn;}main(){charstr[81],substr[4];intn;clrscr();printf("輸入主字符串:");gets(str);printf("輸入子字符串:");gets(substr);puts(str);puts(substr);n=fun(str,substr);printf("n=%d\n",n);getch();}答案:1).inti,n=0;2).for(i=0;i<=strlen(str)-3;i++)或for(i=0;i<strlen(str)-2;i++)3).n++;或n+=1;或n=n+1;或++n;第30題(10.0分)/*------------------------------------------------------功能:輸入一個(gè)字符串,過濾此串,濾掉字母字符,并統(tǒng)計(jì)新生成串中包含的字符個(gè)數(shù)。例如:輸入的字符串為ab234$df4,則輸出為:Thenewstringis234$4Thereare5charinthenewstring.。------------------------------------------------------*/#include<stdio.h>#include<conio.h>#defineN80main(){charstr[N];ints;clrscr();printf("inputastring:");gets(str);printf("Theoriginalstringis:");puts(str);s=fun(str);printf("Thenewstringis:");puts(str);printf("Thereare%dcharinthenewstring.",s);getch();}fun(char*ptr){inti,j;/**********FOUND**********/for(i=0,j=0;*(ptr+i)!="\\0";i++)/**********FOUND**********/if(*(ptr+i)>'z'||*(ptr+i)<'a'||*(ptr+i)>'Z'||*(ptr+i)<'A'){/**********FOUND**********/(ptr+j)=(ptr+i);j++;}*(ptr+j)='\0';return(j);}答案:1).for(i=0,j=0;*(ptr+i)!='\0';i++)2).if(*(ptr+i)>'z'||*(ptr+i)<'a'&&*(ptr+i)>'Z'||*(ptr+i)<'A')3).*(ptr+j)=*(ptr+i);第31題(10.0分)/*------------------------------------------------------功能:輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)。------------------------------------------------------*/#include"stdio.h"main(){charc;intletters=0,space=0,digit=0,others=0;printf("pleaseinputsomecharacters\n");/**********FOUND**********/while((c=getchar())=='\n'){/**********FOUND**********/if(c>='a'&&c<='z'&&c>='A'&&c<='Z')letters++;/**********FOUND**********/elseif(c=!'')space++;elseif(c>='0'&&c<='9')digit++;elseothers++;}printf("allinall:char=%dspace=%ddigit=%dothers=%d\n",letters,space,digit,others);}答案:1).while((c=getchar())!='\n')2).if(c>='a'&&c<='z'||c>='A'&&c<='Z')或if(c<='z'&&c>='a'||c>='A'&&c<='Z')或if(c<='z'&&c>='a'||3).elseif(c=='')第32題(10.0分)/*------------------------------------------------------功能:利用遞歸方法求5!。------------------------------------------------------*/#include"stdio.h"#include"stdio.h"main(){inti;intfact();printf("5!=%d\n",fact(5));}intfact(j)intj;{intsum;/**********FOUND**********/if(j=0)/**********FOUND**********/sum=0;elsesum=j*fact(j-1);/**********FOUND**********/returnj;}答案:1).if(j==0)2).sum=1;3).returnsum;第33題(10.0分)/*------------------------------------------------------功能:求100以內(nèi)(包括100)的偶數(shù)之和.------------------------------------------------------*/#include"stdio.h"main(){/**********FOUND**********/inti,sum=1;/**********FOUND**********/for(i=2;i<=100;i+=1)sum+=i;/**********FOUND**********/printf("Sum=%d\n";sum);getch();}答案:1).inti,sum=0;2).for(i=2;i<=100;i+=2)3).printf("Sum=%d\n",sum);第34題(10.0分)/*------------------------------------------------------功能:求出a所指數(shù)組中最大數(shù)和次最大數(shù)(規(guī)定最大數(shù)和次最大數(shù)不在a[0]和a[1]中),依次和a[0]、a[1]中的數(shù)對(duì)調(diào)。例如:數(shù)組中原有的數(shù):7、10、12、0、3、6、9、11、5、8,輸出的結(jié)果為:12、11、7、0、3、6、9、10、5、8。------------------------------------------------------*/#include<conio.h>#include<stdio.h>#defineN20intfun(int*a,intn){intk,m1,m2,max1,max2,t;max1=max2=-32768;m1=m2=0;for(k=0;k<n;k++)if(a[k]>max1){max2=max1;m2=m1;max1=a[k];m1=k;}/**********FOUND**********/elseif(a[k]>max1){max2=a[k];m2=k;}/**********FOUND**********/t=a[0];a[m1]=a[0];a[m1]=t;/**********FOUND**********/t=a[1];a[m2]=a[1];a[m2]=t;}main(){intx,b[N]={7,10,12,0,3,6,9,11,5,8},n=10,i;clrscr();for(i=0;i<n;i++)printf("%d",b[i]);printf("\n");fun(b,n);for(i=0;i<n;i++)printf("%d",b[i]);printf("\n");getch();}答案:1).elseif(a[k]>max2)2).t=a[0];a[0]=a[m1];a[m1]=t;3).t=a[1];a[1]=a[m2];a[m2]=t;第35題(10.0分)/*------------------------------------------------------功能:用指針作函數(shù)參數(shù),編程序求一維數(shù)組中的最大和最小的元素值.------------------------------------------------------*/#defineN10/***********FOUND***********/voidmaxmin(intarr[],int*pt1,*pt2,n){inti;/***********FOUND***********/*pt1=*pt2=&arr[0];for(i=1;i<n;i++){/***********FOUND***********/if(arr[i]<*pt1)*pt1=arr[i];if(arr[i]<*pt2)*pt2=arr[i];}}main(){intarray[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;/***********FOUND***********/*p1=&a;*p2=&b;maxmin(array,p1,p2,N);printf("max=%d,min=%d",a,b);}答案:1).voidmaxmin(intarr[],int*pt1,int*pt2,intn)或maxmin(intarr[],int*pt1,int*pt2,intn)或voidmaxmin(int*arr,int*pt1,int*pt2,intn)2).*pt1=*pt2=arr[0];或*pt1=*pt2=*(arr+0);或*pt2=*pt1=arr[0];3).if(arr[i]>*pt1)*pt1=arr[i];或if(*(arr+i)>*pt1))*pt1=arr[i];或if(*pt1<*(arr+i)))*pt1=arr[i];或if(*pt1<arr[i])*pt1=arr[i];4).p1=&a;p2=&b;第36題(10.0分)/*------------------------------------------------------功能:編寫input()和output()函數(shù)輸入,輸出5個(gè)學(xué)生的數(shù)據(jù)記錄。------------------------------------------------------*/#include"stdio.h"#defineN5structstudent{charnum[6];charname[8];intscore[4];}stu[N];input(stu)structstudentstu[];{/**********FOUND**********/inti;j;for(i=0;i<N;i++){printf("\npleaseinput%dof%d\n",i+1,N);printf("num:");scanf("%s",&stu[i].num);printf("name:");scanf("%s",stu[i].name);for(j=0;j<3;j++){/**********FOUND**********/printf("score%d.",j);scanf("%d",&stu[i].score[j]);}printf("\n");}}print(stu)structstudentstu[];{inti,j;printf("\nNo.NameSco1Sco2Sco3\n");/**********FOUND**********/for(i=0;i<=N;i++){printf("%-6s%-10s",stu[i].num,stu[i].name);for(j=0;j<3;j++)printf("%-8d",stu[i].score[j]);printf("\n");}}main(){input();print();getch();}答案:1).inti,j;2).printf("score%d.",j+1);3).for(i=0;i<N;i++)第37題(10.0分)/*------------------------------------------------------功能:一個(gè)整數(shù),它加上100后是一個(gè)完全平方數(shù),再加上168又是一個(gè)完全平方數(shù),請(qǐng)問該數(shù)是多少?------------------------------------------------------*/#include<math.h>main(){longint

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論