C语言练习题及答案docx.docx

上传人:b****7 文档编号:9578439 上传时间:2023-02-05 格式:DOCX 页数:156 大小:207.94KB
下载 相关 举报
C语言练习题及答案docx.docx_第1页
第1页 / 共156页
C语言练习题及答案docx.docx_第2页
第2页 / 共156页
C语言练习题及答案docx.docx_第3页
第3页 / 共156页
C语言练习题及答案docx.docx_第4页
第4页 / 共156页
C语言练习题及答案docx.docx_第5页
第5页 / 共156页
点击查看更多>>
下载资源
资源描述

C语言练习题及答案docx.docx

《C语言练习题及答案docx.docx》由会员分享,可在线阅读,更多相关《C语言练习题及答案docx.docx(156页珍藏版)》请在冰豆网上搜索。

C语言练习题及答案docx.docx

C语言练习题及答案docx

1•己知三角形的三边长为d,b,C,计算三角形面积的公式为:

area=sqrt(s(s-a)(s-b)(s-c))»其中s=(a+b+c)/2o

试編程从键盘输入a,b,c的值(假设a,b,c的值可以保证其构成一个三角形),计算并输出三角形的面积。

**输入格式要求:

"鮎f\%f,鮎厂提示信息:

"Inputa,b,c<

**输出格式要求:

"area=%.2f\n*

程序运行示例如下:

Inputa,b,c:

3,4,5

area=6.00

答案:

#include

#include

intmain(void)

{

floatazbzc,s,area;

printf(nlnputa/b/c:

n);

scanf(,,%f/%t%f,/&a,&b,&c);

s=(a+b+c)/2;

area=sqrt(s*(s-a)拿(s•b)*(s•c));

printf("area=%.2f\n"/area);

return0;

}

1

2•从键盘任意输入一个4位整数,编程计算并输出它的逆序数•例如:

输入1234,分离出千位J百位2、十位3和个位4,然后计4*1000+3*100+2*10+1=4321,并输出4321。

材要求输入提示信息为:

粋要求输入格式为:

"%d"

林要求输出格式为:

3d"

程序运行示例如下:

1234此处为输入

4321此处为输出

答案:

#include

intmain(void)

{

inta,bzc,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;

printfC,%dM,a);

return0;

3•有关输入输出问题。

输入为:

12aZ

b/

运行结果为:

1,2,a,b,123.300000,65535

谙改正程序中的错误,使它能得出正确的结果。

林include

main()

{

intb;

unsignedshorta=65535;

shortk=a;

charc,d:

intf,g;

b=(1234.0-1)/10;

sesnf&c);

scanf("We",&d):

scanf("鴛d",&『);

scanf*("曙d",&g);

printf("%c,%c,%c,%c,%F,Wd",c,d,f,g,b,k):

}

答案:

ftinclude

main()

{

doubleb;

inta=65535;

charc,d;

intf.g;

b=(1234.0-1)/10;

scanf「%c蔦&c);

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

scanf(”%c\U&f);

scanf(,,%c"/&g);

printf(,,%cz%cz%c/%c/%f/%d,,/c,d,f,g,b,a);

}

4•输入一行字符,统计其中的英文字符、数字字符、空格字符,以及其他字符的个数。

请找出以下程序的错误,并改正之。

存include

^include〈string.h〉

defineARR_STZE=80;

main()

