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

下載本文檔

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

文檔簡(jiǎn)介

..1.已知三角形的三邊長(zhǎng)為a,b,c,計(jì)算三角形面積的公式為:area=sqrt<s<s-a><s-b><s-c>>,其中s=<a+b+c>/2。試編程從鍵盤輸入a,b,c的值〔假設(shè)a,b,c的值可以保證其構(gòu)成一個(gè)三角形,計(jì)算并輸出三角形的面積。**輸入格式要求:"%f,%f,%f"提示信息:"Inputa,b,c:"**輸出格式要求:"area=%.2f\n"程序運(yù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.從鍵盤任意輸入一個(gè)4位整數(shù),編程計(jì)算并輸出它的逆序數(shù).例如:輸入1234,分離出千位1、百位2、十位3和個(gè)位4,然后計(jì)算4*1000+3*100+2*10+1=4321,并輸出4321。**要求輸入提示信息為:無(wú)**要求輸入格式為:"%d"**要求輸出格式為:"%d"程序運(yùn)行示例如下: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)輸入輸出問(wèn)題。輸入為:12a↙b↙運(yùn)行結(jié)果為:1,2,a,b,123.300000,65535請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(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)計(jì)其中的英文字符、數(shù)字字符、空格字符,以及其他字符的個(gè)數(shù)。請(qǐng)找出以下程序的錯(cuò)誤,并改正之。#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<"請(qǐng)輸入一個(gè)字符串:">;

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

