C 編程練習題及答案_第1頁
C 編程練習題及答案_第2頁
C 編程練習題及答案_第3頁
C 編程練習題及答案_第4頁
C 編程練習題及答案_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

一、簡單問題:

1.編程求下列式子的值,

y=1-1/2+1/3-1/4+...+1/99-1/100

并將結果輸出,格式為:L1/2+1/3-1/4+…+1/99?1/100=表達式的值

publicclassPorg{

publicstaticvoidmain(String[]args){

doublesum=0;

for(doublei=l;i<=100;i++)

(

sum=sum+Math.popf(-1,i-1)*(1/i);

)

System,out.print("1-1/2+1/3-1/4+...+1/99-1/100="+sum);

)

)

2.請編程實現:由鍵盤輸入的任意一組字符,統(tǒng)計其中大寫字母的個數m和小寫字母的個數n,并輸出

m、n中的較大者。

importjava.util.Scanner;

publicclassProg2{

publicstaticvoidmain(String[]args){

intm=0zn=0;

Scannercin=newScanner(System.in);

Stringstr=cin.nextLine();

for(inti=0;i<str.length();i++)

(

if(str.charAt(i)>'A'&&str.charAt(i)<='Z')

m++;

else

n++;

)

if(m>n)

(

System.out.printIn(m);

)

else

System.out.printIn(n);

)

)

3.編程,求全部水仙花數。所謂水仙花數是指一個三位數,其各位數字立方的和等于該數。如:153=13

+53+33o

