C语言课后习题参考答案

C语言课后习题参考答案

习题 1

一、选择题

1、B

2、C

3、B

4、D

5、A

6、B

7、C

二、填空题

1、源程序文件 c

2、obj

3、可执行文件 exe

4、机器语言汇编语言高级语言

三、解答题

四、编程题

1、

main()

{

printf(“Hello! Welcome to China!”);

}

2、

main()

{int x;

printf(“x=%d”,x);

}

习题 2

一、选择题

1、C

2、A

3、B

4、D

5、 A

6、D

7、B

8、B

9、B 10、D

11、D 12、B 13、A 14、B 15、C

二、填空题

1、整型、实型、字符型

2、用户标识符、关键字标识符

3、存储单元、符号地址、内存地址

4、十、十六、八

5、double(双精度型)

6、 8

7、5.500000

8、a=-32768

9、+0017,021,0x11

三、写程序运行结果

3257

3257

7.88, -345.12,7.8765,-345.1230

7.87654e+00, -3.5e+02

a,97,141,61

1234,2322,4d2

CHINESE, CHI

四、scanf函数的使用

a=3 b=7

8.5 71.82

A a

五、用scanf函数输入数据

1020Aa1.5-3.75 123.45,67.8

注意,其中123.45可以是任意实数,因为该值将被跳过,不用于赋值。

习题 3

一、选择题

1.C 2.B 3.D 4.D

二、填空题

基本概念题

1.2

2.2

3.1

阅读程序写出运行结果题

4.1.00

5.1,0,1

6.6,11,9,10

三、写出下面表达式运算后a的值,设原来a=12。

(1)24 (2)10 (3)60 (4)0 (5)0 (6)0

习题4

一、选择题

1、B

2、D

3、B

4、D

5、A

6、C

二、填空题

1、1,0,1

2、1,2,3

3、ch1>=′A′&&ch1<=′Z′ ch1=ch1-32;

三、编程题

1、从键盘输入三个数,然后按照由小到大的顺序输出。要求,设三个数放在变量a、b、c中,最后仍然按照a、b、c的顺序输出。

#include

main()

{int a,b,c,t;

scanf(“%d,%d,%d”,&a,&b,&c);

if(a>b) {t=a; a=b; b=t;}

if(a>c) {t=a; a=c; c=t;}

if(b>c) {t=b; b=c; c=t;}

printf(“%d,%d,%d\n”,a,b,c);

}

2、编写程序根据以下的函数关系,对输入的x值输出相应的y值。

x y

2

-1

X<=-1 x-1

#include

main()

{int x,y;

scanf(“%d”,&x);

if(x<=-1)

y=x-1;

else if(x<=2)

y=2*x;

else if(x<=10)

y=x*(x+2);

printf(“y=%d\n”,y);

}

3、求一元二次方程ax2+bx+c=0的解。

#include

main()

{float a,b,c,d,disc,x1,x2,realpart,imagpart;

scanf(“%f,%f,%f”,&a,&b,&c);

if(fabs(a)<=1e-6)

Printf(is not a quadratic);

else

{disc=b*b-4*a*c;

if(fabs(disc)<=1e-6)

printf(“has two equal roots:%8.4\n”,-b/(2*a));

else if(disc>1e-6)

{x1=(-b+sqrt(disc))/(2*a);

x2=(-b-sqrt(disc))/(2*a);

printf(“has distinct real roots:%8.4f and %8.4f\n”,x1,x2);

}

else

{realpart=-b/(2*a);

imagpart=sqrt(-disc)/(2*a);

printf(“has complex roots:\n”);

printf(“%8.4f+%8.4fi\n”, realpart,imagpart);

printf(“%8.4f-%8.4fi\n”, realpart,imagpart);

}

}

}

4、假设工资税率如下,其中s代表工资,r代表税率:

s<500 r=0%

500<=s<1000 r=5%

1000<=s<2000 r=8%

2000<=s<3000 r=10%

3000<=s r=15%

编一程序实现从键盘输入一个工资数,输出实发工资数。要求使用switch语句。

main()

{int salarly,r,g;

scanf(“%d”,&salarly);

if(salary<500) r=0;

if(salary>=3000) r=0.15;

g=salary/500;

switch(g)

{case 1: r=0.05;break;

case 2:

case 3: r=0.08;break;

case 4:

ase 5: r=0.10;break;

}

salary=salary*(1-r);

printf(“%d\n”,salary);

}

习题 5

一、选择题

1、A

2、C

3、C

4、D

5、A

6、A

7、A 8、B 9、C 10、B 11、B 12、D

二、填空题

1、break

2、[1]n<=999或n<1000 [2]n%10

3、[1]x>=0或x>=0.0 [2]x

4、[1] i<10 [2] j%3!=0

5、[1]t=1 [2]n<=i

6、[1]n [2]flag=1 [3]n—

7、[1]j

8、[1]sum

三、编程题

1、

#include

main()

