C語言練習試題答案解析_第1頁
C語言練習試題答案解析_第2頁
C語言練習試題答案解析_第3頁
C語言練習試題答案解析_第4頁
C語言練習試題答案解析_第5頁
已閱讀5頁,還剩102頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

107/1071.已知三角形的三邊長為a,b,c,計算三角形面積的公式為:area=sqrt(s(s-a)(s-b)(s-c)),其中s=(a+b+c)/2。試編程從鍵盤輸入a,b,c的值(假設(shè)a,b,c的值可以保證其構(gòu)成一個三角形),計算并輸出三角形的面積。**輸入格式要求:"%f,%f,%f"提示信息:"Inputa,b,c:"**輸出格式要求:"area=%.2f\n"程序運行示例如下:Inputa,b,c:3,4,5area=6.00答案:#include<stdio.h>#include<math.h>intmain(void){ floata,b,c,s,area; printf("Inputa,b,c:"); scanf("%f,%f,%f",&a,&b,&c); s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%.2f\n",area); return0;}12.從鍵盤任意輸入一個4位整數(shù),編程計算并輸出它的逆序數(shù).例如:輸入1234,分離出千位1、百位2、十位3和個位4,然后計算4*1000+3*100+2*10+1=4321,并輸出4321。**要求輸入提示信息為:無**要求輸入格式為:"%d"**要求輸出格式為:"%d"程序運行示例如下:1234此處為輸入4321此處為輸出答案:#include<stdio.h>intmain(void){ inta,b,c,d,e; scanf("%d",&a); b=a/1000; c=a%1000/100; d=a%100/10; e=a%10; a=e*1000+d*100+c*10+b; printf("%d",a); return0;}23.有關(guān)輸入輸出問題。輸入為:12a↙b↙運行結(jié)果為:1,2,a,b,123.300000,65535請改正程序中的錯誤,使它能得出正確的結(jié)果。#include<stdio.h>main(){intb;unsignedshorta=65535;shortk=a;charc,d;intf,g;b=(1234.0-1)/10;scanf("%c",&c);scanf("%c",&d);scanf("%d",&f);scanf("%d",&g);printf("%c,%c,%c,%c,%f,%d",c,d,f,g,b,k);}答案:#include<stdio.h>main(){doubleb;inta=65535;charc,d;intf,g;b=(1234.0-1)/10;scanf("%c",&c);scanf("%c",&d);scanf("%c\t",&f);scanf("%c",&g);printf("%c,%c,%c,%c,%f,%d",c,d,f,g,b,a);}34.輸入一行字符,統(tǒng)計其中的英文字符、數(shù)字字符、空格字符,以與其他字符的個數(shù)。請找出以下程序的錯誤,并改正之。#include<stdio.h>#include<string.h>

#defineARR_SIZE=80;

main(){

charstr[ARR_SIZE];

int

len,i;

int

letter=0,digit=0,space=0,other=0;

printf("請輸入一個字符串:");

gets(str);

len=strlen(str);

for(i=0;i<len;i++)

{

if(a=<str[i]<=z||A=<str[i]<=Z)

{

letter++;

}

elseif(0=<str[i]<=9)

{

digit++;

}

elseif(str[i]='')

{

space++;

}

else

other++;

}

printf("英文字符數(shù):%d\n",letter);

printf("數(shù)字字符數(shù):%d\n",digit);

printf("空格數(shù):%d\n",space);

printf("其他字符數(shù):%d\n",other);}答案:#include<stdio.h>#include<string.h>

#defineARR_SIZE

80

main(){

charstr[ARR_SIZE];

int

len,i;

int

letter=0,digit=0,space=0,other=0;

printf("請輸入一個字符串:");

gets(str);

len=strlen(str);

for(i=0;i<len;i++)

{

if('a'<=str[i]&&str[i]<='z'||'A'<=str[i]&&str[i]<='Z')

{

letter++;

}

elseif('0'<=str[i]&&str[i]<='9')

{

digit++;

}

elseif(str[i]=='')

{

space++;

}

else

other++;

}

printf("英文字符數(shù):%d\n",letter);

printf("數(shù)字字符數(shù):%d\n",digit);

printf("空格數(shù):%d\n",space);

printf("其他字符數(shù):%d\n",other);}45.對輸入的一個數(shù)判斷是否是素數(shù)。所謂素數(shù)是指這個數(shù)只能被1和自身整除。要求在主函數(shù)輸入一個數(shù),調(diào)用函數(shù)Fun()判斷該數(shù)是否是素數(shù)。打印信息在主函數(shù)中進行。例如:從鍵盤輸入5,5是素數(shù)則打印如下信息:"5isaprimenumber"。又如:從鍵盤輸入4,4不是素數(shù)則打印如下信息:"4isnotaprimenumber"。負數(shù)、0和1均不是素數(shù)。對輸入的數(shù)據(jù)要考慮數(shù)據(jù)的合法性,不滿足條件的數(shù)要重新輸入直到滿足條件為止。不能使用全局變量,不按給定的函數(shù)原型編寫程序不給分。Fun()函數(shù)原型為:intFun(intm);**輸入數(shù)據(jù)提示信息:"Pleaseinputanumber:\n"注:該提示信息請放在循環(huán)體外**輸入數(shù)據(jù)格式為:"%d"**輸出格式要求:若是素數(shù)輸出數(shù)據(jù)格式為:"%disaprimenumber\n"若不是素數(shù)輸出數(shù)據(jù)格式為:"%disnotaprimenumber\n"不完整答案:#include<stdio.h>intFun(inta){

