C语言上机程序题库_第1页
C语言上机程序题库_第2页
C语言上机程序题库_第3页
C语言上机程序题库_第4页
C语言上机程序题库_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信息科学与工程学院C语言上机150道题参考答案

001.某一门课程考试之后,需要统计考生(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循环结构编写程序打印ASCII码为33-127的字符。#include<stdio.h>

#include<conio.h>

main()

(

inti=33;

while(i<=127)

(

printf("%c",i);

i++;

)

getch();

)

004用do-while,for循环结构编写程序打印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的所有整数,用循环结构。

#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.输入一个整数将其倒着输出,如54321——12345o

(方法一)

#include<stdio.h>

#include<conio.h>

#include<string.h>

main()

(

chara[100];

intlen,i;

printf("请输入一个整数:\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("请输入一个整数:\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.从键盘输入一整数n,计算1*1+2*2+...+n*n的值。

#include<stdio.h>

#include<conio.h>

main()

(

intn,i,s=0;

printf("请输入一个整数:\rT);

scanf(n%d",&n);

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

s=s+i*i;

printf("%d",s);

getch();

)

010.用while循环计算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循环计算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循环计算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的整数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的整数\n");

scanf(n%d",&n);

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

(

result=fac(n);

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

)

elseprintf("输入数据错误");

while(1);

)

14.输入两个正整数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的整数\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("输入数据错误");

while(1);

)

15.用循环语句,计算1~100之间的所有3的倍数之和。

#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的倍数之和为%d”,result);

while(1);

)

16.用循环语句,计算100-200之间的所有7的倍数之和。

#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的倍数之和为%d",result);

while(1);

)

17.输出1-100之间,7的整数倍数或数字尾数为7的数字,统计出这些数字个数。

#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的整数倍数或数字尾数为7的数字个数为%d”,num);

while(1);

)

18.输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。

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("刚才输入的字符中英文字符个数为%d\n",ch);

printf("刚才输入的字符中空格个数为%d\n",space);

printf("刚才输入的字符中数字个数为%d\n",num);

printf("刚才输入的字符中其他个数为%d\n",n);

while(1);

}

19.输入一个整数,统计它有几位数。如输入367,则该数有3位数。

#include<stdio.h>

main()

