



版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第1題(10.0分)題號:31/* 【程序改錯】功能:將s所指字符串的反序和正序進行連接形成一個新串放在t所指的數(shù)組中。例如:當S所指的字符串的內(nèi)容為"ABCD”時,t所指數(shù)組中的內(nèi)容為"DCBAABCD”。#include<conio.h>#include<stdio.h>#include<string.h>/**********F0UND**********/voidfun(chars,chart){inti,d;/**********F0UND**********/d=len(s);/**********F0UND**********/for(i=1;i<d;i++)t[i]=s[d-1-i];for(i=0;i<d;i++)t[d+i]=s[i];/**********F0UND**********/t[2*d]=’/〇';}main(){chars[100],t[100];clrscr();printf(*\nPleaseenterstringS:*);scanf1%s,s);fun(s,t);printf("\nTheresultis:%s\n',t);}答案:.voidfun(chars[],chart[]).d=strlen(s);.for(i=0;i<d;i++).t[i+d]=0;第2題(10.0分)題號:434【程序改錯】功能:編寫ー個程序計算某年某月有幾天。(注意要區(qū)分閏年)#include<stdio.h>voidmain(){intyy,mm,len;printf(*year,month=");scanf("%d%d",&yy,&mm);/**********FOUND**********/switch(yy)|case1:case3:case5:case10:case12:len=31;/**********found**********/breakcase4:case6:case9:case11:len=30;break;case2:if(yy%4==0&&yy%100!=0||yy%400==0)len=29;elselen=28;break;/**********fouND**********/defaultprintf("inputerror!\n");break;)printf("Thelengthof%d%did%d\n”,yy,mm,len);getchO;}答案:.switch(mm).break;.default:第1題(10.0分)題號:27/* 【程序改錯】功能:實現(xiàn)3行3列矩陣的轉置,即行列互換。fun(inta[3][3],intn){inti,j,t;for(i=0;i<n;i++)for(j=0;j<n;j++)/**********F0UND**********/scanf(*%d*?a[i][j]);for(i=0;i<n;i++)|for(j=0;j<n;j++)printf(*%4d*,a[i][j]);printf('\n");)for(i=0;i<n;i++)/**********F0UND**********/for(j=0:j<n;j++)(/**********F0UND**********/a[i][j]=t;a[i][j]=a[j][i];/**********found**********/t=a[j][i];}for(i=0;i<n;i++)|for(j=0;j<n;j++)printf(*%4d*,a[i][j]);printf('\n");main()intb[3][3];fun(b,3);答案:.scanf&a[i][j]).for(j=0;j<i;j++).t=a[i][j];.a[j][i]=t;第2題(10.0分)題號:367/* 【程序改錯】功能:用插入排序法將n個字符進行排序(降序)。提示:插入法排序的思路是:先對數(shù)組的頭兩個元素進行排序,然后根據(jù)前兩個元素的情況插入第三個元素,再插入第四個元素…)。#defineN81#include<stdio.h>#include<string.h>voidfun(char*aa,intn){/**********FOUND**********/inta,b;t;for(a=1;a<n;a++){t-aa[a];b=a-1;/**********F0UND**********/while((b>=0)and(t>aa[b]))(aa[b+l]=aa[b];b--;}/**********F0UND**********/aa[b+l]=t}}main(){chara[N];inti;printf('\nEnterastring:");gets(a);fun(a,strlen(a));printf(,z\nThestring:*);puts(a);getchO;}答案:1).inta,b,t;2),while((b>=0)&&(t>aa[b]))3).aa[b+l]=t;第1題(10.0分)題號:408/* 【程序改錯】功能:寫計算級數(shù)ex=l+x+x2/2!+x3/3!+...+xn/n!的值。 */#include"stdio?h”main(){intm,n;floatx,term,exl,ex2;printfCx,m=");scanf("%f%d",&x,&m);/**********FOUND**********/exl==ex2=l;term=l;for(n=l;n<=m;n++)(/**********found**********/term*二x%n;ex1+=term;)ex2=term;/**********FOUND**********/for(n=m;n>l;n-){term*二n/x;ex2+=term;)printf("exforward二%fexbackrard二%f\n”,exl,ex2);getchO;}答案:.exl=ex2=l;.term*二x/n;.for(n二n—)第2題(10.0分)題號:574【程序改錯】功能:ー個己排好序的ー維數(shù)組,輸入ー個數(shù)number,要求按原來排序的規(guī)律將它插入數(shù)組中. */main(){inta[ll]={l,4,6,9,13,16,19,28,40,100);inttempi,temp2,number,end,i,j;/***********FOUND***********/for(i=0;i<=10;i++)printf("%5d",a[i]);printf("\n");scanf('%d”,ftnumber);/***********FOUND***********/end=a[10];if(number>end)/***********FOUND***********/a[ll]=number;else|for(i=0;i<10;i++)(/***********FOUND***********/if(a[i]<number)(templ=a[i];a[i]=number;for(j=i+l;j<ll;j++)(temp2=a[j];a[j]=templ;templ=temp2;}break;for(i=0;i<ll;i++)printf("%6d",a[i]);}答案:.for(i=0;i<10;i++).end=a[9];.a[10]=number;.if(a[i]>number)第1題(10.0分)題號:419/* 【程序改錯】功能:利用遞歸函數(shù)調(diào)用方式,將所輸入的5個字符,以相反順序打印出來。 */#include*stdio.h"main(){inti=5;voidpalin(intn);printf("\40:");palin(i);printf('\n");}voidpalin(n)intn;{/**********F0UND**********/intnext;if(n<=l){/**********fouND**********/next!=getchar();printf(*\n\0<);putchar(next);}else(next=getchar();/**********FOUND**********/palin(n);putchar(next);}}答案:.charnext;.next=getchar();.palin(n-l);第2題(10.0分)題號:398/* 【程序改錯】功能:使數(shù)組左下三角元素中的值乘以n〇#include<stdio.h>#include<conio.h>^include<stdlib.h>#defineN3intfun(inta[][N],intn)(/**********FOUND**********/inti;j;for(i=0;i<N;i++)/**********found**********/for(j=0;j<N;j++)/**********FOUND**********/a[i][j]=*n;}main(){inta[N][N],n,i,j;clrscr();printf(''*****Thearray*****\n〃);for(i=0;iく3;i++)(for(j=0;j<3;j++)(a[i][j]=rand()%10;printf("%4d",a[i][j]);}printf('\n");)don=rand();while(n>=51In<l);printf("n=%4d\n”,n);fun(a,n);printf(''*****THERESULT*****\n");for(i=0;iく3;i++){for(j=0;jく3;j++)printf("%4d",a[i][j]);printf("\n");getchO;答案:.inti,j;.for(j=0;j<=i;j++).a[i][j]*=n;第1題(10.0分)題號:382【程序改錯】功能:讀入一行英文文本,將其中每個單詞的最后ー個字母改成大寫,然后輸出此文本行(這里的“單詞”是指由空格隔開的字符串)。例如:若輸入例amastudenttotaketheexamination.則應輸出“IaMAstudenTtOtakEthEexamination.#includeconio.h^include"stdio.h"#include"ctype.h#include"string,h"uplst(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-l));)main()charchrstr[81];clrscr();printf("\nPleaseenterastring:");gets(chrstr);printf(x\n\nBeforechanging:\n%s”,chrstr);uplst(chrstr);printfl\nAfterchanging:\n%s,chrstr);}答案:.intk=0;.if(*p==1').*(p-1)=toupper(*(p-1));第2題(10.0分)題號:360/* 【程序改錯】功能:將長整型數(shù)中每一位上為奇數(shù)的數(shù)依次取出,構成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。例如:當s中的數(shù)為:87653142時,t中的數(shù)為:7531。 */^include<conio.h>#include<stdio.h>voidfun(longs,long*t){intd;longsl=l;/**********FOUND**********/t=0;while(s>0){d=s%10;/**********found**********/if(d%2==0);*t=d*si+*t;si*=10;)/**********found**********/s\=10;})main()(longs,t;clrscr();printf(*\nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf(功能:以下程序把兩個數(shù)按由大到小的順序輸出來. *//***********FOUND***********/功能:以下程序把兩個數(shù)按由大到小的順序輸出來. *//***********FOUND***********/swap(int*pl,*p2)|intp;p二?pl;*pl二*p2;p2=p;)main()(inta,b,*p,*q;printf(*inputa,b:');/***********FOUND***********/scanf(“觀%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*pl,int*p2)或voidswap(int*pl,int*p2)2).scanf("%d%d",&a,&b);3).printf("max二%d,min=%d\n",*pl,*p2);或printf("max二%d,min二%d\n",a,b);第2題(10.0分)題號:440答案:.*t=0;.if(d%2).s/=10;第1題(10.0分)題號:255【程序改錯】【程序改錯】功能:輸入字符序列,字符序列以特殊字符"ザ’結束。程序從前向后依次讀入字符,并翻譯出新的字符輸出。翻譯的規(guī)則是:如果當前讀入的字符是數(shù)字符,如果該字符的面值為n,則它的后一個字符(包括數(shù)字符)需重復輸出n+!次如果當前讀入的字符不是數(shù)字符,則輸出該字符。輸出時,以上述一次翻譯為ー組,不同組間輸出用一個空白字符隔開。翻譯直至當前讀入的字符為字符結束翻譯和輸出。 */#include<stdio.h>voidmain(){charch,nch;intcount;intk;printf("Enterstring.\n");scanf("%c”,&ch);/**********FOUND**********/while(ch=,#'){if(ch>=’〇'&&ch<=,9')(/**********found**********/count=ch-'0'-1;scanf("紀”,&nch);for(k二〇;k<count;k++)printf("%c",nch);}else/**********FOUND**********/printf("%f",ch);printf("");scanf("%c",&ch);)printf("#\n");}答案:.while(ch!='#').count二ch-'O'+1;.printf("%c",ch);12909三、程序改錯共2題(共計20分)第1題(10.0分)題號:437/* 【程序改錯】功能:以下程序能求出1*1+2*2+ +n*n<=1000中滿足條件的最大的n。 */#include*string,hmain(){intn,s;/**********F0UND**********/sニニn二。;/**********F0UND**********/while(s>1000)|++n;s+=n*n;)/**********found**********/printf("n二%d\n”,&nT);getchO;}答案:.s二nニ〇;.while(s<=1000).printf("n二%d\n〃,n-1);第2題(10.0分)題號:410/* 【程序改錯】功能:某個公司采用公用電話傳遞數(shù)據(jù),數(shù)據(jù)是四位的整數(shù),在傳遞過程中是加密的,加密規(guī)則如下:每位數(shù)字都加上5,然后除以10的余數(shù)代替該位數(shù)字。再將新生成數(shù)據(jù)的第一位和第四位交換,第二位和第三位交換。例如:輸入ー個四位整數(shù)1234,則結果為:9876. */#include"stdio.h"main()inta,i,aa[4],t;printf("輸入ー個四位整數(shù):");/**********FOUND**********/scanf("%d",a);aa[0]=a%10;/**********FOUND**********/aa[l]=a%100%10;aa[2]=a%1000/100;aa[3]=a/1000;/**********FOUND**********/for(i=0;i<3;i++)(aa[i]+=5;aa[i]%=10;}for(i=0;i<=3/2:i++)(t=aa[i];aa[i]=aa[3-i];aa[3-i]=t;}for(i=3;i>=0;i—)printf aa[i]);getchO;}答案:.scanf&a);.aa[l]=a%100/10;.for(i=0;i<=3;i++)12910三、程序改錯 共2題(共計20分)第1題(10.0分)題號:423【程序改錯】功能:打印出楊輝三角形(要求打印出10行). */#include*stdio.h*main()(inti,j;inta[10][10];printf("\n");/**********F0UND**********/for(i=l;i<10;i++)a[i][0]=l;a[i][i]=l;}/**********found**********/for(i=l;i<10;i++)for(j=l;j<i;j++)/**********found**********/a[i][i]=a[i-l][j-l]+a[i-l][j];for(i=0;i<10:i++)(for(j=0;j<=i;j++)printf(*%5d*,a[i][j]);printf("\n");getchO;}}答案:.for(i=0:i<10;i++).for(i=2;i<10;i++).a[i][j]=a[i-l][j-l]+a[i-l][j];第2題(10.0分)題號:414/* 【程序改錯】功能:ー球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地時,共經(jīng)過多少米?第10次反彈多高?#include"stdio.h"main()(/**********FOUND**********/floatsn=100.0;hn=sn/2;intn;/**********FOUND**********/for(n=2;n<10;n++)(sn=sn+2*hn;/**********fouND**********/hn=hn%2;printf(*thetotalofroadis%f\n',sn);printf(z'thetenthis%fmeter'n”,hn);答案:.floatsn=100.0,hn=sn/2;.for(n=2;n<=10;n++)或for(n=2;n<ll;n++).hn=hn/2;第1題(10.0分)題號:395【程序改錯】功能:統(tǒng)計出若干個學生的平均成績,最低分以及得最低分的人數(shù)。例如:輸入10名學生的成績分別為92,87,68,56,92,84,67,92,66,則輸出平均成績?yōu)?7.9,最低高分為56,得最低分的人數(shù)為1人。#include"stdio.h"floatMin=0;intJ=0;floatfun(floatarray[],intn)(inti;floatsum=0,ave;Min=array[0];for(i=0;i<n;i++)(if(Min>array[i])Min=array[i];/**********FOUND**********/sum=+array[i];}/**********F0UND**********/ave=sum\n;for(i=0;i<n;i++)/**********F0UND**********/if(array[i]=Min)J++;return(ave);}main(){floata[10],ave;inti=0;for(i=0;iC10;i++)scanf("%f〃,&a[i]);ave=fun(a,10);printf(*ave=%f\n,ave);printf("min二%f\n”,Min);printf("Total:%d\n",J);getchO;答案:.sum+=array[i];.ave=sum/n;.if(array[i]ニニMin)J++;第1題(10.0分)題號:357【程序改錯】功能:請編寫函數(shù)fun,對長度為8個字符的字符串,將8個字符按降序排列。例如:原來的字符串為CEAedcab,排序后輸出為edcbaECAo#include<stdio.h>#include<ctype.h>#include<conio.h>intfun(char*s,intnum){/**********F0UND**********/inti;j;chart;for(i=0;i<num;i++)/**********FOUND**********/for(j二i;jくnum;j++)/**********F0UND**********/if(s[i]>s[j])(t=s[i];s[i]=s[j];s[j]=t;}}main(){chars[10];clrscr();printf("輸入8個字符的字符串:");gets(s);fun(s,8);printf("\n%s”,s);getchO;答案:1).inti,j;2),for(j=i+l;jくnum;j++)3).if(s[i]<s[j])第2題(10.0分)題號:249【程序改錯】功能:從鍵盤輸入十個學生的成績,統(tǒng)計最高分,最低分和平均分。max代表最高分,min代表最低分,avg代表平均分。 */main()|inti;/***********FOUND***********/floata[8],min,max,avg;printf(*input10score:*);for(i=0;i<=9;i++)|printftinputascoreofstudent:*);/***********FOUND***********/scanf("研",a);}/***********FOUND***********/max=min=avg=a[1];for(i=l;i<=9;i++){/***********FOUND***********/if(minくa[i])min=a[i];if(maxくa[i])max=a[i];avg=avg+a[i];}avg=avg/10;printf("max:%f\nmin:%f\navg:%f\n”,max,min,avg);}答案:1).floata[10],min,max,avg;2),或scanf("%f",a+i);.max=min=avg=a[0];.if(min>a[i])或if(a[i]<min)第1題(10.0分)題號:358/* 【程序改錯】功能:先將在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序連接到t串的后面。例如:當S中的字符串為:“ABCDE”時,則t中的字符串應為:“EDCBAABCDE”。 */#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,char*t)|/**********F0UND**********/inti;si=strlen(s);for(i=0;i<sl;i++)/**********found**********/t[i]=s[sl-i];for(i=0;i<sl;i++)t[sl+i]=s[i];/**********F0UND**********/t[2*sl]="〇";}main()(chars[100],t[100];clrscr();printf(*\nPleaseenterstrings:);scanf('%s”,s);fun(s,t);printf(*Theresultis:%s\n",t);getchO;}答案:.inti,si;.t[i]=s[sl-i-l];.t[2*sl]=0;第1題(10.0分)題號:416【程序改錯】功能:讀取7個數(shù)(1-50)的整數(shù)值,每讀取ー個值,程序打印出該值個數(shù)的大。#include"stdio.h"main(){inti,a,n=l;/**********F0UND**********/while(n<7){do{scanf("%d",&a);}/**********found**********/while(a<l&&a>50);/**********F0UND**********/for(i=0;i<=a;i++)printf(***);printf('\n");n++;}getchO;}答案:.while(n<8).while(a<l|Ia>50);.for(i=l;i<=a;i++)第2題(10.0分)題號:257/* 【程序改錯】功能:用指針作函數(shù)參數(shù),編程序求一維數(shù)組中的最大和最小的元素值. */ttdefineN10/***********FOUND***********/voidmaxmin(intarr[],int*ptl,*pt2,n)inti;/***********FOUND***********/*ptl=*pt2=&arr[0];for(i=l;i<n;i++)(/***********FOUND***********/if(arr[i]<*ptl)*ptl=arr[i];if(arr[i]<*pt2)*pt2=arr[i];)}main(){intarray[N]={10,7,19,29,4,0,7,35,-16,21},*pl,*p2,a,b;/***********F0UND***********/*pl=&a;*p2=&b;maxmin(array,pl,p2,N);printf("max=%d,min=%d”,a,b);}答案:.maxmin(intarr[],int*ptl,int*pt2,intn).*pt1二*pt2二arr[0];.if(arr[i]>*ptl)*ptl=arr[i];.pl=&a;p2=&b;第1題(10.0分)題號:30/* 【程序改錯】功能:將字符串s中最后一次出現(xiàn)的子字符串tl替換成字符串t2,所形成的新串放在w所指的數(shù)組中,在此處,要求tl和t2所指字符串的長度相同。例如:當s所指字符串中的內(nèi)容為"abcdabfabc",tl中的內(nèi)容為〃ab”,t2中的內(nèi)容為"99”時,結果w所指數(shù)組中的內(nèi)容應為"abcdabf99c"^include<conio.h>^include<stdio.h>#include<string.h>intfun(char*s,char*tl,char*t2,char*w){inti;char*p,*r,*a;strcpy(w,s);/**********FOUND**********/while(w)tl;P=w;tl;while(*r)/**********FOUND**********/if(*r=*p)(r++;p++;}elsebreak;/**********FOUND**********/if(*rニニ‘/〇')a=w;w++;)r二t2;while(*r)|/**********FOUND**********/a=*r;a++;r++;))main(){chars[100],tl[100],t2[100],w[100];clrscr();printf('\nPleaseenterstringS:");scanf('%s”,s);printf(*\nPleaseentersubstringtl:);scanf('%s”,tl);printf("\nPleaseentersubstringt2:");scanf('%s”,t2);if(strlen(t1)==strlen(t2))(fun(s,tl,t2,w);printf('\nTheresultis:%s\n,w);)elseprintf("\nError:strlen(tl)!=strlen(t2)\n");}答案:.while(*w).if(*r==*p){r++;p++;}.if(*rニニ。)a二w;.*a=*r;第1題(10.0分)題號:13/* 【程序改錯】功能:求1到10的階乘的和。main(){inti;floatt,s=0;floatfac(intn);/**********F0UND**********/for(i=l;i<10;i++)/**********FOUND**********/s=fac(i);printf("%f\n',s);}floatfac(intn)|/**********found**********/inty=l;inti;for(i=l;i<=n;i++)y=y*i;/**********F0UND**********/return;}答案:.for(i=l;i<=10;i++).s+=fac(i);.floaty-1;.returny;第2題(10.0分)題號:369/* 【程序改錯】功能:求出在字符串中最后一次出現(xiàn)的子字符串的地址,通過函數(shù)值返回,在主函數(shù)中輸出從此地址開始的字符串;若未找到,則函數(shù)值為NULL。例如:當字符串中的內(nèi)容為:"abcdabfabcdx”,t中的內(nèi)容為:〃ab〃時,輸出結果應是:abcdxo當字符串中的內(nèi)容為:“abcdabfabcdx”,t中的內(nèi)容為:"abd"時,則程序輸出未找到信息:notfound!〇 */#include<conio.h>#include<stdio.h>#include<string.h>char*fun(char*s,char*t){char*p,*r,*a;/**********FOUND**********/a==NULL;while(*s)(p=s;r二t;while(*r)/**********FOUND**********/if(r==p)(r++;p++;)elsebreak;/**********FOUND**********/if(*rハ〇')a=s;s++;}returna;}main(){chars[100],t[100],*p;clrscr();printf(*\nPleaseenterstringSscanf("%s”,s);printf(*\nPleaseentersubstringt:);scanf("%s”,t);p=fun(s,t);if(P)printf("\nTheresultis:%s\n,p);elseprintf('\nNotfound!\n");}答案:.a=NULL;.if(*r==*p){r++;p++;}.if(*r=='\0')a=s;第1題(10.0分)題號:385/* 【程序改錯】功能:求兩個形參的乘積和商數(shù),并通過形參返回調(diào)用程序。例如:輸入:61.82和12.65,輸出為:c=782.023000d=4.886957 */#include<stdio.h>ftinclude<conio.h>/**********F0UND**********/voidfun(doublea,b,double*x,double*y)(/**********F0UND**********/x=a*b;/**********F0UND**********/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);getchO;}答案:.voidfun(doublea,doubleb,double*x,double*y).*x=a*b;.*y=a/b;第2題(10.0分)題號:399/* 【程序改錯】功能:將整型數(shù)組中所有小于〇的元素放到所有大于0的元素的前面(要求只能掃描數(shù)組一次)。 */#include<stdio.h>#defineMax100voidfun(inta[],intn)/**********FOUND**********/inti=5;j=n-l,temp;while(i<j)(while(a[i]<0)i++;while(a[j]>=0)/**********FOUND**********/j++;/**********found**********/if(i>j)(temp=a[i];a[i]=a[j];a[j]=temp;voidmain(){statica[]={l,-3,-1,3,2,4,-4,5,-5,-2},n=10,i;fun(a,n);for(i=0;i<10;i++)printfC%d”,a[i]);getchO;}答案:.inti=0,j=n-l,temp;.j—;.if(i<j)第1題(10.0分)題號:25/* 【程序改錯】功能:給定n個實數(shù),輸出平均值,并統(tǒng)計在平均值以下(含平均值)的實數(shù)個數(shù)。例如:n=6時,輸入23.5,45.67,12.1,6.4,58.9,98.4所得平均值為40.828335I在平均值以下的實數(shù)個數(shù)應為3。intfun(floatx[],intn)|intj,c=0;/**********FOUND**********/floatjニ〇;/**********FOUND**********/for(j=0;j<=n;j++)xa+=x[j];xa=xa/n;printf(ave=%f\n,xa);/**********FOUND**********/for(j=0;j<=n;j++)if(x[j]<=xa) c++;/**********found**********/returnxa;main()floatx[]={23.5,45.67,12.1,6.4,58.9,98.4};printf(*%d\n*,fun(x,6));答案:.floatxa=0;.for(j=0;j<n;j++).for(j=0;j<n;j++).returnc;第1題(10.0分)題號:409/* 【程序改錯】功能:有1、2、3、4個數(shù)字,能組成多少個互不相同且無重復數(shù)字的三位數(shù)?都是多少?main()|inti,j,k;/**********FOUND**********/printf/**********FOUND**********/for(i=l;i<=5;i++)for(j=l;j<5;j++)for(k=l;k<5;k++)/**********F0UND**********/if(i!=k||i!=j||j!=k)printf("%d,%d,%d\n”,i,j,k);答案:.printf(*\n*);.for(i=l;i<5;i++).if(i!=k&&i!=j&&j!=k)第2題(10.0分)題號:411/* 【程序改錯】功能:將一個正整數(shù)分解質因數(shù)。例如:輸入90,打印出90=2*3*3*5ttinclude"stdio.h"main()|intn,i;printf("\npleaseinputanumber:\nw);scanf("%d",&n);printf(*%d=*,n);for(i=2;i<=n;i++)(/**********FOUND**********/while(n==i)(/**********found**********/if(n%i==l)(printfi);/**********F0UND**********/n=n%i;)elsebreak;)}printfn);}答案:.while(n!=i).if(n%i==0)或if(!(n%i)).n=n/i;第1題(10.0分)題號:362【程序改錯】功能:求出a所指數(shù)組中最大數(shù)和次最大數(shù)(規(guī)定最大數(shù)和次最大數(shù)不在數(shù)不和a[l]中),依次和a[0]、a[l]中的數(shù)對調(diào)。例如:數(shù)組中原有的數(shù):7、10、12、〇、3、6、9、11、5、8,輸出的結果為:12、11、7、〇、3、6、9、10、5、8。 */#include<conio.h>#include<stdio.h>#defineN20intfun(int*a,intn)(intk,ml,m2,maxi,max2,t;maxi=max2=-32768;ml=m2=0;for(k=0;k<n;k++)if(a[k]>maxl)(max2=maxi;m2=ml;maxi=a[k];ml=k;}/**********found**********/elseif(a[k]>maxl){max2=a[k];m2=k;}/**********FOUND**********/t=a[0];a[ml]=a[0];a[ml]=t;/**********FOUND**********/t=a[l];a[m2]=a[l];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");getchO;}答案:.elseif(a[k]>max2).t=a[0];a[0]=a[ml];a[ml]=t;.t=a[l];a[l]=a[m2];a[m2]=t;第2題(10.0分)題號:400/* 【程序改錯】功能:輸入兩個實數(shù),按代數(shù)值由小到大輸出它們,并在fun()函數(shù)中輸出。(輸出的數(shù)據(jù)都保留2位小數(shù))#include"stdio.h"main(){fun();getchO;)fun(floata,floatb)(/**********FOUND**********/floattscanf("%f%f",&a,&b);/**********FOUND**********/if(a<b)(t=a;a=b;b=t;)/**********FOUND**********/printf,我?2f\n”,&a,&b);}答案:.floatt;.if(a>b).printf(*%5.2f,%5.2f\n”,a,b);第1題(10.0分)題號:388/* 【程序改錯】功能:分別統(tǒng)計字符串中大寫字母和小寫字母的個數(shù)。例如:給字符串s輸入:AAaaBBbl23CCccccd,則應輸出結果:upper=6,lower=8。 */#include<conio.h>#include<stdio.h>/**********FOUND**********/voidfun(char*s,inta,intb)|while(*s){if(*s>='A'&&*sくニ'Z')/**********FOUND**********/a++;if(*s>='a'&&*s<='z')/**********FOUND**********/b++;s++;))main()(chars[100];intupper=0,lower=0;clrscr();printfl\nPleaseastring: );gets(s);fun(s,&upper,&lower);printf〈\nupper=%dlower=%d\n”,upper,lower);}答案:.voidfun(char*s,int*a,int*b).(*a)++;.(*b)++;第2題(10.0分)題號:26/* 【程序改錯】功能:找出大于m的最小素數(shù),并將其作為函數(shù)值返回。 */#include<math.h>intfun(intm)inti,k;for(i=m+l;;i++)(/**********found**********/for(k=l;k<i;k++)/**********FOUND**********/if(i%k!=0)break;/**********F0UND**********/if(k<i)/**********F0UND**********/returnk;main()(intn;scanf&n);printf("%d\n”,fun(n));答案:.for(k=2;k<i;k++)或for(k=2;i>k;k++)或for(k=2;k<=i-l;k++)或for(k=2;k<i/2;k++)或for(k=2;i/2>k;k++)或for(k=2;kく=sqrt(i);k++)或for(k=2;sqrt(i)>=k;k++).if(i%k==0)break;或if(!(i%k))break;.if(i<=k)或if(k>=i)或if(k=i)或if(k>=i/2)或if(k=i/2)或if(k>sqrt(i)).returni;或return(i);第2題(10.0分)題號:418/* 【程序改錯】功能:利用遞歸方法求5!。#include*stdio.h"#include"stdio.hmain()inti;intfact();printf("5!二%d\n〃,fact(5));intfact(j)intj;intsum;/**********FOUND**********/if(j=O)/**********found**********/sum=O;elsesum=j*fact(j-1);/**********FOUND**********/returnj;}答案:.if(>=0).sum=l;.returnsum;第1題(10.0分)題號:412/* 【程序改錯】功能:利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。 */#include"stdio.h"main(){intscore;/**********FOUND**********/char*grade;printf(*pleaseinputascore'n");/**********FOUND**********/scanfC'%d〃,score);/**********FOUND**********/grade=score>=90?'A';(score>=60?'B':'C');printf("外dbelongsto%c”,score,grade);}答案:.chargrade;.scanf(飛d”,&score);.grade二score>=90?'A':(score>=60?,B':'C');第2題(10.0分)題號:433【程序改錯】功能:編寫ー個程序模擬袖珍計算器的加、減、乘、除四則運算。例如:輸入3+5=或5—2=或3*4=或4/2=,求表達式結果。 *I#include<stdio.h>voidmain()(floatx,y;charoperatel;printf(*Arithmeticexpression'n);/**********FOUND**********/scanfx);/**********F0UND**********/while((operatel==getchar())!=’二’)(printf(result=");scanf("%f",&y);/**********FOUND**********/switch(y)(case'+':x+=y;break;case'一':x-=y;break;case' :x?二y;break;case'/':x/=y;break;)}printf("%f",x);getchO;return;}答案:.scanf("%f",&x);.while((operatel=getchar())!=,=,).switch(operatel)第1題(10.0分)題號:363/* 【程序改錯】功能:計算正整數(shù)num的各位上的數(shù)字之積。例如:若輸入:252,則輸出應該是:20o若輸入:202,則輸出應該是:〇。 */#include<stdio.h>#include<conio.h>longfun(longnum){/**********FOUND**********/longk=ldo(k?二num%10;/**********FOUND**********/num\=10;/**********fouND**********/}while(!num);return(k);}main(){longn;clrscr();printf〈'\Pleaseenteranumber:*);scanf("%ld',&n);printf("\n%ld\n”,fun(n));getchO;}答案:.longk=l;.num/=10;.}while(num);或while(num!=0)第2題(10.0分)題號:364【程序改錯】功能:用選擇法對數(shù)組中的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++)/**********F0UND**********/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");getchO;|答案:.P=J;.if(a[i]<a[p])或!f(a[p]>a[i]).p=i;第1題(10.0分)題號:417/* 【程序改錯】功能:下題是一段有關結構體變量傳遞的程序. */^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);getchO;}f(structstudentb)(b.x=20;/**********FOUND**********/b.c=y;}答案:.a.c='a';.printf(*%d,%c”,a.x,a.c);.b.c二'y';第1題(10.0分)題號:396/* 【程序改錯】功能:移動ー維數(shù)組中的內(nèi)容;若數(shù)組中有n個整數(shù),要求把下標從0到p(含p,p小于等于n-1)的數(shù)組元素平移到數(shù)組的最后。例如:ー維數(shù)組中的原始內(nèi)容為:“1,2,3,4,5,6,7,8,9,10”p的值為3。移動后,ー維數(shù)組中的內(nèi)容應為“5,6,7,8,9,10,1,2,3,4" */#include<stdio.h>#defineN80voidfun(int*w,intp,intn)/**********found**********/inti,k=0;b[N];/**********F0UND**********/for(i=l;i<n;i++)b[k++]=w[i];/**********found**********/for(i二〇;i<=p;i++)b[k]=w[i];for(i=0;i<n;i++)w[i]=b[i];}main()(inta[N]={l,2,3,4,5,6,7,8,9,10,11,12,13,14,15);inti,p,n=15;printf(z'Theoriginaldata:\n");printf(*\n\nEnterp:");scanf("%d",&p);fun(a,p,n);printf(*\nThedataaftermoving:\n*);for(i二〇;i<n;i++)printf("%d",a[i]);printf("\n\n");getchO;}答案:.inti,k=0,b[N];.for(i=p+l;i<n;i++)b[k++]=w[i];.for(i=0;i<=p;i++)b[k++]=w[i];第2題(10.0分)題號:394/* 【程序改錯】功能:求出NXM整型數(shù)組的最小元素及其所在的行坐標及列坐標(如果最小元素不唯一,選擇位置在最前面的ー個)。例如:輸入的數(shù)組為:4 15612 1910112求出的最小數(shù)為1,行坐標為2,列坐標為1。#defineN4#defineM3#include<stdio.h>intRow,Col;main(){inta[N][M],i,j,min,row,col;printf("inputaarray:");for(i二〇;iくN;i++)for(j=0;j<M;j++)scanf("%d”,&a[i][j]);for(i=0;i<N;i++){for(j=0;j<M;j++)printf("%d",a[i][j]);printf("\n");}min=fun(a);printf("max=%d,row=%d,col二%d”,min,Row,Col);getchO;}intfun(intarray[N][M]){intmin,i,j;min=array[0][0];Rowニ〇;Col=0;forミ二〇;iくN;i++){/**********FOUND**********/for(j=i;j<M;j++)/**********FOUND**********/if(min<array[i][j])(min=array[i][j];Row二i;/**********FOUND**********/Col=i;}}return(min);答案:.for(j=0;j<M;j++).if(min>array[i][j])3).Col=j;第1題(10.0分)題號:425/* 【程序改錯】功能:有n個人圍成一圈,順序排號。從第一個人開始報數(shù)(從1到3報數(shù)),凡報到3的人退出圈子,問最后留下的是原來第幾號的那位。1 */#include*stdio.h"#definenmax50main()|inti,k>ni,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;/**********F0UND**********/while(m>n-l){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);getchO;答案:.p=num;.while(m<n-l).if(k==3)第2題(10.0分)題號:21【程序改錯】功能:根據(jù)以下公式求n值,并作為函數(shù)值返回。例如:給指定精度的變量eps輸入0.0005時,應當輸出Pi=3.140578。n1 1 2 1 2 3 1 2 3 4—=1+—+—X—+—X——X—+—X—X—X—+...2 3353573579doublefun(doubleeps)(doubles,t;intn=l;s=0.0;t=l;/**********F0UND**********/while(t<=eps){s+=t;/**********F0UND**********/t=n/(2*n+l)*t;n++;}/**********F0UND**********/returns;main()(doublex;scanf("%lf",&x);printf(*\neps=%lf,Pi=%lf\n\n”,x,fun(x));|答案:.while(t>eps)或while(eps<t)或while(t>=eps)或while(eps<=t)或while(t>eps)或while(eps<t)或while(t>=eps)或while(eps<=t).t=t*n/(2*n+l);或1.0*n/(2*n+l)*t或n/(2*n+l.0)*t或n/(2.0*n+l)*t或n/(2.0*n+l.0)*t或1.0*n/(2.0*n+l.0)*t.return2*s;或return(2*s);或return(2*s):或return(s*2):或return(s*2);第1題(10.0分)題號:380/* 【程序改錯】功能:刪除w所指數(shù)組中下標為k的元素中的值。程序中,調(diào)用了getindex、arrout和arrdel三個函數(shù),getindex用以輸入所刪元素的下標,函數(shù)中對輸入的下標進行檢查,若越界,則要求重新輸入,直到正確為止。arrout用以輸出數(shù)組中的數(shù)據(jù),arrdel進行所要求的刪除操作。#include*conio.h#include"stdio.h"^defineNUM10/**********FOUND**********/arrout(intw,intm)(intk;/**********FOUND**********/for(k=1;k<m;k++)/**********fouND**********/printf(*%d*w[k]);printf('\n");}arrdel(int*w,intn,intk)(inti;for(i=k;i<n-1;i++)w[i]=w[i+l];n——;returnn;fgetindex(intn){inti;do{printf("\nEntertheindex[0<=i<%d]:",n);scanf(“惻",&i);}while(i<0Ii>nT);returni;main(){intn,d,a[NUM]={21,22,23,24,25,26,27,28,29,30);n=NUM;clrscr();printf("Outputprimarydata:\n");arrout(a,n);d=getindex(n);n=arrdel(a,n,d);printf("Outputthedataafterdelete:\n");arrout(a,n);}答案:.arrout(int*w,intm).for(k=0;k<m;k++).printf("%d",w[k]);第2題(10.0分)題號:12【程序改錯】功能:用下面的和式求圓周率的近似值。直到最后ー項的絕對值小于等于〇.0001.n 1 1 1—=1——+———+...3 5 7 *//**********FOUND**********/#include"stdio.h"fun(){inti=l;/**********FOUND**********/ints=0,t=l,p=l;/**********FOUND**********/while(fabs(t)<=le-4)|s=s+t;PニーP;i=i+2;t=p/i;)/**********FOUND**********/printf("pi=%d\n,z,s*4);main()funO;}答案:.ttinclude"math,h"或#include<math.h>.floats=0,t=l,p=l:或floats=0,p=l,t=l;或floatp=l,s=0,t=l;或floatp=l,t=l,s=0;或floatt=l,p=l,s=0:或floatt=l,s=0,p=l;.while(fabs(t)>le-4)或while(0.0001<fabs(t))或while(le-4<fabs(t))或while(fabs(t)>0.0001).printf("pi=%f\n",s*4);第1題(10.0分)題號:353/* 【程序改錯】功能:在字符串str中找出ASCII碼值最大的字符,將其放在第一個位置上,并將該字符的原字符向后順序移動。例如:調(diào)用fun函數(shù)之前給字符串輸入:ABCDeFGH,調(diào)用后字符串中的內(nèi)容為:eABCDFGHo */#include<stdio.h>fun(char*p){charmax,*q;inti=0;max=p[i];while(p[i]!=0){if(maxくp[i])(max=p[i];/**********found**********/p=q+i;}i++;}/**********FOUND**********/while(q<p)(/**********found**********/q=*(q-1);q—;}p[0]=max;charstr[80];print—Enterastring:/z);gets(str);printf(*\nTheoriginalstring:");puts(str);fun(str);printf("\nThestringaftermoving:");puts(str);getchO;}答案:.q=p+i;.while(q>p)或while(q>=p).*q=*(q-l);第2題(10.0分)題號:365/* 【程序改錯】功能:刪除字符串s中的所有空白字符(包括Tab字符、回車符及換行符)。輸入字符串時用‘#‘結束輸入。#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!=,ボ)[i]=c;i++;c=getchar();s[i]ハ0';fun(s);puts(s);}答案:.for(i=0,t=0;p[i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度商業(yè)秘密合作轉讓合同協(xié)議
- 二零二五年度豬肉市場風險預警與應對合同
- 二零二五年度社區(qū)服務兼職志愿者服務協(xié)議
- 二零二五年度成人外語培訓機構報名服務協(xié)議
- 二零二五年度手貨車車輛轉讓與汽車金融服務及市場推廣合同
- 2025年度游學旅游線路研發(fā)與推廣協(xié)議
- 2025年度珠寶首飾返傭金代理合同
- 2025年度混凝土班組勞務合作施工進度合同
- 二零二五年度精裝修房屋買賣合同違約賠償標準
- 二零二五年度房產(chǎn)交易全程服務協(xié)議范本
- 尺寸鏈的計算表格
- 夏玉米套種辣椒技術
- 學術規(guī)范與寫作課件
- 絕緣電阻測試儀安全操作規(guī)程
- DB6101T 197-2022 藤蔓類尾菜堆肥技術規(guī)程
- 西藏房屋建筑工程竣工材料全套表格
- 量子力學英文課件格里菲斯Chapter4
- 鍋爐節(jié)能管理制度
- 2023年道路交通安全法實施條例
- 鹽城市殘疾人康復機構認定暫行辦法
- 護理不良事件管理、上報制度及流程
評論
0/150
提交評論