80main<>{

charstr[ARR_SIZE];

intlen,i;

intletter=0,digit=0,space=0,other=0;

printf<"請(qǐng)輸入一個(gè)字符串:">;

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.對(duì)輸入的一個(gè)數(shù)判斷是否是素?cái)?shù)。所謂素?cái)?shù)是指這個(gè)數(shù)只能被1和自身整除。要求在主函數(shù)輸入一個(gè)數(shù),調(diào)用函數(shù)Fun<>判斷該數(shù)是否是素?cái)?shù)。打印信息在主函數(shù)中進(jìn)行。例如:從鍵盤輸入5,5是素?cái)?shù)則打印如下信息:"5isaprimenumber"。又如:從鍵盤輸入4,4不是素?cái)?shù)則打印如下信息:"4isnotaprimenumber"。負(fù)數(shù)、0和1均不是素?cái)?shù)。對(duì)輸入的數(shù)據(jù)要考慮數(shù)據(jù)的合法性,不滿足條件的數(shù)要重新輸入直到滿足條件為止。不能使用全局變量,不按給定的函數(shù)原型編寫程序不給分。Fun<>函數(shù)原型為:intFun<intm>;**輸入數(shù)據(jù)提示信息:"Pleaseinputanumber:\n"注:該提示信息請(qǐng)放在循環(huán)體外**輸入數(shù)據(jù)格式為:"%d"**輸出格式要求:若是素?cái)?shù)輸出數(shù)據(jù)格式為:"%disaprimenumber\n"若不是素?cái)?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)將不超過(guò)2000的所有素?cái)?shù)從小到大排成第一行,第二行上的每個(gè)數(shù)都等于它"右肩"上的素?cái)?shù)與"左肩"上的素?cái)?shù)之差。請(qǐng)編程求出:第二行數(shù)中是否存在這樣的若干個(gè)連續(xù)的整數(shù),它們的和恰好是1898?假如存在的話,又有幾種這樣的情況?**輸入格式要求:提示信息:"Therearefollwingprimesinfirstrow:\n"**輸出格式要求:"<%d>.%3d,......,%d\n"程序運(yù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.從鍵盤任意輸入一個(gè)整數(shù)m,若m不是素?cái)?shù),則對(duì)m進(jìn)行質(zhì)因數(shù)分解,并將m表示為質(zhì)因數(shù)從小到大順序排列的乘積形式輸出,否則輸出"Itisaprimenumber"。例如,用戶輸入90時(shí),程序輸出90=2*3*3*5;用戶輸入17時(shí),程序輸出"Itisaprimenumber"。輸入提示信息:"Inputm:"輸入格式:"%d"輸出格式:是素?cái)?shù)時(shí)輸出"Itisaprimenumber\n"否則輸出用"%d=","%d*"運(yùn)行示例1:Inputm:90↙90=2*3*3*5運(yùn)行示例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)換為二進(jìn)制形式。**輸入格式要求:"%d"提示信息:"Inputnumber:"**輸出格式要求:"numberofdecimalform:%d\n""it\'sbinaryform:"程序運(yùn)行示例如下:Inputnumber:876numberofdecimalform:876it'sbinaryform:00000000000000000000001101101100答案:#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最近的素?cái)?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.如果一個(gè)正整數(shù)m的所有小于m的不同因子〔包括1加起來(lái)正好等于m本身,那么就被稱它為完全數(shù)。它是指這樣的一些特殊的自然數(shù),它所有的真因子〔即除了自身以外的約數(shù)的和,恰好等于它本身。注意:1沒(méi)有真因子,所以不是完全數(shù)。例如,6就是一個(gè)完全數(shù),是因?yàn)?=1+2+3。請(qǐng)編寫一個(gè)判斷完全數(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、枚舉類型進(jìn)行編程,主函數(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ù)編程計(jì)算兩整數(shù)的最大值,在主函數(shù)中調(diào)用該函數(shù)計(jì)算并輸出從鍵盤任意輸入的兩整數(shù)的最大值。**輸入格式要求:"%d,%d"提示信息:"Inputa,b:"**輸出格式要求:"max=%d\n"程序運(yù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<>,編程計(jì)算并輸出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.編程輸出如下菜單界面〔具體的輸出則以下面提示中要求的輸出格式為準(zhǔn):=======大學(xué)信息管理系統(tǒng)=======------------------------------辦公室管理財(cái)務(wù)管理教務(wù)管理圖書(shū)管理科研管理設(shè)備管理人事管理后勤管理退出系統(tǒng)------------------------------請(qǐng)您在上述功能中選擇〔0——8:提示:輸出如下格式"=======大學(xué)信息管理系統(tǒng)=======\n""------------------------------\n""1.辦公室管理5.財(cái)務(wù)管理\n""2.教務(wù)管理6.圖書(shū)管理\n""3.科研管理7.設(shè)備管理\n""4.人事管理8.后勤管理\n""0.退出系統(tǒng)\n""------------------------------\n""請(qǐng)您在上述功能中選擇〔0——8:\n"答案:#include<stdio.h>main<>{printf<"=======大學(xué)信息管理系統(tǒng)=======\n">;printf<"------------------------------\n">;printf<"1.辦公室管理5.財(cái)務(wù)管理\n">;printf<"2.教務(wù)管理6.圖書(shū)管理\n">;printf<"3.科研管理7.設(shè)備管理\n">;printf<"4.人事管理8.后勤管理\n">;printf<"0.退出系統(tǒng)\n">;printf<"------------------------------\n">;printf<"請(qǐng)您在上述功能中選擇〔0——8:\n">;}-------------------------------------1314.利用靜態(tài)變量計(jì)算n的階乘。**輸入格式要求:"%d"提示信息:"Inputn:"**輸出格式要求:"%d!=%ld\n"程序運(yù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.寫一個(gè)程序從鍵盤輸入兩個(gè)整數(shù),然后顯示輸出第1個(gè)數(shù)除以第2個(gè)數(shù)的結(jié)果。例如,輸入123和12,程序的輸出結(jié)果格式如下:10Remainder=3------12>123提示:使用求余運(yùn)算符獲得余數(shù),使用整數(shù)除法獲得商。**輸入格式要求:"%d%d"提示信息:"請(qǐng)輸入兩個(gè)整數(shù):"**輸出格式要求:"%13dRemainder=%d\n""------\n""%5d>%5d"答案:#include<stdio.h>main<>{inta,b,c,d;printf<"請(qǐng)輸入兩個(gè)整數(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.寫一個(gè)程序,將接收的攝氏溫度轉(zhuǎn)換為對(duì)應(yīng)的華氏溫度。程序應(yīng)顯示如下的提示信息:Pleaseinputcels:然后輸入一個(gè)十進(jìn)制數(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.寫一個(gè)程序,將接收的華氏溫度轉(zhuǎn)換為對(duì)應(yīng)的攝氏溫度。程序應(yīng)顯示如下的提示信息:Pleaseinputfahr:然后輸入一個(gè)十進(jìn)制數(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.編寫一個(gè)程序,輸入一個(gè)3位整數(shù),要求逆序輸出對(duì)應(yīng)的數(shù)。例如:輸入123,則輸出321。**輸入格式要求:"%d"提示信息:"Pleaseenterapositiveinteger:"**輸出格式要求:"%d-->%d\n"程序運(yù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.計(jì)算兩個(gè)數(shù)的平方和從鍵盤讀入兩個(gè)實(shí)數(shù),編程計(jì)算并輸出它們的平方和,要求使用數(shù)學(xué)函數(shù)pow<x,y>計(jì)算平方值,輸出結(jié)果保留2位小數(shù)。提示:使用數(shù)學(xué)函數(shù)需要在程序中加入編譯預(yù)處理命令#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.寫一個(gè)程序從鍵盤輸入兩個(gè)整數(shù),然后顯示第1個(gè)整數(shù)占第二個(gè)整數(shù)的百分比,保留到小數(shù)點(diǎn)后1位。例如輸入5和40,程序輸出結(jié)果如下:5is12.5percentof40**輸入格式要求:"%d%d"提示信息:"請(qǐng)輸入兩個(gè)整數(shù):"**輸出格式要求:"%dis%.1fpercentof%d"答案:#include<stdio.h>main<>{inta,b;floatc;printf<"請(qǐng)輸入兩個(gè)整數(shù):">;scanf<"%d%d",&a,&b>;c=<float>a/<float>b;c=c*100;printf<"%dis%.1fpercentof%d",a,c,b>;}----------------------------------2021.求三角形面積。輸入三角形的三個(gè)邊長(zhǎng),計(jì)算三角形的面積。設(shè)三角形的三個(gè)邊長(zhǎng)分別為a、b、c,為簡(jiǎn)單起見(jiàn),我們認(rèn)為輸入的三個(gè)邊長(zhǎng)數(shù)據(jù)是正確的,可以組成一個(gè)三角形。**輸入格式要求:"%f,%f,%f"提示信息:"Enter3floats:"**輸出格式要求:"area=%.2f\n"程序運(yù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.寫一個(gè)程序計(jì)算長(zhǎng)為11.5厘米,寬為2.5厘米,高為10厘米的盒子的體積和表面積。程序說(shuō)明:采用直接賦值,不用輸入。**輸出格式要求"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.用遞歸方法計(jì)算整數(shù)n的階乘n!。**輸入格式要求:"%d"提示信息:"Inputn:""n<0,dataerror!\n"**輸出格式要求:"%d!=%ld\n"程序運(yù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.用遞歸方法編程計(jì)算Fibonacci數(shù)列的前N項(xiàng)。其中fib<0>=0,fib<1>=1,fib<n>=fib<n-1>+fib<n-2>。**輸入格式要求:"%d"提示信息:"Inputn:"**輸出格式要求:"Fib<%d>=%d\n"程序運(yù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<>,編程計(jì)算并輸出從1到n之間所有數(shù)的階乘值。**輸入格式要求:"%u"提示信息:"Inputn<n>0>:"**輸出格式要求:"%d!=%lu\n"程序運(yù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.愛(ài)因斯坦曾出過(guò)這樣一道數(shù)學(xué)題:有一條長(zhǎng)階梯,若每步跨2階,最后剩下1階;若每步跨3階,最后剩下2階;若每步跨5階,最后剩下4階;若每步跨6階,則最后剩下5階;只有每步跨7階,最后才正好1階不剩。參考例6.15程序,編寫計(jì)算這條階梯共有多少階的程序如下所示,其中存在一些語(yǔ)法和邏輯錯(cuò)誤,請(qǐng)找出并改正之,然后上機(jī)運(yùn)行程序并寫出程序的運(yùn)行結(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.從鍵盤任意輸入一個(gè)正整數(shù),編程判斷它的奇偶性。要求輸入變量定義為int類型且由用戶從鍵盤輸入。程序的運(yùn)行示例1:Inputanintegernumber:4↙4isanevennumber程序的運(yùn)行示例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.用動(dòng)態(tài)數(shù)組編程輸入任意m個(gè)班學(xué)生〔每班n個(gè)學(xué)生的某門課的成績(jī),計(jì)算最高分,并指出具有該最高分成績(jī)的學(xué)生是第幾個(gè)班的第幾個(gè)學(xué)生。其中,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>>;/*申請(qǐng)動(dòng)態(tài)內(nè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>;/*釋放動(dòng)態(tài)內(nè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ù)功能:計(jì)算任意m行n列二維數(shù)組中元素的最大值,并指出其所在行列下標(biāo)值*/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;/*記錄行下標(biāo)*/*pCol=j;/*記錄列下標(biāo)*/}}}returnmax;}-----------------------------2829.下面程序的功能是交換變量a和b中的值。找出其中的錯(cuò)誤并改正之。#include<stdio.h>main<>{inta,b,*p,*q,*t;p=&a;q=&b;printf<"請(qǐng)輸入變量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<>{