{

charstr[ARR_SIZE]:

intlen,i;

intletter^,digit=0,space=0,other=0:

printf("谙输入一个字符串:

");

gets(str);

len=strlen(str);

for(i=0;i

{

if(a=

{

letter++;

}

elseif(0=

{

digit++;

}

elseif(str[i]=>')

{

space++;

}

else

other++;

}

print""英文字符数:

%d\nz\letter):

printfC数字字符数:

%d\n\digit);

printfC空格数d\n",space):

printf(z,其他字符数:

%d\nz\other);

}

答案:

#include

defineARRSIZE80main()

{

charstr[ARR_STZE]:

intlen,i;

intletter=0,digit=0,space=0,other=0:

printf("谙输入一个字符串:

");

gets(str);

len=strlen(str);

for(i=0;i

{

ifCa"<=str[i]&&str[i]<='/11'A'<=str[i]&&str[i]<='Z')

{

letter++;

}

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

{

digil++;

}

elseif(str[i]='')

{

space++;

}

else

other++;

}

printf(z,英文字符数:

%d\nz\letter):

printfC数字字符数:

%d\n\digit):

printfC空格数:

%d\n",space);

printf(z,其他字符数:

%d\nz\other);

}

5•对输入的一个数判断是否妊索数.所谓索数超指这个数只能被1和自身整除。

要求在主函数输入一个数,调用函数Fun()判断该数是否是素数。

打印信息在主函数中进行。

例如:

从键盘输入5,5是素数则打印如卜-信息:

"5isaprimenumber\又如:

从键盘输入4,4不是素数则打卬如下信息:

"4isnotaprimenumber\负数、0和1均不是素数。

对输入的数据要考虑数据的合法性,不满足条件的数要重新输入直到满足条件为止。

不能使用全局变量,不按给定的函数原型编写程序

不给分。

Fun()函数原型为:

intFun(intm):

**输入数据提示信息:

"Pleaseinputanumber:

\n"

粋输入数据格式为:

羯『

**输出格式要求:

若是索数输出数据格式为:

*%disaprimenumber\nw

若不是索数输出数拯格式为:

"%disnotaprimenumber\n^

不完號答案:

#include

intFun(inta)

{

inti;

if(a>l)

{

ford=2;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)

printfC*%disnotaprimenumber\n*,b):

else

printrC%disaprimenumber\n^,b):

}

参考答案:

^include"sldio.h"

intFun(intm):

intmain()

{

intm,flag;

printf(^Pleaseinputanumber:

\n^):

}

whi1e(m<2);//elflag=Fun(m);//3if(flag)//I

printfC%disaprimenumber\n*,m);

else

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

return0:

}

intFun(intm)//2

