C语言答案.docx
《C语言答案.docx》由会员分享,可在线阅读,更多相关《C语言答案.docx(84页珍藏版)》请在冰豆网上搜索。
C语言答案
1、
47754
2、
二进制:
10110001
八进制:
261
十六进制:
B1
3、
0111111111111111
4、
1111111111111110
5、
89
6、
01001001
7、
10010100
8、
-39
9、
11100110
10、
00001000
11、t=0改为t=1;
it=t*1改为t=t*I;
12、
#include
voidmain()
{printf(“*\n“);
printf(“**\n“);
printf(“**\n”);
printf(“**\n“);
printf(“*\n“);
}
13、
#include
voidmain()
{
inta;
a=2+3+4;
printf(“%d”,a);
}
1.
(1)=sin(x)*sin(x)*(a+b)/(a–b)
(2)x>20&&x<30||x<-100
(3)=0.5*(a*x+(a+x)/(4*a))
(4)=sqrt(sqrt(sin(x)*sin(x)*sin(x)*sin(x)*sin(x)))
(5)=3*a*e/(c*d)
(6)~a>>4
2.
(1)2.5+-1=3.5
(2)1+0=1
(3)0
3
n=m%10+m/10%10*100+m/100*10/*n为bac,m为abc*/
4
(1):
1
(2):
1
(3):
1
(4):
3
(5):
1
(6):
0
(7):
0
(8):
6
5
(C>=65&&C<=90)?
(C=C):
(C=C+32)
第三章
1.
#include
voidmain()
{
floatpi,r,l,s;
pi=3.14;/*定义PI的值*/
printf("Pleaseinputthe\'r\':
\n");
scanf("%f",&r);
l=2*pi*r;/*计算周长*/
s=pi*r*r;/*计算面积*/
printf("周长=%.2f\n面积=%.2f\n",l,s);
}
运行结果:
Pleaseinputthe'r':
5
周长=31.40
面积=78.50
2.
#include
#include
voidmain()
{
inti=0;
charc;
printf("输入一串字符");
while((c=getchar())!
='\n')
/*利用getchar的特性
进行对c的逐个赋值*/
{
i++;
putchar(c);
}
printf("\n位数为:
%d\n",i);
}
运行结果:
输入一串字符china
china
位数:
5
3.
#include
voidmain()
{
inta,b,x,y;
printf("请输入头数脚数:
\n");
scanf("%d%d",&a,&b);
if(b%2==0&&b>=2*a)
{
x=(b-2*a)/2;
y=a-x;
printf("鸡数:
%d\n兔数:
%d\n",y,x);
}
else
printf("Dataiserror");
}
运行结果:
请输入头数脚数:
2464
鸡数:
16
兔数:
8
4.
#include
#include
voidmain()
{
chara,b,c;
printf("正序输入为:
");
a=getche();
b=getche();
c=getche();
/*顺序读入三个字符*/
printf("\n逆序输出为:
");
putchar(c);
putchar(b);
putchar(a);
printf("\n");
/*倒序输出三个字符*/
}
第四章
1.
算术运算是有加,减,乘,除组成的表达式;
关系运算是有>,<,<=,>=,==,!
=等关系运算符组成的表达式;
逻辑运算有与(&&),或(||),非(!
)等逻辑运算符组成的表达式!
2.
111001
3.
0101
4
C语言中用'1'表示“真”,用'0'表示“假”
当遇到非零数时,系统判断为真;遇到零时,为假
5.
#include
voidmain()
{
intx;
printf("Pleaseinput\'x\'\n");
scanf("%d",&x);
if(x>=0)
x=x;
else
x=-x;
printf("Absolutelyis%d\n",x);
}
运行结果:
Pleaseinput'x'
-359
Absolutelyis359
运行结果:
正序输入为:
956
逆序输出为:
659
5.
#include
#include
voidmain()
{
floata,b,c,s,area;
printf("Pleaseinput:
\n");
scanf("%f%f%f",&a,&b,&c);
if(a+b<=c||a+b<=b||
b+c<=a||a<=0||b<=0||c<=0)
/*满足三角形边长条件*/
printf("Dataiserror\n");
else
{
s=0.5*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("Areais%.2f\n",area);
}
}
运行结果:
Pleaseinput:
457
Areais9.80
6.
#include
voidmain()
{
inta,b,c;
printf("Pleaseinput3numbers\n");
scanf("%d%d%d",&a,&b,&c);
if(a
if(bprintf("Max=%d\n",c);
else
printf("Max=%d\n",b);
elseif(aprintf("Max=%d\n",c);
else
printf("Max=%d\n",a);
}
运行结果:
Pleaseinput3numbers
73-5482
Max=82
7.
#include
#include
voidmain()
{
floata,b,c,delta;
doublex;
printf("Pleaseinput:
\n");
scanf("%f%f%f",&a,&b,&c);
delta=b*b-4*a*c;
/*进行delta判断*/
if(delta<0)
printf("Norealroot\n");
elseif(delta==0)
printf("Onlyoneroot=%f\n",-b/(2*a));
else
{
x=-b+sqrt(delta)/(2*a);
printf("Onerootis:
%f\n",x);
x=-b-sqrt(delta)/(2*a);
printf("Theotherrootis:
%f\n",x);
}
}
运行结果:
Pleaseinput:
1-1-30
Onerootis:
6.500000
Theotherrootis:
-4.500000
8.
#include
voidmain()
{
floatx,y;
printf("请输入x\n");
scanf("%f",&x);
if(x<1)
y=x;
elseif(x>=1&&x<3)
y=2*x-1;
else
y=3*x*x-10;
printf("y=%.2f\n",y);
}
运行结果:
请输入x
2.5
y=4.00
10.
#include
voidmain()
{
intvalue1,value2;
floatvalue3;
charoperate;
printf("Inputyourexprssion:
\n");
scanf("%d%c%d",&value1,&operate,&value2);
switch(operate)
{
case'+':
printf("%d%c%d=%d\n",value1,
operate,value2,value1+value2);
break;
case'-':
printf("%d%c%d=%d\n",
value1,operate,value2,value1-value2);
break;
case'*':
printf("%d%c%d=%d\n",
value1,operate,value2,value1*value2);
break;
case'/':
if(value2==0)
printf("Divishionbyzero.\n");
else
{
value3=(float)value1/value2;
printf("%d%c%d=%.2f\n",
value1,operate,value2,value3);
}
break;
default:
printf("Unknownoperate.\n");
}
}
运行结果:
Inputyourexprssion
9/5
9/5=1.80
9.
#include
voidmain()
{
intscore;
printf("请输入成绩:
");
scanf("%d",&score);
if((score>100)||(score<0))
printf("Inputerror\n");
else
{
score=score/10;
switch(score)
{
case10:
printf("A\n");break;
case9:
printf("A\n");break;
case8:
printf("B\n");break;
case7:
printf("C\n");break;
case6:
printf("D\n");break;
default:
printf("E\n");break;
}
}
}
运行结果:
请输入成绩:
89
B
第五章
1.满足条件与不满足条件,与分支表达式完全相同。
都是对表达式值进行非零判断。
2.循环变量是指在循环程序中随着循环的进行而改变的变量,例如i++中的i是常见的循环变量。
当循环中出现break语句是有可能结束整个循环,而当循环中出现continue时,有可能结束一次循环。
3.
while与do-while都是循环语句,while执行是先判断是否满足括号内的条件,而do-while先进行一次do的运算,再判断。
一般情况下,两语句处理同一问题时若二者的循环题部分是一样的,它们的结果也一样。
但是如果while后面的表达式一开始就为假,两种循环的结果是不同的:
while语句不会执行,而do-while语句会执行一次。
4.
continue语句只是结束本次循环,而不是终止整个循环的执行。
而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。
5.
(1)
#include
voidmain()
{
intsum=0,i=1;
while(sum<1000)
{
sum+=i;
i++;
}
printf("i=%d\n",i);
}
运行结果:
i=46
(2)
#include
voidmain()
{
floatsum=0;
intn=1;
while(sum<2)
{
sum+=(float)1/(n++);
}
printf("n=%d\n",n);
}
运行结果:
n=5
6.
#include
voidmain()
{
inta,b,x,y,u;
printf("Pleaseinput2numbers:
\n");
scanf("%d%d",&x,&y);
for(k=0;k<=4-2*i;k++)
printf("*");
printf("\n");
}
}
运行结果:
*
***
*****
*******
*****
***
*
8.略
9.#include
voidmain()
{
chari,j,k;
/*i是a的对手;j是b的对手;k是c的对手*/
for(i='x';i<='z';i++)
for(j='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("Theorderis:
\na--%c\nb--%c\nc--%c\n",i,j,k);
}
}
}
}
if(x>y)
{
u=x;
x=y;
y=u;/*保证x>y*/
}
a=x,b=y;
while(b!
=0)
{
u=a%b;
a=b;
b=u;
}/*辗转相除法求最大公约数*/printf("最大公约:
%d\n最小公倍:
%d\n",a,x*y/a);
}
运行结果:
Pleaseinput2numbers:
6480
最大公约:
16
最小公倍:
320
7.
#include"stdio.h"
voidmain()
{
inti,k,j;
/*根据星星排列的规律找出公式*/
for(i=0;i<=3;i++)
{
for(j=0;j<=2-i;j++)
printf("");
/*根据行数算出空格数*/
for(k=0;k<=2*i;k++)
printf("*");
printf("\n");
/*根据行数算出星星数*/
}
for(i=0;i<=2;i++)
{
for(j=0;j<=i;j++)
printf("");
运行结果:
Theorderis:
a--z
b--x
c--y
10.
#include
voidmain()
{
intx,y,z,s1,s2;
/*此题用的是穷举法,
就是每个数都去试一遍,直到得出结果*/
for(x=0;x<=40;x++)
for(y=x;y<=40;y++)
for(z=y;z<=40;z++)
{
s1=x+y+z;
s2=x*x+y*y+z*z;
if(s1==40&&s2==600)
printf("方程解为:
x=%dy=%dz=%d\n"
x,y,z);
}
}
运行结果:
方程的解为:
x=10y=10z=20
11.
#include
#include
intmain()
{
floata;
/*被开方数*/
floatx0,x1;
/*分别代表前一项和后一项*/
printf("Inputapositivenumber:
\n");
scanf("%f",&a);
x0=a/2;/*任取初值*/
x1=(x0+a/x0)/2;
while(fabs(x1-x0)>=1e-5)
{
x0=x1;
x1=(x0+a/x0)/2;
}
printf("Thesquarerootof%5.2fis%8.5f\n",a,x1);
return0;
}
运行结果:
Inputapositivenumber:
2
Thesquarerootof2.00is1.41421
12.
#include
intcow(intx);
voidmain(void)
{
inti=1;
intsum=1;
for(i;i<=20;i++)
{
sum+=cow(i);
}
printf("有%d头牛\n",sum);
}
intcow(intn)
{
intm=n-4;
intsum=0;
if(n<=4)
return1;
else
for(m;m>=1;m--)
{
sum+=cow(m);
}
returnsum;
}
运行结果:
有658头牛
3.
#include
voidmain()
{
inta[4][4],i,j,s1;
printf("输入矩阵\n");
for(i=0;i<=3;i++)
for(j=0;j<=3;j++)
scanf("%d",&a[i][j]);
/*搜索矩阵对角线*/
for(i=0,s1=0;i<=3;i++)
{
s1+=a[i][i];
s1+=a[3-i][i];
}
printf("对角元素之和是%d\n",s1);
}
运算结果:
输入矩阵
22374598
44759612
22375586
79463815
对角线元素之和是477
4.
#include
voidmain()
{
inta[10],b[9],i;
printf("请输入a数组的内容");
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
/*顺次计算b数组的内容*/
for(i=1;i<=9;i++)
b[i-1]=a[i]/a[i-1];
for(i=1;i<=9;i++)
{
printf("%d",b[i-1]);
if(i%3==0)
printf("\n");
}
}
第六章
1.
(1)、
(2)
均为错
错在:
C语言不允许定义动态数组,即数组的长度不能依赖于程序运行过程中变化着的量。
(3)
错
错在地址符的输入错误,应将"&a"改为"&a[i]"其中i为小于5的数
(4)
对
2.
#include
voidmain()
{
inti,j,p,a[10];
printf("输入十个整数");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
/*用冒泡排序算法*/
for(j=0;j<=8;j++)
for(i=0;i<=9-j;i++)
if(a[i]>a[i+1])
/*大的就沉下去,即交换*/
{p=a[i];
a[i]=a[i+1];
a[i+1]=p;
}
printf("排序之后:
\n");
for(i=0;i<=9;i++)
printf("%d",a[i]);
}
运算结果:
输入十个整数5789634721
排序之后:
1234567789
6.
#include
voidmain()
{
charstr[100];
intn;
printf("请输入字符串");
scanf("%s",&str);
n=0;
while(str[n]!
='\0')n++;
n--;/*减掉最后的一位*/'\0'
printf("倒序输出的是:
");
while(n>=0)
{
printf("%c",str[n]);
n--;
}
}
运算结果:
请输入字符串:
abcdefg
倒序输出的是:
gfedcba
7.
#include
voidmain()
{
inti=0,j=0;
chara[100],b[100];
printf("请输入字符串a,b\n");
scanf("%s",&a);
scanf("%s",&b);
/*求出a字符串的长度*/
while(a[i]!
='\0')