inti;

if(a>1)

{

for(i=2;i<a;i++)

{

if(a%i==0)

return0;

else

continue;

}

return1;

}

else

return0;

}main(){

intb,c;

printf("Pleaseinputanumber:\n");

scanf("%d",&b);

c=Fun(b);

if(0==c)

printf("%disnotaprimenumber\n",b);

else

printf("%disaprimenumber\n",b);

}參考答案:#include"stdio.h"intFun(intm);intmain(){

intm,flag;

printf("Pleaseinputanumber:\n");

do

{

scanf("%d",&m);//1

}

while(m<2);//e1

flag=Fun(m);//3

if(flag)//1

printf("%disaprimenumber\n",m);

else

printf("%disnotaprimenumber\n",m);//1

return0;}

intFun(intm)//2{

inti,flag=1;//1

for(i=2;i<m;i++)//1

{

if(m%i==0)//1

{

flag=0;//1

break;

}

}

returnflag;//2}

-56.求1898現(xiàn)將不超過2000的所有素數(shù)從小到大排成第一行,第二行上的每個數(shù)都等于它“右肩”上的素數(shù)與“左肩”上的素數(shù)之差。請編程求出:第二行數(shù)中是否存在這樣的若干個連續(xù)的整數(shù),它們的和恰好是1898?假如存在的話,又有幾種這樣的情況?**輸入格式要求:提示信息:"Therearefollwingprimesinfirstrow:\n"**輸出格式要求:"(%d).%3d,,%d\n"程序運行示例如下:Therearefollwingprimesinfirstrow:(1).101,,1999(2).89,,1987(3).53,,1951(4).3,,1901答案:#include<stdio.h>#defineN330inta[N];intmain(){intc=0,b=0,d=1;inti=0,j=0,k=0;for(i=3;i<=2000;i++) {for(j=2;j<i;j++) {if(i%j==0)break;elsecontinue; }if(j==i) { a[k]=i; k++; }elsecontinue; } printf("Therearefollwingprimesinfirstrow:\n");for(c=329;c>=0;c--)for(b=c+1;c<b;b++)if(b<330) {if((a[b]-a[c])==1898) { printf("(%d).%3d,,%d\n",d,a[c],a[b]); d++; }elsecontinue; }elsebreak;}7.從鍵盤任意輸入一個整數(shù)m,若m不是素數(shù),則對m進行質(zhì)因數(shù)分解,并將m表示為質(zhì)因數(shù)從小到大順序排列的乘積形式輸出,否則輸出"Itisaprimenumber"。例如,用戶輸入90時,程序輸出90=2*3*3*5;用戶輸入17時,程序輸出"Itisaprimenumber"。輸入提示信息:"Inputm:"輸入格式:"%d"輸出格式:是素數(shù)時輸出"Itisaprimenumber\n"否則輸出用"%d=","%d*"運行示例1:Inputm:90↙90=2*3*3*5運行示例2:Inputm:13↙Itisaprimenumber答案:#include<stdio.h>#include<math.h>intIsPrime(intx);voidOutputPrimeFactor(intx);intmain(){intm;printf("Inputm:");scanf("%d",&m);if(IsPrime(m)){printf("Itisaprimenumber\n");}else{printf("%d=",m);OutputPrimeFactor(m);}return0;}intIsPrime(intx){inti,flag=1;intsquareRoot=sqrt(x);if(x<=1){flag=0;}for(i=2;i<=squareRoot&&flag;i++){if(x%i==0){flag=0;}}returnflag;}voidOutputPrimeFactor(intx){inti;for(i=2;i<x;i++){if(x%i==0){printf("%d*",i);OutputPrimeFactor(x/i);return;}}printf("%d",x);}78.將任一整數(shù)轉(zhuǎn)換為二進制形式。**輸入格式要求:"%d"提示信息:"Inputnumber:"**輸出格式要求:"numberofdecimalform:%d\n""it\'sbinaryform:"程序運行示例如下:Inputnumber:876numberofdecimalform:876it'sbinaryform:1100答案:#include<stdio.h>#include<stdlib.h>intmain(){inta;charb[32]; printf("Inputnumber:"); scanf("%d",&a); printf("numberofdecimalform:%d\n",a); printf("it\'sbinaryform:"); printf("%s\n",itoa(a,b,2));}89.求自然數(shù)n最近的素數(shù)k,k>n。***輸入提示信息**:"Inputn:"***輸入數(shù)據(jù)格式**:"%d"***輸出數(shù)據(jù)格式**:"%d"示例輸入:257輸出:Pleaseinputn:263答案:#include<stdio.h>intmain(){intn,i=1,k;printf("Pleaseinputn:");scanf("%d",&n);for(k=n+1;i;k++){for(i=2;i<k;i++)if(k%i==0)break;elsecontinue;if(i==k){printf("%d",k);i=0;break;}}}910.如果一個正整數(shù)m的所有小于m的不同因子(包括1)加起來正好等于m本身,那么就被稱它為完全數(shù)。它是指這樣的一些特殊的自然數(shù),它所有的真因子(即除了自身以外的約數(shù))的和,恰好等于它本身。注意:1沒有真因子,所以不是完全數(shù)。例如,6就是一個完全數(shù),是因為6=1+2+3。請編寫一個判斷完全數(shù)的函數(shù)IsPerfect(),然后判斷從鍵盤輸入的整數(shù)是否是完全數(shù)。要求:按如下原型編寫判斷完全數(shù)的函數(shù),若函數(shù)返回0,則代表不是完全數(shù),若返回1,則代表是完全數(shù)。intIsPerfect(intx);**要求輸入提示信息為:"Inputm:\n"**要求輸入格式為:"%d"**要求輸出格式為"%disaperfectnumber\n""%disnotaperfectnumber\n"注:不能使用指針、結(jié)構(gòu)體、共用體、文件、goto、枚舉類型進行編程,主函數(shù)不能使用intmain和return0。答案:#include<stdio.h>intIsPerfect(intx);intmain(){intm;printf("Inputm:\n");scanf("%d",&m);if(IsPerfect(m))printf("%disaperfectnumber\n",m);elseprintf("%disnotaperfectnumber\n",m);}intIsPerfect(intx){inti=1,b=0;for(i=1;i<x;i++)if(x%i==0){b=b+i;continue;}elsecontinue;if(b==x)return1;elsereturn0;}1011.用函數(shù)編程計算兩整數(shù)的最大值,在主函數(shù)中調(diào)用該函數(shù)計算并輸出從鍵盤任意輸入的兩整數(shù)的最大值。**輸入格式要求:"%d,%d"提示信息:"Inputa,b:"**輸出格式要求:"max=%d\n"程序運行示例如下:Inputa,b:5,8max=8答案:#include<stdio.h>intmax(inta,intb){if(a>=b)returna;elsereturnb;}main(){inta=0,b=0;printf("Inputa,b:");scanf("%d,%d",&a,&b);printf("max=%d\n",max(a,b));}1112.利用求階乘函數(shù)Fact(),編程計算并輸出1!+2!+…+n!的值。**輸入格式要求:"%u"提示信息:"Inputn(n>0):"**輸出格式要求:"sum=%lu\n"答案:#include<stdio.h>intsum_s(inti);main(){unsignedintn=0;unsignedlongb=0;printf("Inputn(n>0):");scanf("%u",&n);for(b;n;n--){b=b+sum_s(n);}printf("sum=%lu\n",b);}intsum_s(inti){inta;for(a=1;i;i--){if(i>1)a=a*i;elsea=a*1;}returna;}1213.編程輸出如下菜單界面(具體的輸出則以下面提示中要求的輸出格式為準):=======大學信息管理系統(tǒng)=======辦公室管理財務(wù)管理教務(wù)管理圖書管理科研管理設(shè)備管理人事管理后勤管理退出系統(tǒng)請您在上述功能中選擇(0——8):提示:輸出如下格式"=======大學信息管理系統(tǒng)=======\n""\n""1.辦公室管理5.財務(wù)管理\n""2.教務(wù)管理6.圖書管理\n""3.科研管理7.設(shè)備管理\n""4.人事管理8.后勤管理\n""0.退出系統(tǒng)\n""\n""請您在上述功能中選擇(0——8):\n"答案:#include<stdio.h>main(){printf("=======大學信息管理系統(tǒng)=======\n");printf("\n");printf("1.辦公室管理5.財務(wù)管理\n");printf("2.教務(wù)管理6.圖書管理\n");printf("3.科研管理7.設(shè)備管理\n");printf("4.人事管理8.后勤管理\n");printf("0.退出系統(tǒng)\n");printf("\n");printf("請您在上述功能中選擇(0——8):\n");}1314.利用靜態(tài)變量計算n的階乘。**輸入格式要求:"%d"提示信息:"Inputn:"**輸出格式要求:"%d!=%ld\n"程序運行示例如下:Inputn:101!=12!=23!=64!=245!=1206!=7207!=50408!=403209!=36288010!=3628800答案:#include<stdio.h>intsum_s(inti);main(){unsignedintn=0,b=1;printf("Inputn:");scanf("%d",&n);for(b=1;b<=n;b++){printf("%d!=%ld\n",b,sum_s(b));}}intsum_s(inti){inta;for(a=1;i;i--){if(i>1)a=a*i;elsea=a*1;}returna;}1415.寫一個程序從鍵盤輸入兩個整數(shù),然后顯示輸出第1個數(shù)除以第2個數(shù)的結(jié)果。例如,輸入123和12,程序的輸出結(jié)果格式如下:10Remainder=312)123提示:使用求余運算符獲得余數(shù),使用整數(shù)除法獲得商。**輸入格式要求:"%d%d"提示信息:"請輸入兩個整數(shù):"**輸出格式要求:"%13dRemainder=%d\n""\n""%5d)%5d"答案:#include<stdio.h>main(){inta,b,c,d;printf("請輸入兩個整數(shù):");scanf("%d%d",&a,&b);c=a/b;d=a%b;printf("%13dRemainder=%d\n",c,d);printf("\n");printf("%5d)%5d",b,a);}1516.寫一個程序,將接收的攝氏溫度轉(zhuǎn)換為對應(yīng)的華氏溫度。程序應(yīng)顯示如下的提示信息:Pleaseinputcels:然后輸入一個十進制數(shù)并回車,然后程序以合適的消息形式輸出轉(zhuǎn)換后的華氏溫度。程序使用如下的公式完成轉(zhuǎn)換:攝氏溫度=5.0*(華氏溫度–32.0)/9.0**輸入格式要求:"%lf"提示信息:"Pleaseinputcels:"**輸出格式要求:"Thefahris:%.2f"答案:#include<stdio.h>main(){doublea,b;printf("Pleaseinputcels:");scanf("%lf",&a);b=(9.0*a)/5.0+32.0;printf("Thefahris:%.2f",b);}1617.寫一個程序,將接收的華氏溫度轉(zhuǎn)換為對應(yīng)的攝氏溫度。程序應(yīng)顯示如下的提示信息:Pleaseinputfahr:然后輸入一個十進制數(shù)并回車,然后程序以合適的消息形式輸出轉(zhuǎn)換后的華氏溫度。程序使用如下的公式完成轉(zhuǎn)換:攝氏溫度=5.0*(華氏溫度–32.0)/9.0**輸入格式要求:"%lf"提示信息:"Pleaseinputfahr:"**輸出格式要求:"Thecelsis:%.2f"答案:#include<stdio.h>main(){doublea,b;printf("Pleaseinputfahr:");scanf("%lf",&a);b=5.0*(a-32.0)/9.0;printf("Thecelsis:%.2f",b);}1718.編寫一個程序,輸入一個3位整數(shù),要求逆序輸出對應(yīng)的數(shù)。例如:輸入123,則輸出321。**輸入格式要求:"%d"提示信息:"Pleaseenterapositiveinteger:"**輸出格式要求:"%d-->%d\n"程序運行示例如下:Pleaseenterapositiveinteger:345345-->543答案:#include<stdio.h>intmain(void){inta,b,c,d,e;printf("Pleaseenterapositiveinteger:");scanf("%d",&a);b=a/100;d=a%100/10;e=a%10;c=e*100+d*10+b;printf("%d-->%d",a,c);return0;}1819.計算兩個數(shù)的平方和從鍵盤讀入兩個實數(shù),編程計算并輸出它們的平方和,要求使用數(shù)學函數(shù)pow(x,y)計算平方值,輸出結(jié)果保留2位小數(shù)。提示:使用數(shù)學函數(shù)需要在程序中加入編譯預處理命令#include<math.h>以下為程序的輸出示例:Pleaseinputxandy:1.2,3.4↙result=13.00輸入格式:"%f,%f"輸出格式:輸入提示信息:"Pleaseinputxandy:\n"輸出格式:"result=%.2f\n"答案:#include<stdio.h>#include<math.h>main(){floatx,y,z;printf("Pleaseinputxandy:\n");scanf("%f,%f",&x,&y);z=pow(x,2)+pow(y,2);printf("result=%.2f\n",z);}————————————————————————————————1920.寫一個程序從鍵盤輸入兩個整數(shù),然后顯示第1個整數(shù)占第二個整數(shù)的百分比,保留到小數(shù)點后1位。例如輸入5和40,程序輸出結(jié)果如下:5is12.5percentof40**輸入格式要求:"%d%d"提示信息:"請輸入兩個整數(shù):"**輸出格式要求:"%dis%.1fpercentof%d"答案:#include<stdio.h>main(){inta,b;floatc;printf("請輸入兩個整數(shù):");scanf("%d%d",&a,&b);c=(float)a/(float)b;c=c*100;printf("%dis%.1fpercentof%d",a,c,b);}2021.求三角形面積。輸入三角形的三個邊長,計算三角形的面積。設(shè)三角形的三個邊長分別為a、b、c,為簡單起見,我們認為輸入的三個邊長數(shù)據(jù)是正確的,可以組成一個三角形。**輸入格式要求:"%f,%f,%f"提示信息:"Enter3floats:"**輸出格式要求:"area=%.2f\n"程序運行示例如下:Enter3floats:2,2,3area=1.98答案:#include<stdio.h>#include<math.h>intmain(void){floata,b,c,s,area;printf("Enter3floats:");scanf("%f,%f,%f",&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%.2f\n",area);return0;}2122.寫一個程序計算長為11.5厘米,寬為2.5厘米,高為10厘米的盒子的體積和表面積。程序說明:采用直接賦值,不用輸入。**輸出格式要求"area=%.2f,volume=%.2f"答案:#include<stdio.h>main(){floata,b;a=(11.5*2.5+11.5*10+10*2.5)*2;b=11.5*2.5*10;printf("area=%.2f,volume=%.2f",a,b);}23.用遞歸方法計算整數(shù)n的階乘n!。**輸入格式要求:"%d"提示信息:"Inputn:""n<0,dataerror!\n"**輸出格式要求:"%d!=%ld\n"程序運行示例如下:Inputn:55!=120答案;#include<stdio.h>intf(intn){if(n==1||n==0)return1;elsereturnn*f(n-1);}main(){intn;o:printf("Inputn:");scanf("%d",&n);while(n<0){printf("n<0,dataerror!\n");gotoo;}printf("%d!=%ld\n",n,f(n));}2324.用遞歸方法編程計算Fibonacci數(shù)列的前N項。其中fib(0)=0,fib(1)=1,fib(n)=fib(n-1)+fib(n-2)。**輸入格式要求:"%d"提示信息:"Inputn:"**輸出格式要求:"Fib(%d)=%d\n"程序運行示例如下:Inputn:10Fib(1)=1Fib(2)=1Fib(3)=2Fib(4)=3Fib(5)=5Fib(6)=8Fib(7)=13Fib(8)=21Fib(9)=34Fib(10)=55答案:#include<stdio.h>intFib(intn){if(n==0)return0;elseif(n==1)return1;elsereturnFib(n-1)+Fib(n-2);}main(){intn,a;printf("Inputn:");scanf("%d",&n);for(a=1;a<=n;a++){printf("Fib(%d)=%d\n",a,Fib(a));}}2425.利用求階乘函數(shù)Fact(),編程計算并輸出從1到n之間所有數(shù)的階乘值。**輸入格式要求:"%u"提示信息:"Inputn(n>0):"**輸出格式要求:"%d!=%lu\n"程序運行示例如下:Inputn(n>0):101!=12!=23!=64!=245!=1206!=7207!=50408!=403209!=36288010!=3628800答案:#include<stdio.h>intsum_s(unsignedinti){unsignedinta;for(a=1;i;i--){if(i>1)a=a*i;elsea=a*1;}returna;}intFact(unsignedintn){unsignedinti;for(i=1;i<=n;i++){printf("%d!=%lu\n",i,sum_s(i));}}main(){unsignedinti;printf("Inputn(n>0):");scanf("%u",&i);Fact(i);}2526.愛因斯坦曾出過這樣一道數(shù)學題:有一條長階梯,若每步跨2階,最后剩下1階;若每步跨3階,最后剩下2階;若每步跨5階,最后剩下4階;若每步跨6階,則最后剩下5階;只有每步跨7階,最后才正好1階不剩。參考例6.15程序,編寫計算這條階梯共有多少階的程序如下所示,其中存在一些語法和邏輯錯誤,請找出并改正之,然后上機運行程序并寫出程序的運行結(jié)果。#include<stdio.h>main(){intx=1,find=0;while(!find);{if(x%2=1&&x%3=2&&x%5=4&&x%6=5&&x%7=0){printf("x=%d\n",x);find=1;x++;}}}答案:#include<stdio.h>main(){intx=1,find=0;while(!find){if(x%2==1&&x%3==2&&x%5==4&&x%6==5&&x%7==0){printf("x=%d\n",x);find=1;}x++;}}2627.從鍵盤任意輸入一個正整數(shù),編程判斷它的奇偶性。要求輸入變量定義為int類型且由用戶從鍵盤輸入。程序的運行示例1:Inputanintegernumber:4↙4isanevennumber程序的運行示例2:Inputanintegernumber:3↙3isanoddnumber輸入格式:"%d"輸出格式:輸入信息提示:"Inputanintegernumber:\n"偶數(shù)輸出格式:"%disanevennumber\n"奇數(shù)輸出格式:"%disanoddnumber\n"答案:#include<stdio.h>main(){ intn,m; printf("Inputanintegernumber:\n"); scanf("%d",&n); m=n%2; if(m) printf("%disanoddnumber\n",n); else printf("%disanevennumber\n",n);}2728.用動態(tài)數(shù)組編程輸入任意m個班學生(每班n個學生)的某門課的成績,計算最高分,并指出具有該最高分成績的學生是第幾個班的第幾個學生。其中,m和n的值由用戶從鍵盤任意輸入(不限定m和n的上限值)。輸入提示信息:"Inputarraysizem,n:""Input%d*%darray:\n"輸入格式:"%d,%d"輸出提示信息和格式:"maxScore=%d,class=%d,number=%d\n"答案:#include<stdio.h>#include<stdlib.h>voidInputScore(int*p,intm,intn);intFindMax(int*p,intm,intn,int*pRow,int*pCol);intmain(){int*pScore,m,n,maxScore,row,col;printf("Inputarraysizem,n:");scanf("%d,%d",&m,&n);pScore=(int*)calloc(m*n,sizeof(int));/*申請動態(tài)存*/if(pScore==NULL){printf("Noenoughmemory!\n");exit(0);}InputScore(pScore,m,n);maxScore=FindMax(pScore,m,n,&row,&col);printf("maxScore=%d,class=%d,number=%d\n",maxScore,row+1,col+1);free(pScore);/*釋放動態(tài)存*/return0;}/*函數(shù)功能:輸入m行n列二維數(shù)組的值*/voidInputScore(int*p,intm,intn){inti,j;printf("Input%d*%darray:\n",m,n);for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%d",&p[i*n+j]);}}}/*函數(shù)功能:計算任意m行n列二維數(shù)組中元素的最大值,并指出其所在行列下標值*/intFindMax(int*p,intm,intn,int*pRow,int*pCol){inti,j,max=p[0];*pRow=0;*pCol=0;for(i=0;i<m;i++){for(j=0;j<n;j++){if(p[i*n+j]>max){max=p[i*n+j];*pRow=i;/*記錄行下標*/*pCol=j;/*記錄列下標*/}}}returnmax;}2829.下面程序的功能是交換變量a和b中的值。找出其中的錯誤并改正之。#include<stdio.h>main(){inta,b,*p,*q,*t;p=&a;q=&b;printf("請輸入變量a和b的值:");scanf("%d%d",&p,&q);*t=*p;*p=*q;*q=*t;printf("交換后a和b的值:a=%db=%d\n",a,b);}答案:#include<stdio.h>