{int m,n,p,r,temp;

printf(“Please input m,n:”);

do

{scanf(“%d%d”,&m,&n);

}while(m<=0||n<=0);

if(n

{ temp=n; n=m; m=temp; } /*确保大数放到n中*/

p=n*m; /*保留n和m的乘积到p中,以便求最小公倍数*/

while(m!=0) /*求n和m的最大公约数*/

{r=n%m; n=m; m=r; }

printf(“最大公约数为:%d\n”,n);

printf(“最小公倍数为:%d\n”,p/n);

}

2、

#include

main()

{char c;

int letter=0,space=0,digit=0,other=0;

printf(“Please input a line character:”);

while((c=getchar())!=’\n’)

{if(c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’) letter++;

else if(c==‘ ’) space++;

else if(c>=’0’&&c<=’9’) digit++;

else other++;

}

printf(“Letter is %d,Space is %d,Digit is %d,Other

is %d,”,letter,space,di git,other);

}

3、

main()

{int m,s,i;

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

{s=0;

for(i=1; i

if((m%i)==0) s=s+i;

if(s==m)

{printf(“%d its factors are ”,m);

for(i=1; i

if(m%i==0) printf(“%d,”,i);

printf(“\n”);

}

}

}

4、

main()

{int i,a,min,max;

scanf(“%d”,&a);

min=a;max=a;

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

{ scanf(“%d”,&a);

if(a

if(a>max) max=a;

}

printf(“Max=%d,Min=%d\n”,max,min);

}

5、

#include

#define N 20

main()

{int i,t;

float a=2,b=1,s=0;

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

{s=s+a/b;

t=a;

a=a+b; /*将前一项的分子与分母之和作为下一项的分子*/

b=t; /*将前一项的分子作为下一项的分母*/

}

printf(“Sum=%f\n”,s);

}

6、问题分析:设王先生的岁数是x,他夫人的岁数是y,可得到如下方程组:

⎪⎩⎪⎨⎧=+=+873

1053

2

2y x y x 这是一个非线性方程组的求解,无法手算求解,可以用穷举法求解。考虑到实际可能,

x 、y 可以在20—100范围内取值,逐一穷兴出x 、y 所有可能的取值判断是否满足上述方程组,若满足,这一组解就是要求的解。程序如下:

main() {int x,y;

for(x=20;x<=100;x++) for(y=20;y<=100;y++)

if(x*x+y==1053&&x+y*y==873) printf(“x=%d y=%d \n”,x,y); } 7、

main() {

long int k,g,s=0;

printf("Please input an integer:"); scanf("%ld",&k); do

{ g=k%10;

printf("%2d",g); k=k/10;

}while(k!=0); } 8、 (1) main() { int i,j;

for(i=1;i<=9;i++) { for(j=i;j<=9;j++)

printf("%d*%d=%2d ",i,j,i*j); printf("\n"); } }

(2) main()

{ int i,j,k;

for(i=1;i<=9;i++) {

for(k=1;k

for(j=i;j<=9;j++)

printf("%d*%d=%2d ",i,j,i*j);

printf("\n");

}

}

9、

#include

main()

{int i=0;

long s,n,j,x;

for(j=100;j<=999;j++)

{ s=0; x=j;

while(x>0) /*求原数j的反序数*/

{s=s*10+x%10;

x=x/10;

}

if(s==j) /*判断反序数s与原数j是否相等*/ {i++; printf("%4ld",j);

if(i%10==0) printf("\n"); /*每行输出10个回文数*/

}

}

}

10、

#include

main()

{int x,y,z;

for(x=1;x<20;x++)

for(y=1;y<33;y++)

for(z=3;z<100;z+=3)

{if((x*5+y*3+z/3)==100&&x+y+z==100)

printf(“公鸡有%d只,母鸡有%d只,小鸡有%d只\n”,x,y,z);

}

}

11、

#include

#include

main()

{int n=1; double x,sum=0,term=1.0;

scanf(“%lf”,&x);

while(fabs(term)>=1e-6)

{ sum+=term;

term*=-x*x/(n*(n+1));

n=n+2;

}

printf(“cos(%lf)=%lf ,%lf \n”,x,sum,cos(x)); } 12、

问题分析:

用迭代法求平方根的算法如下: (1)设定一个x 的初值x0;

(2)用上述公式求出x 的下一个值x1;

(3)再将x1代入上述公式,求出x 的下一个值x2;

(4)如此继续下去,直到前后两次求出的x 值(x n+1和x n )满足5

110

-+<-n n x x 。

为便于程序处理,令x 的初值x0=a/2(也可以是其他值),求出x1。程序实现如下: #include main()

{float a,x0,x1;

printf(“Please input a positive number:”); scanf(“%f”,&a); /*输入a 的值*/ x0=a/2;

x1=(x0+a/x0)/2; do

{x0=x1;

x1=(x0+a/x0)/2;

}while(fabs(x1-x0)>=1e-5);

printf(“The s quare root of %f is %f, the true root is %f\n”,a,x1,sqrt(a)); } 13、

程序如下:

#include main()

{float x,x0,f,f1; x=1.5; do {x0=x;

f=((2*x0-4)*x0+3)*x0-6; f1=(6*x0-8)*x0+3;

x=x0-f/f1; /*进行牛顿迭代*/ }

while(fabs(x-x0)>=1e-5); print f(“The root is %f \n”,x); } 14、

#include #include

#define epsilon 0.00001 /*定义要求的精度*/ float f(float x) /*求函数值*/

{return(2*x*x*x-4*x*x+3*x-6);

}

main()

{float a,b,x;

scanf("%f%f",&a,&b); /*输入求根区间*/

if(f(a)*f(b)>=0) /*判断是否符合二分法使用的条件*/

{printf("不满足二分法使用条件,退出!");exit(0);}

do

{ x=(a+b)/2;

if(f(x)*f(b)<0) /*如果成立,则根在区间的右半部分*/

a=x;

else /*否则根在左半部分*/

b=x; }

while(fabs(b-a)>=epsilon); /*判断是否达到精度要求,如果没达到,继续循环*/ x=(b+a)/2; /*取最后的小区间中点作为根的近似值*/

printf("x=%f\n",x); /*输出函数的近似根*/

}

习题 6

一、选择题

1.D 2.D 3.D 4.D 5.A 6.C

二、填空题

阅读程序写出运行结果题

1.第一行:1 4 3

第二行:2 5 8

2.第一行:1 2 4

第二行:3 5 7

第三行:6 8 9

三、编程题

1.# include

main()

{

char str1[20], str2[10];

int i=0,j=0;

gets(str1);

gets(str2)‟

while(str1[i]!=‟\0‟) i++;

while(str2[j]!=‟\0‟) str1[i++]=str2[j++];

str1[i]=‟\0‟;

puts(str1);

}

2.# define M 4

# define N 5

# include

main()

{

int i, j, m;

int a[M][N], pp[N];

for (j=0; j

{

m=a[0][j]; /*将m值设为每一列的第一行元素的值*/

for (i=0; i

if (a[i][j]< m) m=a[i][j];

pp[j]=m; /*将每一列的最小值m存入pp数组*/

}

for (j=0; j

printf(“%d ”, pp[j]);

}

3.# include

void find (int a[5][5])

{ int i, j, row, col, sum1, sum2;

for (i=0;i<5;i++)

for (j=0;j<5;j++)

{ sum1=sum2=0;

for (col=0;col<5;col++)

sum1+=a[i][col];

for (row=0;row<5;row++)

sum2+=a[row][j];

if (sum1= =sum2)

printf(“a[%d][%d]:%d\n”, i, j, a[i][j]);

}

}

main()

{ int i, j, a[5][5]={{2,8,1,9,4},{5,7,1,3,0},{7,1,7,5,2},{3,2,2,1,5},{0,2,1,6,8}};

for (i=0;i<5;i++)

{ for (j=0;j<5;j++)

printf(“%4d”, a[i][j]);

printf(“\n”);

find(a);

}

5.# include

# define N 10

void crl (int a[ ])

{ int i, j, max=0, min=0, temp;

for (i=1; i

if (a[min]>a[i]) min=i;

temp=a[min];

j=min;

while (j>0)

{ a[j]=a[j-1];

j--;

}

a[0]=temp;

for (i=1; i

if (a[max]

temp=a[max];

j=max;

while (j

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

j++;

}

a[N-1]=temp;

}

main()

{ int a[N]={8,5,6,9,4,1,-1,7,3,2};

int i;

crl(a);

for (i=0; i

printf(“\n”);

}

6.# include

# include

int Replace_string(char line[ ], char str1[ ], char str2[ ]) { int i=0, j, loc;

char temp[80];

while(i<=strlen(line)-strlen(str2))

{ j=0; loc=i;

while(str1[j]= =line[loc]&&str1[j]!=‟\0‟)

{ loc++; j++; }

if (str1[j]= =‟\0‟)

{ strcpy(temp, &line[loc]);

strcpy(&line[i], str2);

i+=strlen(str2);

strcpy(&line[i], temp);

return 1;

}

else i++;

}

return 0;

}

习题 7

一、选择题

1.A

2.A

3. D

4.C

5. A

6.C

7.B

8.C

9.B 10.D

二、填空题

1.a=0,b=7

2.110

3.20

4.abc,ABC,bc,BC,c,C,

5.1 4

6. len++ p++

三、编程题

1、编写一个程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该字符串,请用指针完成。

main()

{char ch[20]="computer",*p=ch;

int i;

for(i=0;i

printf("%c",*(p+i));

}

2、输入3个字符串,按由小到大的顺序输出。

main()

{char str1[20],str2[20],str3[20];

char *p[1],*p1,*p2;

printf("Input three lindes:\n");

gets(str1); gets(str2); gets(str3);

p1=str1;p2=str2;

if(strcmp(str1,str2)>0)

{ strcpy(p,p1);strcpy(p1,p2); strcpy(p2,p); }

p1=str1;p2=str3;

if(strcmp(str1,str3)>0)

{ strcpy(p,p1);strcpy(p1,p2); strcpy(p2,p); }

p1=str2;p2=str3;

if(strcmp(str2,str3)>0)

{ strcpy(p,p1);strcpy(p1,p2); strcpy(p2,p); }

printf("Now,the order is:\n");

printf("%s\n%s\n%s\n",str1,str2,str3);

}

注意:因为指针变量p在使用前必须赋初值,否则编译时会产生Warning错误“Possible use of ‘p’before definition in function main”,所以本程序把p定义为指针数组*p[20]的形式,无须赋初值便可使用。还要注意,此时的p数组元素是需要两个字节的指针类型,而不是占用一个字节的字符类型,所以在进行字符串复制时,一个p数组元素将存放两个字符。另外,数组名为常量,不能用于strcpy函数中。

3、求一个3×3矩阵主对角线元素之和。

main()

{int a[3][3],*p,i,s=0;

for(i=0;i<3;i++)

scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);

p=&a[0][0];

for(i=0;i<3;i++)

s=s+*(p+3*i+i);

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

}

4、将一个3×3矩阵转置。

main()

{int a[3][3],*p;

int i,j,t;

printf("Input matrix:\n");

for(i=0;i<3;i++)

scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);

p=&a[0][0];

for(i=0;i<3;i++)

for(j=i;j<3;j++)

{t=*(p+3*i+j);

*(p+3*i+j)=*(p+3*j+i);

*(p+3*j+i)=t;

}

printf("Now,matrix:\n");

for(i=0;i<3;i++)

printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]);

}

5、输出给定的字符串中某一个字符前面的一串字符。如指定字符'a',则对字符串

"Fortran program",输出"Fortr"。若无指定字符,则输出相应的提示信息。

#include

main()

{int i,n=0;

char *ptr,str[10],ch;

printf("Input a string:\n");

scanf("%s",str);

ptr=str;

getchar();

printf("Please input a character\n");

scanf("%c",&ch);

while(ch=='\n')

{printf("Please input a character again!");

scanf("%c",&ch);

}

while(*ptr!=ch)

{ptr++;n++;}

for(i=0;i

printf("%c",*(str+i));

}

注意:本题中getchar()的作用是吸收键入给第一个scanf函数的字符串尾部的回车符,如果无getchar(),则将无法正确输入字符给变量ch。

6、输入一行字符,计算其中大写字母、小写字母、数字、空格及其他字符的数目。

#include

main()

{int upper=0,lower=0,digit=0,space=0,other=0,i=0;

char *p,s[20];

printf("Input a string:");

while((s[i]=getchar())!='\n') i++;

p=s; /*使p指向数组s的首地址*/

while(*p!='\n')

{ if(('A'<=*p)&&(*p<='Z'))

++upper;

else if(('a'<=*p)&&(*p<='z'))

++lower;

else if(*p==' ')

++space;

else if((*p<='9')&&(*p>='0'))

++digit;

else

++other;

p++;

}

printf("upper case:%d lower case:%d ",upper,lower);

printf("space:%d digit:%d other:%d\n",space ,digit,other);

}

7、从一个给定的字符串中找出某一子字符串的位置(从1开始)。例如子串“efg”在字符串“abcdefghijk”中位置为5。若字符串中没有指定的子串,则标记为0。

#include

main()

{int i,n=0;

char str1[20],str2[20],str3[20];

char *p1=str1,*p3=str3,*p=str1;

printf("Input a string:\n");

gets(str1);

printf("Please input a substring:\n");

gets(str2);

n=strlen(str2);

while(*p1!='\0')

{ for(i=0;i

{ *p3=*p++;

p3++;

}

*p3='\0'; /* 在新生成的字符串尾添加结束符 */

if(strcmp(str3,str2)==0) /*新生成的字符串存放在str3中*/

{ printf("substring's position is:%d\n",p1-str1+1);

p1='\0';

}

else

{ p1++; /*使p指向字符串str1的下一字符*/

p=p1;

p3=str3; /*使p3重新指向数组str3首地址*/

}

}

if(*p1=='\0') printf("Substring is not in the string!");

}

注意:由于gets函数可以接收带有空格的字符串,所以本题中采用gets而未采用不可接收带空格字符串的函数scanf。

8、编程删除字符串中的所有空白字符。

main()

{char str1[20],str2[20];

char *p1,*p2;

printf("Please input a string:\n");

gets(str1); /* str1用于存放原始字符串*/

p1=str1;

p2=str2; /* str2用于存放去掉空格后的字符串,使p2指向str2 */ while(*p1!='\0')

{ if(*p1!=' ')

{ *p2=*p1++; /* 将原始字符串中的字符依次赋值给str2 */

p2++;

}

else

p1++; /* 遇空格符,只移动指针p1,而不把空格符赋值给str2 */ }

printf("New string is:\n%s\n",str2);

}

9、有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

main()

{ int i,num[20],*p,n=0,m,k;

printf("Input the number of people:n=");

scanf("%d",&n);

for(i=0;i

num[i]=i+1;/*以1至n为序给每个人编号*/

p=num;

m=0;/* m为退出人数*/

i=0; /* i为每次循环时的计数变量*/

k=0;/* k为按1,2,3报数时的计数变量*/

while(m

if(k==3)/*本if分支对退出的人的编号赋值为0*/

{ *(p+i)=0;

k=0;/*重新从1到3报数*/

m++;/*退出人数加1*/

}

i++;

if(i==n) i=0;/*报数到一圈人的尾部时,i恢复为0,也即使人围成一圈*/

}

while(*p==0) p++;

printf("The last one is NO.%d\n",*p);

}

10、有一个字符串,包含n个字符。编程实现:将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。

main()

{ char str1[20],str2[20];

char *p=str1;

int n,m,i;

printf("Please input a string:\n");

gets(str1);

n=strlen(str1);

printf("Which character that begin to copy?");

scanf("%d",&m);

if(n

printf("input error!");

else

{ for(i=0;i

*(str2+i)=*(p+m-1+i);

*(str2+i)='\0';

}

printf("New string is:\n%s\n",str2);

}

习题 8

一、选择题

1、C

2、A

3、D

4、D

5、A

6、A

7、A

8、C

9、A 10、B

11、B 12、C 13、B 14、C 15、B 16、C 17、B 18、D 19、B 20、B

二、填空题

1、main

2、scanf gets

3、2

4、auto

5、1,2

6、3235

7、5,25 8、15 9、3 10、6,270 11、9 12、[1] x [2] x-f(x)/f1(x)

三、改错题

1、参考答案与分析:

分析:

第1处错误:题目中已经告诉我们“函数void dbubble(int *f,int n)的功能是”,但在程序的第2行定义函数时头部就与题目要求不一致,因此,第1处错误就在第2 行,只要将第2行改成“void dbubble(int *f,int n)”即可。

第2处错误:在函数dbubble()中的第二个内循环(反向冒泡),题目要求很清楚:“从f[n-2]开始(i=n-2),比较f[i]与f[i+1],若f[i]小于f[i-1],则交换f[i]和f[i-1]两个元素的值,”,所以,其中的“if(f[j]>f[j-1])”应改成“if(f[j]

第3处错误:在主函数中定义数组时使用了“int a[n]={4,7,-3,2,10,17,1,6,9,-4};”这样的形式,其中n是变量,而根据数组的定义我们知道,在定义数组时[]中表示的是数组元素的

个数,必须由“常量表达式”组成,而不能是变量。因此,只要将n改成10即可。

第4处错误:在主函数中,调用函数dbubble()时调用方式不对。原调用方式是“void dbubble(n,a);”,此处有两个错误,一是以语句方式调用函数时,其前面不能有“void”,应去掉;二是实参的顺序与函数dbubble()定义时的顺序不一致。因此,本错误应改成“dbubble(a,n);”。

2、参考答案与分析:

分析:

第1处错误:在函数find()的头部定义出错。函数头部定义为“void find(int a[5][])”,在二维数组的名字作为形参时,必须明确第二维的大小,第一维可以省略;但不能省略第二维中的每行的元素个数。因此,可以改成“void find(int a[][5])”或“void find(int a[5][5])”。

第2处错误:这处错误应在计算列元素之和的语句“for(row=0;row<5;row++) sum2+=a[j][row];”中。由于要求的是列元素之和,则列下标不应该变,而变化的是行下标。因此,可以将本处错误改成“for(row=0;row<5;row++) sum2+=a[row][j];”。

第3处错误:在C语言中,判断两个整数是否相等用的运算符是“==”,而“=”是赋值运算符,所以这处错误在“if(sum1=sum2) printf("a[%d][%d]: %d\n",i,j,a[i][j]);”语句中。应该改成“if(sum1==sum2) printf("a[%d][%d]: %d\n",i,j,a[i][j]);”。

第4处错误:这处错误出现在主函数中,在调用find()函数时,由于定义find()函数时形参只有一个,即二维数组的数组名,但在调用时却有两个实参,显然是错误的。应将语句“find(a,5);”改成“find(a);”

四、编程题

1、参考答案:

#include

#define M 10

main()

{ int k;

int jiec(int k); /*声明函数*/

float s=0;

printf(“ 计算代数式的值\n\n”);

for(k=1;k<=M;k++)

s+= 1.0/jiec(k); /*函数以表达式方式调用*/

printf(“计算结果为:s=%f\n”,s);

}

int jiec(k) /*计算阶乘值的函数,函数名前的int表示返回值的类型*/

int k;

{ int s,i;

s=1;

for(i=1;i<=k;i++) s*=i; /*计算1*2*3*…*k,并将计算结果赋值给变量s*/ return(s); /*将计算得的阶乘值返回调用函数(这里是主函数)*/

}

2、参考答案:

#include

#include

int shushu(int n)

{ int j,k=0;/*计数变量k清零*/ for(j=2;j<=sqrt(n);j++)

if(n%j==0) k++;

if(k!=0) return(0);

else return(1);

}

main()

{ int n,k;

printf(“Please input n:”);

scanf(“%d”,&n);

k=shushu(n);

if(k==0) pr intf(“\nNO!”);

else printf(“\nYes!”);

}

3、参考答案:

int str_len(char *str)

{int k=0;

while(*str!=‟\0‟) {k++; str++; }

return(k);

}

main()

{ char s[80];

printf(“Please input a string:”);

gets(s);

printf(“\nThe string length is : %d”,str_len(s));

}

4、参考答案:

#include

#include

void ex(int k,char str[])

{int a,b,c,d;

a=k/1000; b=k/100%10; c=k/10%10; d=k%10;

str[0]='0'+a; str[1]='0'+b; str[2]='0'+c; str[3]='0'+d; }

main()

{int i,k;

char s[4];

do{

printf("请输入一个4位整数:");

scanf("%d",&k);} while(!(k>=1000&&k<=9999));

ex(k,s);

for(i=0;i<4;i++) printf("%c ",s[i]);

数据结构(c语言版)课后习题答案完整版

数据结构(c语言版)课后习题答案完整版数据结构(C语言版)课后习题答案完整版 一、数据结构概述 数据结构是计算机科学中一个重要的概念,用来组织和存储数据,使之可以高效地访问和操作。在C语言中,我们可以使用不同的数据结构来解决各种问题。本文将提供完整版本的C语言数据结构的课后习题答案。 二、顺序表 1. 顺序表的定义和基本操作 顺序表是一种线性表,其中的元素在物理内存中连续地存储。在C 语言中,我们可以通过定义结构体和使用指针来实现顺序表。以下是顺序表的一些基本操作的答案: (1)初始化顺序表 ```c typedef struct{ int data[MAX_SIZE]; int length; } SeqList; void InitList(SeqList *L){

L->length = 0; } ``` (2)插入元素到顺序表中 ```c bool Insert(SeqList *L, int pos, int elem){ if(L->length == MAX_SIZE){ return false; // 顺序表已满 } if(pos < 1 || pos > L->length + 1){ return false; // 位置不合法 } for(int i = L->length; i >= pos; i--){ L->data[i] = L->data[i-1]; // 向后移动元素 } L->data[pos-1] = elem; L->length++; return true; }

``` (3)删除顺序表中的元素 ```c bool Delete(SeqList *L, int pos){ if(pos < 1 || pos > L->length){ return false; // 位置不合法 } for(int i = pos; i < L->length; i++){ L->data[i-1] = L->data[i]; // 向前移动元素 } L->length--; return true; } ``` (4)查找顺序表中的元素 ```c int Search(SeqList L, int elem){ for(int i = 0; i < L.length; i++){ if(L.data[i] == elem){

c语言程序设计课后习题及答案

c语言程序设计课后习题及答案 C语言程序设计是计算机科学与技术专业的一门基础课程,通过学习该课程,我们可以掌握C语言的基本语法和编程技巧,培养我们的编程思维和解决问题的能力。在课程学习过程中,老师会布置一些课后习题,以巩固我们的知识和提高我们的编程水平。下面我将分享一些C语言程序设计课后习题及其答案,希望对大家有所帮助。 1. 习题一:编写一个程序,输入一个整数,判断该数是否为素数。 ```c #include int main() { int num, i, flag = 0; printf("请输入一个整数:"); scanf("%d", &num); for (i = 2; i <= num / 2; i++) { if (num % i == 0) { flag = 1; break; } }

if (flag == 0) printf("%d是素数。\n", num); else printf("%d不是素数。\n", num); return 0; } ``` 2. 习题二:编写一个程序,输入一个正整数n,计算并输出1到n之间所有偶数的和。 ```c #include int main() { int n, i, sum = 0; printf("请输入一个正整数:"); scanf("%d", &n); for (i = 2; i <= n; i += 2) { sum += i; }

printf("1到%d之间所有偶数的和为:%d\n", n, sum); return 0; } ``` 3. 习题三:编写一个程序,输入一个正整数n,计算并输出n的阶乘。```c #include int main() { int n, i; long long factorial = 1; printf("请输入一个正整数:"); scanf("%d", &n); for (i = 1; i <= n; i++) { factorial *= i; } printf("%d的阶乘为:%lld\n", n, factorial); return 0;

《C语言程序设计》 课后习题答案 高等教育出版社

《C语言程序设计》课后习题答案高等教育 出版社 《C语言程序设计》课后习题答案 高等教育出版社 第一章:C语言概述 1. C语言的特点 C语言是一种以处理底层任务和系统编程为目标的高级编程语言。 其特点包括语法简洁、执行效率高、可移植性强等。 第二章:C语言基本数据类型 1. C语言中的基本数据类型 C语言中的基本数据类型包括整型、字符型、浮点型等。整型可以 进一步细分为有符号整型和无符号整型。 第三章:C语言运算符 1. C语言中的运算符 C语言中常见的运算符包括算术运算符、赋值运算符、关系运算符、逻辑运算符等。这些运算符用于执行各种数学和逻辑操作。 第四章:C语言控制语句 1. C语言中的条件语句

C语言提供了if语句和switch语句来实现条件判断。if语句用于执行基于布尔表达式的条件分支,而switch语句用于根据不同的值执行不同的代码块。 第五章:C语言函数 1. C语言中的函数定义和调用 函数是C语言中的基本模块,用于封装可重用的代码。函数定义包括函数返回类型、函数名、参数列表和函数体等部分。 第六章:C语言数组 1. C语言中的数组定义和使用 数组是一组相同类型的数据元素的集合。C语言中可以使用数组来存储和操作大量数据。 第七章:C语言指针 1. C语言中的指针概念 指针是一种变量,它存储了内存地址。通过指针,可以直接访问和修改对应内存地址中的数据。 第八章:C语言字符串 1. C语言中的字符串操作 字符串是由一系列字符组成的数据类型。C语言通过字符数组来表示和操作字符串。

第九章:C语言结构体 1. C语言中的结构体定义和使用 结构体是一种自定义的复合数据类型,它可以包含多个不同类型的成员变量。 第十章:C语言文件操作 1. C语言中的文件读写操作 文件操作是一种重要的数据输入和输出方式。C语言提供了一系列函数来实现文件的读写操作。 总结: 通过解答以上习题,我们可以更好地掌握C语言的各个方面,提升我们的编程能力和解决问题的能力。希望本文对读者有所帮助。

C语言课后习题答案

1.1选择题: ⑴一个C程序的执行是(A)。 A)从main()函数开始,直到main()函数结束 B)从第一个函数开始,直到最后一个函数结束 C)从第一个语句开始,直到最后一个语句结束 D)从main()函数开始,直到最后一个函数结束 ⑵计算机能直接执行的语言是(B)。 A)汇编语言B)机器语言C)高级语言D)A和B ⑶一个C程序是由(C)。 A)一个主程序和若干子程序组成 B)若干过程组成 C)一个或多个函数组成 D)若干子程序组成 ⑷下列说法正确的是(B )。 A)C程序书写格式限制严格,一行内必须写一个语句 B)C程序书写比较自由,一个语句可以分行写在多行上 C)C程序书写格式限制严格,要求一行内必须写一个语句,并要求行号 D)C程序中一个语句不可以分写在多行上 1.2填空题: ⑴构成C语言程序的基本单位是函数。 ⑵C语言源程序文件的后缀是.c,经过编译后,生成文件的后缀是,obj,经过连接后,生成文件的后缀是.exe。 ⑶在TURBO C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是.exe。 ⑷一个C语言程序必须有而且只能有一个主函数,它的函数名为main。 ⑸一个函数有两部分组成,第一部分称为函数首部;第二部分称为函数体。 ⑹函数体由符号{开始,用符号}结束。函数体的前面是声明部分,其后是执行部分。 1.3上机编辑、调试、运行下列程序,发现错误,并改正之。 /*求1 + 2 + 3 + ……+ 10的和*/ #include main() { int sum,n; sum = 0;n = 1; while(n < 10) {sum = sum + n; n = n + 1; } printf("sum = %d \n",sum); }