inta,b,*p,*q,*t;

p=&a;

q=&b;

printf<"請(qǐng)輸入變量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之間所有素?cái)?shù)。要求判斷一個(gè)數(shù)是否是素?cái)?shù)用函數(shù)實(shí)現(xiàn),打印結(jié)果請(qǐng)?jiān)谥骱瘮?shù)實(shí)現(xiàn)。判斷一個(gè)數(shù)是否是素?cái)?shù)函數(shù)原型為:intfun<intm>;參數(shù)說(shuō)明:參數(shù):m是要進(jìn)行判斷的數(shù);返回值:若此數(shù)是素?cái)?shù),則返回值為1;否則返回值為0**輸入提示信息:無(wú)**輸入數(shù)據(jù)格式要求:無(wú)**輸出數(shù)據(jù)格式要求:"%d\n"注:不允許使用goto語(yǔ)句答案:#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.輸入某班學(xué)生某門課的成績(jī)〔最多不超過(guò)40人,當(dāng)輸入為負(fù)值時(shí),表示輸入結(jié)束,用函數(shù)編程統(tǒng)計(jì)成績(jī)高于平均分的學(xué)生人數(shù)。要求按如下原型編寫統(tǒng)計(jì)成績(jī)?cè)谌嗥骄旨捌骄种系膶W(xué)生人數(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./*編程實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器功能,要求用戶按如下格式從鍵盤輸入算式:操作數(shù)1運(yùn)算符op操作數(shù)2計(jì)算并輸出表達(dá)式的值,其中算術(shù)運(yùn)算符包括:加〔+、減〔-、乘〔*、除〔/、^<次冪。要求使其能進(jìn)行浮點(diǎn)數(shù)的算術(shù)運(yùn)算,同時(shí)允許使用字符*、x與X作為乘號(hào),并且允許輸入的算術(shù)表達(dá)式中的操作數(shù)和運(yùn)算符之間可以加入任意多個(gè)空格符。**輸入格式要求:"%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"程序運(yùn)行示例1如下:Pleaseentertheexpression:2.0+4.02.000000+4.000000=6.000000程序運(yùn)行示例2如下:Pleaseentertheexpression:2.0-4.02.000000-4.000000=-2.000000程序運(yùn)行示例3如下:Pleaseentertheexpression:2.0*4.02.000000*4.000000=8.000000程序運(yùn)行示例4如下:Pleaseentertheexpression:2.0x4.02.000000*4.000000=8.000000程序運(yùn)行示例5如下:Pleaseentertheexpression:2.0X4.02.000000*4.000000=8.000000程序運(yùn)行示例6如下:Pleaseentertheexpression:2.0/4.02.000000/4.000000=0.5000000程序運(yùn)行示例7如下:Pleaseentertheexpression:2.0/0Divisionbyzero!程序運(yùn)行示例8如下:Pleaseentertheexpression:2.0^5.02.000000^5.000000=32.000000程序運(yùn)行示例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.下面程序的功能是計(jì)算兩個(gè)正整數(shù)的最小公倍數(shù),請(qǐng)改正其中的錯(cuò)誤。#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.請(qǐng)編寫函數(shù)fuc〔,函數(shù)的功能是:根據(jù)以下公式求出p的值,結(jié)果由函數(shù)值返回。m,n是兩個(gè)正整數(shù),且m>n.P=m!/<n!*<m-n>!>**輸入格式要求:"%d%d"提示信息:"請(qǐng)輸入m,n的值<m>n>:\n"**輸出格式要求:"n項(xiàng)之和為:%lf\n"程序運(yùn)行示例如下:請(qǐng)輸入m,n的值<m>n>:53n項(xiàng)之和為:10.000000答案:#include<stdio.h>intfuc<intm,intn>;intsum_s<inti>;intmain<>{