main(){

int

a,b,*p,*q,*t;

p=&a;

q=&b;

printf("請輸入變量a和b的值:");

scanf("%d%d",&a,&b);

*t=*p;

*p=*q;

*q=*t;

printf("交換后a和b的值:a=%db=%d\n",*p,*q);}2930.編程打印200~300之間所有素數(shù)。要求判斷一個數(shù)是否是素數(shù)用函數(shù)實現(xiàn),打印結(jié)果請在主函數(shù)實現(xiàn)。判斷一個數(shù)是否是素數(shù)函數(shù)原型為:intfun(intm);參數(shù)說明:參數(shù):m是要進行判斷的數(shù);返回值:若此數(shù)是素數(shù),則返回值為1;否則返回值為0**輸入提示信息:無**輸入數(shù)據(jù)格式要求:無**輸出數(shù)據(jù)格式要求:"%d\n"注:不允許使用goto語句答案:#include<stdio.h>intfun(intm);main(){inta;for(a=200;a<=300;a++){if(fum(a))printf("%d\n",a);elsecontinue;}}intfum(intm){inti;for(i=2;i<m;i++){if(m%i==0)return0;elsecontinue;}return1;}3031.輸入某班學生某門課的成績(最多不超過40人),當輸入為負值時,表示輸入結(jié)束,用函數(shù)編程統(tǒng)計成績高于平均分的學生人數(shù)。要求按如下原型編寫統(tǒng)計成績在全班平均分與平均分之上的學生人數(shù)intGetAboveAver(intscore[],intn);**輸入要求:"%d"**輸出要求:"Totalstudentsare%d\n""Averagescoreis%d\n""Studentsofaboveaverageis%d\n"答案:#include<stdio.h>inta[40]={0},i=0;intGetAboveAver(intscore[],intn);intmain(){ for(i;i<=40;i++) { intb=0; scanf("%d",&b); if(b>=0) a[i]=b; else break; } printf("Totalstudentsare%d\n",i); GetAboveAver(a,i);}intGetAboveAver(intscore[],intn){ intsum=0,c; intd,e=0; for(c=0;c<i;c++) { sum=sum+score[c]; } d=sum/i; printf("Averagescoreis%d\n",d); for(c=0;c<i;c++) { if(score[c]>d) e++; else continue; } printf("Studentsofaboveaverageis%d\n",e); return0;}3031./*編程實現(xiàn)簡單的計算器功能,要求用戶按如下格式從鍵盤輸入算式:操作數(shù)1運算符op操作數(shù)2計算并輸出表達式的值,其中算術(shù)運算符包括:加(+)、減(-)、乘(*)、除(/)、^(次冪)。要求使其能進行浮點數(shù)的算術(shù)運算,同時允許使用字符*、x與X作為乘號,并且允許輸入的算術(shù)表達式中的操作數(shù)和運算符之間可以加入任意多個空格符。**輸入格式要求:"%f%c%f"提示信息:"Pleaseentertheexpression:\n"**輸出格式要求:"%f+%f=%f\n""%f-%f=%f\n""%f*%f=%f\n""%f/%f=%f\n""Divisionbyzero!\n""%f^%f=%f\n""Invalidoperator!\n"程序運行示例1如下:Pleaseentertheexpression:2.0+4.02.000000+4.000000=6.000000程序運行示例2如下:Pleaseentertheexpression:2.0-4.02.000000-4.000000=-2.000000程序運行示例3如下:Pleaseentertheexpression:2.0*4.02.000000*4.000000=8.000000程序運行示例4如下:Pleaseentertheexpression:2.0x4.02.000000*4.000000=8.000000程序運行示例5如下:Pleaseentertheexpression:2.0X4.02.000000*4.000000=8.000000程序運行示例6如下:Pleaseentertheexpression:2.0/4.02.000000/4.000000=0.5000000程序運行示例7如下:Pleaseentertheexpression:2.0/0Divisionbyzero!程序運行示例8如下:Pleaseentertheexpression:2.0^5.02.000000^5.000000=32.000000程序運行示例9如下:Pleaseentertheexpression:2.0\4.0Invalidoperator!*/#include<stdio.h>#include<math.h>intmain(){floata,b;charc; printf("Pleaseentertheexpression:\n"); scanf("%f%c%f",&a,&c,&b);if(c=='+') printf("%f+%f=%f\n",a,b,a+b);elseif(c=='-') printf("%f-%f=%f\n",a,b,a-b);elseif(c=='/') {if(b!=0) printf("%f/%f=%f\n",a,b,a/b);else printf("Divisionbyzero!"); }elseif(c=='*'||c=='x'||c=='X') printf("%f*%f=%f\n",a,b,a*b);elseif(c=='^') printf("%f^%f=%f\n",a,b,pow(a,b));else printf("Invalidoperator!\n");}3132.下面程序的功能是計算兩個正整數(shù)的最小公倍數(shù),請改正其中的錯誤。#include<stdio.h>intMinCommonMultiple(inta,intb)