《C语言程序设计》第三版课后答案

《C语言程序设计》第三版课后答案第一章:C语言基础知识 1.1 C语言的历史和特点 C语言是由贝尔实验室的Dennis Ritchie在20世纪70年代初开发的 一种高级计算机编程语言。C语言具有简洁、高效、可移植性强等特点,成为了编写系统软件和应用软件的首选语言。 1.2 C语言的开发环境 为了编写和运行C语言程序,我们需要安装并配置相应的开发环境。常用的开发环境包括Code::Blocks、Dev-C++和Eclipse等。这些开发 环境提供了编辑器、编译器和调试器等工具,方便我们进行程序开发 和调试。 1.3 C语言的基本语法 C语言的基本语法包括关键字、标识符、数据类型、变量、常量、 运算符和控制语句等。关键字是C语言预先定义的词汇,如int、if、 for等。标识符是程序中自定义的名称,用于标识变量、函数等。数据 类型包括整型、浮点型、字符型和指针型等。变量是存储数据的位置,常量是不可修改的数据。运算符用于进行数学和逻辑运算。控制语句 包括条件语句和循环语句,用于控制程序的执行流程。 第二章:C语言基本程序设计 2.1 程序的结构

C语言程序由多个函数组成,其中main函数是程序的入口,是程序执行的起点。在main函数中,我们可以调用其他函数来完成具体的任务。一个基本的C语言程序结构包括包含头文件、定义变量、执行语 句和返回值等部分。 2.2 输入和输出 输入和输出是C语言程序中常见的操作。标准库提供了一系列函数,如printf和scanf,用于输出和输入数据。其中printf函数用于格式化输 出数据,scanf函数用于接收用户的输入。 2.3 运算和赋值 C语言支持多种运算符,如算术运算符、关系运算符、逻辑运算符 和位运算符等。这些运算符可以用于数值计算和条件判断。赋值运算 符用于给变量赋值。 2.4 条件语句 条件语句根据条件的成立与否来决定程序的执行路径。C语言提供 了if语句和switch语句来实现条件控制。if语句根据条件的真假来执 行不同的代码块。switch语句根据表达式的值来选择执行相应的分支。 2.5 循环语句 循环语句用于重复执行一段代码块。C语言提供了while循环、do-while循环和for循环等几种循环结构。while循环在循环开始之前检查 条件,do-while循环在循环结束之后检查条件,for循环在循环中控制 初始化、条件和步进。

