版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
模塊1C語言基礎(chǔ)知識1.選擇題(1)C語言中運(yùn)算對象必須是整型的運(yùn)算符是(B)。A.%= B./ C.= D.<=(2)以下所列的C語言常數(shù)中,錯(cuò)誤的是(B)。A.0xFFB.1.2E0.5C.2LD.-.67(3)以下選項(xiàng)中能作為用戶標(biāo)識符的是(C)。A.voidB.7_9C._3_D.Dr.Tom(4)以下所列的C語言字符常量中,合法的是(B)。A.”B” B.’\n’ C.’中國’ D.d(5)以下選項(xiàng)中正確的定義語句是(D)。A.inta:b;B.int,a,b;C.inta+b=6;D.inta=6,b;(6)以下關(guān)于long、int、short型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(D)。A.均占4個(gè)字節(jié) B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義 D.由C語言編譯系統(tǒng)決定(7)若有定義語句:intx=10;,則表達(dá)式x-=x+x的值為(B)。A.-20B.-10C.0D.10(8)表達(dá)式((a=3*5,a+4),a+5)的值是(A)。A.20 B.29C.60D.90(9)若有定義語句:inta=3,b=4,c=5;,則以下表達(dá)式中值為0的是(D)。A.a&&bB.a<=bC.a||b+c&&b-cD.!((a<b)&&c||1)(10)設(shè)有以下定義:inti;charc;floatf;,以下結(jié)果為整型的表達(dá)式是(B)。i+f B.i*cC.c+fD.i+c+f填空題(1)設(shè)有intn=12;,則表達(dá)式(n++*1/3)的值是。(2)定義以下變量:charc;intx;floaty;doublez;,則表達(dá)式c*x+y-z,所求得的數(shù)據(jù)類型為double。(3)設(shè)變量a和b已正確賦初值,請寫出a/=a+b等價(jià)的賦值表達(dá)式a=a/(a+b)。(4)若有語句doublex=15.5;inty;,當(dāng)執(zhí)行y=(int)(x/5)%2;之后y的值是1。(5)若有語句doubley=3.6;,則執(zhí)行完++y;語句后,(++y)表達(dá)式的值是4.6,變量y的值是4.6。(6)代數(shù)式-2ab+40-4ac改寫成C語言的表達(dá)式是-2*a*b+40-4*a*c。(7)在計(jì)算機(jī)中,字符的比較是對它們的ASCII碼值進(jìn)行比較。(8)已知字母a的ASCII碼為十進(jìn)制數(shù)97,且設(shè)ch為字符型變量,則表達(dá)式ch='a‘+‘8‘-‘3’的值為f。分析下列程序的運(yùn)行結(jié)果(1)#include<stdio.h>voidmain(){inta=21,b=11;printf("%d\n",--a+b,--b+a);}程序的運(yùn)行結(jié)果:):Xdf\Del):Xdf\Del)ug\d.f.exe30Pressanykegtocontinue(2)#include<stdio.h>voidmain(){printf("\nABC\tDE\nFGH\n");printf("\nwhyis31+31equalto%d?\n\n,21+31");}程序的運(yùn)行結(jié)果:c**]):\df\DebucYdf.bkb-ABCDEFGH卜Ji8is31+31equalto2433316?L21+31Fre££anykeytocontinue(3)#include<stdio.h>voidmain(){charch=65;printf("%c\n",ch);}程序的運(yùn)行結(jié)果:g=\df\Debug\df.eze,FPressanykeytocontinue(4)#include<stdio.h>voidmain(){intx=10,y=20,z=30;z=x!=y;printf("%d\n",z);}程序的運(yùn)行結(jié)果:(5)#include<stdio.h>voidmain(){intx=10;printf("%d\n",(x%3==0));}程序的運(yùn)行結(jié)果:(6)#include<stdio.h>voidmain()intk=4,a=3,b=2,c=1;printf("%d\n",(k<a?k:(c<b?c:a)));程序的運(yùn)行結(jié)果:模塊模塊2順序結(jié)構(gòu)程序填空題(1)要得到下列輸出結(jié)果:a,bA,B97,98,65,66請按要求填空,補(bǔ)充以下程序:#include<stdio.h>voidmain(){charc1,c2;c1='a';c2='b';printf("%c,%c\n”,c1,c2);printf("%c,%c\n",c1-32,c2-32);printf("%d,%d,%d,%d\n”,c1,c2,c1-32,c2-32);}(2)要得到下列輸出結(jié)果:a=%2,b=%5#include<stdio.h>voidmain(){inta=2,b=5;printf("a=%%%d,b=%%%d\n”,a,b);}分析下列程序的運(yùn)行結(jié)果(1)#include<stdio.h>voidmain(){}}intn=5,m=5;printf("%d,%d\n",++m,n--);程序的運(yùn)行結(jié)果:ci-D:XdfXDebugXdf.es:e*(2)執(zhí)行下列程序時(shí)輸入:2468101#include<stdio.h>voidmain()intx,y;scanf("%2d%*2d%2d",&x,&y);printf("%ld\n",x+y);程序的運(yùn)行結(jié)果:(3)執(zhí)行下列程序時(shí)輸入:ABCD#include<stdio.h>voidmain()charx,y;x=getchar();y=getchar();putchar(x);putchar('\n');putchar(y);程序的運(yùn)行結(jié)果:(4)#include<stdio.h>#include<math.h>voidmain(){inta=1,b=2,c=2;floatx=10.5,y=4.0,z;z=(a+b)/c+sqrt((int)y)*1.2/c+x;printf("z=%f\n",z);}程序的運(yùn)行結(jié)果::\df\_Debug\df_exe"£=127700000Pressanykey七0cnn七zLniiE編程實(shí)現(xiàn)以下功能(1)從鍵盤輸入一個(gè)整數(shù)x,若x大于0,則顯示“紅”若x等于0,則顯示“黃”若x小于0,則顯示“綠”。#include<stdio.h>voidmain(){intx;printf("請輸入一個(gè)整數(shù):");scanf("%d",&x);printf("%s\n",(x>0?"紅":(x==0?"黃":"綠")));(2)假設(shè)銀行定期存款的年利率rate為2.25%,并已知存款期為n年,存款本金為capital元,試編程計(jì)算n年后可得到本利之和deposit(假設(shè)不計(jì)算復(fù)利)。提示:2.25%編寫程序時(shí)應(yīng)寫為0.0225,本金和年數(shù)未知,從鍵盤輸入。#include<stdio.h>#include<math.h>voidmain(){intn;floatcapital,rate=0.0225,deposit;printf("請輸入存款期和本金:”);scanf("%d%f",&n,&capital);deposit=capital*pow(1+rate,n);printf("deposit=%f\n",deposit);}(3)編寫程序,把700分鐘換算成用小時(shí)和分鐘表示。#include<stdio.h>#include<math.h>voidmain(){intn=700,x,f;x=n/60;f=n%60;printf("700分鐘是%d小時(shí),%d分鐘。\n",x,f);模塊3選擇結(jié)構(gòu)1.分析下列程序的運(yùn)行結(jié)果(1)#include<stdio.h>voidmain(){intx=1,y=5,z=3;if(z=x)printf("%d\n",z);elseprintf("%d\n",y);}程序的運(yùn)行結(jié)果:叫"D:\df\Debug\df_exe*FPressanvkeytocontinue(2)#include<stdio.h>voidmain(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:b++,a++;}printf("a=%d,b=%d\n",a,b);}程序的運(yùn)行結(jié)果:
(3)#include<stdio.h>voidmain()intn=6;if(n++>6)printf("%d\n",n);elseprintf("%d\n",n--);程序的運(yùn)行結(jié)果::\df\Debug\d-f.e豆e”(4)#include<stdio.h>voidmain()inta=1,b=-1,c;if(a*b>0)c=1;elseif(a*b<0)c=2;elsec=3;printf("c=%d\n",c);程序的運(yùn)行結(jié)果:2.編程實(shí)現(xiàn)以下功能(1)從鍵盤輸入一個(gè)整數(shù),如果是偶數(shù),輸出“IsEven";如果是奇數(shù),輸出“IsOdd”。#include<stdio.h>voidmain(){inti;printf("請輸入一個(gè)整數(shù):");scanf("%d",&i);if(i%2==0)printf("%d%s\n",i,"IsEven");elseprintf("%d%s\n",i,"IsOdd");}(2)求解一元二次方程ax2+bx+c=0。如果有實(shí)根,則輸出;否則輸出“無實(shí)根”(a、b、c由鍵盤輸入)。#include<stdio.h>#include<math.h>voidmain(){floata,b,c,d;doublef,x1,x2;printf("請輸入三個(gè)系數(shù):");scanf("%f%f%f",&a,&b,&c);d=b*b-4*a*c;if(d<0)printf("無實(shí)根!\n");else{f=sqrt(d);x1=(-b+f)/(2*a);x2=(-b-f)/(2*a);if(f==0)printf("x1=x2=%lf\n",x1);elseprintf("x1=%lf,x2=%lf\n",x1,x2);}}(3)編寫可以完成加、減、乘、除、求余運(yùn)算的簡易計(jì)算器程序。#include<stdio.h>#include<stdlib.h>#include<conio.h>voidmain(){charch;inta,b,c;floatdiv;printf("\t\t簡易計(jì)算器\n\n");printf("\t1.加法運(yùn)算 2.減法運(yùn)算\n\n");printf("\t3.乘法運(yùn)算 4.除法運(yùn)算\n\n");printf("\t5.求余運(yùn)算 0.減法運(yùn)算\n\n");printf("\t請選擇(0-5):");ch=getche();switch(ch){case'0':exit(0);case'1':printf("\n\n請輸入兩個(gè)整數(shù):");scanf("%d%d",&a,&b);c=a+b;printf("%d+%d=%d\n",a,b,c);break;case'2':printf("\n\n請輸入兩個(gè)整數(shù):");scanf("%d%d",&a,&b);c=a-b;printf("%d-%d=%d\n",a,b,c);break;case'3':printf("\n\n請輸入兩個(gè)整數(shù):");scanf("%d%d",&a,&b);c=a*b;printf("%d*%d=%d\n",a,b,c);break;case'4':printf("\n\n請輸入兩個(gè)整數(shù):");scanf("%d%d",&a,&b);div=(float)a/b;printf("%d/%d=%f\n",a,b,div);break;case'5':printf("\n\n請輸入兩個(gè)整數(shù):");scanf("%d%d",&a,&b);c=a%b;printf("%d%%%d=%d\n",a,b,c);break;default:printf("\n\n\t選擇錯(cuò)誤!\n");}}(4)某商場給顧客購物的折扣率如下:購物金額<200元 不打折200元<=購物金額<500元9折500元<=購物金額<1000元8折購物金額>=1000元 7.5折輸入一個(gè)購物金額,輸出打折率、購物實(shí)際付款金額。要求:分別用if語句和switch語句兩種方法完成編程。方法一:用if語句#include<stdio.h>voidmain(){floatgwje;printf("請輸入購物金額:");scanf("%f",&gwje);if(gwje<200)printf("折扣率為0,實(shí)際應(yīng)付金額為:%f\n",gwje);elseif(gwje>=200&&gwje<500)printf("折扣率為9折,實(shí)際應(yīng)付金額為:%f\n",gwje*0.9);elseif(gwje>=500&&gwje<1000)printf("折扣率為8折,實(shí)際應(yīng)付金額為:%f\n",gwje*0.8);elseprintf("折扣率為7.5折,實(shí)際應(yīng)付金額為:%f\n",gwje*0.75);}方法二:用進(jìn)制switch語句#include<stdio.h>voidmain(){floatgwje,zk,fkje;intn;prints請輸入購物金額:");scanf("%f",&gwje);n=(int)gwje/100;switch(n){case0:zk=1;break;zk=0.9;break;zk=0.8;break;default:zk=0.75;}fkje=gwje*zk;printf("折扣率為:%f,應(yīng)付購物金額為:%f\n",zk,fkje);}(5)某市出租車計(jì)費(fèi),起步價(jià)8元,前3km不計(jì)費(fèi);超過3km但不足20km,按單程1.4
元/km計(jì)費(fèi);從20km開始,一律按單程1.0元/km計(jì)費(fèi);實(shí)際行駛里程不足1km的按1km計(jì)費(fèi)。請為出租車寫一個(gè)程序,當(dāng)輸入實(shí)際里程時(shí),立即輸出乘客應(yīng)付的出租車費(fèi)。#include<stdio.h>voidmain(){intjl;printf("請輸入實(shí)際里程(公里):");scanf("%d",&jl);if(jl<=3)printf(”應(yīng)付車費(fèi)為:%f元\n”,8);elseif(jl>3&&jl<20)printf(”應(yīng)付車費(fèi)為:%f元\n”,8+(jl-3)*1.4);elseprintf(”應(yīng)付車費(fèi)為:%f元也”,8+17*1.4+(>20)*1);模塊4循環(huán)結(jié)構(gòu)程序設(shè)計(jì)分析下列程序的運(yùn)行結(jié)果(1)#include<stdio.h>voidmain(){intx,n=0;floatsum=0,ave;printf("inputscores:");scanf("%d",&x);while(x!=-1){sum+=x;n++;scanf("%d",&x);}ave=sum/n;printf("averagescore=%.2f\n",ave);}程序的運(yùn)行結(jié)果:(2)#include<stdio.h>voidmain(){intn=0,s=0;do{n=n+1;s=s+n;}while(s<200);printf("n=%d,sum=%d\n",n-1,s-n);}程序的運(yùn)行結(jié)果:5"D:\df\Debug\df.eze"L=19,sum=190Tressanykeytocontinu.e(3)#include<stdio.h>voidmain(){floatx,min;inti;scanf("%f",&x);min=x;for(i=1;i<5;i++){scanf("%f",&x);if(x<min)min=x;}printf("min=%f\n",min);}程序的運(yùn)行結(jié)果:(4)#include<stdio.h>voidmain()inti,j;for(i=1;i<=5;i++){for(j=1;j<=20-i;j++)printf("");for(j=1;j<=2*i-1;j++)printf("*");printf("\n");}}程序的運(yùn)行結(jié)果:2.編程實(shí)現(xiàn)以下功能(1)編寫程序,將1?100之間個(gè)位數(shù)是6的數(shù)據(jù)輸出。#include<stdio.h>voidmain(){inti,k=0;for(i=1;i<=100;i++)if(i%10==6){printf("%3d",i);k++;if(k%10==0)printf("\n");}printf("\n");}(2)從鍵盤上連續(xù)輸入字符,統(tǒng)計(jì)其中大寫字母的個(gè)數(shù),直到輸入換行符結(jié)束。#include<stdio.h>voidmain(){intn=0;charc;printf("請輸入一串字符,以回車結(jié)束:");while((c=getchar())!='\n'){if((c>='A')&&(c<='Z'))n++;}printf("大寫字母有%4個(gè)。\n",n);}(3)輸入5位同學(xué)3門課程成績,分別計(jì)算并輸出每位同學(xué)3門課程成績的平均分。#include<stdio.h>voidmain(){intn;floatcj1,cj2,cj3,pjf=0;for(n=1;n<=5;n++){printf("請輸入第%4位學(xué)生的三門課成績:”,n);scanf("%f%f%f",&cj1,&cj2,&cj3);pjf=(cj1+cj2+cj3)/3;printf("第%d位學(xué)生的平均成績是%f分。\n\n",n,pjf);(4)100匹馬馱100擔(dān)貨,大馬一匹馱3擔(dān),中馬一匹馱2擔(dān),小馬兩匹馱1擔(dān),試編程計(jì)算大、中、小馬的數(shù)目。#include<stdio.h>voidmain(){inti,j;for(i=0;i<34;i++)/*大馬*/for(j=0;j<(100-i*3)/2+1;j++)/*中馬*/if((100-i-j)%2==0&&3*i+2*j+(100-i-j)/2==100)printf("大馬%4匹,中馬%d匹,小馬%d匹\n\n”,i,j,100-i-j);}(5)編寫程序,判斷從鍵盤輸入的自然數(shù)是否為素?cái)?shù)(質(zhì)數(shù))。說明:1)所謂素?cái)?shù)就是只能被1和它自身整除的大于1的整數(shù)。2)要判斷n是否為素?cái)?shù),就要用2、3、…、n-1分別去除n,如果都不能被整除,則n就是素?cái)?shù),正常退出循環(huán);如果其中某個(gè)數(shù)被n整除,則n不是素?cái)?shù),需要退出循環(huán)。#include<stdio.h>voidmain(){inti,num;printf("請輸入一個(gè)自然數(shù):");scanf("%d",&num);if(num<=1)printf("%d為非素?cái)?shù)",num);else{for(i=2;i<num;i++)if(num%i==0)break;if(i==num)printf("%d為素?cái)?shù)\n",num);elseprintf("%d為非素?cái)?shù)\n",num);}}模塊模塊5數(shù)組1.分析下列程序的運(yùn)行結(jié)果(1)#include<stdio.h>voidmain(){inta[]={1,2,3,4},i,s=0,j=1;for(i=3;i>=0;i--){s=s+a[i]*j;j=j*10;}printf(“s=%d\n”,s);}程序的運(yùn)行結(jié)果:c:i"D:\df\Debug:\.df.exe"P=1234Pressanyleytocontinue(2)#include<stdio.h>voidmain(){inti,j,s=0;inta[3][3]={1,2,3,4,5,6,7,8,9};s=0;for(i=0;i<3;i++)for(j=0;j<3;j++)s=s+a[i][i];printf("s=%d\n",s);}程序的運(yùn)行結(jié)果:(3)#include<stdio.h>voidmain(){charch[7]={"65ab21"};inti,s=0;for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)s=10*s+ch[i]-'0';printf("%d\n",s);}程序的運(yùn)行結(jié)果:cm :\d.f\Debug\d£.exePressanykeytocontinue(4)運(yùn)行時(shí)輸入“挑110!”#include<stdio.h>voidmain(){charss[10]="1,2,3,4,5";gets(ss);strcat(ss,"6789");printf("%s\n",ss);}程序的運(yùn)行結(jié)果:(5(5)#include<stdio.h>#include<string.h>voidmain(){chararr[2][4];strcpy(arr[0],"you");strcpy(arr[1],"me");arr[0][3]='&';printf("%s\n",arr[0]);}編程實(shí)現(xiàn)以下功能(1)輸入一個(gè)數(shù),插入到某升序排列的一維數(shù)組中,使插入后的數(shù)組仍然升序。#include<stdio.h>voidmain(){inta[11]={1,4,6,9,13,16,19,28,40,100};intnum,i,j;printf("數(shù)組a:\n");for(i=0;i<10;i++)printf("%5d",a[i]);printf("\n");printf("插入一個(gè)整數(shù):");scanf("%d",&num);if(num>a[9])a[10]=num;/*num比a[10]=num;/*num比a[9]大貝Unum插入到最后*/elsefor(i=0;i<10;i++)/*如果num比a[9]小則從第一個(gè)數(shù)開始比較*/if(a[i]>num)/*只至Unum比a[i]小則將num插入至"a[i]*/{for(j=9;j>=i;j--)/*要把num插入至1」a[i]就必須把a(bǔ)[i]到a[9]的所有數(shù)依次后移一位*/a[j+1]=a[j];a[i]=num;break;}}printf("插入后的數(shù)組a:\n");for(i=0;i<11;i++)printf("%5d",a[i]);printf("\n");}(2)從鍵盤上輸入一行由小寫英文組成的字符串,用置換法(置換規(guī)律:按字母表逆序)對其加密。#include<stdio.h>voidmain(){charlist[27]="zyxwvutsrqponmlkjihgfedcba";charstr[80];inti,j;printf("請輸入一小寫字母串(長度小于80):”);scanf("%s",&str);i=0;while(str[i]!='\0')j=str[i]-97;str[i]=list[j];i++;}printf("加密成為:%s\n",str);}(3)輸入一行簡單英文句子,統(tǒng)計(jì)其中單詞的個(gè)數(shù)。#include<stdio.h>voidmain(){chars[80],c;inti,n=0,word=0;printf("請輸入一句英語:");gets(s);for(i=0;(c=s[i])!='\0';i++)if(c=='')word=0;elseif(word==0){word=1;n++;}printf("這個(gè)句子里包含%d個(gè)單詞。\n",n);}/*單詞的數(shù)目可以由空格出現(xiàn)的次數(shù)決定,連續(xù)若干個(gè)空格作為出現(xiàn)一次空格;一行開頭的空格不統(tǒng)計(jì)在內(nèi).如果測出某一個(gè)字符為非空格,它的前面的字符是空格,則表示新的單詞開始了,此時(shí)n++.若當(dāng)前字符為非空格而其前面的字符也是非空格,則意味著仍然是原來那個(gè)單詞的繼續(xù),n不加1.若word=0,則表示前一個(gè)字符是空格;.若word=1,則表示前一個(gè)字符不是空格;*/(4)編寫程序,輸入10個(gè)整數(shù)放入數(shù)組a中,求數(shù)組中最小值min及其下標(biāo)k并輸出。#include<stdio.h>voidmain()inta[10],i,min,k;printf("請輸入10個(gè)整數(shù):");for(i=0;i<10;i++)scanf("%d",&a[i]);min=a[0];k=0;for(i=1;i<10;i++){if(a[i]<min){min=a[i];k=i;}}for(i=0;i<10;i++)printf("%d",a[i]);printf("也最小值是%4,其下標(biāo)是%d\n",min,k);}(5)求一個(gè)3*3矩陣對角線元素之和。#include<stdio.h>voidmain(){inta[3][3],i,j,s=0;printf("請輸入一個(gè)3x3的矩陣:");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=1;i<10;i++){for(j=0;j<3;j++){if(i==j)s=s+a[i][j];}}for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%4d",a[i][j]);printf("\n");}printf("也對角線之和是:%d\n",s);
(6)編程打印出圖5-2所示的楊輝三角形。(10行)規(guī)律:除兩側(cè)元素均為1之外,其余每個(gè)位置上的元素的值為其左上角元素與其正上方元素之和。1方元素之和。11 11 21 31 41 51 613 16 4 110 10 5 115 20 15 61圖5-2楊輝三角形#include<stdio.h>#defineN10voidmain(){inti,j,n;inta[N][N];a[0][0]=1;a[1][0]=1;a[1][1]=1;for(i=2;i<N;i++){for(j=0;j<=i;j++){if(j==0)a[i][j]=1;elseif(i==j)a[i][j]=1;elsea[i][j]=a[i-1][j-1]+a[i-1][j];}}for(i=0;i<N;i++){for(j=0;j<=i;j++)printf("%d\t",a[i][j]);printf("\n");}}模塊6函數(shù)程序填空題(請按要求填空,補(bǔ)充以下程序)(1)下列程序功能是統(tǒng)計(jì)從鍵盤上輸入的字符中大寫字母的個(gè)數(shù),輸入時(shí)用“*”作為輸入結(jié)束標(biāo)志。#include<stdio.h>#include<ctype.h>voidmain(){charc1;intcount=0;scanf("%c",&c1);while((如)!=’*’){if(isupper(c1))count++;scanf("%c",&c1);}printf(“%d\n”,count);}(2)下列程序的功能是求10?1000之間的所有素?cái)?shù)。#include<stdio.h>voidmain(){inti;for(i=10;i<=1000);i++)if(isprime(j_))printf(“%d,”,i);printf(“\n”);}#include<math.h>isprime(intn){inti;for(i=2;i<=sqrt(n);i++)if(n%i==0)return(0);return(1);}分析下列程序的運(yùn)行結(jié)果(1)#include<stdio.h>intd=1;f(intp){intd=1;d+=p++;}voidmain(){inta=5;f(a);d+=a++;printf(“%d\n”,d);}程序的運(yùn)行結(jié)果:(2)#include<stdio.h>voidmain()intk=4,m=1,p;p=fun(k,m);printf("%d,",p);p=fun(k,m);printf(“%d”,p);}fun(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}程序的運(yùn)行結(jié)果:*D:\df\Debug\df-exe*7Pt*essanykeytocontinue(3)#include<stdio.h>voidmain(){inta=2,i;for(i=0;i<3;i++);printf(“%d”,func(a));}func(inta){intb=0;staticc=3;b++;c++;return(a+b+c);}程序的運(yùn)行結(jié)果:g*D:\dfXDebugtdf-eze*7Pt*essanyke號tocontinLie編程實(shí)現(xiàn)以下功能(1)編寫一個(gè)函數(shù),統(tǒng)計(jì)一個(gè)字符串中所含字母、數(shù)字、空格和其他字符的個(gè)數(shù)。#include<string.h>#include<stdio.h>intletter,digit,space,other;voidcount(charstr[]);main(){charstr[100];letter=digit=space=other=0;printf("請輸入一個(gè)字符串:\n");scanf("%「\n]",str);〃請注意這里的正規(guī)寫法!意思即匹配任意非換行符'\n'的字符count(str);printf("所輸入字符串中有字母%4個(gè),數(shù)字%d個(gè),空格%d個(gè),其他字符%d個(gè)。\n",letter,digit,space,other);}voidcount(charstr[]){inti;for(i=0;i<strlen(str);i++)if(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z')letter++;elseif(str[i]>='0'&&str[i]<='9')digit++;elseif(str[i]==32)space++;elseother++;}(2)某班(假設(shè)有10人)期中考試共有5門成績,分別用函數(shù)求:①每個(gè)學(xué)生的平均分;②每門課程的平均分;③按每個(gè)學(xué)生的平均分排序。#include<stdio.h>intm=0,n=0;/*定義全局變量m,n*/floataverage(floatscore[][6],inti)/*求每個(gè)學(xué)生平均分*/{intj;floatave=0,sum=0;;for(j=1;j<6;++j)sum+=score[i][j];ave=sum/5;returnave;}floatperave(floatscore口[6],intj)/*求每門課程平均分*/{inti;floataveper=0,sums=0;for(i=1;i<11;++i)sums+=score[i][j];aveper=sums/10;returnaveper;}maxper(floatscore口[6])/*求最大分?jǐn)?shù)所在學(xué)生和課程*/{inti,j;floatmax;max=score[1][1];for(i=1;i<11;++i)for(j=1;j<6;++j)if(score[i][j]>max){max=score[i][j];m=i;n=j;}return0;}voidmain(){floatscore[11][6];inti,j;for(i=1;i<11;++i){printf("#%d:",i);for(j=1;j<6;j++)scanf("%f,%f,%f,%f,%f",&score[i][j]);printf("\n");}for(i=1;i<11;++i){printf("#%dstudent:",i);printf("%f\n",average(score,i));}printf("\n");for(i=1;i<6;++i){printf("#%dlesson:",i);printf("%f\n",perave(score,i));}printf("\n");maxper(score);printf("Max:Line:%dRow:%d\n",m,n);system("pause");}(3)用遞歸方法調(diào)用函數(shù)fun(intn),計(jì)算1+2+3+4+…+n的和。#include<stdio.h>intfun(intn){intsum=0;if(n==1)sum=n;elsesum=n+fun(n-1);returnsum;}voidmain(){intn;printf("請輸入一個(gè)整數(shù):");scanf("%d",&n);printf("%d\n",fun(n));模塊7靈活運(yùn)用指針實(shí)訓(xùn)要求:所有實(shí)訓(xùn)任務(wù)均要求用指針方法進(jìn)行處理。輸入3個(gè)整數(shù),按由小到大輸出。#include<stdio.h>voidsort(int*b,intm){intt,i,j;for(j=0;j<m-1;j++){for(i=0;i<m-j;i++){if(*(b+i)>*(b+i+1)){t=*(b+i);*(b+i)=*(b+i+1);*(b+i+1)=t;}}}for(i=0;i<m;i++){printf("%6d",*(b+i));}printf("\n");}voidmain(){inta[6],i;printf("請輸入6個(gè)整數(shù):");for(i=0;i<6;i++){scanf("%d",&a[i]);}sort(a,6);}輸入3個(gè)字符串,按由小到大輸出。#include<stdio.h>#include<string.h>voidmain(){charstr1[50],str2[50],str3[50];char*p[3],*temp;inti,j;printf("inputastring:");scanf("%s",str1);printf("inputastring:");scanf("%s",str2);printf("inputastring:");scanf("%s",str3);p[0]=str1;p[1]=str2;p[2]=str3;for(i=0;i<2;i++)for(j=i+1;j<3;j++){if(strcmp(p[i],p[j])>0){temp=p[i];p[i]=p[j];p[j]=temp;}printf("%s,%s,%s\n",p[0],p[1],p[2]);}寫一函數(shù),求字符串的長度。在main()函數(shù)中輸入字符串,并輸出字符串長度。#include<stdio.h>intlongs(char*s){inti=0,n=0;for(i=0;*(s+i)!='\0';i++)n++;return(n);}voidmain(){char*s;charc[100];intnum;s=c;printf("請輸入一個(gè)字符串:");gets(c);num=longs(s);//傳遞一個(gè)指針而不是*sprintf("字符串長度為:%d\n",num);}寫一函數(shù),將3X3的整型矩陣轉(zhuǎn)置。#include<stdio.h>voidTranspose(int(*matrix)[3]){inttemp;inti,j;for(i=1;i<3;i++)/*轉(zhuǎn)置*/for(j=0;j<i;j++){temp=*(*(matrix+j)+i);*(*(matrix+j)+i)=*(*(matrix+i)+j);*(*(matrix+i)+j)=temp;}}}voidmain(){inti,j,a[3][3]={{1,2,3},{4,5,6},{7,8,9}};printf("原始矩陣為:\n");for(i=0;i<3;i++){for(j=0;j<3;j++){printf("%d",a[i][j]);}printf("\n");}Transpose(a);printf("轉(zhuǎn)置后的矩陣為:\n");for(i=0;i<3;i++){for(j=0;j<3;j++){printf("%d",a[i][j]);}printf("\n");}}將一個(gè)5X5矩陣中的最大數(shù)放置在中心,4個(gè)角存放最小元素(順序?yàn)閺淖蟮接?,從上到下依次存?,寫一函數(shù)實(shí)現(xiàn)。在main()函數(shù)中調(diào)用。#include<stdio.h>voidmain(){intCJ(int*);/*函數(shù)聲明*/inta[5][5],i,j,*p;p=&a[0][0];for(i=0;i<5;i++)/*構(gòu)造數(shù)組方陣*/for(j=0;j<5;j++){scanf("%d",&a[i][j]);}CJ(p);/*函數(shù)調(diào)用*/for(i=0;i<5;i++)/*輸出調(diào)整后的方陣*/{for(j=0;j<5;j++)printf("%6d",a[i][j]);printf("\n");}}intCJ(int*q)/*函數(shù)定義*/{inti,j,*qmax,*qmin,t;qmax=q;qmin=q;for(i=0;i<5;i++)/*找到最大值和最小值*/for(j=0;j<5;j++){if(*qmax<*(q+5*i+j))qmax=q+5*i+j;if(*qmin>*(q+5*i+j))qmin=q+5*i+j;}t=*(q+12);/*把最大值和中間的值交換*/*(q+12)=*qmax;*qmax=t;t=*q;/*把最小值和左上角元素交換*/*q=*qmin;*qmin=t;/*以下是找第二小的元素*/qmin=(q+1);for(i=0;i<5;i++)for(j=0;j<5;j++)if((q+5*i+j)!=q&&*qmin>*(q+5*i+j))qmin=q+5*i+j;t=*(q+4);/*把第二小元素和右上角元素互換*/*(q+4)=*qmin;*qmin=t;/*再找第三小元素*/qmin=(q+1);for(i=0;i<5;i++)for(j=0;j<5;j++)if((q+5*i+j)!=q&&(q+5*i+j)!=(q+4)&&*qmin>*(q+5*i+j))qmin=(q+5*i+j);printf("第三小元素為%3d\n",*qmin);/*驗(yàn)證找沒找對*/t=*(q+20);/*把第三小元素和左下角元素交換*/*(q+20)=*qmin;*qmin=t;/*最后找第四小元素*/qmin=(q+1);for(i=0;i<5;i++)for(j=0;j<5;j++)if((q+5*i+j)!=q&&(q+5*i+j)!=(q+4)&&(q+5*i+j)!=(q+20)&&*qmin>*(q+5*i+j))qmin=(q+5*i+j);printf("第四小元素為%3d\n",*qmin);/*驗(yàn)證第四個(gè)元素是否找對*/t=*(q+24);/*把第四小元素和右下角元素互換*/*(q+24)=*qmin;*qmin=t;return0;}有一個(gè)班4個(gè)學(xué)生,5門功課。分別求第一門功課的平均成績;找出兩門以上不及格的學(xué)生,并輸出其學(xué)號;找出平均成績在90分以上的全部學(xué)生,并輸出其學(xué)號。分別編寫三個(gè)函數(shù)實(shí)現(xiàn),并在main()函數(shù)中調(diào)用。#include<stdio.h>voidmain(){floatave(floatmarks[4][5],intno);voidworse(floatmarks[4][5]);voidbetter(floatmarks[4][5]);floatmarks[4][5],*p;inti;printf("請分別輸入四個(gè)學(xué)生的5門課成績:");for(p=&marks[0][0],i=0;i<20;i++,p++)scanf("%f",p);printf("第一門課的平均成績是:%.2f.\n",ave(marks,1));worse(marks);better(marks);}floatave(floatmarks[4][5],intno){inti;floatave_mark=0,*p;for(p=marks[no-1],i=0;i<4;i++,p+=5)ave_mark+=*p;ave_mark/=4;returnave_mark;}voidworse(floatmarks[4][5]){inti=0,j=0,failed_num;float*p;for(p=marks[0];i<4;i++){for(j=0,failed_num=0;j<5&&failed_num<2;j++,p++)if(*p<60)failed_num+=1;if(failed_num==2)printf("no.%d學(xué)生有兩門課不及格.\n",i+1);}}voidbetter(floatmarks[4][5]){floatave(floatmarks[4][5],intno);inti,j;float*p;for(i=0;i<4;i++){if(ave(marks,i+1)>=90)printf("no.%dstudent'saveragemarkis%.2f.\n",i+1,ave(marks,i+1));for(p=marks[i],j=0;j<5;j++,p++){if(*p<85)break;if(j==4)printf("no.%d學(xué)生的平均分超過85分.\n",i+1);}}}模塊8自定義數(shù)據(jù)類型寫一個(gè)days函數(shù),來計(jì)算輸入的日期是本年度第幾天,年月日由主函數(shù)傳遞給days函數(shù),并將得到結(jié)果傳回主函數(shù)輸出。#include<stdio.h>structd{intyear;intmonth;intday;intsum;}a;intdays(){inttian[12]={31,28,31,30,31,30,31,31,30,31,30,31};inti;a.sum=0;if(a.year%4==0&&a.year%100!=0||a.year%400==0)tian[1]=29;for(i=0;i<a.month-1;i++){a.sum+=tian[i];}a.sum+=a.day;printf("%d年%4月%d曰",a.year,a.month,a.day);returna.sum;}voidmain(){printf("輸入年月日,形式為XXXX-XX-XX\n");scanf("%d-%d-%d",&a.year,&a.month,&a.day);printf("是這一年的第%d天\n",days());}編寫一個(gè)input函數(shù)用來輸入3個(gè)學(xué)生記錄信息,學(xué)生記錄包括學(xué)號number,姓名name,成績score[3],并在主函數(shù)輸出學(xué)生信息。#include<stdio.h>#defineSTUDENT3typedefstructtagSTU{charname[11];charstunum[11];floatscore1,score2,score3;floattotal,aver;}STU;voidinput(STU*stu,intnum)//stu為學(xué)生數(shù)組的首地址,num為數(shù)組長度{inti;printf("請輸入%d個(gè)學(xué)生的基本情況:\n"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 托管班培訓(xùn)制度及流程
- 跆拳道培訓(xùn)班財(cái)務(wù)制度
- 秩序部培訓(xùn)制度
- 培訓(xùn)學(xué)校教室崗位制度
- 培訓(xùn)機(jī)構(gòu)系統(tǒng)管理制度
- 企業(yè)內(nèi)部培訓(xùn)獎勵(lì)制度
- 培訓(xùn)班監(jiān)控室管理制度
- 培訓(xùn)團(tuán)隊(duì)公約制度
- 社區(qū)醫(yī)院醫(yī)保培訓(xùn)制度
- 中冶培訓(xùn)封閉管理制度
- 2026湖北隨州農(nóng)商銀行科技研發(fā)中心第二批人員招聘9人筆試模擬試題及答案解析
- 2025年-輔導(dǎo)員素質(zhì)能力大賽筆試題庫及答案
- 2025年風(fēng)電運(yùn)維成本降低路徑報(bào)告
- 2025年老年娛樂行業(yè)藝術(shù)教育普及報(bào)告
- 2025年抗菌藥物合理應(yīng)用培訓(xùn)考核試題附答案
- 2025年度臨床醫(yī)生個(gè)人述職報(bào)告
- 2026年煙花爆竹安全生產(chǎn)法律法規(guī)知識試題含答案
- 2026年《必背60題》 計(jì)算機(jī)科學(xué)與技術(shù)26屆考研復(fù)試高頻面試題包含詳細(xì)解答
- 2026年無錫商業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)技能筆試備考試題帶答案解析
- 2026年初二物理寒假作業(yè)(1.31-3.1)
- 2025秋人教版七年級上冊音樂期末測試卷(三套含答案)
評論
0/150
提交評論