main(){

inta,b,x;

printf("Inputa,b:");

scanf("%d,%d",a,b);

x=MinCommonMultiple(inta,intb);

printf("MinCommonMultiple=%d\n",x);}intMinCommonMultiple(inta,intb);{

inti;

for(i=1;i<a*b;i++)

{

if(i%a==0||i%b==0)

returni;

}}答案:#include<stdio.h>intMinCommonMultiple(inta,intb);intmain(){inta,b,x; printf("Inputa,b:"); scanf("%d,%d",&a,&b); x=MinCommonMultiple(a,b); printf("MinCommonMultiple=%d\n",x);}intMinCommonMultiple(inta,intb){inti;for(i=1;i<=a*b;i++) {if(i%a==0&&i%b==0)returni; }}3233.請編寫函數(shù)fuc(),函數(shù)的功能是:根據(jù)以下公式求出p的值,結(jié)果由函數(shù)值返回。m,n是兩個正整數(shù),且m>n.P=m!/(n!*(m-n)!)**輸入格式要求:"%d%d"提示信息:"請輸入m,n的值(m>n):\n"**輸出格式要求:"n項之和為:%lf\n"程序運行示例如下:請輸入m,n的值(m>n):53n項之和為:10.000000答案:#include<stdio.h>intfuc(intm,intn);intsum_s(inti);intmain(){