C语言课后习题答案

第一章习题答案 一、选择题 1~5:BDCDA 6~10:DABBB 11~12:CC 二、填空题 1、main() 2、函数首部,函数体 3、函数 4、编辑、编译、连接、运行 5、.cpp、.obj、 .exe 6、; 或分号 三、编程题 #include /* 包含标准库的信息 */ void main() /* 定义名为main 的函数,它不接受参数值 */ { /* main函数的语句都被括在花括号中 */ printf("hello, world\n"); /* main 函数调用库函数printf 以 显示字符序列,其中\n代表换行符 */ } 第二章习题答案 一、选择题 1~5:CBABB 6~10:CDCDD 11~15:CADBC 16~20:BDAAD 二、填空题 1、整型,实型,字符型,枚举类型 2、1 3、9 4、12353514 5、2,1 6、2,2 7、10 20 0 8、a=14 9、2,3,1 10、double 第三章习题答案 一、选择题 1~5:CBBBC 6~10:DDDBB 二、填空题 1、控制语句,表达式语句,复合语句 2、; 3、{} 4、1 5、a 6、c:dec=120,oct=170,hex=78,ASCII=x 7、32767,32767 8、10,A,10 9、3 3 10、 (1) 123.456001 (2) □□□□□□□ 123.456 (3) 123.4560 (4) 8765.456700 (5) □□□□□□ 8765.457 (6) 8765.4567 (7) 8765.4567 三、编程题 1、参考答案: #include void main() { int a,b,c; long int u,n; float x,y,z; char c1,c2; a=3;b=4;c=5; x=1.2;y=2.4;z=-3.6; u=51274;n=128765; c1='a';c2='b'; printf("\n"); printf("a=%2d b=%2d c=%2d\n",a,b,c ); printf("x=%8.6f,y=%8.6f,z=%9.6f\n",x, y,z); printf("x+y=%5.2f y+z=%5.2f z+x=%5. 2f\n",x+y,y+z,z+x); printf("u=%6ld n=%9ld\n",u,n); printf("c1='%c' or %d(ASCII)\n",c1,c1); printf("c2='%c' or %d(ASCII)\n",c2,c2); } 2、参考答案: #include void main() { float a, b, c, t;

