C語言上機程序題庫_第1頁
C語言上機程序題庫_第2頁
C語言上機程序題庫_第3頁
C語言上機程序題庫_第4頁
C語言上機程序題庫_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

信息科學與工程學院C語言上機150道題參考答案

001.某一門課程考試之后,需要統(tǒng)計考生(10人)的平均成績,并找出其中的最高分和最低分。

#include<stdio.h>

#include<conio.h>

main()

(

floata[10]tave,max,min,sum=0;

inti;

printf(”請輸入10個考生的成績:\n");

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

scanf("%f',&a[i]);

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

sum+=a[i];

ave=sum/10;

max=a[0];

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

if(a[i]>max)

max=a[i];

min=a[0];

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

if(a[i]<min)

max=a[i];

printf("平均成績:%f,最高分:%f,最低分:%f',ave,max,min);

getch();

)

003.用while循環(huán)結構編寫程序打印ASCII碼為33-127的字符。#include<stdio.h>

#include<conio.h>

main()

(

inti=33;

while(i<=127)

(

printf("%c",i);

i++;

)

getch();

)

004用do-while,for循環(huán)結構編寫程序打印ASCII碼為33-127的字符。

#include<stdio.h>

#include<conio.h>

main()

(

inti=33;

do

(

printf("%c",i);

i++;

}while(i<=127);

getch();

)

006.在1?500中,找出能同時滿足用3除余2,用5除余3,用7除余4的所有整數(shù),用循環(huán)結構。

#include<stdio.h>

#include<conio.h>

main()

(

inti;

for(i=1;j<=500;i++)

(

if(i%3==2&ai%5==3&&i%7==5)

printf("%d\n",i);

)

getch();

)

007.輸入一個整數(shù)將其倒著輸出,如54321——12345o

(方法一)

#include<stdio.h>

#include<conio.h>

#include<string.h>

main()

(

chara[100];

intlen,i;

printf("請輸入一個整數(shù):\n");

scanf("%s",a);

len=strlen(a);

for(i=len-1;i>=0;i-)

printf("%c",a[i]);

getch();

)

007(方法二)

#include<stdio.h>

#include<conio.h>

main()

(

intnum,t;

printf("請輸入一個整數(shù):\rT);

scanf(n%d",&num);

while(num>0)

(

t=num%10;

num=num/10;

printf(”%d”,t);

)

getch();

OO8.i+Ms=1+1/3+1/5+...+1/n,截止到1/n<10-4o

#include<stdio.h>

#include<conio.h>

main()

(

intn;

floatt=1,s=0;

for(n=1;t>0.0001;n+=2)

(

t=(float)1/n;

s=s+t;

)

printf("s=%r,s);

getch();

)

009.從鍵盤輸入一整數(shù)n,計算1*1+2*2+...+n*n的值。

#include<stdio.h>

#include<conio.h>

main()

(

intn,i,s=0;

printf("請輸入一個整數(shù):\rT);

scanf(n%d",&n);

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

s=s+i*i;

printf("%d",s);

getch();

)

010.用while循環(huán)計算1+2+……+100的和。

#include<stdio.h>

#include<conio.h>

main()

(

ints=0,i=1;

while(i<=100)

(

s=s+i;

i++;

)

printf("%d",s);

getch();

)

11.用dowhile循環(huán)計算1+2+……+100的和

#include<stdio.h>

main()

(

inti,result;

i=1;result=0;

while(i<=100)

result=i+result;

i++;

)

+2+...+100=%d”,result);

while(1);

)

12.用for循環(huán)計算1+2+……+100的和。

#include<stdio.h>

main()

(

inti,result;

for(i=1,result=0;i<=100;i++)

(

result=i+result;

)

printf("1+2+...+100=%d'\result);

while(1);

)

13.輸入一個小于等于10的整數(shù)n,計算n!。

#include<stdio.h>

longfac(intn)

(

longresult;

if(n==0||n==1){result=1;}

else{result=n*fac(n-1);}

returnresult;

)

main()

(

intn;longresult;

printf("請輸入一個小于等于10的整數(shù)\n");

scanf(n%d",&n);

if(n>=0&&n<=10)

(

result=fac(n);

printf("%d!=%ld',,n,result);

)

elseprintf("輸入數(shù)據(jù)錯誤");

while(1);

)

14.輸入兩個正整數(shù)m和n,計算m!+n!,m和n的值均小于10。

#include<stdio.h>

longfac(intn)

(

longresult;

if(n==0||n==1){result=1;}

else{result=n*fac(n-1);}

returnresult;

)

main()

(

intn,m;longresult;

printf(”請輸入兩個小于等于10的整數(shù)\n)

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

if(n>=0&&n<=10&&m>=0&&n<=10)

(

result=fac(n)+fac(m);

printf("%d!+%d!=%ld",n,m,result);

)

elseprintf("輸入數(shù)據(jù)錯誤");

while(1);

)

15.用循環(huán)語句,計算1~100之間的所有3的倍數(shù)之和。

#include<stdio.h>

main()

(

inti,result;

for(i=1,result=0;i<=100;i++)

(

if(i%3==0)

result=result+i;

)

printf(M1-100之間的所有3的倍數(shù)之和為%d”,result);

while(1);

)

16.用循環(huán)語句,計算100-200之間的所有7的倍數(shù)之和。

#include<stdio.h>

main()

(

inti,result;

for(i=100,result=0;i<=200;i++)

(

if(i%7==0)

result=result+i;

)

printf("100-200之間的所有7的倍數(shù)之和為%d",result);

while(1);

)

17.輸出1-100之間,7的整數(shù)倍數(shù)或數(shù)字尾數(shù)為7的數(shù)字,統(tǒng)計出這些數(shù)字個數(shù)。

#include<stdio.h>

main()

inti,num;

for(i=1,num=O;i<=100;i++)

(

if(i%7==0||i%10==7)

num++;

}

printf("1-100之間,7的整數(shù)倍數(shù)或數(shù)字尾數(shù)為7的數(shù)字個數(shù)為%d”,num);

while(1);

)

18.輸入一行字符,分別統(tǒng)計出其中英文字母,空格,數(shù)字和其他字符的個數(shù)。

include<stdio.h>

intmain()

(

inti=0,space=O,num=O,n=0,ch=O;

chars[1000000];

p「intf("請輸入一串字符");

gets(s);

while(s[i]!='\0')

(

if(s[i]=,)

space++;

elseif(s[i]<='9,&&s[i]>='0')

num++;

elseif(s[i]<='z'&&s[i]>='a'||s[i]<='Z'&&s[i]>='A')

ch++;

else

n++;

i++;

)

printf("剛才輸入的字符中英文字符個數(shù)為%d\n",ch);

printf("剛才輸入的字符中空格個數(shù)為%d\n",space);

printf("剛才輸入的字符中數(shù)字個數(shù)為%d\n",num);

printf("剛才輸入的字符中其他個數(shù)為%d\n",n);

while(1);

}

19.輸入一個整數(shù),統(tǒng)計它有幾位數(shù)。如輸入367,則該數(shù)有3位數(shù)。

#include<stdio.h>

main()

(

intn,i,j;

i=1;j=0;

printf("請輸入一個整數(shù)\n“);

scanf("%d",&n);

if(n==0)printf("這個數(shù)是1位數(shù)”,j);

else{

while(n>=i)

i=10*i;

j=j+1;

)

printf("這個數(shù)是%d位數(shù)",j);

}

while(1);

)

20.編寫程序,輸出1到50中間所有能被3整除的正整數(shù)。

#include<stdio.h>

main()

(

printf("1到50中間所有能被3整除的正整數(shù)如下\n");

intn;

for(n=1;n<=50;n++)

(

if(n%3==0)

)

while(1);

)

21.把100~200之間不能被3整除的輸出。

#include<stdio.h>

main()

(

printf("100~200之間不能被3整除的正整數(shù)如下\n");

intn;

for(n=100;n<=200;n++)

(

if(n%3!=0)

printf("%d\t",n);

)

while(1);

)

22.編程Y=1+3+5+7+...111o

#include<stdio.h>

main()

(

printf(,,Y=M);

intn,result;

for(n=1,result=0;n<=111;n=n+2)

(

printf(“%d+”,n);

result=result+n;

}

printf("=%d\n",result);

while(1);

23.編程y=1*1/2*1/3*1/4*1/5*1/6*...前十項之積。

#include<stdio.h>

#include<conio.h>

main()

(

inti;

longinty;

y=1;

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

(

y=y*i;

)

printf("y=1/%ldn,y);

getch();

)

24.編程輸出九九乘法表。

#include<stdio.h>

#include<conio.h>

main()

(

intij;

for(i=i;j<=9;i++)

(

forG=1;j<=i;j++)

printf("%d*%d=%d\t",j,i,i*j);

p「intf(“\n”);

)

getch();

)

25.求1到100奇數(shù)和。

#include<stdio.h>

#include<conio.h>

main()

(

inti=0,n;

for(n=1;(2*n-1)<100;n++)

i=i+(2*n-1);

printf("1到100以內的奇數(shù)之和為:%d\n”,i);

getch();

)

26.求1到100偶數(shù)和。

#include<stdio.h>

#include<conio.h>

main()

inti,s;

s=0;

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

s=s+i;

printffl到100的偶數(shù)和是:");

printf("s=%d\n",s);

getch();

)

27.編程求200以內所有質數(shù)(素數(shù)卜

#include<stdio.h>

#include<math.h>

#include<conio.h>

intisprime(intm)

{inti;

for(i=2;i<=sqrt(m);i++)

if(m%i==0)

{returnO;break;}

if(i>=(int)sqrt(m)+1)

return1;

)

main()

{intn.flag;

for(n=1;n<=200;n++)

(

flag=isprime(n);

if(flag)

printf("%d\t",n);}

getch();

)

28.從鍵盤輸入一個整數(shù),求該數(shù)的絕對值。

#include<stdio.h>

#include<conio.h>

main()

(

floata,t;

printf("Pleaseinputthevalue\t");

scanf("%f',&a);

if(a<0)

t=-a;

else

t=a;

printf("Theabsolutevalueis:\t%f',t);

getch();

)

29.從鍵盤輸入+、-、*、/中的任一個,輸出對應的英文單詞:plus、minus、mutiply、divide,如輸入的

不是這4個字符中的任一個,則輸出“sorry,youarewrong;

#include<stdio.h>

#include<stdlib.h>

main()

charch;

ch=getchar();

if(ch=='+')

printf("plus\nu);

elseif(ch==,J)

printf(nminus\n");

elseif(ch=='*')

printf(,,multiply\nH);

elseif(ch==7')

printfC'divideVn");

else

printf("youarewrong'*);

systemCpause*');

)

30.從鍵盤輸入一個字符,判斷其是否為a,r,或f,并輸出相應的信息(不區(qū)分大小寫卜

#include<stdio.h>

#include<conio.h>

main()

(

charn1='a',n2='r',n3=T,n4;

charm1='A;m2='R',m3=,F,;

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

scanf("%c",&n4);

if(n4==n1||n4==m1)

{printf(Hyouareright!\n");

printf(*,n4=%c\n",n4);

)

elseif(n4==n2||n4==m2)

{printf("youareright!\n");

printf("n4=%c\n",n4);

)

elseif(n4==n3||n4==m3)

{printf("youareright!\n");

printf("n4=%c\n",n4);

)

else

printf("youputintoawrongchar!\n");

getch();

)

31.求解一元二次方程ax2+bx+c=0的跟(a不等于0),a,b,c均為實數(shù),其值由鍵盤輸入。

#include<math.h>

#include<stdio.h>

#include<conio.h>

main()

(

doublea,b,c;

doubles,x1,x2;

printf("pleaseentera,b,c:\n");

scanf("%lf%lf%lf',&a,&b,&c);

if(8>--(16-6)&&a<—(16-6))

printf("sorry!youhaveawrongnumberaAn");

else

(

s=b*b-4*a*c;

if(s>(1e-6))

(

x1=(-b+sqrt(s))/(2*a);

x2=(-b-sqrt(s))/(2*a);

printfftherearetwodifferentreal:\nx1=%5.2f,x2=%5.2f\n",x1,x2);}

else

if(s>=-(1e-6)&&s<=(1e-6))

(

x1=x2=-b/(2*a);

printf(ntherearetwoequalreal:\nx1=x2=%5.2f\n",x1);

)

else

(

s=-s;

x1=-b/(2*a);

x2=fabs(sqrt(s)/(2*a));

printff'therearetwodifferentcomplex:\n");

printf("x1=%5.2f+%5.2fi,x2=%5.2f-%5.2fi\nH,x1,x2,x1,x2);

)

)

getch();

)

32.編一程序,對于給定的一個百分制成績,輸出用像TV,JCJD二吧表示的等級成績。設:90分以

上為'A',80~89分為舊',70~79分為C,60~69分'D',60分以下為E'。(要求用switch語句編程卜

#include<stdio.h>

#include<stdlib.h>

main()

(

intscore,temp,logic;

chargrade;

logic=1;

while(logic)

(

printf(Hinputscore:\n");

scanf("%d",&score);

if((score>100)||(score<0))

printf("\nerror,inputagain!\n");

else

logic=0;

printf("\rT);

)

if(score==100)

temp=9;

else

temp=(score-score%10)/10;

switch(temp)

(

case9:grade='A';break;

case8:grade-B';break;

case7:grade='C';break;

case6:grade='d';break;

case5:

case4:

case3:

case2:

case1:

case0:grade='e';break;

)

printf("scoreis:%d,thegradeis:%c.\n",score,grade);

system("pause");

)

33.輸入一個整數(shù),判斷它能否被3,5,7整除。

#include<stdio.h>

#include<conio.h>

main()

(

intx;

printf("Pleaseenterx:");

if((x%3==0)&&(x%5==0)&&(x%7==0))

printf("%d能被3,5,7整除”,x);

else

printf("%d不能被3,5,7整除",x);

getch();

)

34.用整數(shù)1~12依次表示1~12月,由鍵盤輸入一個月份數(shù),輸出對應的季節(jié)英文名稱(12~2月為冬季;

3~5月為春季;6~8月為夏季;9-11月為秋季。要求用if嵌套實現(xiàn)\

#include<stdio.h>

#include<conio.h>

main()

(

intmonth,i;

loop:printf("enteraninteger。~12):\n");

scanf("%d”,&month);

if(month<1||>12)

gotoloop;

r=month%12;

r=r/3;

if(r==O)

printf("winter\n");

elseif(r==1)

printf("spring\n");

elseif(r==2)

printf("summer\n");

else

printf("autumn\n");

getch();

)

35.編寫輸入整數(shù)a,b,c,當a為1時顯示b和c之和,a為2時顯示b與c之差,a為3時顯示b*c之

積,a為4時取b/c之商,a為其他數(shù)值時不做任何操作的程序。

#include<stdio.h>

#include<conio.h>

main()

(

inta,b,c;

printff'pleaseentera,b,c:\n");

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

switch(a)

(

case1:printf(',%d+%d=%d\n",b,c,b+c);

break;

case2:printf("%d-%d=%d\n",b,c,b-c);

break;

,

case3:printf('%d*%d=%d\n",b1c,b*C);

break;

case4:printf("%d/%d=%d\n",b,c,b/c);

break;

default:break;

)

getch();

)

36.編寫輸入一個整數(shù),將其數(shù)值按小于10,10~99,100-999,1000以上分類并顯示。

#include<stdio.h>

#include<conio.h>

main()

(

inta;

printf("請輸入整數(shù)A:\n");

scanf("%d",&a);

if(a<10)

printf("整數(shù)%d小于10o",a);

elseif((a>=10)&&(a<99))

printf("整數(shù)%d大于等于10且小于100?!?a);

elseif((a>=100)&&(a<999))

printf("整數(shù)%d大于等于100且小于1000。",a);

else

printf("整數(shù)%d大于等于1000。",a);

getch();

}

37.編寫輸入一個按數(shù),當為65時顯示A,66時顯示B,67時顯示C,其他值時顯示END的程序。

#include<stdio.h>

#include<conio.h>

main()

(

inta;

printf("請輸入整數(shù)a:\n");

scanf("%dH,&a);

switch(a)

(

case65:printf("A");break;

case66:printf("B");break;

case67:printf("C");break;

default^rintfC'END1');

)

getch();}

38.編程實現(xiàn):輸入4個整數(shù),要求按由小到大輸出。

#include<stdio.h>

#include<conio.h>

main()

(

inta,b,c,d,t;

printf(”請輸入4個整數(shù):a,b,c,d:\rT);

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

if(a>b)

(

t=a;

a=b;

b=t;

)

if(c>d)

(

t=d;

d=c;

c=t;

)

if(a>c)

(

t=c;

c=a;

a=t;

)

if(b>d)

(

t=b;

b=d;

d=t;

)

if(b>c)

(

t=b;

b=c;

c=t;

)

printf("排序后:%d<%d<%d<%d",a,b,c,d);

getch();

)

39.企業(yè)發(fā)放的獎金根據(jù)利潤的提成,利潤I低于或等于10萬元的,獎金可提10%;利潤高于10萬元低

于20萬時,低于10萬的部分按10%提成,高于10萬元的部分,可提成7.5%;20萬元<1<=40萬元時,

低于20萬的部分仍按上述辦法,高于20萬元部分按5%提成;利潤超過40萬元時,低于40萬元的部分

按上述辦法,高于40萬元部分按1%提成。從鍵盤輸入當月利潤I,求應發(fā)獎金部分。

#include<stdio.h>

#include<conio.h>

main()

(

ints,p;

floattax;

printf("enterincome:*');

scanf(n%d",&s);

printfOn");

if(s>800)

(

if((s-800)%100!=0)

p=(s-800)/100+1;

else

p=(s-800)/100;

switch(p)

case0:

case1:

case2:

case3:

case4:tax=(s-800)*0.05;

break;

case5:tax=400*0.05+(s-1200)*0.08;

break;

default:tax=400*0.05+800*0.08+(s-2000)*0.2;

break;

)

)

elsetax=0;

printf("Tax=%.2f',tax);

getch();

)

40.給出一百分制成績,要求輸出成績等級90分以上為'A',80-89分為'B',70-79分為C,

60?69分為'D',60分以下為'EI,

#include<stdio.h>

#include<conio.h>

main()

(

intscore,temp,logic;

chargrade;

logic=1;

while(logic)

(

printf(Hinputscore:");

scanf("%d",&score;);

if((score>100||score<0)

printf("\nerror,inputagain!\nH);

else

logic=0;

printf(H\n");

)

if(score==100)

temp=9;

else

temp=(score-score%10)/10;

switch(temp)

(

case9:grade='A,;

break;

case8:grade=,B';

break;

case7:grade='C;

break;

case6:grade='D';

break;

case5:

case4:

case3:

case2:

case1:

case0:grade='E';

)

printf("scoreis:%d,thegradeis:5c.\n",score,grade);

getch();

)

41.給出一個不多于5位的正整數(shù),分別打印出每一位數(shù)字。

#include<stdio.h>

intmain(void)

(

intx,i=0;

do{

printf("請輸入數(shù)字:");

scanf(',%d",&x);

if(x>99999||x<0)printf("輸入的數(shù)據(jù)不合法.請重新輸入!\n“);

}while(x>99999||x<0);

while(x!=O)

(

printf("%d\t",x%10);

x=x/10;

i++;

)

printf(,r\n這個數(shù)共有%d位\n”,i);

return0;

)

42.從鍵盤輸入三個正整數(shù),判斷這三個數(shù)能否構成三角形。

#include<stdio.h>

#include<conio.h>

doublesquare(intajntbjntc);

main()

(

intx,y,z;

floatS;

printff'pleaseenterx,y,andz(x,y,z>0)\nn);

scanf(,,%d%d%d",&x,&y,&z);

if((x+y<=z)||(x-y>=z)||(x+z<=y)||(x-z>=y)||(y+z<=x)||(y-z>=x))

printf("sorry,youarewrong!\nH);

Else

Printf("yes!\nn);

43.編寫輸入兩個整數(shù)a和b,若azb時,求其積c并顯示,若a〈b時,求其商c并顯示的程序。

#include<stdio.h>

#include<conio.h>

main()

(

inta,b,c;

printff'pleaseenter:\n");

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

if(a>=b)

(

c=a*b;

printf(H%d*%d=%d\n",a,b,c);

)

else

(

c=b/a;

printf("%d/%d=%d",a,b,c);

)

getch();

)

45.編程實現(xiàn):從鍵盤輸入三個正整數(shù),判斷它們是否構成直角三角形。

#include<stdio.h>

#include<math.h>

voidmain()

(

inta,b,c;

printf("請輸入三角形的三條邊用逗號隔開a,b,c:");

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

if((a>0)&&(b>0)&&(c>0)&&((a+b)>c)&&((b+c)>a)&&((a+c)>b))

(

if((a*a==b*b+c*c)||(b*b==a*a+c*c)||(c*c==a*a+b*b))

printf("直角三角形\己);

else

printf("不是直角三角形\n");

}

else

printf("不能組成三角形\n");

)

46.編程實現(xiàn):從鍵盤輸入三個正整數(shù),判斷它們是否構成等腰三角形。

#include<stdio.h>

main()

(

inta,b,c;

printf("請輸入三角形的三條邊用逗號隔開a,b,c:");

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

if((a+b)>c&&(a-b)<c)

if(a==b||b==c||c==a)

printf("這是個等腰三角形\n“);

else

printf(“這不是等腰三角形\n”);

else

printf(“這三條邊不能構成三角形\n”);

)

49.從鍵盤輸入一個整數(shù),判斷其是否素數(shù)。

#include<stdio.h>

main()

(

inti,j=O,a;

printf("請輸入一個整數(shù)\己);

scanf(H%d",&a);

if(a>0&&a!=1)

(

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

(

if(a%i==O)

j++;

)

if(j>2)

printf("這不是素數(shù)\n");

)

else

(

printf("這是素數(shù)\n“);

)

)

if(a<0)

printf(“輸入錯誤】

if(a==1||a==0)

printf("這不是素數(shù))

)

50.兩個乒乓球隊進行比賽,各出3人。甲隊為A,B,C3人,已隊為X.Y,Z3人。已抽簽決定比賽名單。有

人向隊員打聽比賽的名單,A說他不和X比,C說他不和X,Z比,請蝙程找出3對賽手的名單。

#include<stdio.h>

#include<conio.h>

main()

(

chari,j,k;

for(i=,X';i<='Z';i++)

forO='X';j<=,Z,;j++)

if(i!=j)

for(k='X";k<='Z';k++)

if(i!=k&&j!=k)

if(i!='X,&&k!='X,&&k!=,Z')

printf(,,A-%c\tB-%c\tC-%c\t",i,j,k);

getchQ;

51.編寫程序從鍵盤輸入兩個不等于零的正整數(shù)a,b(a〈b),求它們之間的幾何級數(shù)的和°#include〈stdio.h>

#include<math.h>

voidmain()

(

inta,b,c,d,e,f,t;

printf("從鍵盤輸入兩個不等于零的正整數(shù)a,b(a〈b八n");

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

printf("\n從鍵盤輸入兩個不等于零的正整數(shù)c,d■使數(shù)據(jù)以c的d次方增長\n");

scanf("%d,%d",&c,&d);

e=a*pow(c,d);

f=b*pow(c,d);

t=e+f;

printf("\n%d的幾何級數(shù)=%d\n”,a,e);

printf("%d的幾何級數(shù)

printf("%d,%d之間的幾何級數(shù)的和二%d\n",a,b,t);

52.編寫程序,統(tǒng)計從鍵盤輸入的字符的個數(shù)(回車換行符也是一個字符),當遇到結束標志時程序結束。

#include<stdio.h>

main()

(

charch;

unsignedcount=0;

printf("Pleaseenteryourwords:\n");

while((ch=getchar())!=EOF)

count=count+1;

p^ntf(,'count=%u\n',,count);

)

53.編寫程序,求面積在100平方米以內的半徑,輸出所有滿足條件的半徑值和圓的面積的值。

#include<stdio.h>

voidmain()

(

intr,s;

for(r=1;r<100;r++)

(

s=3.14*r*r;

if(s<100)

printf("半徑為%d,面積為%d\n",r,s);

)

)

54.編寫程序,在屏幕上輸出階梯形式的乘法口訣表。

#include<stdio.h>

voidmain()

(

inti,j;

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

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

printf("%d*%d=%d\t",j,i,i*j);

printf("\n");

)

)

55.求兩個正整數(shù)的最大公約數(shù)和最小公倍數(shù)。

#include<stdio.h>

main()

(

intp,r,n,m,temp;

printf("請輸入兩個正整數(shù),用逗號隔開:");

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

if(n<m)

(

temp=n;

n=m;

m=temp;

)

p=n*m;

while(m>=0)

r=n%m;

n=m;

m=r;

)

printf("這兩個數(shù)的最大公約數(shù)是:%d\n”,n);

printf("這兩個數(shù)的最小公倍數(shù)是:%小壯》/叫

)

56.某人有5張2角和4張3角的郵票,使用這些郵票能組合出多少種不同面值的郵資。

#include<stdio.h>

voidmain()

(

inti,j,sum=0;

floata[10],b[10];

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

(

forQ=0;j<=4;j++)

(

if(i==0&&j==0)

;//i=0,j=0時,組合出的面值是0,所以sum不加1,即什么都不執(zhí)行

else

sum++;

)

)

for(i=1;i<=5;i++)〃檢測可能組合出的相同的面值,并減去

(

a[i]=float(i*0.2);

forO=1;j<=4;j++)

(

bO]=float(j*0.3);

if(a[i]==bO])

sum-;

)

)

printf("5張2角和4張3角的郵票共能組合出%d種不同面值的郵資!\n",sum);

)

57.求不超過1000的回文素數(shù)。

#include<stdio.h>

#include<math.h>

voidprime_number(intn)//判斷整數(shù)n是否為素數(shù)

(

inti,m,t,s=1;//s是一個標志,s=1表示是素數(shù),s=0表示不是素數(shù)

m=sqrt(n);

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

t=n%i;

if(t==O)

s=0;

}

if(s==1)〃如果s=1,n就是素數(shù)

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

)

voidhuiwen(intn)

(

intj,k,a;

k=n;

a=0;

while(k!=0)〃把整數(shù)n反向表示成a,即如果n=321,反向后a=123

(

j=k%10;

k=k/1O;

a=a*10+j;

)

if(a==n)〃如果a=n,那么n就是回文數(shù),然后再調用素數(shù)判斷函數(shù)判斷n是否為素數(shù)

prime_number(n);

)

voidmain()

(

inti;

printf(H1OOO以內的回文素數(shù)有:\n“);

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

huiwen(i);

)

58.自守數(shù)是指一個數(shù)的平方的尾數(shù)等于該數(shù)自身的自然數(shù)。如:762=5776,求出2000000以內的自守

數(shù)。

#include<stdio.h>

intpow(intn)

(

inti,s=1;

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

s*=10;

returns;

)

voidfun(intnum)

(

inti,a[7],b[7],c[7],number,s=0,sum;

number=num;

while(num!=0)

a[s]=num%10;

num/=10;

s++;

)

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

(

b[i]=a[i]*pow(i);

)

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

(

c[i]=number%(pow(i));

)

sum=a[O]*number;

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

(

sum+=b[i]*c[s-i];

}

if(sum%pow(s)==number)

printf("%d\n",number);

)

voidmain()

(

inti,m;

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

fun(i);

)

59.輸入自然數(shù)n,將n分解為質因子連乘的形式輸出。例如,輸入756,則程序顯示為756=2*2*3*3*3*7。

include<stdio.h>

include<math.h>

intprime_number(intn)〃判斷整數(shù)n是否為素數(shù)

(

inti,m,t,s=1;//s是一個標志,s=1表示是素數(shù),s=0表示不是素數(shù)

m=sqrt(n);

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

(

t=n%i;

if(t==O)

s=0;

)

returns;

)

voidmain()

(

inti,count=0,n,primes[1000],a[1000];

ints,j=O,k=O;

printf("請輸入一個數(shù)據(jù)n(n>=1):");

scanf("%d",&n);

while(n<=1)

printf("數(shù)據(jù)不合法,請重新輸入數(shù)據(jù):”);

scanf("%d",&n);

}

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

(

s=prime_number(i);

if(s==1)

primes[++j]=i;

)

count=j;

printf("%d=",n);

for(i=1;i<=count&&n>=primes[i];i++)

(

while(n%primes[i]==O)

(

a[k]=primes[i];

k++;

n/=primes[i];

)

)

for(i=0;i<k-1;i++)

printf("%d*”,a[i]);

printf("%d\n",a[k-1]);

)

60.從鍵盤上輸入若干個學生的成績,當成績小于等于0時結束輸入。計算出平均成績,并輸出不及格的

成績和人數(shù)。

#include<stdio.h>

voidmain()

(

floata,grade[100],average,sum=0;〃grade[100]存儲不及格成績,average表示平均成績,sum表示

總成績

inti=O,j,n=O;//i表示不及格人數(shù),n表示總人數(shù)

printf("請輸入一個學生的成績(0-100):");

scanf("%f\&a);

while(a>0&&a<=100)〃要求輸入成績在0?100之間

(

n++;

sum+=a;

if(a<60)

(

grade[i]=a;

i++;

)

printf("請輸入一個學生的成績(0-100):");

scanf("%f;&a);

);

average=sum/n;

printf("平均成績是:%4.2f/%d=%4.2f\n",sum,n,average);

printf("共有%d同學成績不及格,他們的成績如下:\n”,i);

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

(

printf(n%4.2f\t",grade[j]);

)

printf("\n");

)

61.編一函數(shù),將一個字符串的字符反向輸出到屏幕。

include<stdio.h>

#include<string.h>

intmain()

(

chara[81];

intsum=O;

gets(a);

for(inti=strlen(a)-1;i>=0;i-)//strlen是統(tǒng)計字符串長度的函數(shù),它的頭文件是string.h

printf(n%c",a[i]);

printf("\n");

return0;

)

62.例6-5編一函數(shù),從鍵盤輸入一個正整數(shù)n,求n!。

63.編一函數(shù),從鍵盤輸入一個正整數(shù)n,求Xn

#include<stdio.h>

intfun(intn)

(

if(n==0||n==1)

return1;

else

returnn*fun(n-1);

)

voidmain()

(

intn,s;

printf("請輸入一個正整數(shù):'?);

'

scanf('%d">&n);

s=fun(n);

printf("%d!=%d\n,,,n,s);

)

64.編一函數(shù),從鍵盤輸入2個正整數(shù),求最小公倍數(shù)。

include<stdio.h>

voidSwap(int&x,int&y)

inttern;

tem=x;

x=y;

y=tem;

)

intmain()

(

intx,y;

printf(”請分別輸入兩個整數(shù):");

scanf("%d%d,,,&x,&y);

intmax=x*y;

intt;

if(x<y)

Swap(x,y);

t=x%y;

while(t!=O)

(

x=y;y=t;t=x%y;

)

max=max/y;

printf("最小公倍數(shù)為:%d\n",max);

return0;

)

65.輸入1行字符(不超過80個字符卜編一函數(shù),統(tǒng)計該行字符中數(shù)字的個數(shù)。

include<stdio.h>

include<string.h>

voidnumber()

(

chara[81];

inti,sum=0,s;

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

gets(a);

s=strlen(a);

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

(

if(a[i]>=48&&a[i]<=57)

sum++;

)

printf。該字符串中數(shù)字的個數(shù)為:%d\n'\sum);

)

intmain()

(

number();

return0;

)

66.輸入一個5行、6列的整數(shù)數(shù)組,先以5行6列的格式輸出該數(shù)組;從鍵盤輸入一個整數(shù),然后編一函

數(shù),查找該數(shù)是否在數(shù)組中。

/include<stdio.h>

〃此程序,對于如果要查找的數(shù)據(jù)在數(shù)組里,且此數(shù)據(jù)有重復,只輸出查找的第一個數(shù)據(jù)的位置。

〃如果要把所有與查找的數(shù)據(jù)都輸出來,將第20行的代碼return0;去掉。

intmain()

(

inta[5][6];

int

p

溫馨提示

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

評論

0/150

提交評論