intm,n;

printf("請輸入m,n的值(m>n):\n");

scanf("%d%d",&m,&n);

printf("n項之和為:%lf\n",(double)fuc(m,n));}intfuc(intm,intn){

intp;

p=sum_s(m)/(sum_s(n)*sum_s(m-n));

returnp;

}intsum_s(inti){

ints_=1,a;

for(a=1;a<=i;a++)

{

s_=s_*a;

}

returns_;}3334.采用窮舉法,按如下函數(shù)原型/*函數(shù)功能:計算a和b的最小公倍數(shù),當a或者b為非正整數(shù)時返回-1*/intLcm(inta,intb);用函數(shù)編程實現(xiàn)計算兩個正整數(shù)的最小公倍數(shù)(LeastCommonMultiple,LCM)的函數(shù),在主函數(shù)中調(diào)用該函數(shù)計算并輸出從鍵盤任意輸入的兩整數(shù)的最小公倍數(shù)。**輸入格式要求:"%d,%d"提示信息:"Inputa,b:"**輸出格式要求:"LeastCommonMultipleof%dand%dis%d\n""Inputerror!\n"程序運行示例如下:Inputa,b:16,24LeastCommonMultipleof16and24is48注:不允許使用goto語句答案:#include<stdio.h>intLcm(inta,intb);intmain(){

