C语言习题及解答Word文档下载推荐.docx

上传人:b****4 文档编号:6449101 上传时间:2023-05-06 格式:DOCX 页数:39 大小:50.60KB
下载 相关 举报
C语言习题及解答Word文档下载推荐.docx_第1页
第1页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第2页
第2页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第3页
第3页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第4页
第4页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第5页
第5页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第6页
第6页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第7页
第7页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第8页
第8页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第9页
第9页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第10页
第10页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第11页
第11页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第12页
第12页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第13页
第13页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第14页
第14页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第15页
第15页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第16页
第16页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第17页
第17页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第18页
第18页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第19页
第19页 / 共39页
C语言习题及解答Word文档下载推荐.docx_第20页
第20页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言习题及解答Word文档下载推荐.docx

《C语言习题及解答Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言习题及解答Word文档下载推荐.docx(39页珍藏版)》请在冰点文库上搜索。

C语言习题及解答Word文档下载推荐.docx

s2=4*PI*r*r;

V=4.0/3*PI*r*r*r;

L=%.2f,s1=%.2f,s2=%.2f,V=%.2f\n"

 

L,s1,s2,V);

5、有三个电阻r1、r2、r3并联,编写程序计算并输出并联后的电阻r。

已知电阻并联公式为:

{floatr,r1,r2,r3;

Inputr1,r2,r3:

r1,&

r2,&

r3);

r=1/(1/r1+1/r2+1/r3);

r=%.2f\n"

r);

6、由键盘输入一个10-99之间的整数,将该数分解,分别输出其个位数字和十位数字。

例如,输入85,输出:

5,8。

提示:

用算术运算中的整除和取余运算实现。

{intx,a,b;

%d"

x);

a=x%10;

b=x/10;

printf(“a=%d,b=%d\n"

a,b);

7、编写程序,输入三角形的三条边,计算并输出三角形的面积。

(注意输入的三条边必须要能构成一个三角形)求三角形的面积公式为

其中s=(a+b+c)/2。

math.h>

scanf("

c);

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

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

printf("

8、周期为T秒的人造卫星离地面

的平均高度H的计算公式为:

其中:

M=6×

1024kg是地球质量,R=6.371×

106m是地球半径。

编写程序,输入人造卫星的周期T,计算并输出人造卫星离地面的高度H。

算法提示:

求xy结果的数学函数是pow(x,y)

{doubleM=6E24,R=6.371E6,T,H,x;

InputT:

%lf"

T);

x=6.67E-11*M*T*T/(4*PI*PI);

H=pow(x,1.0/3)-R;

H=%.2E\n"

H);

9、求任意三个整数的平均值。

要求:

输入数据与输出结果都应有相应的提示信息。

且输出数据取小数点后两位数字显示。

