下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C語言基礎實訓[練習1.1]已知圓柱體的底半徑radius=1.5,高high=2.0,求其體積。#include<stdio.h>voidmain(){floatradius,high,vol,pi=3.1415926;printf(nPleaseinputradius&high:H);scanf(n%f%f,,&radius,&high);vol=pi*radius*radius*high;printf(,,radius=%7.2f,high=%7.2f,vol=%7.2f\nH,radius,high,vol);}[練習1.2]輸入三個數,輸出其最小值。#include<stdio.h>voidmain()(inta,b,c,d,min;printfi(nPleaseinputthreenumber:**);scanff'%d%d%d”,&a,&b,&c);ifi(a>b)d=b;elsed=a;if(c>d)min=d;elsemin=c;printff'theminnumberis:min=%d\n**,min);)[練習1.3]輸入兩個整數,若他們的平方和大于100,則輸出該平方和的百位數以上(包括百位數字)的各個位數字,否則輸出兩個整數的平方和。#include<stdio.h>voidmain(){inta,b,SOS;printf(MPleaseinputtwonumber:**);scanff%d%d”,&a,&b);SOS=a*a+b*b;if(SOS>=100){SOS=SOS/100;printfi(**%d**,SOS);}else{printff%d”,SOS);[練習14]輸入ー個十進制整數,打印輸出對應的ハ進制數和十六進制數。調試要求:輸入不同的多個數據渣看輸出結果是否正確。例如分別輸入?5,366,188,56789等數據。#include<stdio.h>voidmain()(while(l){inta;scanff%d”,&a);printf(w%x,%on,a,a);結構化程序設計【練習題2.1】編程求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。在程序中調用scanf()函數通過健盤輸入半徑,圓柱高,輸出計算結果,輸出要求有文字說明,答案精確到小數點后兩位。已知圓周長、圓面積、圓球表面積、圓球體積、圓柱體積計算公式為:circle=2*PI*r,area=PI*r*r,surface=4*PI*r*r,globe=PI*r*r*r*4/3,column=area*h算法提示:1)定義符號常量PI2)定義實變量r,h,circle,area,surface,globe,column3)提示輸入“Pleaseenterr,h:M4)讀入r,h5)根據公式計算circle=2*PI*r,area=PI*r*r,surface=4*PI*r*r,globe=PI*r*r*r*4/3,column=area*h6)打印兩位精度的結果circle,area,surface,globe,column#include<stdio.h>voidmain(){floatr,h,circle,area,surface,globe,column,Pl=3.1415926;printf(MPleaseenterr,h:H);scanf(n%f%r,&r,&h);circle=2*PI*r;area=PI*r*r;surface=4*PI*r*r;globe=PI*r*r*r*4/3;column=area*h;printf(*'circle=%7.2f,area=%7.2f,surface=%7.2f,globe=%7.2f,column=%7.2r,circle,area,surface,globe,column);}【練習題2.2】輸入一個華氏溫度f,要求輸出攝氏溫度c。公式為c=5/9(f-32),輸出要求有文字說明,輸出2位小數。提示:1)定義實型變量c,f2)提示輸入"Pleaseenterf:"3)讀入f4)根據公式計算c打印兩位精度的結果。#include<stdio.h>voidmain()(floatc,f;printグPleaseenterf:M);scanf(H%r,&f);c=((f32)*5)/9;printfi(HCelsiusis:%7.2f;c);}【練習題2.3】輸入一個數,求該數個位,十位,百位上的數之和。提示:%求模(求余)運算,兩整數相除,求余數/除法運算,整數相除,結果為整數,實數相除,結果為double型數舉例:123123%10 123除以10的余數為3(個位):123/10 123除以10商為12;123/10%10%除以10的余數為2(十位);123/100 123除以100商為1(百位)#include<stdio.h>voidmain(){inti,a,b,c,sum;printfi(nPleaseenterathree-digitnumber:'*);scanf("%d”,&i);a=i%10;b=i/10%10;c=i/100;sum=a+b+c;printff'thesumis:%d",sum);)【練習題2.4]函數F(X)=3*xA3+2*xA2+x+l,輸入x,求函數的值。#include<stdio.h>voidmain(){intx,F;printfif"Pleaseinputanumber:M);scanfC%d”,&x);F=3*x*x*x+2*x*x+x+l;printffF=%d”,F);【練習題3.1】有3個整數a、b、c,由鍵盤輸入,輸出其中最大的數。#include<stdio.h>voidmain(){inta,b,c,d,max;printfif'Pleaseinputthreenumber:");scanf(("%d%d%d",&a,&b,&c);ifi(a>b)d=a;elsed=b;if(c>d)max=c;elsemax=d;printff'themostmaxnumberis%d",max);}【練習題3.2]有一函數:x(x<l)y=2x-l(l<=x,10)3x-ll(x>=10)寫ー程序,輸入x,輸出y值。#include<stdio.h>voidmain(){intx,y;printfif"Pleaseinputanumber:");scan耳"%d",&x);ifi(x<l)y=x;elseif(l<=x<10)y=2*x-l;elseif(x>=10)y=3*x-ll;prin氓"theanwseris%d",y);}【練習題3.3】給ー個不多于5位的正整數,要求:①求出它是幾位數;②分別打卬出每ー位數字;③按逆序打印出各位數字,例如原數為321,應輸出123。分析:.判斷輸入的數是兒位數就是用這個數和9999,999,99,9進行比較;.分別打印出每個數字則利用兩個整數相除的結果仍為整數進行計算;.反序數字,實際上就是將求得的每個數字對應的變量按照不同順序輸出。題目中說輸入的數不多余5位,就表示可以輸入少于5位的數,這樣存在一個問題,如果是1234,是否將求得的萬位數O也輸出出來,變成01234,這個問題在考慮輸出時不可避免,因為計算時是要首先計算萬位數字的。由于通常不輸出,也就是有幾位數就輸出幾位數字。那么我們將1234就表示為1234。#include<stdio.h>voidmain(){inti,a,b,c,d,e;printfif'Pleaseenterafive-digitpositivenitegers:");scanf(H%d",&i);if(i>99999)printfi(^^inputerrorsド);elseif(i>9999&&i<=99999){printfV'thisisafive-digitnumber.\n,T);a=i/10000;//wanweishub=i/1000%10;//qianweishuc=i/100%10;//baiweishud=i/10%10;e=i%10;printf(f,%d%d%d%d%d",e,d,c,b,a);}elseif(i>999&&i<=9999){printff'thisisafour-digitnumber.\nn);b=i/1000%10;//qianweishuc=i/l00%10;//baiweishud=i/10%10;e=i%10;printf(n%d%d%d%d",e,d,c,b);elseif(i>99&&i<=999){printff'thisisathree-digitnumber.\n'');c=i/100%10;//baiweishud=i/10%10;e=i%10;printf("%d%d%d';e,d,c);)elseif(i>9&&i<-99){printff'thisisatwo-digitnumber.\ntf);d=i/10;e=i%10;printfC'%d%d",e,d);}elseif(i>0&&i<=9){prin氓“thisisasingledigitAn");printff%d\i);【練習題3.4】企業(yè)發(fā)放的獎金根據利潤提成。H利潤I低于或等于10萬元的,獎金可提10%:12利潤髙于10萬元,低于20萬元(10000(XI<=200000)時,低于10萬元的部分按10%提成,高于100000元的部分,可提成7.5%;13200000<1<=400000時,低于20萬元的部分仍按上述方法提成(下同)。高于20萬元的部分按5%提成;144000004〈=600000時,高于40萬元的部分按3%提成;I5600000<I<=1000000時,高于60萬元的部分按3%提成;16[>1000000時,超過[00萬元的部分按[%提成。從鍵盤輸入當月利潤I,求應發(fā)獎金總數。要求:(1)用if語句編程序;(2)用switch語句編程序。#include<stdio.h>voidmain()(intt0,tl,t2,t3,t4;inti,m;intt;t0=100000*0.1;tl=100000*0.075+t0;t2=200000*0.05+tl;t3=200000*0.03+t2;t4=400000*0.015+t3;printf(MPleaseenteri:M);scanff%d”,&i);if(i<0)(printErrorNumber\nM);}else{t=i/100000;iRt>=10){t=10;)switch(t)(case0:m=i*0.1;break;:m=t0+(i?100000)*0.075;break;case3:m=tl+(i-200000)*0.05;break;case4:case5:m=t2+(i-400000)*0.03;break;case9:m=t3+(i-600000)*0.015;break;case10:m=t4+(i-1000000)*0.01;)printff'Thebonusamountis:%d\nn,m);【練習題3.5]從鍵盤任意輸入成績在0?100的分數,要求分別用if語句和switch語句實現五級制的評定,評定條件如右圖:要求:①分別用if語句和switch語句實現。②輸入一個負分數以及超過100分以上,不應該得到成績,需要給出錯誤提示:③程序運行時,需要必要的提示語句。#include<stdio.h>voidmain(){ints;printf(MPleaseenterscore:");scanff%d”,&s);if(s<0||s>100)printfif*Errorscore\nH);elseif(s>=90)printff優(yōu)”);elseif(s>=80&&s<90)printff良”);elseif(s>=70&&s<80)printR”中”);elseif(s>=60&&s<70)printfiT及格”);elseif(s<60)prints”不及格”);}【練習題3.6】編寫計算器程序,要求如下:從屏幕獲取請輸入兩個變量的值和一個算術運算符(+、?ヽ?、ノ、%),對這兩個變量進行相應的算術運算,輸出計算結果,對于其他運算符給出錯誤信息。#include<stdio.h>voidmain(){inta,b;floatA;charc;printfif'Pleaseenterwhatyouwanttosolvecomputing:\n”);scanf("%d%c%d”,&a,&c,&b);switch(c){case屮:A=a+b;break;case,-,:A=a-b;break;case,*,:A=a*b;break;case7:A=a/b;break;case,%,:A=a%b;break;default:printf(werror\n");}printf(M%f\nn,A);【習題4.1】求1至100的和加1至50的平方的和加1至10的倒數的和。#include<stdio.h>voidmain()(intx=l,z=l,y=1,sum=0;while(x<=100)(sum=sum+x;x=x+l;)while(y<=50){sum=sum+y*y;y=y+i;)while(z<=10)(sum=sum+l/z;z=z+1;)printf("l至100的和加1至50的平方的和加1至10的倒數的和%d",sum);}【習題4.2]打印出所有"水仙花數",所謂"水仙花數"是指ー個三位數,其各位數字立方和等于該本身。#include<stdio.h>voidmain(){inti=100,a,b,c;while(i>=99&&i<999){i=i+l;a=i/100;b=i/10%10;c=i%10;ifi(i=a*a*a4-b*b*b4-c*c*c)printf(M%d\nw,i);)【習題4.3】有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13…求出這個數列的前20項之和。#include<stdio.h>voidmain()floatz,i=l,x=l,y=2,sum=0;while(i<=20)(z=y/x;y=y+x;x=y-x;sum=sum+z;i=i+l;)printf("%f',sum);}【習題4.4】ー球從100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地時共經過多少米?第10次反彈多髙?#include<stdio.h>voidmain(){inti=l;floath=100,sum=0;while(i<=10)(sum=sum+h;h=h/2;i=i+l;)printf(M%f\n",h);prmtf(H%f\n",sum);【習題4.5】分別用while語句、dowhile語句和for語句,求出100以內所有奇數的和。#include<stdio.h>voidmain()inti=0,sum=0;while(i<=100)if(i%2=l)sum=sum4-i;i=i+l;)printf(nsum=%dH,sum);)#include<stdio.h>voidmain(){inti=0,sum=0;do{if(i%2=l)sum=sum+i;i=i+l;)while(i<=100);printf(,,sum=%d,,,sum);}#include<stdio.h>voidmain(){inti,sum=0;fbr(i=1;i<=100;i=i+2){sum=sum+i;)printf(Msum=%dH,sum);}【習題4.6】打印輸出乘法口訣表。#include<stdio.h>voidmain(){intx,y,z;fbr(x=1;x<=9;x-H-)for(y=i;y<=9;y++){z=x*y;printf(,,%d*%d=%d\n',,x,y,z);}}【習題4.7】任意輸入ー個正整數n,求1至n的和,n的階乘,1的階乘至n的階乘之和。#include<stdio.h>voidmain()inti,a;doublex=0,y=l,z=l;prints**Pleaseinputanumbern:”);scanff%d”,&a);fbr(i=l;i<=a;i++){x=x+i;y=y*i;z=z+y;)printfftheanswer1=%lf\nn,x);printff'theanswer2=%lf\n*',y);printfftheanswer3=%lf\nM,z);}【習題4.9】輸入x和n,計算并輸出下式的值:s=x/l+x/3+ +x/n#include<stdio.h>voidmain()floatx,n,s=0,a;inti=l;printf("Pleaseinputx,n:\n");scanf(M%f%f\&x,&n);while(i<=n){a=x/i;s=s+a;i=i+2;)printf("s=%f',s);I【習題4.10】36塊磚36人搬,男搬4女搬3,小孩2人搬1磚。要求一次全搬完,問男、女、小孩各需多少(人)?如有多種方案,輸出第?種方案及方案的數量。算法提示:設x,y,z表示男、女、小孩的人數,則有不定方程:x+y+z=364x+3y+z/2=36對x,y,z所有可能的組合測試出滿足條件的解。x、y、z的取值范圍:X:1~9,步長1y:1-12,步長1z:2-36,步長2對x,y,z所有可能的組合重復測試條件:4*x+3*y+z/2=36&&x+y+z==36是否成立,若成立則打印出x,y、z的值。#include<stdio.h>voidmain(){inti=0;floatx,y,z;fbr(x=l;x<=9;x-H-){for(y=l;y<=12;y++){fbr(z=2;z<=36;z=z+2){ifi[4*x+3*y+z/2==36&&x+y+z=36){i=i+l;prints”共有%d中方案printf("第一種方案:男人%f人,女人%f人,小孩%f^\n",x,y,z);}語言中數組的使用.請編寫函數intfun(intm,intscore口,intbelowロ),它的功能是:將低于平均分的人數作為函數值返回,并將低于平均分的成績放在below數組中(m表示score的長度,score表示成績)。例如,當score數組中的數據為:10、20、30、40、50、60、70、80、90時,函數返回4,below中的數據應為:10、20、30、40=#include<stdio.h>#include<math.h>intfiin(intm,intscore[],intbelow[])inti;doubleavg,sum=0;fdr(i=0;i<m;i-H-){sum=sum+score[i];avg=sum/m;while(score[i]<avg){below[i]=scorefi];returnbelow[i];)}returni;}voidmain()intsore[9]={10,20,30,40,50,60,70,80,90};inti,n,below[50];n=fiin(9,sore,below);printf(”低于平均分的人數為:\n*');fbr(i=0;i<10;i++)printグ%d”,i);print?低于平均分的分數為:%d",n);fbr(i=O;i<n;i++)printf(M%dM,below[i]);printf(,,\nM);}.用插入排序法將n個字符進行排序(降序)。(提示:插入法排序的思路是:先對數組的頭兩個元素進行排序,然后根據前兩個元素的情況插入第三個元素,再插入第四個元素…)。#include<stdio.h>#include<string.h>main()(chara[100],t;intij,l;printfif"pleaseenterastring:\n");gets(a);l=strlen(a);for(i=0;i<l-2;i++){if(a[i]<a[i+l]){t=a[i];a[i]=a[i+1];a[i+1]=t;}i=0;fbr(j=3;!(a[j]<=a[i]&&a[j]>=a[i+l])&&i<=j-2;i++);if(ag]<=a[i]&&a[j]>=a[i+l]){t=a[i+l];a[i+1]=a[j];a[j]=t;}ifO<l)j++;}puts(a);}.假定整數數組a中元素的值不重復。刪除a中值為x的元素(x從鍵盤輸入)。#include<stdio.h>voidmain(){inta[100],i,l,x,count;printfif"Pleaseenterthelengthofthearray:");scanfi("%d",&l);printfi("Pleaseenterasetofintegerarray:");fbr(i=O;ivl;i++)scanf!"%d",&a[i]);printfif"Pleaseentervaluesyouwanttodeletetheelements:");scanグ%d",&x);fbr(i=O;i<l;i++)if(a[i]!=x)printグ%d”,a[i]);}. ー個已按從小到大的順序排好的數組a,編寫程序,從鍵盤輸入ー個數x按原來排序的規(guī)律將它插入數組a中。#include<stdio.h>voidmain(){inta[100],l,i,x,t,flag;printff請輸入數組長度:");scanff%d”,&l);printf("請按從小到大的順序輸入ー個整數數組ア);fbr(i=O;i<l;i++)scanf(n%dM,&a[i]);printff請輸入要插入的ー個數:");scanf(M%dn,&x);fbr(i=O,t=-1,flag=O;i<l;i-H-){t++;if(a[i]<x&&a[i+l]>x)flag=l;fbr(i=l;i-l>t;i-)a[i]=a[i-l];a[t+l]=x;fbr(i=O;iv[+l;i++)print軍%d”,a[i]);.使用數組的方法篩選出1-100中的素數#include<stdio.h>#include<math.h>voidmain()(intij,a[100];fbr(i=0;i<100;i+4-)a[i]=i+l;printf("l—100以內的素數有:'n");fbr(i=l;i<100;i++)(for(j=2;j<=sqrt(a[i])y-H-)ifi(a[i]%j=O)break;if(j>sqrt(a[i]))printf(M%d\nH,a[i]);.已知一個數組a中包括10個整數元素,從a中第二個元素起,分別將后項減前項之差存入數組b,并按每行3個元素輸出數組b。#include<stdio.h>#defineMAX100voidmain()inta[MAX];intb[MAX];intij=0;fbr(i=0;i<10;i-H-)scanf(w%d,',&a[i]);)fbr(i=0;i<9;i-H-)b[j]=a[i+l]-a[i];if(O=3)IIO=6))printf("%d,\bU]);j++;.請編寫函數ftin,函數的功能是:將M行N列的二維數組中的字符數據按列的順序依次放到ー個字符串中。例如,二維數組中的數據為:WWWWSSSSHHHH則字符串屮的內容應是:WSHWSHWSHo#include<stdio.h>#defineMAX100voidmain()inti;voidfun(inti);fun(i);chara[3][4]={'w:w','w;w?s',—intj;for(i=0;i<4;i++)j=0;for(;j<3;j++){printf("%c",a|j][i]);))printf(fT\nM);TOC\o"1-5"\h\z8,求出NxN的二維數組周邊元素的平均值|0 1 2 7 9||1 9 7 4 5|a=|23831||4 5 6 8 2||5 9 1 4 1|則返回主程序后s的值應為:3.375。#include<stdio.h>#include<string.h>#include<math.h>#defineMAX100voidmain()floata[MAX][MAX],s,n,t=0;inti,j;printf("你輸入的是數組n為:");scanf("%f',&n);fbr(i=0;i<n;i++)|for(j=0j<nj++){scanf("%f',&a[i][j]);})if(n<3)(fbr(i=0;i<n;i++)(if((i=0)||(i=(n-l)))fdr(j=O;j<n;j++)E+a[i皿;})else{fbr(i=O;i<n;i-H-){if<(i==O)||(i==(n-l))){for(j=0;j<nu++){t=t+a[i皿;))}for(j=Oj<nJ++)(if((j=O)||0=n-l))(fbr(i=l;i<n-l;i++)(t=t+a[i皿;))n=(n-l)*4;s=t/n;printf(M%f\nM,s);}.求出M行N列的二維數組tt里每列中的最小元素,并依次放入pp數組中。#include<stdio.h>#include<string.H>#include<math.h>#defineMAX100voidmain()
inttt[MAX][MAX],pp[MAX];printf("二維數組的行和列為:");scanfT%d%d“,&m,&n);tbr(i=O;i<m;i-H-)(for(j=0;j<ny++)(scanf("%d",&tt[i][j]);)fbr(j=O;j<ny++)(for(i=O;i<m;i-H-){if(i=O)(min=tt[i][j];}elseif(min>tt[i][j]){min=tt[i][j];}}pp[j]=min;printfC'%d\n",pp[j]);.請編寫程序,實現B=A+A、即把矩陣A加ヒA的轉置,存放在矩陣B中。計算結果在main函數中輸出。其轉置矩陣為:|1其轉置矩陣為:|147||258|1369||123||456||789|程序輸出:|2610||61014||101418|#include<stdio.h>#include<string.h>#include<math.h>//defineMAX100voidmain()(intb[MAX][MAX],a[MAX][MAX],c[MAX][MAX],n,m,t=O;printf("請輸入數組的行和列:\nM);scanff%d%d\&n,&m);printf("請輸入矩陣:\n");for(inti=0;i<n;i-H-){fbr(intj=O0<m;j++)(scanf("%d",&a[i][j]);fbr(i=0;i<n;i++)(for(intj=0;j<m;j++)(c[i][j]=a[j皿;b[i][j]=a[i]U]+c[i]U];)}printf("請輸出矩陣a加上a的轉置的和矩陣:\n");for(i=0;i<m*n;i-H-){for(intj=0j<m;j4-+)(printf("%d",b[t][j]);)printf("\n");t++;.編寫程序刪除字符串s中從下標k開始的n個字符(n和k從鍵盤輸入)。例如,字符串內容為:HellolloWorld!,k中的值為:5,n中的值為:3,結果為:HelloWorld!〇#include<stdio.h>#include<string.h>#include<math.h>#defineMAX100intmain(){chara[MAX];intk,n;while(gets(a)){ printff請輸入刪除字符串從下標幾開始到幾個字符:\n");scanf(H%d%d,,,&k,&n);fbr(inti=0;i<strlen(a);i-H-)(if(i==k){i=i+n;}printfC%cH,a[i]);}prin氓"”);)return0;)12.編寫程序,從鍵盤輸入字符串tt,將其中每個單詞的首字符改為對應的大寫字母,首字符后的字母都改為對應的小寫字母。例如,若輸入字符串:"abcDbOYxy!",則輸出字符串為:"AbCdBoyxy!"(,#include<stdio.h>#include<string.h>#include<math.h>#defineMAX100voidmain(){chara[MAX],b[MAX];printf("請輸入字符串:");gets(a);intn=strlen(a);fbr(inti=0;i<n;){if((a[i]>64)&&(a[i]<91)){a[i]=a[i]+32;printfC%c”,a[i]);i++;}elsea[i]=a[i]-32;printf("%c",a[i]);if}ifl[a[i]='')(printf("%c",a[i]);i++;)elseprintfi(n%cH,a[i]),i++;)printf("\n");1.請編寫程序,把字符串s中所有的字符前移ー個位置,串中的第一個字符移到最后。例如:原有的字符串為:Mn.l23xyZ,則調用該函數后,串中的內容為:n123xyZM。#include<stdio.h>#include<string.h>#defineSIZE81/*用來定義字符的最大長度?/voidmain(){voidfun(char口);/?函數體在使用后,所以使用前需先聲明?/chars[SIZE];printfCTIeaseinputastring:\nM);scanff%s”,s);fun(s);printff'Thestringafterfunis:\n%s",s);}voidfun(chars[SIZE]){inti,len;charc=s[0];/?先單獨存儲第一個字符以便后面用來賦值,否則將會被覆蓋?/len=strlen(s);fbr(i=l;i<len;i+4-)s[i?l]=s[i];/*從第二個字母開始逐個前移ッs[i-l]=c;/?將第一個單詞移到最后ー個?/.編寫程序,把字符串中的內容逆置。例如:字符串中原有的內容為:abcdefg?輸出:gfedcbao#include<stdio.h>#include<string.h>voidmain()(chara[100];inti,len,t;printf(MPleaseenterastring:");gets(a);len=strlen(a);for(i=0;i<len/2;i-H-){t=a[i];a[i]=a[len-l-i];a[len-l-i]=t;)puts(a);}.編寫程序,依次取出字符串si中所有數字字符,形成新的字符串s2。#include<stdio.h>#include<string.h>voidmain(){charsl[100],s2[100];intk;inti,lj;fbr(k=O;k<100;k++){s2[k尸,;)j=0;printf("Pleaseenterastringsi:");gets(sl);l=strlen(s1);fbr(i=O;i<l;i++){if(sl[i]>='O'&&sl[i]<='9'){s2[j]=sl[i];j++;))s2[j+l]=ヘ0’;puts(s2);}.分別將a、b所指字符串中字符倒序,然后按排列的順序交叉合并到c所指數組中,過長的剩余字符接在c所指數組的尾部。例如,當a所指字符串中的內容為:"abcdefg",b所指字符串中的內容為:"1234"時,則c所指數組中的內容應該為:“g4f3e2dlcba”;#include<stdio.h>#include<string.h>voidmain()(chara[100],b[100],c[100];intij,k,len1,len2,len3,t;printf(MPleaseenterastringa:");gets(a);lenl=strlen(a);for(i=0;i<lenl/2;i-H-){t=a[i];a[i]=a[lenl-l-i];a[lenl-l-i]=t;)printfifTleaseenterastringb:");gets(b);len2=strlen(b);fbr(j=0;j<len2/2;j-H-){t=b[j];b[j]=b[len2-l-j];b[len2-l-j]=t;)Ien3=lenl+len2;for(k=0;k<len3;k=k+2){c[k]=a[i];i++;)for(k=l;k<len3;k=k+2){c[k]=b[j];j++;)c[k]=W;puts(c);}.已知字符串al和a2,各自存放ー個已按字母順序排好的字符串,編程合并二個字符串a3中,合并后仍保持字母順序(如a!中存放:"accel”,a2中存放“ilrz”,則a3中為”acceillrz”)。#include<stdio.h>#include<string.h>//defineN100main()voidfun(chara[],charb[],charc[]);chara[N],b[N],c[N];printfi(HPleaseenterastringa:");gets(a);printfif“Pleaseenterastringb:");gets(b);fiin(a,b,c);printf("%s\n",c);voidfun(chara[],charb[],charc[]){intij,k;fbr(i=O,j=O,k=O;a[i]!='\O,&&b[j]!=W;k++)if(a[i]<bU]){c[k]=a[i];i++;}else{c[k]=b[j];j++;)fbr(;a[i]!='\0';i++,k++)c[k]=a[i];fbr(;b[H!=ヘ。';j++,k++)c[k]=b[j];c[k]='\O';).定義ー個函數char*fun(char*s),判斷一個字符串s是否是回文,當字符串是回文時,函數返回字符串:yes!,否則函數返回字符串:no!〇所謂回文即正向與反向的拼寫都一樣,例如:adgdao#include<stdio.h>#include<string.h>main(){chara[100];inti,l,flag=0;printfi("pleaseinputastring:");gets(a);l=strlen(a);fbr(i=0;i<l/2;i++)i<a[i]!=a[l-l-i]){printf("no!\n");flag=l;break;}ifi(flag==O)printf("yes!\n");.編寫求圓的面積的函數,并調用該函數求出圓環(huán)的面積。#include<stdio.h>//definepi3.14159doubleS(doubler)(returnpi*r*r;}voidmain(){doubler,s;scanf("%l『,&r);s=S(r);printf(M%lf\n",s);}.請編寫函數fun,它的功能是計算下列級數的和,和值由函數值返回。S=l+x+x2/2!+x3/3!+…+xn/n!例如,當n=10,x=0.3時,函數值為1.349859〇可用系統(tǒng)庫函數pow(x,i)(表示求x的i次方)求X的基。注意:主函數的代碼如下,請勿改動主函數main的任何內容。#include<stdio.h>#include<math.h>doublefun(doublex,intn);voidmain(){intn;doublex;scanf(n%d,%lf:n,&n,&x);printf(”函數值為:%f\nH,fun(x,n));}#include<stdio.h>#include<math.h>floatfiin(intn,floatx){floats=l,k=1;inti;fbr(i=l;i<=n;i++){s=s+pow(x,i);k=k*(k+l);)returns;)voidmain()intn;floatx;scanf(0%d%f;&n,&x);printf(H%f\nH,fun(n,x));.編寫函數,求如卜.級數,在主函數中輸入n,并輸出結果。A=l+l/(l+2)+l/(l+2+3)+l/(l+2+3+4)+ + l/(l+2+3+...+n)。#include<stdio.h>#include<math.h>doublea[100][100];intn,m;doublemin(double*s)(doublex=0;intij;x=s[l][l];fbr(i=l;i<=n;i-H-){砧r(j=l;jv=m;j++){if(s[i][j]>x)x=s[i皿;))returnx;)voidmain(){intij;scanff'%d%d”,&n,&m);fbr(i=l;i<=n;i4-+)fbr(j=lj<=mij++)scanff'%1ロ&a[i][jD;printff%lf\n”,min(a));}.求一個二維數組中的最小值,用函數實現。#include<stdio.h>#include<math.h>doublea[100][100];intn,m;doublemin(doubles[][100])doublex=0;intij;x=s[l][l];fbr(i=l;i<=n;i++)(Cr(j=];jv=m;j++)(if(s[i]U]<X)x=s[i]U];)Ireturnx;)voidmain()(intij;double*p;scanff%d%d",&n,&m);fbr(i=l;i<=n;i++)fbr(j=la<=m;j++)scanfitM%lf',&a[i]|j]);printf{M%lf\n",min(a));}.求C(m,n)=m!/(n!*(m?n)!)并輸出。思路:先編寫求k!的函數,再調用該函數求解。#include<stdio.h>doublefun(doublen,doublex){inti;ints;doublesi;fbr(i=l;i<=n;i++){x=x*10;}s=x;ifi(s%10>=5)s=s+l;sl=s;fbr(i=l;iv=n;i++)sl=sl/(double)10;)returnsi;)voidmain(){doublex,n;scanf(H%lf%lf\&n,&x);printf("%lf\n”,fun(n));.編寫ー個將實數四舍五入到小數點后第n位的函數,并調用此函數將一個實數舍入到小數點后第2位(是指內部精度而非輸出精度)。#include<stdio.h>#include<stdio.h>chara[100],b[100];charfun(intlen,char*s){inti;fbr(i=O;i<len;i-H-){b[i]=*(a+i);)puts(b);)voidmain()intlen,i;gets(a);len=strlen(a);fun(len,a);).編寫用于字符串復制的函數,類似于庫函數strcpy。#include<stdio.h>#include<string.h>voidscopy(charb[],chara[]){inti;for(i=0;a[i]!=^;i++){b[i]=a[i];)b[i]=^';}voidmain()chara[100],b[100];gets(a);scopy(b,a);puts(a);.編程將字符串前后倒置。注意:以后不再提示編寫函數來實現功能,應養(yǎng)成習慣,利用函數來提高程序的通用性。#include<stdio.h>#include<string.h>voidsrev(chara[])chart;intn,ij;n=strlen(a);i=0;j=n-l;while(i<j){t=a[i];a[i]=a[j];a[j]=t;i++;j-;))voidmain()chara[80];gets(a);srev(a);puts(a);].判定字符串是否是回文。#include<stdio.h>#include<string.h>intfiin(chara[]){intij,n;n=strlen(a);i=0;j=n-l;while(i<j)if(a[i]=a[j])i++;elsebreak;)if(i>=j)(retum(l);)elseretum(O);Ivoidmain(){chars[100];gets(s);if(fun!=O)printf("yes.\n");elseprintf("no.\n");).設計ー個子函數,用以判斷ー個整數是否為素數,如果是,則返回1;否則返回〇,并利用此函數,找出100—200之間的所有素數。#include<stdio.h>#include<math.h>intfiin(int);voidmian(){intm;printff'theprimenumebris:\n");fbr(m=100;m<=200;m++){if(fun(m))printf("%d",m);printfi("\nH);}}intfun(intx){inti,flag=l;fbr(i=2;i<=sqrt(x);i-H-)if(!(x%i))flag=O;returnflag;.編寫函數voidfun(inty,intb[],int*m),它的功能是:求出能整除y且是奇數的各整數,并按從小到大的順序放在b所指的數組中,這些除數的個數通過形參m返回。例如,若y中的值為90,則有4個數符合要求,它們是1、3、5、9、15、45,請勿改動主函數main與其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。思路:可以分解為以下幾步:從〇開始逐個求得小于y的奇數一按順序將這些奇數存入數組ー逐個判斷該數組中的值是否能整除yー累加能整除y的數值個數一最后按要求傳回結果。#include<stdio.h>voidfiin(inty,intb[],int*m)(}voidmain()(inty,a[500],mj;printf(H\nPleaseinputanintegernumber:\n");scanグ%d”,&y);fiin(y,a,&m);fbr(j=Oy<m;j++)printf("%d",a[j]);printf("\n");}正文#include<stdio.h>#include<string.h>voidfun(inty,intb[],int*m){inti=Oj=l,k=O,*s=b;fbr(j=Oj<yj++)if(j%2=0)(s[i]=j;i++;)fbr(j=Oj<yJ-H-)if(y%s[i]==O)(b[k]=s|j];k++;}*m=k;voidmain()inty,a[500],mj;printfif^nPleaseinputanintegernumberiVn*');scanff%d”,&y);fun(y,a,&m);fbr(j=Oy<m;j-H-)printf("%d",a[j]);printf("\n");12.編寫函數實現冒泡排序算法。#include<stdio.h>voidfun(intb[],intn){intij,temp;fbr(i=l;i<=n;i-H-)(for(j=l;j<=n-ij++){if(bU+i]<b[j]){temp=b[j+l];b[i+l]=b[j];b[j]=teiTip;voidmain(){inty,a[500],m,i;scanff'%d",&m);fbr(i=l;i<=m;i-H-)scanf("%dM,&a[i]);fiin(a,m);fbr(i=1;i<=m;i+4-)printf(n%dH,a[i]);printffヘn");}.編寫程序實現ー個數組排成升序,在數組中某一位置插入一個不超過當前數組中最大值的數,仍保持升序。由于數組長度固定,一旦插入該數后,該數后面的元素將整體移動,導致最后ー個元素會被擠出。#include<stdio.h>doublefiin(doublen,doublex)inti;ints;doublesi;fbr(i=l;iv=n;i++)x=x*10;ifi(s%10>=5)s=s+l;sl=s;for(i=l;i<=n;i++){sl=sl/(double)10;)returnsi;)voidmain(){doublex,n;scanf("%lf%lf\&n,&x);printf("%lf\n”,fim(n));).矩陣轉置與矩陣相乘。根據主函數調用方式編寫三個函數。完成之后可進ー步思考:這里在函數參數中固定了數組元素的個數,從而限制了函數的應用范圍,你能進一步修改完善嗎?#include<stdio.h>voidinverse(int[3][6],int[6][3]);voidmulti(int[6][3],int[3][4],int[6][4]);voidoutput(int[6][4]);intmain(){intmiddle[6][3],result[6][4];intmatrix1[3][6]={8,10,12,23,1,3,5,7,9,2,4,6,34,45,56,2,4,6};intmatrix2[3][4]={3,2,1,0,-1,-2,9,8,7,6,5,4};inverse(matrix1,middle); 〃轉置矩陣multi(midd1e,matrix2,result);//矩陣乘法output(result); 〃矩陣輸出return0;}正文#include<stdio.h>voidinverse(int[3][6],int[6][3])intij;for(i=0;i<3;i++){fbr(j=0y<6u++)(b[j][iW[i][j];)voidmulti(int[6][3],int[3][4],int[6][4])intij,k,sum;for(i=0;i<6;i++)fbr(k=0;k<4;k-H-)(sum=0;fbr(j=OJ<3コ++){sum=sum+a[i][j]*b|j][k];)c[i][k]=sum;})}voidoutput(int[6][4]){intij;fbr(i=0;i<6;i++){fbr(j=0y<4y++){printf("%d",a[i][j]);)printf("\n");)}intmain(){intmiddle[6][3],result[6][4];intmatrix1[3][6]=<8,10,12,23,1,3,5,7,9,2,4,6,34,45,56,2,4,6};intmatrix2[3][4]={3,2,1,0,-1,-2,9,8,7,6,5,4};inverse(matrix1,middle); 〃轉置矩陣multi(middle,matrix2,result);〃矩陣乘法output(result); 〃矩陣輸出return0;}C語言之指針.將數組中所有元素的值反序。#include<stdio.h>#include<string.h>intfiin(char*s,intlen){inti;chartemp;fbr(i=0;i<len/2;i-H-){temp=*(s+i);*(s+i)=*(s+len-i-1);*(s+len-i-1)=temp;)returnlen;)voidmain()(intlen;chara[100];gets(a);len=strlen(a);fun(a,len);puts(a);).寫ー個函數,求字符串的長度。在main函數中輸入字符串,并輸出其長度。#include<stdio.h>intfun(char*s)(inti,len=0;chartemp;fbr(i=0;*(s+i)!=ヘ〇';i++)(len-H-;returnlen;)voidmain()intlen;chara[100];gets(a);len=fiin(a);printf(H%d\nMen);}.編程判斷輸入的ー個字符串是否是回文。所謂回文,即順讀和倒讀都是ー樣的。如eye,level,abba等。#include<stdio.h>#include<string.h>intfun(char*s,intlen)]inti;intflag;fbr(i=0;i<len/2;i-H-){if(*(s+i)=*(s+len-i-1))flag=l;else{flag=O;break;})returnflag;}voidmain()intlen,flag;chara[100];gets(a);len=strlen(a);flag=fiin(a,len);if(flag=l)printffyes\nH);elseprintffno\n");}.輸入一行文字,統(tǒng)計其中大寫字母、小寫字母、空格以及數字字符的個數。#include<stdio.h>#include<string.h>intw[4];//0放數字,1放小寫,2放大寫,3放空格int*fiin(char*s,intlen)inti;intflag,k;memset(w,(int)0,sizeofi(w));fbr(i=O;i<len;i-H-)iR*(s+i)>=O&&*(s+i)v=9){k=0;w[k]++;)if(*(s+i)>-a,&&*(s+i)<-z')|k=l;w[k]++;)if(*(s+i)>='A'&&*(s+i)<='Z'){k=2;w[k]++;)if(*(s+i)=,'){k=3;w[k]++;returnw;voidmain(){intlen,i;chara[100];gets(a);len=strlen(a);fiin(a,len);fbr(i=0;i<4;i-H-)printグ%d”,wロ]);printf(M\nM);}.實現10個整數的輸入,求和,升序排序,輸出:求和結果及平均值、排序后的數組。要求:(1)分別用函數實現以上4個模塊的功能:(即數組的輸入,求和,排序,輸出)。(2)函數定義必須用指針或數組名做為形式參數:數組輸入: voidinarr(int*p,intn)或voidinarr(inta[],intn)數組求和intsum(int*p,intn)或intsum(inta[],intn)數組排序voidsort(int*p,intn)或voidsort(inta[],intn).(3)寫主函數調用以上模塊。#include<stdio.h>voidinarr(int*pjntn){inti;for(i=O;i<n;i-H-){scanf("%d",p+i);intsum(int*p,intn){inti,sum=0;fbr(i=0;i<n;i++){sum+=*(p+i);}returnsum;voidsort(int*p,intn)(intij,temp;fbr(i=0;i<n;i++)(fbr(j=Oj<n-i-1y++){if(*(p+j+D<*(p+j)){temp=*(p+j);*(P+j)=*(P+j+D;*(p+j+l)=temp;voidoutput(int*p,intn){inti;for(i=0;i<n;i++)printf(n%d",*(p+i));)printf(H\nH);}voidmain(){inta[10];inarr(a,l0);〃輸入printf(Hsum=%d\nM,sum(a,I〇));〃求和sort(a,10);output(a,10);}c語言之結構體1、編ー個程序,輸入10個職エ的編號、姓名、基本工資、職務エ資,求出其中“基本工資十職務エ資’‘最少的職エ姓名并輸出。#include<stdio.h>//namefbxbasepascalcstructstaff{charname;doublescore1;doublescore2;doublescore3;doubleave;}lesson[4];voidmain()inti;fbr(i=0;i〈4;i++){scanfKM%s %lf %lf%lf*,&lesson[i].name,lesson[i].scoreI,&lesson[i].score2,&lesson[i].score3);}fbr(i=0;i<4;i-H-)(lesson[i].ave=(lesson[i].scorel+lesson[i].score3+lesson[i].score3)/3;Ifor(i=0;i<4;i-H-)printf(n%lf\nM,lesson[i].ave);キ2、編ー個程序,輸入下列學生成績表中的數據,并用結構體數組存放,然后統(tǒng)計并輸出三門課程的名稱和平均分數。namefbxbasepascalcwang98.0 87.0 77.0TOC\o"1-5"\h\zqian90.5 91.0 88.0sun74.0 77.5 66.5li84.5 64.5 55.0#include<stdio.h>structdate{intyear;intmonth;intday;}s;intisyear(intx){iR(x%4==0&&x%100!=0)||x%400=0)return1;elsereturn0;}voidmain(){intans=0;inti;printff'pleaseinputyyyymmdd\nM);scanf(n%d%d%dn,&s,year,&s.month,&s.day);fbr(i=s.month-1;i>=l;i-)(if(i=l||i=3||i=5||i=7||i=8||i=10||i=12)ans+=31;else(if(i==4||i=6||i==9||i=ll)ans+=30;else(if(i=2){ififisyear(s.year)ans+=29;elseans+=28;}}ans+=day;printf(H%d\n\ans);.定義ー個結構體類型(包括年、月、日)變量,計算某天在本年中是第幾天?并注意閏年(需判斷年份是否是閏年來決定2月的天數)。#include<stdio.h>structdate{intyear;intmonth;intday;}s;intisyear(intx){ift(x%4==0&&x%100!=0)||x%400=0)return1;elsereturn0;}voidmain(){intans=0;inti;printff'pleaseinputyyyymmdd\nM);scanf(n%d%d%dn,&s,year,&s.month,&s.day);fbr(i=s.month-1;i>=l;i-){if(i=l||i=3||i=5||i=7||i=8||i=10||i=12)ans+=31;else{if(i==4||i=6||i==9||i=ll)ans+=30;else(if(i=2){ififisyear(s.year))ans+=29;elseans+=28;ans+=s.day;printf(H%d\n\ans);.設已建立了兩條單向鏈表,這兩鏈表中的數據已按從小到大的次序排好,指針h!和h2分別指向這兩條鏈表的首結點。鏈表上結點的數據結構如下:structnode{intdata;node*next;);以卜.函數node*Merge(node*hl,node*h2)的功能是將hl和h2指向的兩條鏈表上的結點合并為一條鏈表,使得合并后的新鏈表上的數據仍然按升序排列,并返回新鏈表的首結點指針。算法提示:首先,使newHead和q都指向首結點數據較小鏈表的首結點,p指向另ー?鏈表首結點。其次,合并p和q所指向的兩條鏈表。在q不是指向鏈尾結點的情況下,如果q的下一個結點數據小于p指向的結點數據,則q指向下ー個結點;否則使pl指向q的下ー個結點,將p指向的鏈表接到q所指向的結點之后,使q指向p所指向的結點,使p指向pl所指向的鏈表。直到p和q所指向的兩條鏈表合并結束為止。注意,在合并鏈表的過程中,始終只有兩條鏈表。node*Merge(node*h1,node*h2){node*newHead,*p,*pl;〃使newHead和q指向首結點數據較小鏈表的首結點,p指向另?鏈表首結點if(hl->data<h2->data){newHead=hl;p=h2;}else{newHead=h2;p=hl;}node*q=newHead;/Z合并兩條鏈表while(q->next){if(q->next->data<p->data)(2) ;else{ (3) ;q->next=p;q=p;p=pl;))q->next=p;(4) ;}正文#include<stdio.h>#include<stdlib.h>structNode{intdata;Node*next;Node*create(Node*head,intm){inti,a;Node*p;scanf("%du,&a);head->data=a;for(i=l;i<m;i-H-){seanf("%d”,&a);p=(Node*)malloc(sizeofi(Node));p->data=a;p->next=NULL;head->next=p;head=p;)returnhead;}voidListPint_L(Node*head){Node*p;inti=0;p=head;while(p!=NULL){i卄;printf(”單鏈表第%d個元素是:”,i);printff%d\n"p>data);p=p->next;)}Node*Merge(Node*hl,Node*h2)jNode*newHead,*p,*pl;if(h1->data<h2->data){newHead=h1;p=h2;}else{newHead=h2;p=h1;}Node*q=newHead;while(q->next){ \f(q->next->data<p->data)q=q->next;elsepl=q->next;q->next=p;q=p;p=pl;}}q->next=p;returnnewHead;}voidmain()intlenl,len2;scanf(n%d%d*\&len1,&len2);Node*headl,*head2;head1=(Node*)malloc(sizeof(Node));head2=(Node*)malloc(sizeof(Node));headl->next=NULL;head2->next=NULL;create(headl,len1);〃創(chuàng)建第一條鏈create(head2,len2);//1i|j建第二條鏈ListPint_L(head1);ListPint_L(head2);ListPint_L(Merge(head1,head2));〃輸出}5.設已建立一條單向鏈表,指針head指向該鏈表的首結點。結點的數據結構如下:typedefstructNode{intdata;Node*next;}Node;以下函數sort(Node*head)的功能是:將head所指向鏈表上各結點的數據按data值從小到大的順序排序。算法提示:初始時,使p指向鏈表的首結點,從p之后的所有結點中找出data值最小的結點,讓pl指向該結點。將p指向的結點的data值與pl指向的結點的data值進行交換。讓p指向下一個結點,依此類推,直至p指向鏈表的最后一個結點為止。Node*sort(Node*head){Node*p=head,*pl,*p2;iRp=NULL)returnhead;while(p->next!=NULL){ P1=P;p2=p->next;while(p2!=NULL){if((1) )pl=p2;p2=p2->next;)if(p!=pl){intt;t=p->data;TOC\o"1-5"\h\zp->data= (2) ;=t;);)returnhead;)正文#include<stdio.h>#include<stdlib.h>structNode{intdata;Node*next;};Node*create(Node*head,intm){inti,a;Node*p;scanf("%dn,&a);head->data=a;for(i=l;i<m;i++)(scanf("%dH,&a);p=(Node*)maHoc(sizeofi(Node));p->data=a;p->next=NULL;head->next=p;head=p;}returnhead;voidListPint_L(Node*head){Node*p;inti=0;p=head;while(p!=NULL)計ザprintf("單鏈表第%d個元素是:",i);printf(M%d\nH,p->data);p=p->next;Node*sort(Node*head){Node*p=head,*pl,*p2;if(p=NULL)returnhead;while(p->next!=NULL)(pl=p;p2=p->next;while(p2!=NULL)(if(p1->data>p2->data)pl=p2;p2=p2->next;}if(p!=pl){intt;t=p->data;p->data=p1->data;p1->data=t;)p=p->next;)returnhead;}voidmain(){intlen;s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人終止勞動協(xié)議
- 難治性傷口病因介紹
- 藥物濫用性頭痛病因介紹
- 7.1《反對黨八股(節(jié)選)》【中職專用】高一語文(高教版2023基礎模塊上冊)
- 七年級政治知識讓人生更美麗2省公開課一等獎全國示范課微課
- 2024-2025學年人教版八年級英語上學期期末真題 專題07 閱讀理解(說明文)(安徽專用)
- 2022-2023學年天津四十七中高三(上)期末語文試卷
- 電子裝接實36課件講解
- 2023年旋渦式鼓風機項目融資計劃書
- 2023年公路養(yǎng)護項目融資計劃書
- 國開(內蒙古)2024年《創(chuàng)新創(chuàng)業(yè)教育基礎》形考任務1-3終考任務答案
- 2024入團知識題庫(含答案)
- JCT908-2013 人造石的標準
- 道德講堂制度上墻資料
- 北航飛行力學理論與應用課程大作業(yè)第組
- 部編版語文六年級下冊16 《表里的生物》閱讀專項訓練題
- 真空過濾機濾布褶皺問題
- 渾南房地產場發(fā)展歷程
- 維修電工基礎知識課件.ppt
- 工程結算單(樣本)
- 日常物業(yè)管理服務流程圖
評論
0/150
提交評論