inta,b;

printf("Inputa,b:");

scanf("%d,%d",&a,&b);

if(Lcm(a,b)>0)

printf("LeastCommonMultipleof%dand%dis%d\n",a,b,Lcm(a,b));

else

printf("Inputerror!\n");}intLcm(inta,intb){

inti;

if(a>0&&b>0)

{

for(i=1;i<a*b;i++)

{

if((i%a==0)&&(i%b==0))

returni;

}

}

else

return-1;}3435.輸入某班學生某門課的成績(最多不超過40人),當輸入為負值時,表示輸入結(jié)束,用函數(shù)編程統(tǒng)計成績不低于平均分的學生人數(shù)。要求:(1)按如下函數(shù)原型進行編程:intGetAboveAver(intscore[],intn);(2)在主函數(shù)中:輸入學生成績,然后調(diào)用函數(shù)GetAboveAver計算成績不低于平均分的學生人數(shù),最后輸出該人數(shù)。要求:(1)學生成績和平均分均定義為int類型(2)**無輸入提示信息**輸入格式為:"%d"**輸出格式為:"Studentsofaboveaverageis%d\n"答案:#include<stdio.h>inta[40]={0},i=0;intGetAboveAver(intscore[],intn);intmain(){

for(i;i<=40;i++)

{

intb=0;

scanf("%d",&b);

if(b>=0)

a[i]=b;

else

break;

}