C语言教材后习题及答案

第一章 1.什么是程序?什么是程序设计语言? 2.C语言有什么特点? 3.什么是算法?算法的描述有哪些基本方法? 第一章主要关注两个概念:一是程序的三种结构(顺序、分支或叫选择、循环) ;二是函数,主函数main() 第二章 1.指出下列哪些是C语言合法的用户识别符。 void a3_b3 For 2a defi ne _123 _abc DO 2.指出下列哪些是C语言合法的常量。 "3'4 " " 0x1g 33 " a" E20 '\18' \0xa' 1.E-5 3.F '\0' .12 '\a' "3'4 ""双引号内表示字符串,但要在一个串内含有单引号、双引号要用转义字符正确的是:’4\"" 0x是十六进制的表示形式之一,但十六进制里没有g这个数值 \0xa'带一个单引号、0开头,无意义.这里要注意\ddd,1-3 位八进制数,\xhh,1-2位十进制数,他们都表示对应的ASCII值 E20, E表示指数形式,但两边必须都有数字。 将此题全部弄懂,所有关于常量的分基本跑不掉了。 3.指出下列定义变量语句中的错误。 int a;b=5; //同类型的两个变量,中间不能用分号。 doubel h; //double int x,float y; //中间要用分号 float f(x); //非法符号 定义变量要注意,数据类型的关键字,还有就是变量名称必须是合法标识符 4.写出能表示数学式子1/(2a + 1/2a)的C语言表达式 1.0/(2*a+1/(2*a)) 5.⑴#include int main() { double x=1,y;