(

intn,i,j;

i=1;j=0;

printf("请输入一个整数\n“);

scanf("%d",&n);

if(n==0)printf("这个数是1位数”,j);

else{

while(n>=i)

i=10*i;

j=j+1;

)

printf("这个数是%d位数",j);

}

while(1);

)

20.编写程序,输出1到50中间所有能被3整除的正整数。

#include<stdio.h>

main()

(

printf("1到50中间所有能被3整除的正整数如下\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整除的正整数如下\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奇数和。

#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以内的奇数之和为:%d\n”,i);

getch();

)

26.求1到100偶数和。

#include<stdio.h>

#include<conio.h>

main()

inti,s;

s=0;

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

s=s+i;

printffl到100的偶数和是:");

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

getch();

)

27.编程求200以内所有质数(素数卜

#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.从键盘输入一个整数,求该数的绝对值。

#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,并输出相应的信息(不区分大小写卜

#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均为实数,其值由键盘输入。

#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.输入一个整数,判断它能否被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.用整数1~12依次表示1~12月,由键盘输入一个月份数,输出对应的季节英文名称(12~2月为冬季;

3~5月为春季;6~8月为夏季;9-11月为秋季。要求用if嵌套实现\

#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.编写输入整数a,b,c,当a为1时显示b和c之和,a为2时显示b与c之差,a为3时显示b*c之

积,a为4时取b/c之商,a为其他数值时不做任何操作的程序。

#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.编写输入一个整数,将其数值按小于10,10~99,100-999,1000以上分类并显示。

#include<stdio.h>

#include<conio.h>

main()

(

inta;

printf("请输入整数A:\n");

scanf("%d",&a);

if(a<10)

printf("整数%d小于10o",a);

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

printf("整数%d大于等于10且小于100。”,a);

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

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

else

printf("整数%d大于等于1000。",a);

getch();

}

37.编写输入一个按数,当为65时显示A,66时显示B,67时显示C,其他值时显示END的程序。

#include<stdio.h>

#include<conio.h>

main()

(

inta;

printf("请输入整数a:\n");

scanf("%dH,&a);

switch(a)

(

case65:printf("A");break;

case66:printf("B");break;

case67:printf("C");break;

default^rintfC'END1');

)

getch();}

38.编程实现:输入4个整数,要求按由小到大输出。

#include<stdio.h>

#include<conio.h>

main()

(

inta,b,c,d,t;

printf(”请输入4个整数: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.企业发放的奖金根据利润的提成,利润I低于或等于10万元的,奖金可提10%;利润高于10万元低

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

低于20万的部分仍按上述办法,高于20万元部分按5%提成;利润超过40万元时,低于40万元的部分

按上述办法,高于40万元部分按1%提成。从键盘输入当月利润I,求应发奖金部分。

#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位的正整数,分别打印出每一位数字。

#include<stdio.h>

intmain(void)

(

intx,i=0;

do{

printf("请输入数字:");

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

if(x>99999||x<0)printf("输入的数据不合法.请重新输入!\n“);

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

while(x!=O)

(

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

x=x/10;

i++;

)

printf(,r\n这个数共有%d位\n”,i);

return0;

)

42.从键盘输入三个正整数,判断这三个数能否构成三角形。

#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.编写输入两个整数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.编程实现:从键盘输入三个正整数,判断它们是否构成直角三角形。

#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.编程实现:从键盘输入三个正整数,判断它们是否构成等腰三角形。

#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.从键盘输入一个整数,判断其是否素数。

#include<stdio.h>

main()

(

inti,j=O,a;

printf("请输入一个整数\己);

scanf(H%d",&a);

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

(

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

(

if(a%i==O)

j++;

)

if(j>2)

printf("这不是素数\n");

)

else

(

printf("这是素数\n“);

)

)

if(a<0)

printf(“输入错误】

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

printf("这不是素数)

)

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.编写程序从键盘输入两个不等于零的正整数a,b(a〈b),求它们之间的几何级数的和°#include〈stdio.h>

#include<math.h>

voidmain()

(

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

printf("从键盘输入两个不等于零的正整数a,b(a〈b八n");

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

printf("\n从键盘输入两个不等于零的正整数c,d■使数据以c的d次方增长\n");

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

e=a*pow(c,d);

f=b*pow(c,d);

t=e+f;

printf("\n%d的几何级数=%d\n”,a,e);

printf("%d的几何级数

printf("%d,%d之间的几何级数的和二%d\n",a,b,t);

52.编写程序,统计从键盘输入的字符的个数(回车换行符也是一个字符),当遇到结束标志时程序结束。

#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.求两个正整数的最大公约数和最小公倍数。

#include<stdio.h>

main()

(

intp,r,n,m,temp;

printf("请输入两个正整数,用逗号隔开:");

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("这两个数的最大公约数是:%d\n”,n);

printf("这两个数的最小公倍数是:%小壮》/叫

)

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,即什么都不执行

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的回文素数。

#include<stdio.h>

#include<math.h>

voidprime_number(intn)//判断整数n是否为素数

(

inti,m,t,s=1;//s是一个标志,s=1表示是素数,s=0表示不是素数

m=sqrt(n);

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

t=n%i;

if(t==O)

s=0;

}

if(s==1)〃如果s=1,n就是素数

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

)

voidhuiwen(intn)

(

intj,k,a;

k=n;

a=0;

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

(

j=k%10;

k=k/1O;

a=a*10+j;

)

if(a==n)〃如果a=n,那么n就是回文数,然后再调用素数判断函数判断n是否为素数

prime_number(n);

)

voidmain()

(

inti;

printf(H1OOO以内的回文素数有:\n“);

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

huiwen(i);

)

58.自守数是指一个数的平方的尾数等于该数自身的自然数。如:762=5776,求出2000000以内的自守

数。

#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.输入自然数n,将n分解为质因子连乘的形式输出。例如,输入756,则程序显示为756=2*2*3*3*3*7。

include<stdio.h>

include<math.h>

intprime_number(intn)〃判断整数n是否为素数

(

inti,m,t,s=1;//s是一个标志,s=1表示是素数,s=0表示不是素数

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("请输入一个数据n(n>=1):");

scanf("%d",&n);

while(n<=1)

printf("数据不合法,请重新输入数据:”);

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时结束输入。计算出平均成绩,并输出不及格的

成绩和人数。

#include<stdio.h>

voidmain()

(

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

总成绩

inti=O,j,n=O;//i表示不及格人数,n表示总人数

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.编一函数,将一个字符串的字符反向输出到屏幕。

include<stdio.h>

#include<string.h>

intmain()

(

chara[81];

intsum=O;

gets(a);

for(inti=strlen(a)-1;i>=0;i-)//strlen是统计字符串长度的函数,它的头文件是string.h

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

printf("\n");

return0;

)

62.例6-5编一函数,从键盘输入一个正整数n,求n!。

63.编一函数,从键盘输入一个正整数n,求Xn

#include<stdio.h>

intfun(intn)

(

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

return1;

else

returnn*fun(n-1);

)

voidmain()

(

intn,s;

printf("请输入一个正整数:'•);

'

scanf('%d">&n);

s=fun(n);

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

)

64.编一函数,从键盘输入2个正整数,求最小公倍数。

include<stdio.h>

voidSwap(int&x,int&y)

inttern;

tem=x;

x=y;

y=tem;

)

intmain()

(

intx,y;

printf(”请分别输入两个整数:");

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("最小公倍数为:%d\n",max);

return0;

)

65.输入1行字符(不超过80个字符卜编一函数,统计该行字符中数字的个数。

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。该字符串中数字的个数为:%d\n'\sum);

)

intmain()

(

number();

return0;

)

66.输入一个5行、6列的整数数组,先以5行6列的格式输出该数组;从键盘输入一个整数,然后编一函

数,查找该数是否在数组中。

/include<stdio.h>

〃此程序,对于如果要查找的数据在数组里,且此数据有重复,只输出查找的第一个数据的位置。

〃如果要把所有与查找的数据都输出来,将第20行的代码return0;去掉。

intmain()

(

inta[5][6];

int

p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论