{

inti,flag=1;//I

for(i=2;i

{

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

{

flag=0;//I

break;

}

}

returnflag;//2

}

5

6•求1898

现將不超过2000的所有素数从小到大排成第一行,.第二行上的每个数都等于它“右肩”上的素数与“左肩”上的素数Z差。

请编程求出:

第二行数中是否存在这样的若干个连续的整数,它们的和恰好是1898?

假如存在的话,又有几种这样的情况?

**输入格式耍求:

提示信息:

"Therearefollwingprimesinfirstrow:

\n?

**输出格式要求:

'(%d).%3d,%d\『

程序运行示例如下:

Therearcfoilwingprimesinfirstrow:

(1)・101,1999

(2).89,1987

(3).53,1951

(4).3,1901

答案:

^include

^defineN330

inta[N];

intmain()

intc=0,b=0,d=1:

inti=0,j=0,k=0;for(i=3;i<=2000;i++){

for(j=2;j

{

if(i%j==0)break;else

continue;

}

if(j==i)

{

a[k]=i;

好+;

}

else

continue;

}

printf('"Therearefollwingprimesinfirstrow:

\n">;

for(c=329;c>=0;c--)

for(b=c+1;c

if(b<330)

{

if((a[b]一a[c])==1898)

{

printfC(%d).%3d%d\n",d,a[c],a[b]);

d++;

}

else

continue;

}

else

break;

}

7.从键盘任意输入一个整数m,若m不是素数,则对m进行质因数分解,并将m表示为质因数从小到大顺序排列的乘积形式输出,否则输出"Itisaprimenumber".例如,用户输入90时,程序输出90=2*3*3*5;用户输入17时,程序输出"Itisaprimenumber*o

输入提示信息:

"Inputm:

"

输入格式:

先d"

输出格式:

是素数时输出"Itisaprimenumber'n"

否则输出用Wd=\驾d*"

运行示例1:

Tnputm:

90Z

90=2*3*3*5

运行示例2:

Inputm:

13/

Itisaprimenumber

答案:

^include

#include

intTsPrimc(intx);

voidOutputPrimeFactor(intx):

intmain()

{

intm;

printf(^Tnputm:

");

scanf&id);

if(IsPrime(m))

{

printf(^ItisaprimenumberXn^):

}

else

{

printfC%d=",m);

OutputPrimcFiictor(m);

}

return0:

}

intIsPrime(intx)

{

inti,flag=l;

intsquarcRoot=sqrt(x):

if(x<=!

{

flag=0;

}

for(i=2:

i<=squarcRoot&&T1ag:

i++)

{

if(x%i==0)

{

flag=0;

}

}

returnflag;

voidOutputPrimeFactor(intx)

inti;

for(i=2;i〈x;i++)

{

if(x%i==0)

{

printfC%d♦",i);

OutputPrimeFactor(x/i);

return;

}

}

printfr%d^,x);

}

7

&

将任一整数转换为二进制形式。

**输入格式要求%d〃提示信息:

,zInputnumber/7

**输出格式要求:

"numbcrofdecimalform:

%d\"it\'sbinaryform:

程序运行示例如下:

Inputnumber:

876

numberofdecimalform:

876

it'sbinaryform:

00000000000000000000001101101100

答案:

#inelude

#include

intmainO

{

inta;

charb[32];

printf(z,Inputnumber/');

scanf("%d",&a);

printf(z,nuniberofdecimalform:

%d\nz,,a):

printf(z,it\'sbinaryform:

”);

printf("%s\n",itoa(a,b,2));

}

8

9.

求自然数n最近的素数k,k>n。

***输入提示信息**:

"Inputn:

"

***输入数据格式%d"

***输出数据格式細:

理d〃

示例

输入:

257

输出:

Pleaseinputn:

263

答案:

#include

intinain()

{

intn,i二1,k;

printfC'Plcascinputn:

");

scanf&n);

for(k=n+l;i;k++)

{

for(i=2;i

if(k%i==0)

break;

else

continue;

if(i==k)

{

printfk);

i=0;

break;

}

}

}

9

10.

如果一个正整数ni的所有小于ni的不同因子(包括1)加起来止好等于m本身,那么就被称它为完全数。

它是指这样的一些特殊的口然数,它所有的真因子(即除了自身以外的约数)的和,恰好等于它本身。

注意:

1没有真因子,所以不是完全数。

例如,6就是一个完全数,是因为6=1+2+3。

请编写一个判断完全数的函数IsPerfect(),然后判断从键盘输入的整数是否是完全数。

要求:

按如下原型编写判断完全数的函数,若函数返冋0,则代表不是完全数,若返冋1,则代表是完全数。

intIsPcrfcct(intx);

**要求输入提示信息为:

"Inputm:

\rT

粋要求输入格式为:

〃%

**要求输出格式为

"%disaperfectnumber\n,/

isnotaperfectnumbcr\n,/

注:

不能使用指针.结构体.共用体.文件.goto.枚举类型进行编程,主函数不能使用intmain和return0。

答案:

#include

intTsPerfect(intx);

intmain()

{

intm;

printf("Inputm:

\rT);

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

if(IsPerfect(m))

printf(z,%disaperfectnumber\n,,>m);

else

printf(z,%disnotaperfectnumber\nz,,m);

}

intIsPerfect(intx)

{

inti=1,b=0;

for(i=1:

i

if(x%i二二0)

{

b=b+i;

continue;

}

else

continue;

if(b==x)

return1;

else

return0;

}

10

11.

用函数编程计算两整数的最人值,在主函数中调用该函数计算并输出从键盘任意输入的两整数的最人值。

**输入格式要求:

提示信息:

"Inputa,b/

**输出格式要求:

"max=%d\n"

程序运行示例如下:

Inputa,b:

5,8

max=8

答案:

ttincludc

intmax(inta,intb)

辻(a>=b)

returna;

else

returnb;

}

main0

{

inta=0,b=0;

printf("Iriputa,b:

");

scanf("%d,%d",&a,&b);printfC'max=%d\n",max(a,b));

}

11

12.

利用求阶乘函数FactO,编程计算并输出1!

+2!

+…+n!

的值。

**输入格式要求:

”%u"提示信息:

"Inputn(n>0):

"

**输出格式要求:

"sum=%lu\n"

答案:

#include

intsums(inti);

main0

{

unsignedintn=0;

unsignedlongb二0;

printf(,zTnputn(n〉0):

");

scanf&n);

for(b;n;n一)

{

b=b+sum_s(n);

}

printf("sum=%lu\n",b);

}

intsums(inti)

{

inta;

for(a二1;i;i―)

{

if(i>1)

a=a*i;

else

a=a*1;

}returna;

办公室管理教务管理科研管理人事管理退出系统

财务管理图书管理设备管理后勤管理

请您在上述功能屮选择(08):

提示:

输出如下格式

=======大学信息管理系统=======

printf(“0.退出系统\n");

printfC\n〃);

printf(”请您在上述功能中选择(08):

\n");

14.

利用静态变量计算n的阶乘。

**输入格式要求:

〃側〃提示信息:

〃Inputn:

**输出格式要求:

"%d!

=%ld\n"

程序运行示例如下:

Inputn:

10

1!

=1

2!

=2

3!

=6

4!

=24

5!

=120

6!

=720

7!

=5040

8!

=40320

9!

=362880

10!

=3628800

答案:

#include

intsum_s(inti);

main()

I

unsignedintn二0,b二1;

printf("Inputn:

");

scanf&n);

for(b=l;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;

else

a=a*1;

}

returna;

}

14

15.

写一个程序从键盘输入两个整数,然后显示输出第1个数除以第2个数的结果。

例如,输入123和

12,程序的输出结果格式如下:

12)123

提示:

使用求余运算符获得余数,使用整数除法获得商。

**输入格式耍求:

驾d%d〃提示信息:

〃请输入两个整数:

”**输出格式要求:

13dRemainder=%d\n"

\n

"%5d)%5d"

答案:

ttincludc

main()

inta,b,c,d;

printfC请输入两个整数:

");

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

c=a/b;

d=a%b:

printf(/z%13dRemainder=%d\n",c,d);

printfC\n〃);

printf(z,%5d)%5d",b,a);

}

1516.

写一个程序,将接收的摄氏温度转换为对应的华氏温度。

程序应显示如下的提示信息:

Pleaseinputcels:

然后输入一个十进制数并iHl车,然后程序以合适的消息形式输出转换后的华氏温度。

程序使用如下的公式完成转换:

摄氏温度=5.0*(华氏温麼-32.0)/9.0**输入格式要求:

If"提示信息:

"Pleaseinputcels:

**输出格式要求:

"Thefahris:

%.2『"

答案:

ttincludc

main()

{

doublea,b;

printf(^Pleaseinputcels:

”);

scanf&a);

b=(9.0*a)/5.0+32.0;

printf(z,Thefahris:

%.2f",b);

}

16

17.

写一个程序,将接收的华氏温度转换为对应的摄氏温度。

程序应显示如下的提示信息:

Pleaseinputfahr:

然后输入一个十进制数并iHl车,然后程序以合适的消息形式输出转换后的华氏温度。

程序使用如下的公式完成转换:

摄氏温度=5.0*(华氏温度-32.0)/9.0

**输入格式要求:

If"提示信息:

"Pleaseinputfahr:

**输出格式要求:

"Thecelsis:

%.2『"

答案:

ttincludc

main()

I

doublea,b;

printf(^Pleaseinputfahr:

”);

scanf&a);

b=5.0*(a-32.0)/9.0;

printf("Thecelsis:

%.2f",b);

}

17

18.

编写一个程序,输入一个3位整数,要求逆序输出对应的数。

例如:

输入123,则输出321。

**输入格式耍求:

"%d"提示信息:

"Pleaseenterapositiveinteger:

**输出格式要求:

"%d--〉%d\n"

程序运

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1