y=x+3/2; prin tf("y=%f\n",y); return 0; }结果是:2.000000,注意3/2=1 ⑵ #i nclude int main() { float x=2.9,y=3.2, z; int a=8; z=x+a%3*(i nt)(x+y)/2; prin tf("z=%f\n",z); return 0; } 结果是:8.900000,注意(int)(x+y) =6。 ⑶ #i nclude int main() { int a=65,b=-20; char ch='A'; float x=12.345678f; prin tf("abc\n\101\t\x41\\101\n"); prin tf("a=%d,%c,%o,%x\n",a,a,a,a); prin tf("b=%d,%o,%x,%u\n",b,b,b,b); prin tf("ch=%d,%c\n",ch,ch); prin tf("x=%f,%.2f,%10.2f,%-10.f\n",x,x,x,x); return 0; 此题包含的内容较多,都是细节,希望对照教材仔细分析结果6程序设计。 (1)输出如下的图形。 *****

C语言程序设计谭浩强第三版++课后习题答案

第六章循环语句 6.1输入两个正数,求最大公约数和最小公倍数. int main() { int a,b,num1,num2,temp; printf("请输入两个正整数:\n"); scanf("%d,%d",&num1,&num2); if(num10;c--) if((a%c)&&(b%c)==0) break; printf("最大公约数为%d",c); printf("最大公倍数为%d",a*b/c); 6.2输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数. 解: #include int main() { char c; int letters=0,space=0,degit=0,other=0; printf("请输入一行字符:\n"); while((c=getchar())!='\n')

{ if(c>='a'&&c<='z' || c>'A'&&c<='Z') letters++; else if(c==' ') space++; else if(c>='0'&&c<='9') digit++; else other++; } printf("其中:字母数=%d 空格数=%d 数字数=%d 其它字符数=%d\n",letters,space, digit,other); return 0; } 6.3求s(n)=a+aa+aaa+…+aa…a之值,其中a是一个数字,n表示a的位数。 解: int main() { int a,n,count=1,sn=0,tn=0; printf("请输入a和n的值:\n"); scanf("%d,%d",&a,&n); printf("a=%d n=%d \n",a,n); while(count<=n) { tn=tn+a; sn=sn+tn; a=a*10; ++count; } printf("a+aa+aaa+…=%d\n",sn); return 0; } 循环体改成: count=1,sn=0; { sn+=a; a+=10a; count++; }

c语言程序设计(第3版)的习题答案

c语言程序设计(第3版)的习题答案c语言程序设计(第3版)的习题答案 本文为《c语言程序设计(第3版)》中的习题答案汇总,旨在帮助读者更好地理解和掌握该教材。以下是各章节习题的详细解答:第1章:计算机概述 习题1: 答案:计算机是一种能够接受输入数据、对其进行逻辑和算术运算,并产生输出结果的电子设备。 习题2: 答案:计算机主要由中央处理器(CPU)、主存储器、输入设备和输 出设备四个主要部分组成。 ...... 第2章:c语言概述 习题1: 答案:C语言是一种通用的高级编程语言,由贝尔实验室的Dennis Ritchie于1972年开发。 习题2: 答案:C语言的特点包括高效性、可移植性、灵活性和丰富的操作 符与控制语句。

...... 第3章:数据类型、运算符和表达式 习题1: 答案:C语言中的基本数据类型包括int、float、double、char等。 习题2: 答案:C语言中的运算符包括算术运算符、关系运算符、逻辑运算符等。 ...... 第4章:程序控制结构 习题1: 答案:C语言中的程序控制结构主要包括顺序结构、选择结构和循环结构。 习题2: 答案:顺序结构是指程序按照语句的顺序依次执行,没有分支和循环。 ...... 第5章:函数 习题1:

答案:C语言中的函数由函数头和函数体组成。 习题2: 答案:函数的定义包括函数名、返回类型、参数列表和函数体。...... 第6章:数组和字符串 习题1: 答案:数组是一组相同类型的数据元素的集合。 习题2: 答案:C语言中的字符串是以空字符'\0'结尾的字符数组。...... 第7章:指针 习题1: 答案:指针是用来存储另一个变量的地址的变量。 习题2: 答案:指针变量可以通过取地址运算符(&)获取普通变量的地址。...... 第8章:结构和共用体 习题1:

c语言第四版课后习题答案

c语言第四版课后习题答案 C语言第四版课后习题答案 在学习C语言第四版课程后,许多学生都会遇到各种各样的问题和疑惑。为了帮助大家更好地掌握C语言的知识,我们整理了一些课后习题的答案,希望能够对大家有所帮助。 1. 什么是C语言? C语言是一种通用的高级程序设计语言,它广泛应用于系统软件、应用软件、驱动程序、网络通信等领域。C语言具有高效、灵活、可移植等特点,是程序员必备的基本技能之一。 2. C语言的基本语法有哪些? C语言的基本语法包括数据类型、变量、运算符、控制语句、函数等。学习C 语言首先要掌握这些基本语法,才能够编写出正确的程序。 3. 如何定义一个变量? 在C语言中,可以使用关键字“int”、“float”、“char”等来定义不同类型的变量。例如: int a; // 定义一个整型变量a float b; // 定义一个浮点型变量b char c; // 定义一个字符型变量c 4. 如何进行条件判断? 在C语言中,可以使用“if”、“else”、“switch”等关键字来进行条件判断。例如:if (a > b) { printf("a大于b");

} else { printf("a小于等于b"); } 5. 如何定义一个函数? 在C语言中,可以使用关键字“void”、“int”、“float”等来定义不同类型的函数。例如: int max(int a, int b) { if (a > b) { return a; } else { return b; } } 通过学习C语言第四版课程,我们可以更好地理解和掌握C语言的知识,提高自己的编程能力。希望大家能够通过不断练习和实践,掌握C语言的基本原理和技巧,成为一名优秀的程序员。

c语言程序设计教程第二版课后习题答案

c语言程序设计教程第二版课后习题答案第一章:C语言基础 1. 以下为C语言的特点: - C语言是一种结构化编程语言,可以通过模块化的方式构建复杂的程序。 - C语言具有较高的可移植性,可以在不同的操作系统和硬件平台上运行。 - C语言提供了丰富的库函数,方便开发者进行程序开发。 - C语言对指针的支持较好,可以进行底层的内存操作。 2. C语言中的标识符规则: - 标识符由字母、数字和下划线组成,且第一个字符不能是数字。 - 标识符区分大小写,因此变量名"num"和"Num"是不同的。 - 标识符不能与关键字重名,如"if"、 "for"等。 - 标识符长度一般不超过32个字符。 3. 在C语言中,预处理指令的作用是在程序编译之前对代码进行处理,包括宏展开、文件包含等。预处理指令以"#"开头,常见的预处理指令有: - #include:用于包含头文件,将头文件中的内容插入到当前文件中。

- #define:用于定义宏,将宏名称替换为指定的值或代码片段。 - #ifdef、#ifndef、#endif:用于条件编译,根据条件是否成立来选择性地编译代码。 4. C语言中的数据类型分为基本数据类型和派生数据类型两种。基本数据类型包括整型、浮点型、字符型和布尔型,派生数据类型包括数组、指针、结构体和共用体。 5. C语言中的运算符主要分为算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符等。算术运算符用于执行加减乘除等基本算术操作,关系运算符用于比较两个值的大小关系,逻辑运算符用于组合多个条件的判断结果,位运算符用于对二进制位进行操作,赋值运算符用于将右侧的值赋给左侧的变量。 第二章:C语言程序结构 1. C语言程序结构由函数、语句和注释组成。每个C语言程序至少包含一个main()函数,作为程序的入口。 2. 以下为C语言程序的基本结构: ```c #include int main() { // 程序代码 return 0;

C语言程序设计(第二版)习题参考答案

C语言程序设计(第二版)习题参考答案 为了适应标题所需的字数限制,我将按照适当的格式和排版要求来回答C语言程序设计(第二版)习题的参考答案。以下是部分习题的解答示例: 1. 基本概念与语法 1.1 变量和数据类型 C语言中的变量用于存储不同类型的数据。常见的数据类型包括整型、浮点型、字符型等。例如,声明一个整型变量x并赋值为10的方法如下: ```c int x = 10; ``` 1.2 操作符和表达式 C语言提供了丰富的操作符和表达式,用于进行数值计算和逻辑判断。例如,使用逻辑与(&&)操作符可以判断两个条件同时成立的情况,示例如下: ```c if (x > 0 && x < 100) { // 满足条件的代码

``` 2. 流程控制 2.1 分支结构 流程控制中的分支结构用于根据条件来执行不同的代码块。常见的 分支结构有if语句和switch语句。例如,使用if语句判断一个数的正 负情况: ```c if (x > 0) { printf("x是正数\n"); } else if (x < 0) { printf("x是负数\n"); } else { printf("x是零\n"); } ``` 2.2 循环结构 循环结构用于多次执行相同的代码块。常见的循环结构有for循环、while循环和do-while循环。例如,使用for循环输出1到10的数字:

for (int i = 1; i <= 10; i++) { printf("%d ", i); } printf("\n"); ``` 3. 函数和数组 3.1 函数的定义和调用 函数是一段完成特定功能的代码块,可以多次调用。函数的定义包括函数名、参数列表和返回值类型。例如,定义一个用于计算两个整数相加的函数: ```c int add(int a, int b) { return a + b; } // 调用add函数 int result = add(3, 5); printf("3 + 5 = %d\n", result); ```

C语言课后习题答案(最终)

C语言课后习题答案(最终) 第0章习题 1. 将下列十进制数分别转化为二进制数、八进制数和十六进制数:(1)128 (2)511 (3)1024 (4)65535 (5)1048575 答: (1)10000000、200、80 (2)111111111、777、1FF (3)10000000000、2000、400 (4)1111111111111111、177777、FFFF (5)11111111111111111111、3777777、FFFFF 2. 将下列二进制数转化为十进制数和十六进制数:(1)1100110101B (2)101101.1011B 答: (1)821、335 (2)45.6875、2D.B 3. 写出下列数的原码、反码、补码:15、-20、-27/32 答: (1)00001111、00000000、00001111 (2)10010100、11101011、11101100 (3)1.1101100、1.0010011、1.0010100 4. 16位无符号定点整数的数值表示范围为多少?8位补码的表示范围是多少?16位补码的表示范围是多少?答: 5.1968年Dijkstra提出结构化程序设计的思想的原因是什么?简要回答结构化程序设计的经典定义。答: 结构化程序设计概念的提出主要是源于程序结构的层次性与模块化使得构造出来的软件具有良好的可理解性和可维护性,随着软件规模的扩大与复杂性的提高,程序的可维护性成为程序设计者们关注的重要问题之一。 如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。 6.C程序在内存中存储在哪儿?计算机的内存空间是如何分区的?分区存放不同类型的数据的目的是什么?答: 0~65535、-128~127、-32768~32767 C语言程序属于应用程序,程序代码本身存放在应用程序区,程序运行时处理的数据存计算机的内存空间主要分为3个区:系统程序区、应用程序区和数据区,其中数据区