GetAboveAver(a,i);}intGetAboveAver(intscore[],intn){

intsum=0,c;

intd,e=0;

for(c=0;c<i;c++)

{

sum=sum+score[c];

}

d=sum/i;

for(c=0;c<i;c++)

{

if(score[c]>=d)

e++;

else

continue;

}

printf("Studentsofaboveaverageis%d\n",e);

return0;}3536.從鍵盤任意輸入10個整數(shù)存入一個數(shù)組中,然后任意輸入一個整數(shù)x,采用順序查找法,在數(shù)組中查找該數(shù),如果找到,則函數(shù)返回該數(shù)在數(shù)組中的下標位置,并在主函數(shù)中打印該值;如果沒有找到,則返回-1,并在主函數(shù)中打印“Notfound!”。要求按如下函數(shù)原型編程實現(xiàn)查找功能。intSearch(inta[],intn,intx);在主函數(shù)中調(diào)用函數(shù)Search順序查找x,然后在主函數(shù)中打印查找結(jié)果。要求必須按照題目要求和用函數(shù)編程,否則不給分。**要求輸入10個整數(shù)的提示信息格式為:"Input10numbers:\n"(每輸入一個數(shù),鍵一次回車);**要求輸入整數(shù)x的提示信息格式為:"Inputx:\n"**要求輸出格式為:找到時的打印格式為"Subscriptofxis%d\n"沒找到時的打印格式為"Notfound!\n"答案:#include<stdio.h>intSearch(inta[],intn,intx);intb[10]={0};intmain(){