{floata,b,c,ave;

printf(“Input3numbers:

”);

ave=(a+b+c)/3;

printf(“average=%.2f\n"

ave);

10、输入一个字符,并输出。

其中有一个条件是如果该字符是小写的英文字母,则需把它转换成大写字母再输出。

{charch;

if(ch>

='

a'

&

ch<

z'

ch=ch-32;

%c\n"

ch);

11、输入年号,判断并输出该年是否为闰年。

所谓闰年,是指能被4整除,但不能被100整除;

或能被400整除的年份。

{intyear;

Inputyear:

year);

if(year%4==0&

year%100!

=0||year%400==0)

%disaleapyear.\n"

year);

else

%disnotaleapyear.\n"

12、编写程序,输入一个字符存入变量ch中,根据该字符的ASCII码值判断并输出字符的类型,即字母(alpha)、数字(numeric)或其他字符(other)

if((ch>

A'

Z'

)||(ch>

))

alpha\n"

elseif(ch>

0'

&

ch<

9'

numeric\n"

else

other\n"

13、有一个函数,编写程序,输入x的值,计算并输出y值。

{doublex,y;

Inputx:

if(x<

-1)

y=x*x*x-1;

elseif(x<

=1)y=-3*x+1;

=10)

y=3*exp(2*x-1)+5;

elsey=5*x+3*log10(2*x*x-1)-13;

y=%.2f\n"

y);

14、从键盘输入三个数,代表三条线段的长度。

请编写程序,判断这三条线段组成的三角形是什么类型(等边、等腰、不等边或不能构成三角形)。

{floata,b,c;

Inputa,b,c:

if(a+b<

=c||b+c<

=a||c+a<

=b)

Itisnotatriangle!

\n"

elseif(a==b&

b==c)

Itisaequilateraltriangle!

elseif(a==b||b==c||c==a)

Itisaisoscelestriangle!

Itisacommontriangle!

15、简单选择界面的编程,要求用switch实现多分支。

从键盘输入整数,输出不同的字符串:

输入1,输出Goodmorning;

输入2,输出Goodafternoon;

输入3,输出Goodevening;

输入4,输出Goodnight;

输入其它数字,输出Bye-bye。

{intx;

printf("

switch(x)

{case1:

Goodmorning\n"

break;

case2:

Goodafternoon\n"

case3:

Goodevening\n"

case4:

Goodnight\n"

default:

Byebye\n"

}

16、从键盘输入若干整数,以0结束,判断并输出其中的最大数。

{intx,max;

Scanf(“%d”,&

max=x;

While(x!

=0)

{if(x>

max)max=x;

max=%d\n"

max);

17、输入一行字符,以回车键作为结束标志,分别统计出大写字母、小写字母、空格、数字和其它字符的个数。

while(ch!

\n'

cn<

a=a+1;

b=b+1;

elseif(ch=='

'

c=c+1;

elseif(ch>

d=d+1;

e=e+1;

#include<

inta=0,b=0,c=0,d=0,e=0;

Inputastring:

while((ch=getchar())!

{if(ch>

b=b+1;

elseif(ch=='

)//ch==32

%d,%d,%d,%d,%d\n"

a,b,c,d,e);

数学表达式的写法:

x=6.67E-11*M*T*T/4*PI*PI;

×

x=6.67E-11*M*T*T/(4*PI*PI);

x=6.67E-11*M*T*T/4/PI/PI;

x=pow(6.67E-11*M*T*T/(4*PI*PI),1.0/3);

√2、scanf、printf函数的格式:

 scanf("

//双引号间不要加其它任何符号

%lf%lf%lf"

//double型输入时应使用%lf

 printf("

area);

//printf函数中常加其它说明字符

数学函数的使用方法;

同时需加上#include<

  doublepow(doublex,doubley);

4、方法一:

使用scanf函数

//读入第一个字符

while(ch!

{

if(…)

//读入其它字符

//循环之前读入第一个字符,以便第一次判断表达式是否成立;

循环体最后读入下一个字符,以便判断循环是否继续执行

5、5/9.0*(F-32)

5.0/9.0*(F-32)

5*(F-32)/9

18、分别用while、do-while和for语句计算(即求1!

+2!

+3!

+…+20!

),并试着简化程序。

inti;

doublefact,sum;

i=1;

sum=0;

fact=1;

while(i<

=20)

fact=fact*i;

sum+=fact;

i++;

%.0lf\n"

sum);

19.计算:

intn=1;

doublesum=0;

while(n<

{

sum+=n*n+n-2.3;

n++;

%lf\n"

20、输出所有的水仙花数。

水仙花数是指一个3位数,各位数字的立方和等于该数本身,例如153=13+53+33。

分析:

对每一个3位数来说,分解出它们的个位、十位和百位,然后判断它们的立方和是否等于该数本身。

{inti,a,b,c;

Thenarcissusnumbersare:

for(i=100;

i<

=999;

i++)

a=i/100;

b=i%100/10;

c=i%10;

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

%d"

i);

21.

之和。

inti;

doublea,b,sum=0;

a=2;

b=1;

for(i=1;

i<

=20;

i++)

{

sum+=a/b;

a=a+b;

b=a-b;

sum=%lf\n"

22、用循环语句编写程序,输出如下图案:

******

*****

****

***

**

*

inti,j;

=6;

i++)//输出一行

for(j=1;

j<

=i-1;

j++)//输出空格

=7-i;

j++)//输出*

*"

//*后有个空格

23.

a和n均由键盘输入。

inta,n,i;

doublex=0,sum=0;

Inputa,n:

%d%d"

n);

=n;

{x=x*10+a;

sum+=x;

sum=%.0lf\n"

24、输出3~100之间的全部素数

voidmain()

{intm,k,i;

for(m=3;

m<

=100;

m+=2)

{k=sqrt(m);

for(i=2;

=k;

{if(m%i==0)break;

if(i==k+1)

%-5d"

m);

25、从键盘输入10个整数存放在一个一维数组中,找出最大的数并输出该数及其下标。

inta[10],i,max,k;

for(i=0;

10;

a[i]);

max=a[0];

k=0;

for(i=1;

if(max<

a[i])

{max=a[i];

k=i;

a[%d]=%d\n"

k,max);

26、设有一个已按从大至小顺序排好的数列存放在一维数组中,依次为81,76,66,61,54,47,36,30,22,16。

现输入一个数,仍按原来的排序规律将其插入到数组中,试编程。

inta[11]={81,76,66,61,54,47,36,30,22,16};

intx,i;

for(i=9;

i>

=0;

i--)

 if(a[i]<

x) a[i+1]=a[i];

 elsebreak;

a[i+1]=x;

=10;

%5d"

a[i]);

另解

inta[11]={81,76,66,61,54,47,36,30,22,16};

intx,i,j;

Inputanumber:

for(i=0;

=9;

if(a[i]<

x)break;

for(j=9;

j>

=i;

j--)

a[j+1]=a[j];

a[i]=x;

27、从键盘输入N个数(在数组中从下标为0的位置开始存放),N由下面的符号常量定义。

用冒泡法将下标为m到下标为n的数按降序排序。

m和n通过键盘输入。

假设0≤m<N-1,m<n≤N-1

#defineN15

#defineN15

{inta[N],i,j,t,m,n;

N;

m,&

n-m;

for(j=m;

n-i;

j++)

if(a[j]<

a[j+1])

{t=a[j];

a[j]=a[j+1];

a[j+1]=t;

28、二分法又称为折半查找法,它用于在一个有序的序列上查找指定的数。

其基本思路是:

先确定待查元素的范围,将其分成两半,然后测试中间位置元素的值,如果相等,则找到待查元素。

如果待查元素的值大于中间元素,就缩小待查范围,只测试中间元素之后的元素;

反之,测试中间元素之前的元素,测试方法同前。

试编写程序,应用折半查找法从存有10个整数的a数组中对输入的关键字m进行查找,若找到,输出其下标值;

反之,输出提示。

#include<

#defineN10

{inta[N]={6,9,15,25,26,36,48,53,60,65};

intlow=0,high=N-1,mid,m,found=0;

请输入查找数据:

m);

if(m>

=a[low]&

=a[high])

while(!

found&

low<

=high)

{mid=(low+high)/2;

if(a[mid]==m)

found=1;

elseif(m>

a[mid])

low=mid+1;

elsehigh=mid-1;

if(found)printf("

元素值为%d的数组下标是%d。

m,mid);

elseprintf("

未找到。

29、输入一个M行M列的二维数组,计算两条对角线上的元素之和(放在一个变量中)。

M由下面的符号常量定义:

#defineM5

#defineM5

inta[M][M],i,j,sum=0;

Inputarraya:

M;

for(j=0;

j<

j++)

a[i][j]);

if(i==j||i+j==M-1)

sum+=a[i][j];

sum=%d\n"

30、输入一个M行M列的二维数组,分别计算两条对角线上的元素之和。

inta[M][M],i,j,sum1=0,sum2=0;

……//输入a

{

sum1+=a[i][i];

sum2+=a[i][M-i-1];

sum1=%d,sum2=%d\n"

sum1,sum2);

31、输入一个M行M列的二维数组,计算四周元素之和。

{scanf("

if(i==0||i==M-1||j==0||j==M-1)

32、有一个班,有4个学生,5门课。

①求各门课的平均分;

②找出有两门以上课程不及格的学生,输出它们的学号和全部课程成绩及平均成绩。

③找出平均成绩在90分以上或全部课程成绩在85分以上的学生,输出它们的学号和全部课程成绩。

#defineM4

#defineN6

inti,j,count;

floatsum,average;

inta[M

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2