c语言与程序设计-第2章课后习题参考答案

2.1 下列哪些是词法记号? 关键字(是) 注释 空白符 八进制常量(是) 三字符序列 字符串常量(是) 括号(是) 2.2 C编译器可将下列每一个源字符串分解为哪些记号?(不必考虑记号组合是否合法) (1)x+++y x, ++, +, y (2)-0xabL -, 0xabL (3) 2.89E+12L 2.89E+12L (4)"String+\"FOO\"" " String+ \"FOO\"" (5)x**2 x, *, *, 2 (6)"X??/" "X??/" (7)a?b a, ?, b (8)x--+=y x, --, +=, y (9)intx=+10 intx, =, +, 10 (10)"String""FOO" "String", "FOO" (这道题当时改的时候有几个小题改得有错误,注意!) 2.3 下列哪些不是标识符,为什么? 标识符由字母、数字和下划线组成,但首字符必须是字母或下划线。 4th 不是,以数字开头; sizeof 不是(标准C的关键字) _limit 是 _is2 是 xYshould 是 x*y 不是,* 非法 o_no_o_no 是 temp-2 不是,- 非法 isn't 不是,' 非法 enum 不是(标准C的关键字。注:关键字也称为保留字,是被系统赋予特定含义并有专门用途的标识符。关键字不能作为普通标识符,但可以作为宏名。所有预处理均发生在识别这些关键字之前。) 2.4 在下列表示中,哪些是合法常数,哪些是非法常数?对于合法常数,指出其类型;对于非法常数,说明其错误原因。 2L 合法,long长整型 ''' 不合法,单引号组中的单引号前需要转义字符

《C语言程序设计教程》(第三版)课后习题参考答案(精选5篇)[修改版]

第一篇:《C语言程序设计教程》(第三版)课后习题参考答案C语言程序设计课后习题参考答案 习题一 一、单项选择题 1、C 2、B 3、B 4、C 5、D 6、A 7、C 8、A 二、填空题 1、判断条件 2、面向过程编程 3、结构化 4、程序 5、面向对象方法 6、基本功能操作、控制结构 7、有穷性 8、直到型循环结构 9、算法 10、可读性

11、模块化 12、对问题的分解和模块的划分习题二 一、单项选择题 1、B 2、D 3、C 4、B 5、A 二、填空题 1、主 2、C编译系统 3、结构化 4、程序 5、面向对象方法 6、.OBJ 7、库函数 8、直到型循环结构 习题三 一、单项选择题 1、D 2、B 3、A 4、C

9、B 10、C 11、A 12、D 13、C 17、B 18、C 19、C 20、D 21、A 25、D 26、A 二、填空题 1、补码 2、10^-138~10^1 38、15~16 6、A 7、B 6、D 7、B 14、B 15、C 22、D

8、C 8、D 16、A 24、D、A 3、实 4、单目运算符、自右向左 5、函数调用 6、65,89 习题四 一、单项选择题 1、D 2、C 3、D 4、A 5、D 6、B 7、A 8、C 9、B 10、B 二、填空题 1、两, ; 2、5.169000

3、-200 2500、i=-200,j=2500回车、i=-200回车j=2500回车 4、a=98,b=765.000000,c=4321.000000 5、100 25.81 1.892 34、100,25.81,1.892 34、100回车25.81回车1.89234回车 6、0,0,3 7、3 8、scanf(“%lf %lf %lf”,&a,&b,&c); 9、13 13.000000 13.000000 10、c=b-a;a=b+c; 习题五 一、单项选择题 1、B 2、D 3、C 4、B 5、B 6、D 7、A 8、B 二、填空题 1、1 、0 2、k!=0 3、if(x>4||x

c语言程序设计第五版习题答案

c语言程序设计第五版习题答案 1. 基础语法练习 1.1 写一个程序,要求用户输入两个整数,然后计算并输出这两个整数的和。 ```c #include int main() { int num1, num2; printf("请输入两个整数:"); scanf("%d %d", &num1, &num2); int sum = num1 + num2; printf("两个整数的和为:%d\n", sum); return 0; } ``` 1.2 写一个程序,要求用户输入一个字符,然后判断该字符是否为数字字符('0'-'9')。 ```c #include

int main() { char ch; printf("请输入一个字符:"); scanf(" %c", &ch); // 注意空格 if (ch >= '0' && ch <= '9') { printf("该字符是一个数字字符。\n"); } else { printf("该字符不是一个数字字符。\n"); } return 0; } ``` 2. 控制流程练习 2.1 写一个程序,找出1~100之间所有能被7整除的数,并输出它们的和。 ```c #include int main() { int sum = 0;

for (int i = 1; i <= 100; i++) { if (i % 7 == 0) { printf("%d ", i); sum += i; } } printf("\n这些数的和为:%d\n", sum); return 0; } ``` 2.2 写一个程序,打印如下图案: ``` * ** *** **** ***** ``` ```c

c语言习题及参考答案

第1章C语言概述 (一)选择题 1.一个C程序的执行是从 A 。答案A A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.以下叙述不正确的是 D 。 A) 一个C源程序必须包含一个main函数 B) 一个C源程序可由一个或多个函数组成 C) C程序的基本组成单位是函数 D) 在C程序中,注释说明只能位于一条语句的后面 3.以下叙述正确的是 C 。 A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误 B) 在C程序中,main函数必须位于程序的最前面 C) C语言本身没有输入输出语句 D) C程序的每行中只能写一条语句 4.一个C语言程序是由 B 。 A)一个主程序和若干个子程序组成 B) 函数组成 C) 若干过程组成 D) 若干子程序组成 5. C语言程序编译时,程序中的注释部分______D______. A) 参加编译,并会出现在目标程序中 B) 参加编译,但不会出现在目标程序中 C) 不参加编译,但会出现在目标程序中 D) 不参加编译,也不会出现在目标程序中 (二)填空题 1、C语句结束符为____;_____________. 2、C语句注释符号为:_/* */______________. 3、一个C程序总是从____main函数______________开始执行的。 第3章数据类型、运算符与表达式 (一)选择题 1. 若x、i、j、k都是int型变量,则计算下面表达式后,x的值为( C )。 x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 52 2.下列四组选项中,均不是C语言关键字的选项是( A )。 A) define IF type B) getc char printf C) include case scanf D) while go pow 3. 下列四组选项中,均是不合法的用户标识符的选项是( B )。 A) W P_0 do B) b-a goto int C) float la0 _A D) -123 abc TEMP 4. 下列四组选项中,均是合法转义字符的选项是( A )。 A) ‘\”’ ‘\\’ ‘\n’ B) ‘\’ ‘\017’ ‘\”’ C) ‘\018’ ‘\f’ ‘\xab’ D) ‘\\0’ ‘\101’ ‘\xlf’ 5 . 下面正确的字符常量是( D )。 A) “c” B) ‘\\’’ C) a D) ‘K’ 6 .以下叙述不正确的是( D )。 A) 在C程序中,逗号运算符的优先级最低 B) 在C程序中,MAX和max是两个不同的变量

相关文档
最新文档