intx,n;

printf("Input10numbers:\n");

for(x=0;x<10;x++)

{

scanf("%d",&n);

b[x]=n;

}

printf("Inputx:\n");

scanf("%d",&x);

Search(b,n,x);

if(Search(b,n,x)>0)

printf("Subscriptofxis%d\n",Search(b,n,x));

else

printf("Notfound!\n");}intSearch(inta[],intn,intx){

for(n=0;n<10;n++)

{

if(a[n]==x)

returnn;

else

continue;

}

return-1;}3637.利用一個字符數(shù)組作函數(shù)參數(shù),實現(xiàn)字符串(最大長度為80個字符)的逆序存放。要求如下:(1)在子函數(shù)Inverse中實現(xiàn)字符串的逆序存放。函數(shù)原型為:voidInverse(charstr[]);(2)在主函數(shù)中從鍵盤輸入字符串(使用gets函數(shù))然后,調(diào)用Inverse函數(shù),最后,輸出逆序后的字符串。(3)**輸入提示信息:"Inputastring:\n"**輸出提示信息:"Inversedresults:\n"**輸出格式:"%s\n"注:不能使用指針、結(jié)構(gòu)體、共用體、文件、goto、枚舉類型進行編程,主函數(shù)不能使用intmain和return0。答案:#include<stdio.h>charstr_1[81];voidInverse(charstr[]);intmain(){ printf("Inputastring:\n"); gets(str_1); Inverse(str_1);}voidInverse(charstr[]){charb;inta,c;for(a=0;a<81;a++) {if(str[a]=='\0')break;elsecontinue; }for(c=0;c<(a)/2.0;c++) { b=str[c];str[c]=str[(a-1)-c];str[(a-1)-c]=b; } printf("Inversedresults:\n"); printf("%s\n",str);}3738.從鍵盤任意輸入一個字符串,計算其實際字符個數(shù)并打印輸出,即不使用字符串處理函數(shù)strlen()編程實現(xiàn)strlen()的功能。**輸入格式要求:"%s"提示信息:"Pleaseenterastring:"**輸出格式要求:"Thelengthofthestringis:%u\n"程序的運行示例如下:Pleaseenterastring:HelloChinaThelengthofthestringis:11答案:#include<stdio.h>main(){

inta;

charstr[100];

printf("Pleaseenterastring:");

gets(str);

for(a=0;a<100;a++)

{

if(str[a]=='\0')

break;

else

continue;

}

printf("Thelengthofthestringis:%u\n",a);}3839.輸入一行字符,統(tǒng)計其中的英文字符、數(shù)字字符、空格字符,以與其他字符的個數(shù)。請找出以下程序的錯誤,并改正之。#include<stdio.h>#include<string.h>#defineARR_SIZE=80;main(){charstr[ARR_SIZE];intlen,i;intletter=0,digit=0,space=0,other=0;printf("請輸入一個字符串:");gets(str);len=strlen(str);for(i=0;i<len;i++){if(a=<str[i]<=z||A=<str[i]<=Z){letter++;}elseif(0=<str[i]<=9){digit++;}elseif(str[i]=''){space++;}elseother++;}printf("英文字符數(shù):%d\n",letter);printf("數(shù)字字符數(shù):%d\n",digit);printf("空格數(shù):%d\n",space);printf("其他字符數(shù):%d\n",other);}答案:#include<stdio.h>#include<string.h>

#defineARR_SIZE80

main(){

charstr[ARR_SIZE];

int

len,i;

int

letter=0,digit=0,space=0,other=0;

printf("請輸入一個字符串:");

gets(str);

len=strlen(str);

for(i=0;i<=len;i++)

{

if('a'<=str[i]&&str[i]<='z'||'A'<=str[i]&&str[i]<='Z')

{

letter++;

}

elseif('0'<=st

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論