publicclassProg3{

publicstaticvoidmain(String[]args){

intazb,c;

for(a=l;a<=9;a++)

(

for(b=0;b<=9;b++)

(

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

(

if(a*100+b*10+c==a*a*a+b*b*b+c*c*c)

System.out.printin(a*100+b*10+c);

)

)

)

)

4.請編制程序判斷輸入的正整數是否既是5又是7的整倍數。若是,則輸出yes;否則輸出no0

importjava.util.Scanner;

publicclassProg4{

publicstaticvoidmain(String[]args){

Scannercin=newScanner(System.in);

inti=cin.nextlnt();

if(i%5==0&&i%7==0)

System.out.print("yesn);

else

System,out.print("non);

)

)

5.請編程實現:對于給定的一個百分制成績,輸出相應的五分制成績。設:90分以上為'A',80—89分為

B,70—79分為C,60—69分為'D',60分以下為‘E'。

importjava.util.Scanner;

publicclassProg5{

publicstaticvoidmain(String[]args){

Scannercin=newScanner(System.in);

intm=cin.nextlnt();

if(m>=60&&mv=69)

System.out.print("Dn);

else

if(m>=70&&m<=79)

System.out.print();

else

if(m>=80&&m<=89)

System.out.print("Bn);

else

if(m>=90)

System.out.print("An);

else

System.out.print("En);

)

6.輸入一行字符,將其中的字母變成其后續(xù)的第3個字母,輸出。例:a-d,x-a;y-b;編程實現。

importjava.util.Scanner;

publicclassProg6{

publicstaticvoidmain(String[]args){

char[]zimu=new

1

char[]{'a','b',*c*z'd,'e'z'f*,*9','h','i','j*,'k*,*1*,1m','n*,*o*z'p*,'q'z'

11

r*z's',*t'z'u'z'v,'w,'x','y,,','a','b','c'};

Scannercin=newScanner(System.in);

Stringstr=cin.nextLine();

for(intj=0;j<str.length();j++)

(

for(inti=0;i<29;i++)

(

if(str.charAt(j)==zimu[i])

System.out.printin(zimu[i+3]);

break;

7.編寫程序,輸入任意一個1~7之間的整數,將他們轉換成對應的英文單詞.例如:1轉換成Monday,

7轉換成Sunday.

importjava.util.Scanner;

publicclassProg7{

publicstaticvoidmain(String[]args){

System.out.print(”請輸入任意一個工?7之間的整數\n”);

Scannercin=newScanner(System.in);

intm=cin.nextlnt();

if(m==l)

System,out.print('?Monday");

else

if(m==2)

System.out.print(HTuesday");

else

if(m==3)

System,out.print("Wensday1');

else

if(m==4)

System,out.print("'Thuesday*');

else

if(m==5)

System,out.print("Friday'*);

else

if(m==6)

System,out.print(''Saturday");

else

System.out.print(*'Sundayn);

8.輸入三角形的三邊a,b,c,判斷能否構成三角形.若能,計算面積.

importjava.util.Scanner;

publicclassProg8{

publicstaticvoidmain(String[]args){

System.out.print(”請輸入三個整數\n");

Scannercin=newScanner(System.in);

inta=cin.nextInt();

intb=cin.nextInt();

intc=cin.nextInt();

if(a+b<c||a+c<b||c+b<a)

System,out.print("不能構成三角形\n");

)

else

(

intl=a+b+c;

System.out.print(1);

)

)

)

9.編程序,輸入a,b,c,求方程ax2+bx+c=0的解。

importjava.util.Scanner;

publicclassProg9{

publicstaticvoidmain(String[]args){

System.out.print("請輸入三個整數\n");

Scannercin=newScanner(System.in);

inta=cin.nextInt();

intb=cin.nextInt();

intc=cin.nextInt();

if(a==0)

(

System.out.printIn(-c/b);

)

elseif(b*b-4*a*c>=0)

(

doublexl=(-b+Math.po^(l/2,b*b-4*a*c))/(2*a);

doublex2=(-b-Math.pow(1/2,b*b-4*a*c))/(2*a);

System.out.printIn(xl);

System.out.print(x2);

)

elseSystem.out.print("無解");

)

)

10.計算出前20項fibonacci數列,要求一行打印5個數.

一般而言,兔子在出生兩個月后,就有繁殖能力,一對兔子每個月能生出一對小兔子來。如果所有

兔都不死,那么一年以后可以繁殖多少對兔子?

我們不妨拿新出生的一對小兔子分析一下:

第個月小兔子沒有繁殖能力,所以還是一對;

兩個月后,生下一對小兔總數共有兩對;

三個月以后,老兔子又生下一對,因為小兔子還沒有繁殖能力,所以一共是三對;

依次類推可以列出下表:

經過月數0123456789101112

幼仔對數01123581321345589144

成兔對數1123581321345589144233

總體對數123581321345589144233377

importjava.util.Scanner;

publicclassProglO{

publicstaticvoidmain(String[]args){

Scannercin=newScanner(System.in);

intn=cin.nextlnt();

inta=0,b=l,c=l;

if(n==l){System.out.printin(a);

System.out.printIn(b);

System.out.printin(c);)

else

(

for(inti=2;i<=n;i++)

(

a=b;

b=c;

c=a+b;

)

System.out.printin("幼崽數"+a+"成年兔子書"+b+"總數"+c);

)

)

11.輸出10070000之間個位數為3的所有素數。

publicclassProgll{

publicstaticvoidmain(String[]args){

for(inti=103;i<10000;i=i+10)

booleanflag=true;

for(intj=2;j<i/2;j++)

if(i%j==0)

{flag=false;break;}

if(flag==true){System.out.printin(i);)

12.百錢買百雞問題:公雞每只5元,母雞每只3元,小雞3只一元,問一百元買一百只雞有幾種買

法.

publicclassProgl2{

publicstaticvoidmain(String[]args){

intm=0;

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

for(intb=0;b<100;b++)

(

for(intc=0;c<100;C++)

if(5*a+3*b+l/3*c==100&&a+b+c==100)

m++;

)

)

System.out.print("一百元買一百只雞有“+m+“種買法”);

13.請編制程序要求輸入整數a和b,若a2+b2大于100,則輸出a2+b2百位以上的數字,否則輸出兩數之

和。

importjava.util.Scanner;

publicclassProgl3{

publicstaticvoidmain(String[]args){

System.out.print(”請輸入兩個整數\n”);

Scannercin=newScanner(System.in);

inta=cin.nextlnt();

intb=cin.nextInt();

if(a*a+b*b>100)

(

System.out.print(a*a+b*b);

)

else

System.out.print(a+b);

)

)

14.編程實現:對鍵盤輸入的任意一個四位正整數,計算各位數字平方和。

如:2345,則:計算22+32+42+52

importjava.util.Scanner;

publicclassProgl4{

publicstaticvoidmain(String[]args){

System.out.print(”請輸入任意一個四位正整數\n”);

intsum=0;

Scannercin=newScanner(System.in);

inta=cin.nextInt();

sum=(a/1000*a/1000)+((a/100)%10*(a/100)%10)+((a/10%100%10)*(a/10%100%10))

+((a%10)*(a%10));

System.out.print(sum);

)

)

15.有1020個西瓜,第一天賣一半多兩個,以后每天賣剩下的一半多兩個,問幾天以后能賣完,請編程.

publicclassProgl5{

publicstaticvoidmain(String[]args){

intm=0,sum=1020;

do{

sum=sum/2-2;

m++;

}while(sum>=0);

System.out.print(m+”天以后能賣完”);

)

16.編程,輸出200以內所有完全平方數C(滿足C2=A2+B2)及其個數.

publicclassProgl6{

publicstaticvoidmain(String[]args){

intm=0;

for(intC=l;C<200;C++)

(

for(intA=l;A<=200;A++)

(

for(intB=l;B<=200;B++)

(

if(A*A+B*B==C*C)

{System.out.printIn(C);

A=201;

B=201;

m++;}

)

System.out.printin("個數為:n+m);

)

17.設N是一個四位數,它的9倍恰好是其反序數(例如:123的反序數是321),編程,輸出所有滿足條

件的N。

packageeasy;

publicclassThel7{

staticlongsfM;

publicstaticvoidmain(String[]args){

for(longN=1009;N<=1109;N=N+10){

M=9*N;

s=0;

while(M>0){

s=s*10+M%10;

M=M/10;

)

if(N==s)

System.out.printIn(s);

}

}

}

18.編程,輸出555555的約數中最大的三位數。

packageeasy;

publicclassThe18th{

publicstaticvoidmain(StringOargs){

doublea=555555;

longb=0;

//Iong[]yueShu=newlong[555555];

for(longi=1;i<=555555;i++){

if(a%i==0&&i>99&&i<1000){

while(i>b){

b=i;

)

}

)

System.out.println(b);

)

}

19.編程,輸出所有個位數為6且能被31整除的五位數及其個數。

packageeasy;

publicclassThe19th{

publicstaticvoidmain(StringOargs){

for(longi=10006;i<=99996;i=i+10){

if(i%31==0){

System.out.println(i);

)

)

)

)

20.編寫程序,輸入兩個整數,和+、?、*、/、%之中的任意一個運算符,輸出計算結果.

packageeasy;

//importjava.util.InputMismatchException;

importjava.util.Scanner;

publicclassThe20th{

staticScannercin=newSeanner(System.in);

publicstaticvoidmain(String[]args){

Scannercin1=newScanner(System.in);

intd1,d2;

Stringstr=newStringf"');

d1=cin.nextlnt();

d2=cin.nextlnt();

//System.out.println(dl);

//System.out.println(d2);

str=cin1.nextLine();

//System.out.println(str);

//System.out.println(str.charAt(0));

switch(str.charAt(O)){

case

System.out.println(d1+d2);

break;

)

case

System.out.println(d1-d2);

break;

)

case***:{

System.out.println(d1*d2);

break;

)

case

System.out.println(d1/d2);

break;

}

)

)

/*staticintadd(inta,intb){

returna+b;

)

staticintsub(inta,intb){

returna-b;

)

staticintmultiply(inta,intb){

returna*b;

)

staticintdivide(intajntb){

return(int)(a/b);

}*/

21.計算:1+1/(1+2)+1/(1+2+3)+…+1/(1+2+…+n),n由鍵盤輸入。

packageeasy;

importjava.util.Scanner;

publicclassThe21th{

publicstaticvoidmain(StringOargs){

doublesum=0,div=0;

Scannercin=newScanner(System.in);

intn=cin.nextlnt();

for(inti=1;i<=n;i++){

div=div+i;

System.out.printlnC'ir+div);

sum=sum+1/div;

)

System.out.println(sum);

)

)

22.編程計算:1*2*3+3*4*5+...+99*100*101的值.

packageeasy;

publicclassThe22th{

publicstaticvoidmain(StringQargs){

longsum=0;

for(inti=1;i+2<=101;i=i+2){

sum=sum+i*(i+1)*(i+2);

)

System.out.println(sum);

}

)

二、比較簡單問題:

1.編一個函數GCD,求兩個無符號整數的最大公約數。主函數輸入兩個正整數m和n,調用GCD,求

出m和n的最大公約數和最小公倍數.并輸出。

packagemoreEasy;

importjava.util.Scanner;

publicclassThelth{

publicstaticvoidmain(String[]args){

Scannercin=newScanner(System.in);

intm=cin.nextlnt();

intn=cin.nextlnt();

System.out.println(m+”和“+n+”的最大公約數為:H+GCD(m,n));

System.out.println(m+”和“+n+”的最小公倍數為:H+m*n/GCD(m,n));

)

publicstaticintGCD(inta,intb){

intr=0;

for(inti=1;i<=a&&i<=b;i++){

if(a%i==O&&b%i==O&&r<i){

r=i;

}

}

//System.out.println(r);

returnr;

)

}

2.請編程實現:建立一個4*4的二維整型數組,求對角線元素的和。

packagemoreEasy;

importjava.util.Scanner;

publicclassThe2th{

publicstaticvoidmain(String[]args){

intewsz00=newint[4][4];

Scannercin=newScanner(System.in);

for(inti=O;i<ewsz.length;i++){

for(intj=O;j<ewsz[i].length;j++){

ewsz[i][j]=cin.nextlnt();

)

}

/*for(inti=O;i<ewsz.length;i++){

for(intj=O;j<ewsz[i].length;j++){

System.out.print(ewsz[i][j]);

if(j=3){

System.out.printlnf"');

)

)

}*/

intsum=O;

for(inti=O;i<ewsz.length;i++){

sum=sum+ewsz[i][i];

)

System.out.println(sum);

)

)

3.寫一個判斷素數的函數prime,在主函數中輸入10個整數,調用prime,輸出這10個整數中的素數的

累加和。

packagemoreEasy;

importjava.util.Scanner;

publicclassThe3th{

publicstaticvoidmain(StringOargs){

intoshu=newint[10];

intsum=0;

Scannercin=newScanner(System.in);

for(inti=O;i<shu.length;i++){

shu[i]=cin.nextlnt();

)

for(inti=O;i<shu.length;i++){

if(prime(shu[i]))

sum=sum+shu[i];

)

System.out.println(sum);

}

publicstaticbooleanprime(inta){

//doubleb=Math.pow(a,0.5);

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

jf(a%i==0||a==1){

returnfalse;

)

}

returntrue;

)

}

4.從鍵盤上輸入若干學生的一門課成績,存入一個數組中,當輸入負數時結束輸入.輸出最高成績和最低

成績及相應的序號。

packagemoreEasy;

importjava.util.Scanner;

publicclassThe4th{

publicstaticvoidmain(StringOargs){

intn,n1=0,max,min;

Scannercin=newScanner(System.in);

System.outprint("學生人數”);

n=cin.nextlnt();

int[]chengJi=newint[n];

for(inti=0;i<n;i++){

chengJi[i]=cin.nextlnt();

)

max=chengJi[O];

min=chengJi[O];

for(intj=O;j<chengJi.length;j++){

if(max<chengJi[j]){

max=chengJi[j];

n=j;

)

if(min>chengJi[j]){

min=chengJi[j];

n1=j;

}

)

System.out.println("max="+max+"H+n);

System.out.println("min="+min+""+n1);

}

)

5.編程計算:1!+2!+3!+…+20!,并將結果輸出.輸出格式:

1!+2!+3!+...+20!=表達式的值

packagemoreEasy;

publicclassThe5th{

publicstaticvoidmain(StringOargs){

longsum=0;

for(inti=1;i<=20;i++){

longr=1;

for(intj=1;j<=i;j++){

r*=j;

)

sum=sum+r;

//System.out.print("r="+r);

if(i<20)

System.out.print(i+"!+H);

else

System.out.print(i+"!=,,+sum);

)

)

)

6.有一個3*4的矩陣,編程實現:找出該矩陣中每行元素的最大值,存入一個一維數組中。輸出原

始矩陣和結果矩陣。

7.將若干個整數放到一維數組中,找出該數組中的最大值和它的下標。然后將它和數組中的最前面的元素

對換。不明白

packagemoreEasy;

importjava.util.Scanner;

publicclassThe7th{

publicstaticvoidmain(String[]args){

int[]array=newint[1O];

Scannercin=newScanner(System.in);

System.out.print("數組長度:");

intn=cin.nextlnt();

for(inti=0;i<n;i++){

array[i]=cin.nextlnt();

)

intmin=array[O];

intmax=array[O];

//System.out.println(min);

//System.out.println(max);

for(inti=O;i<array.length;i++){

if(array[i]<min)

min=array[i];

if(max<array[i])

max=array[i];

)

System.out.println(min);

System.out.println(max);

)

)

8.編寫一個函數converse,將一維數組中的數逆序存放,不允許使用輔助數組。主函數輸入原始數據,

調用converse,實現逆置。并將原數組和逆置后的數組輸出

packagemoreEasy;

importjava.util.Scanner;

publicclassThe8th{

publicstaticvoidmain(StringOargs){

converse();

)

publicstaticvoidconverse(){

int[]ar=newint[1O];

Scannercin=newScanner(System.in);

for(inti=O;i<ar.length;i++){

ar[i]=cin.nextlnt();

//if(ar[i]==-1)

//break;

)

for(intj=O;j<ar.length;j++){

System.out.print(ar[j]);

}

System.out.println(m,);

for(inti=0;i<ar.length/2;i++){

inta=ar[ar.length-i-1];

ar[ar.length-i-1]=ar[i];

ar[i]=a;

)

for(intj=O;j<ar.length;j++){

System.out.print(ar[j]);

)

)

)

9.編寫函數,將給定的字符串的大寫字母轉變成小寫字母;其它字符不變。主函數輸入一個字符串,調

用該函數對其進行轉換,分別輸出原串和轉換之后的串。

packagemoreEasy;

importjava.util.Scanner;

publicclassThe9th{

staticStringstr="";

publicstaticvoidmain(String[]args){

Stringstr="";

Scannercin=newScanner(System.in);

str=cin.nextLine();

zhuanHuan(str);

)

publicstaticvoidzhuanHuan(Stringstr1){

str=str1;

str=str.toLowerCase();

System.out.println(str);

)

)

10.編寫一個函數,將字符數組a中的全部字符復制到字符數組b中.不要使用strcpy函數.主函數輸入

任意一個字符串,調該函數,復制出另一個字符串。將兩個串輸出。

packagemoreEasy;

importjava.util.Scanner;

publicclassThe10th{

publicstaticvoidmain(StringOargs){

Scannercin=newScanner(System.in);

Stringstr=cin.nextLine();

char[]aa=newchar[str.length()];

char[]bb=newchar[str.length()];

for(inti=O;i<aa.length;i++){

aa[i]=str.charAt(i);

)

copy(aa,bb);

for(inti=O;i<aa.length;i++){

System.out.print(aa[i]+"**);

)

System.out.printlnf",);

for(inti=O;i<aa.length;i++){

System.out.print(bb[i]+"**);

)

)

publicstaticvoidcopy(char[]a,char[]b){

for(inti=O;i<a.length;i++){

b[i]=a[i];

)

)

)

11.判斷一個N*N的矩陣是否為對稱矩陣.將原矩陣輸出,判斷結果輸出.

packagemoreEasy;

importjava.util.Scanner;

publicclassThe11th{

publicstaticvoidmain(String[]args){

Scannercin=newScanner(System.in);

intn=cin.nextlnt();

intcount=0;

int[][]duiCheng=newint[n][n];

for(inti=O;i<duiCheng.length;i++)

for(intj=O;j<duiCheng[i].length;j++){

duiCheng[i][j]=cin.nextlnt();

)

for(inti=O;i<duiCheng.length;i++)

for(intj=O;j<duiCheng[i].length;j++){

if(j==n-1)

System.out.print(duiCheng[i][j]+“\n");

else

System.out.print(duiCheng[i][j]+"");

)

for(inti=O;i<duiCheng.length;i++)

for(intj=O;j<duiCheng[i].length;j++){

if(duiCheng[i][j]==duiCheng[j][i])

count++;

)

if(count==n*n)

System.out.println("對稱矩陣)

else

System.out.println("非對稱矩陣”);

)

}

12.給出年、月、日,計算該日是該年的第幾天?

packagemoreEasy;

importjava.util.Scanner;

publicclassThe12th{

publicstaticvoidmain(StringQargs){

intn=0;

Scannercin=newScanner(System.in);

inty=cin.nextlnt();

System.out.println(“年”);

intm=cin.nextlnt();

System.out.println(“月”);

intd=cin.nextlnt();

System.out.println(nHH);

if(y%4==0&&y%100!=0||y%400==0){

switch(m){

case1:

n=d;

break;

case2:

n=d+31;

break;

case3:

n=d+31+29;

break;

case4:

n=d+31+29+31;

break;

case5:

n=d+31+29+31+30;

break;

case6:

n=d+31+29+31+30+31;

break;

case7:

n=d+31+29+31+30+31+30;

break;

case8:

n=d+31+29+31+30+31+30+31;

break;

case9:

n=d+31+29+31+30+31+30+31+31;

break;

case10:

n=d+31+29+31+30+31+30+31+31+30;

break;

case11:

n=d+31+29+31+30+31+30+31+31+30+31;

break;

case12:

n=d+31+29+31+30+31+30+31+31+30+31+30;

break;

)

}

else{

switch(m){

case1:

n=d;

break;

case2:

n=d+31;

break;

case3:

n=d+31+28;

break;

case4:

n=d+31+28+31;

break;

case5:

n=d+31+28+31+30;

break;

case6:

n=d+31+28+31+30+31;

break;

case7:

n=d+31+28+31+30+31+30;

break;

case8:

n=d+31+28+31+30+31+30+31;

break;

case9:

n=d+31+28+31+30+31+30+31+31;

break;

case10:

n=d+31+28+31+30+31+30+31+31+30;

break;

case11:

n=d+31+28+31+30+31+30+31+31+30+31;

break;

case12:

n=d+31+28+31+30+31+30+31+31+30+31+30;

break;

)

)

System.out.println(n);

)

)

13.編寫一個子函數fun,求兩個矩陣的乘積矩陣;主程序中輸入兩個矩陣的階數和元素值,調用fun,求

出乘積矩陣,在主程序中將原矩陣和乘積矩陣輸出。

packagemoreEasy;

importjava.util.Scanner;

publicclassThe13th{

public

溫馨提示

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

評論

0/150

提交評論