intm,n;

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

scanf<"%d%d",&m,&n>;

printf<"n項(xiàng)之和為:%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ù)功能:計(jì)算a和b的最小公倍數(shù),當(dāng)a或者b為非正整數(shù)時(shí)返回-1*/intLcm<inta,intb>;用函數(shù)編程實(shí)現(xiàn)計(jì)算兩個(gè)正整數(shù)的最小公倍數(shù)〔LeastCommonMultiple,LCM的函數(shù),在主函數(shù)中調(diào)用該函數(shù)計(jì)算并輸出從鍵盤任意輸入的兩整數(shù)的最小公倍數(shù)。**輸入格式要求:"%d,%d"提示信息:"Inputa,b:"**輸出格式要求:"LeastCommonMultipleof%dand%dis%d\n""Inputerror!\n"程序運(yùn)行示例如下:Inputa,b:16,24LeastCommonMultipleof16and24is48注:不允許使用goto語(yǔ)句答案:#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.輸入某班學(xué)生某門課的成績(jī)〔最多不超過(guò)40人,當(dāng)輸入為負(fù)值時(shí),表示輸入結(jié)束,用函數(shù)編程統(tǒng)計(jì)成績(jī)不低于平均分的學(xué)生人數(shù)。要求:<1>按如下函數(shù)原型進(jìn)行編程:intGetAboveAver<intscore[],intn>;<2>在主函數(shù)中:輸入學(xué)生成績(jī),然后調(diào)用函數(shù)GetAboveAver計(jì)算成績(jī)不低于平均分的學(xué)生人數(shù),最后輸出該人數(shù)。要求:<1>學(xué)生成績(jī)和平均分均定義為int類型<2>**無(wú)輸入提示信息**輸入格式為:"%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個(gè)整數(shù)存入一個(gè)數(shù)組中,然后任意輸入一個(gè)整數(shù)x,采用順序查找法,在數(shù)組中查找該數(shù),如果找到,則函數(shù)返回該數(shù)在數(shù)組中的下標(biāo)位置,并在主函數(shù)中打印該值;如果沒(méi)有找到,則返回-1,并在主函數(shù)中打印"Notfound!"。要求按如下函數(shù)原型編程實(shí)現(xiàn)查找功能。intSearch<inta[],intn,intx>;在主函數(shù)中調(diào)用函數(shù)Search順序查找x,然后在主函數(shù)中打印查找結(jié)果。要求必須按照題目要求和用函數(shù)編程,否則不給分。**要求輸入10個(gè)整數(shù)的提示信息格式為:"Input10numbers:\n"〔每輸入一個(gè)數(shù),鍵一次回車;**要求輸入整數(shù)x的提示信息格式為:"Inputx:\n"**要求輸出格式為:找到時(shí)的打印格式為"Subscriptofxis%d\n"沒(méi)找到時(shí)的打印格式為"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.利用一個(gè)字符數(shù)組作函數(shù)參數(shù),實(shí)現(xiàn)字符串〔最大長(zhǎng)度為80個(gè)字符的逆序存放。要求如下:<1>在子函數(shù)Inverse中實(shí)現(xiàn)字符串的逆序存放。函數(shù)原型為:voidInverse<charstr[]>;<2>在主函數(shù)中從鍵盤輸入字符串<使用gets函數(shù)>然后,調(diào)用Inverse函數(shù),最后,輸出逆序后的字符串。<3>**輸入提示信息:"Inputastring:\n"**輸出提示信息:"Inversedresults:\n"**輸出格式:"%s\n"注:不能使用指針、結(jié)構(gòu)體、共用體、文件、goto、枚舉類型進(jìn)行編程,主函數(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.從鍵盤任意輸入一個(gè)字符串,計(jì)算其實(shí)際字符個(gè)數(shù)并打印輸出,即不使用字符串處理函數(shù)strlen<>編程實(shí)現(xiàn)strlen<>的功能。**輸入格式要求:"%s"提示信息:"Pleaseenterastring:"**輸出格式要求:"Thelengthofthestringis:%u\n"程序的運(yù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;

溫馨提示

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

評(píng)論

0/150

提交評(píng)論