1、 C语言程序设计教程 习题答案 总主编 杨路明 主审 郭浩志 文件摘自 CSDN 习题1 1、算法描述主要是用两种基本方法:第一是自然语言描述,第二是使用专用工具进行算法描述 2、c语言程序的结构如下: 1、c语言程序由函数组成,每个程序必须具有一个main函数作为程序的主控函数。 2、"/*"与"*/"之间的内容构成c语言程序的注释部分。 3、用预处理命令#include可以包含有关文件的信息。 4、大小写字母在c语言中是有区别的。 5、除main函数和标准库函
2、数以外,用户可以自己编写函数,程序一般由多个函数组成,这些函数制定实际所需要做的工作。 例如: void main() { int a,b,c,s; a=8;b=12;c=6; s=a+b*c; printf("s=%d\n",s); } 3、c语言的特点: 1、c语言具有结构语言的特点,程序之间很容易实现段的共享; 2、c语言的主要结构成分为函数,函数可以在程序中被定义完成独立的任务,独立地编译成代码,以实现程序的模块化。 3、c语言运算符丰富,运算包含的范围很广;
3、 4、c语言数据类型丰富。 5、c语言允许直接访问物理地址,即可直接对硬件进行操作,实现汇编语言的大部分功能; 6、c语言语法限制不太严格,程序设计自由度大,这样是c语言能够减少对程序员的束缚; 7、用c语言编程,生成的目标代码质量高,程序执行效率高,可移植性好; 4、合法标识符:AB12、leed_3、EF3_3、_762、PAS、XYZ43K2 不合法标识符:a*b2、8stu、D.K.Jon、if、ave#xy、#_DT5、C.D 5、F2:将当前编辑器中文件存盘 F10:调用主菜单 F4:程序运行到光标所在行 Ctrl+F
4、9:当前编辑环境下,进行编译、连接且运行程序; Alt+F5:将窗口切换到DOS下,查看程序运行结果 6、 (1): ******************** welcome you very good ******************** (2): please input three number;5,7,8 max number is:8 7、main 8、User screen、Alt+F5 9、标识符必须是字母或下划线开头,大小写字母含义不同。由数字、字母和下划线组成; 关键字是一种
5、语言中规定具有特定含义的标识符。关键字不能作为变量或函数名来使用,用户只能根据系统的规定使用它们。 10、选择主菜单File项下拉子菜单中Save项或直接按F2键存盘。 习题2 1、符合C语法规定的常数为:0x1e、"ab\n"、1.e5 2、(1): 错误如下:int x,y=5,z=5,aver; x=7; aver = (x+y+x)/3; 结果如下:AVER=5 (2): 错误如下:char c1='a',c2='b',c3='c'; printf("a=%db=
6、\'%c\'\"end\"\n",a,b); 结果如下:a=3b='A'"end" aabcc abc 3、 4、(1):9,11,9,10 (2):3,1,0,0 (3):11,19,31,1 5、(1):0 (2):0 (3):9.500000 (4):90 (5):10 (6):10 (7):65 (8):4 (9):4.500000 (10):1 (11):0 (12):20 (13):0 6、(5) 7、求x的绝对值 8、
7、c>(max=a>b?a:b)?c:max; 9、B 10、D 习题3 1、输入函数scanf的参数错误,应该为:scanf("%f",&k); 2、|1234 1234 | 3、ff10 4、1,3,1 5、原字符串 左边加空格再加字符串本省,字符个数总和为5个 6、scanf("%d,%d,%c,%c",&a1,&a2,&c1,&c2); 7、printf("a+b=%d\n",a+b); printf("a-b=%d\n",a-b); printf("a*b=%d\n",a*b); printf("a/b=%d\n",a/b);
8、 printf("(float)a/b=%f\n",(float)a/b); printf("a%b=%d\n",a%b); 8、void main() { float r; float s,c; printf("please input the number:"); scanf("%f",&r); if(r>=0) { s = 3.14*r*r; c = 2*3.14*r; printf("s = %f, c = %f\n",s,c);
9、 } else printf("you input number is error!"); } 9、void main() { int n; printf("please input the number:"); scanf("%d",&n); if(n>=100 && n <= 999) printf("%d%d%d",n%10,(n/10)%10,n/100); else printf("you input number is error!"); } 10、void main() { in
10、t i,j,k; scanf("%d,%d,%d",&i,&j,&k); ((i%2 != 0?1:0) + (j%2 != 0?1:0)+(k%2 != 0?1:0)) == 2?printf("YES\n"):printf("NO\n"); } 11、void main() { char a; scanf("%c",&a); printf("%c,%c,%c",a-1,a,a+1); printf("%d,%d,%d",a-1,a,a+1); } 12、void main() { float a,b,c,s,Area; sca
11、nf("%f,%f,%f",&a,&b,&c); if(a+b > c || a+c > b || b+c >a) { s = (a+b+c)/2; Area = sqrt(s*(s-a)*(s-b)*(s-c)); printf("%f\n",Area); } else printf("you input the number is error!\n"); } 习题4 1: 0 2: 20 3: (x<30&&x>20)||(x<-100) 4: ***a=25,b=14,c=
12、16***
5: 37
6: if(a<=b) printf("1");
else printf("2");
7、
#include
13、 main() { int temp1=0,temp2=0,x,y,i=1; printf("Please input (x,y): "); scanf("%d,%d",&x,&y); while((i*y)<=x) { if(x==(i*y)) {temp1=1;break;} temp2=i; i++; } if(temp1) printf("%d / %d = %d",x,y,i); else printf("%d / %d---> shang=%d,yushu=%d",x,y,temp2,x-y*temp2); getch(
14、);
}
9、
#include
15、ear; printf("Please input (year,month): "); scanf("%d,%d",&year,&month); if((year%400==0)||(year%4==0&&year%100!=0)) temp=1; if(month==2) { if(temp)printf("%d year %d month have 29 ",year,month); else printf("%d year %d month have 28 ",year,month); } else if(month%2==0) print
16、f("%d year %d month have 30 ",year,month);
else printf("%d year %d month have 31 ",year,month);
getch();
}
11、
switch(a/10)
{ case 5:m=4;break;
case 4:m=3;break;
case 3:m=2;break;
case 2:m=1;break;
default:m=5;
}
12、
方法一:
#include
17、",&x);
if(x<0&&x>-5)
y=x-1;
else if(x==0)
y=x;
else if(x>0&&x<8)
y=x+1;
printf("%d",y);
getch();
}
方法二:
#include
18、 printf("Input error!!!");
getch();
}
方法三:
#include
19、y=x-1;printf("%d",y);break; case 4:printf("Input error!!");break; }getch(); } 习题5 1、void main() { int n,value; int i,count=0; float average = 0; long int sum = 0; scanf("%d",&n); for(i = 0; i < n; i++) { scanf("%d",&value); if(value%2 == 0) { sum+=value; c
20、ount++; } } average = sum / (float)count; printf("the average is %f\n",average); } 2、 #include "stdio.h" void main() { char ch; int zm = 0, sz = 0; ch = getchar(); while(ch != '*') { if((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch < 'z') ) zm++; if(
21、ch >= '0' && ch <= '9') sz++; ch = getchar(); } printf("zm = %d ; sz = %d\n",zm,sz); } 3、 void main() { long i_value; int sum = 0; int temp = 0; scanf("%ld",&i_value); if(i_value < 0) {printf("you input the int is error!\n");return;} for(;;) { temp
22、 i_value%10; i_value = i_value/10; sum+=temp; printf("%d+",temp); if(i_value == 0)break; } printf("\b=%d\n",sum); } 4、 #include "stdio.h" void main() { char ch; ch = getchar(); while(ch != '.') { if((ch >= 'A' && ch <= 'Z')) { ch = ch
23、 32; putchar(ch); } else if((ch >= 'a' && ch < 'z') ) { ch = ch - 32; putchar(ch); } else { putchar(ch); } ch = getchar(); } printf("\n"); } 5、 void main() { float sum = 200; int count = 0; for(;;) { sum = sum+ sum*0.045;
24、 count++; if(sum > 500)break; } printf("the %d years later complete!\n",count); } 6、 void main() { int i,temp=0,bit=0; for(i = 1 ; i <= 999; i++) { if(i%3 == 0) { temp = i; for(;temp != 0;) { bit = temp%10; if(bit == 5){printf("%d,",i)
25、break;}
temp = temp/10;
}
}
}
printf("\b \n");
}
7、
#include
26、main() { int i,j,k,n; printf("the narcissus number is:\n"); for(n=100;n<1000;n++) {i=n/100; j=n/10-i*10; k=n%10; if(i*i*i+j*j*j+k*k*k==n) printf("%d\n",n); } } 9、 main() { float i,j,temp,n,sum; int t; i=2;j=1;sum=0; scanf("%d",&t); for(n=1;n<=t;n++) {sum
27、sum+i/j;
temp=i;i=i+j;j=temp;
}
printf("2/1+3/2+5/3+8/5+13/8+...=%f\n",sum);
}
10、
void main()
{
int nWidth,a,b;
scanf("%d",&nWidth);
for(a=(nWidth%2);a<=nWidth;a+=2)
{
for(b=0;b 28、 int nright = (nWidth+a)/2;
if(b>=nleft&&b 29、 printf("\n")
}
}
12、
#include "stdio.h"
void main()
{
char c;
//count1是正数的个数
//count2是负数的个数
int count1=0,count2=0;
//sum1是正数之和
//sum2是负数之和
int sum1=0,sum2=0;
int flage = 0;
c=getchar();
while(c != '*')
{
if(c == '-')flage = 1;
if(flage == 0)
30、 {sum1+=(c-48);count1++;}
else
{if(c != '-'){sum2-=(c-48);flage=0;count2++;}}
c = getchar();
}
printf("%d,%d\n",count1,count2);
printf("%f,%f\n",sum1/count1,sum2/count2);
}
13、
void main()
{
int i,j;
int s = 0;
for(i = 100 ; i <= 999; i++)
{
s = 31、0;
for(j=1; j < i-1 ; j++)
{
if( i%j == 0 ) s = s + j;
}
if(s == i)printf("%5d",i);
}
}
14、
#include 32、
}
printf("%f\n",e);
}
15、
#include "math.h"
main()
{float x0,x1,x2,f0,f1,f2;
x1=-10;
f1=2*x1*x1*x1-4*x1*x1+3*x1;
x2=10;
f2=2*x2*x2*x2-4*x2*x2+3*x2;
do
{ x0=(x1+x2)/2;
f0=2*x0*x0*x0-4*x0*x0+3*x0;
if((f0*f1)<0)
{x2=x0; f2=f0;}
else
{x1=x0; f1=f0;}
33、}
while(fabs(f0)>1e-6);
printf("______2*x*x*x-4*x*x+3*x=0______\n");
printf("the root is %f\n",x0);
}
习题6
1、
#include 34、
}
void main()
{ int a,b,c,d;
printf("intput (a,b): ");
scanf("%d,%d",&a,&b);
c=divisor(a,b);
d=multiple(a,b);
printf("\ndivisor=%d\t\tmultiple=%d",c,d);
}
2、
#include 35、22&&a[i]>=97))
b[0]++;
else if(a[i]<=57&&a[i]>=48)
b[1]++;
else
b[2]++;
i++;
}
printf("zimu have: %d; shuzi have: %d; qita have: %d",b[0],b[1],b[2]);
getch();
}
void main()
{ char a[100];
printf("Please input a string: ");
gets(a);
tongji(a);
}
3、
#include< 36、stdio.h>
int flower(int n)
{ int x=0,i,j,k;
i=(n%10);
j= (n/10%10);
k=(n/100);
x=i*i*i+j*j*j+k*k*k;
if(x==n) return 1;
else return 0;
}
void main()
{ int i,n;
printf("Please intput n: ");
scanf("%d",&n);
if(n>999||n<100)printf("Input error!!!");
else
{ for(i=100;i< 37、n;i++)
if(flower(i))printf("%d ",i);
}getch();
}
4、
#include 38、int n)
{ int p;
if(n==0) p=0;
else if(n==1) p=1;
else p=fib(n-1)+fib(n-2);
return p;
}
void main()
{ int n;
printf("Please input fib: ");
scanf("%d",&n);
printf("\n\nfibonacci=%d",fib(n));
}
6、
#include 39、);
return f;
}
void main()
{ int m,n;
long f;
printf("Please input (m,n): ");
scanf("%ld,%ld",&m,&n);
f=fac(n+m)+fac(n);
printf("\n\nfibonacci=%ld",f);
}
7、
#include 40、printf("\n");
}
}
void main()
{ list();
}
8、
#include 41、}
9、
#include 42、worker;
}
void paixu(struct work a[])
{ int i,j,k;long t;char v[15];
for(i=0;i 43、
}
for(i=0;i<=size-2;i++)
printf("sid: %ld\tname:%s\n\n",a[i].sid,a[i].name);
getch();
}
void select(struct work a[])
{ int i=0,found=1;long num;
printf("Input select sid: ");
scanf("%ld",&num);
for(i=0;i<=size-2;i++)
{ if(a[i].sid==num)
{ found=0;
printf("%ld: %s 44、",num,a[i].name);
break;
}
}
if(found)printf("\n\nNO this sid!!!");
getch();
}
void main()
{ struct work *p;
p=set_list();
paixu(p);
select(p);
}
10、
#include 45、loat x,int n)
{ float s=1;int i;
for(i=1;i<=n;i++)
s=s*x;
return s;
}
float f(float x,int n)
{ float s=1,t=0;int i=1,j=-1;
for(i=1;i<=n;i++)
{ t=j*chengfang(x,2*i)/jiecheng(2*i);
s+=t;
j=j*j;
}
return s;
}
main()
{ float s1=0,s2=0,s3=0,s4=0,x=5.6;int n=7;
s1=f(x,n);
46、s2=f(x+2.3,n);
s3=f(x-3.2,n+3);
s4=s1/(s2+s3);
printf("%f",s4);
getch();
}
习题7
1: (1) D
(2) A
(3) D
(4) B
(5) D
2: (1) 1 5 4 4
6 7 8
2 3
4
(2) 6333
3: ( 47、1)a[8]=data; k>=0 a[k]=temp break k<=8
(2) "%s" str[i]<='Z' c[str[i]+26-'a']++ i+'a'
4、/*题目:求一组成绩的平均分数以及高于平均分的成绩。*/
#include 48、 scanf("%d",&n);
printf("\nPlease input %d ge shu: ",n); /*输入90,85,92,77,80,62*/
for(i=0;i 49、输出90.00 ,85.00 ,92.00*/
}
5、/*题目:编写程序,输入一组整数,将他们排序后由小到大输出。*/
#include 50、 { k=i;
for(j=i+1;j






