文档库 最新最全的文档下载
当前位置:文档库 › C语言答案第6章

C语言答案第6章

C语言答案第6章
C语言答案第6章

第6章

[习题6-1]更正下面函数中的错误。

(1)返回求x和y平方和的函数。 (2)返回求x和y为直角边的斜边的函数。

sum_of_sq(x,y) hypot(double x,double y)

{ {

double x,y; h=sqrt(x*x+y*y);

return(x*x+y*y); return(h);

} }

解:

/*c6_1(1).c*/ /*c6_1(2).c*/

(1) (2)

double sum_of_sq(double x,double y) double hypot(double x,double y)

{ {

return(x*x+y*y); double h;

} h=sqrt(x*x+y*y);

return(h);

}

[习题6-2]下面函数的功能是什么?

(1)itoa (int n, char s [ ] ) (2)int htod(char hex [ ] ) { { int i,dec=0;

static int i=0,j=0; for(i=0;hex[i]!='\0';i++) int c; { if(hex[i]>='0'&&hex[i]<='9') if(n!=0) dec=dec*16+hex[i]-'0';

{ if(hex[i]>='A'&&hex[i]<='F')

j++; dec=dec*16+hex[i]-'A'+10;

c=n%10+'0'; if(hex[i]>='a'&&hex[i]<='f')

itoa(n/10,s); dec=dec*16+hex[i]-'a'+10;

s[i++]=c; }

} return(dec);

else }

{ (3) void stod(int n)

if(j==0) s[j++]='0'; { int i;

s[j]='0'; if(n<0)

i=j=0; { putchar('-');n=-n;}

} if((i=n/10)!=0) stod(i);

} putchar(n%10+'0');

}

答案:(略)

[习题6-3]编写已知三角形三边求面积的函数,对于给定的三个量(正值),按两边之和

大于第三边的规定,判别其能否构成三角形,若能构成三角形,输出对应的三角形面积。要

求主函数输入10组三角形三边,输出其构成三角形的情况。

/*c6_3.c*/

#include

#include

double s(double a,double b,double c)

{

double s,ss;

if(a+b

{

printf("Error Data");

return -1;

}

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

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

printf("S=%lf",ss);

return ss;

}

void main()

{

int i;

double a,b,c;

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

{

scanf("%lf %lf %lf",&a,&b,&c);

s(a,b,c);

}

}

[习题6-4]分别编写求圆面积和圆周长的函数,另编写一主函数调用之,要求主函数能输入多个圆半径,且显示相应的圆面积和周长。

答案:(略)

[习题6-5]设有两个一维数组a[100],b[100],试编写程序分别将它们按升序排序,再将a、b两数组合并存入c数组。使得c数组也按升序排序。若a、b有相等的元素,则把a 数组的相等元素优先存入c数组中(其中c数组为c[200])。

/*c6_5.c*/

#include

#include

void sort(int a[],int size)

{

int i,j,k,min;

for(i=0;i

{

min=i;

for(j=i+1;j

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

k=a[i];

a[i]=a[min];

a[min]=k;

}

}

void main()

{

int a[100],b[100],c[200];

int i,ia,ib,ic;

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

{

a[i]=2*i+1;

b[i]=2*i+2;

}

sort(a,100);

sort(b,100);

ia=0;

ib=0;

ic=0;

for(;;)

{

if(a[ia]

c[ic++]=a[ia++];

else if (a[ia]>b[ib])

c[ic++]=b[ib++];

else

{

c[ic++]=a[ia++];

ib++;

}

if(ia==100)

{

for(;ib<100;ib++)

c[ic++]=b[ib];

break;

}

if(ib==100)

{

for(;ia<100;ia++)

c[ic++]=a[ia];

break;

}

}

for(i=0;i

printf("%4d",c[i]);

}

[习题6-6]编写一程序,把M×N矩阵a的元素逐列按降序排列。假设M、N不超过10,分别编写求一维数组元素值最大和元素值最小的函数,主函数中初始化一个二维数组a[10][10],调用定义的两函数输出每行、每列的最大值和最小值。

/*c6_6.c*/

#include

int test(int t)

{

int i;

for(i=2;i<=t/2;i++)

if(t%i==0)

return 0; return 1;

}

void main()

{

int n;

scanf("%d",&n);

printf("result=%d",test(n));

}

[习题6-7]编写一判别素数的函数,在主函数中输入一个整数,输出该数是否为素数的信息。

/*c6_7.c*/

num(x)

int x;

{int i,l;

for(i=2;i

{if(x%i) l=1;

else l=0;}

return(l);}

#include “stdio.h"

main()

{int a,l;

printf("Input a value of a:");

scanf("%d",&a);

num(a);

if(l)

printf("It is a prime.");

else

printf("It is not a prime.");}

[习题6-8]编写程序,实现由主函数输入m 、n ,按下述公式计算并输出n

m C 的值。

)!

n m (!n !m C n

m -= /*c6_8.c*/ #include int func(int n) {

int i,s=1;

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

{

s=s*i;

}

return s; }

void main()

{

int m,n;

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

printf("%d",func(m)/(func(n)* func(m-n)));

}

[习题6-9]编写一个将两个字符串连接起来函数(即实现strcat函数的功能),两个字符串由主函数输入,连接后的字符串也由主函数输出。

/*c6_9.c*/

#include

int strcat1(char *s1,char *s2)

{ int t;

while(*s1) s1++;

while(*s2)

{*s1=*s2;

s1++;

s2++; }

*s2=’\0’;

}

void main()

{ char *s1="Test1";

char *s2="Test2";

strcat1(char *s1, char *s2)

printf("%s",s1); } /*puts(s1);*/

[习题6-10]编写一个实现strcmp函数功能的函数,并试用主函数调用之。

/*c6_10.c*/

#include

int strcmp(char *s1,char *s2)

{

int t;

while((t=(*s1-*s2))==0 )

{

s1++;

s2++;

if(*s1==0) break;

}

return t;

}

void main()

{

char *s1="Test1";

char *s2="Test2";

printf("strcmp %s,%s=%d",s1,s2,strcmp(s1,s2));

}

[习题6-11]编写一个实现strcpy函数功能的函数,并试用主函数调用。

答案:(略)

[习题6-12]编写一个实现strlen函数功能的函数,并试用主函数调用之。

/*c6_12.c*/

#include

int strlen(char *s)

{

int t=0;

while(*(s+t))

t++;

return t;

}

void main()

{

char *s1="Test1";

printf("strlen %s =%d",s1,strlen(s1));

}

[习题6-13]编写一函数,调用6.11题的函数,将字符数组char1[10]的前5个字符复制到字符数组char2[10]中。主函数实现字符数组char1[10]的初始化,并输出复制后的字符数组ch2[10]的内容。

答案:(略)

[习题6-14]编写一函数实现用弦截法求方程x3-3x2+3x-9=0的近似根。主函数完成各系数值的输入及所求得的根值的输出。

/*c6_14.c*/

#include

#include

float f(float x)

{

float y;

y=((x-3.0)*x+3.0)*x-9.0;

return (y);

}

float xpoint(float x1,float x2)

{

float x;

x=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));

return (x);

}

float root(float x1,float x2)

{

float x,y,y1;

y1=f(x1);

do

{

x=xpoint(x1,x2);

y=f(x);

if(y*y>0)

{

y1=y;

x1=x;

}

else

x2=x;

}while(fabs(y)>0.0001);

return (x);

}

void main()

{

float x1,x2,f1,f2,x;

do

{

printf("\n Input X1,X2:");

scanf("%f,%f",&x1,&x2);

f1=f(x1);

f2=f(x2);

}while(f1*f2>=0);

x=root(x1,x2);

printf("Root is %f",x);

}

[习题6-15]编写一函数实现用牛顿迭代法求方程ax3+bx2+cx+d=0在x=1附近的一个实根。主函数完成各系数值的输入及所求得的根值的输出。

迭代公式:

f(x n)

x n+1=x n- ---------

f’(x n)

|x n+1-x n|<1e-5

/*c6_15.c*/

#include

float root(a,b,c,d)

float a,b,c,d;

{float x=1,x1,f,f1;

do{x1=x;

f=((a*x1+b)*x1+c)*x1+d;

f1=(3*a*x1+2*b)*x1+c;

x=x1-f/f1;

}while(fabs(x-x1)>=0.00001);

return(x);}

main()

{float a,b,c,d;

printf("Enter values to a,b,c,d\n");

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

printf("\nx=%8.4f\n",root(a,b,c,d));

}

[习题6-16]编写程序完成用递归方法求n阶勒让德多项式的值。递归公式为:

1 n=0

H n(x)= x n=1

(2n-1)·x·H n-1(x)-(n-1)·H n-2(x)/n n>1

/*c6_16.c*/

#include

double func(int n,double x)

{

switch(n)

{

case 0:

return 1;

case 1:

return x;

default:

return (2*n-1)*x*func(n-1,x)-(n-1)*func(n-2,x)/n;

}

}

void main()

{

double x=0.1;

int n=5;

printf("%lf",func(n,x));

}

[习题6-17]编写计算最小公倍数的函数,试由主函数输入两个正整数a和b调用它。计算最小公倍数的公式为:

lcm(u,v)=u*v/gcd(u,v) (u,v≥0)

其中,gcd(u,v)是u、v的最大公约数。lcm(u,v)是u、v的最小公倍数。

/*c6_17.c*/

int getgcd(int m,int n)

{int temp;

while(m!=n)

{if(m

m=m-n; }

return(m); }

int getlcm(int m,int n)

{return(m*n/getlcm(m,n)); }

#include " stdio.h"

main()

{int m,n,t;

printf("Enter values to m,n:\n");

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

t=getlcm(m,n);

printf("%d",t);

}

[习题6-18]编写一个计算x的y次幂的递归函数,x为double型,y为int型,函数返回值为double型。函数中使用下面的格式:

power(x,0)=1.0;

power(x,y)=power(x,y-1)*x;

要求从主程序输入浮点数,调用这个递归函数,求其整数次幂。

/*c6_18.c*/

#include

double power(double x,int y)

{

switch(y)

{

case 0:

return 1;

default:

return power(x,y-1)*x;

}

}

void main()

{

double x=2;

int y=5;

printf("%lf",power(x,y));

}

[习题6-19]将6.3题改为用带参数的宏名来求面积。

/*c6_19.c*/

#include

#define n(a,b,c) (a+b+c)/2

#define s(a,b,c,n) sqrt(n(a,b,c)*(n(a,b,c)-a)

*(n(a,b,c)-b)*(n(a,b,c)-c))

#include "stdio.h"

main()

{float a,b,c,d;

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

{scanf("%f%f%f",&a,&b,&c);

if(a+b>c&&a+c>b&&b+c>a&&a>0&&b>0&&c>0)

{d=s(a,b,c,n);

printf("It can form a triangle\n");

printf(“d=%f",d);

}

else printf("It can not form a triangle\n");

}

[习题6-20]编写一个实现将十六进制数转换成相应十进制数的函数,并试用主函数调用之。

/*c6_20.c*/

#include

int HexToInt(char *s)

{

int n=0,t;

char c;

while(c=*s++)

{

t=0;

if ('0'<=c&&c<='9')

t=c-'0';

if ('A'<=c&&c<='F')

t=c-'A'+10;

if ('a'<=c&&c<='f')

t=c-'a'+10;

n=n*16+t;

}

return n;

}

void main()

{

char *s="A00D";

printf("%d",HexToInt(s));

}

[习题6-21]编写一个将英文字符串中所有字的首字符转换成相应大写字符的函数,并试用主函数调用。

答案:(略)

[习题6-22]编写一函数aver(a,n),其中a是整型一维数组,n是a数组的长度,要求通过全局变量pave和nave将a数组中正数和负数的平均值传递给调用程序。

/*c6_22.c*/

#include

double pave,nave;

void aver(int a[],int n)

{

int i;

int v1=0,v2=0,t1=0,t2=0;

for(i=0;i

{

if(a[i]>0)

{

v1+=a[i];

t1++;

}

else

{

v2+=a[i];

t2++;

}

}

pave=(double)v1/t1;

nave=(double)v2/t2;

}

void main()

{

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

aver(a,6);

printf("%lf,%lf",pave,nave);

}

[习题6-23]编写一程序,每调用一次函数,显示一静态局部变量中的内容,然后为其加1。

答案:(略)

[习题6-24]输入10个学生的3门课的成绩,分别用函数求:

(1) 每个学生的平均分;

(2) 每门课的平均分;

(3) 按学生平均分降序排列输出学生信息;

(4) 统计不及格学生,输出其相应信息。

(5) 编写一菜单主函数,菜单内容包括以上四部份。

/*c6_24.c*/

#include

#include

#define N 2

int a[N][5]={1,50,70,80,0,2,70,80,90,0};

void func1()

{

int i,j;

double s;

for(i=0;i

{

s=0;

for(j=1;j<4;j++)

s+=a[i][j];

a[i][4]=s;

printf("No:%d, avg=%lf \n",a[i][0],s/3);

}

}

void func2()

{

int i,j;

double s;

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

{

s=0;

for(j=0;j

s+=a[j][i];

printf("Class:%d, avg=%lf \n",i,s/N);

}

}

void func3()

{

int i,j;

int t,k;

for(i=0;i

{

t=i;

for(j=i+1;j

if(a[t][4]

if(t!=i)

{

k=a[i][0];a[i][0]=a[t][0];a[t][0]=k;

k=a[i][1];a[i][1]=a[t][1];a[t][1]=k;

k=a[i][2];a[i][2]=a[t][2];a[t][2]=k;

k=a[i][3];a[i][3]=a[t][3];a[t][3]=k;

k=a[i][4];a[i][4]=a[t][4];a[t][4]=k;

}

}

for(i=0;i

{

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

}

}

void func4()

{

int i;

for(i=0;i

{

if(a[i][1]<60||a[i][2]<60||a[i][3]<60)

printf("No:%d Failed,score:%d%d%d\n",a[i][0],a[i][1],a[i][2],a[i][3]); }

}

void main()

{

char c;

do

{

clrscr();

printf("1---func1 \n");

printf("2---func2 \n");

printf("3---func3 \n");

printf("4---func4 \n");

c=getch();

switch (c)

{

case '1':func1();break;

case '2':func2();break;

case '3':func3();break;

case '4':func4();break;

}

printf("Press any key to continue,Press\'N\'or\'n\' to Exit\n");

c=getch();

}while (!(c=='N'||c=='n'));

}

C语言程序设计第四版第六章答案-谭浩强

1、用筛选法求100之内的素数。解: #include #include int main() {int i,j,n,a[101]; for (i=1;i<=100;i++) a[i]=i; a[1]=0; for (i=2;i int main() {int i,j,min,temp,a[11]; printf("enter data:\n"); for (i=1;i<=10;i++)

{printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); printf("The orginal numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); for (i=1;i<=9;i++) {min=i; for (j=i+1;j<=10;j++) if (a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf("\nThe sorted numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); return 0; } 3、求一个3×3的整型矩阵对角线元素之和。解: #include int main() { int a[3][3],sum=0; int i,j; printf("enter data:\n"); for (i=0;i<3;i++) for (j=0;j<3;j++) scanf("%3d",&a[i][j]); for (i=0;i<3;i++) sum=sum+a[i][i]; printf("sum=%6d\n",sum);

c语言程序设计第二章课后参考答案

第二章:C程序的基本结构 一、单项选择题 1、以下不是C语言的特点的是________。 A)语言的表达能力强B)语言定义严格 C)数据结构系统化 D)控制流程结构化 2、TC编译系统提供了对C程序的编辑、编译、连接和运行环境,以下可以不在该环境下进行的环节是________。 A)编辑和编译 B)编译和连接 C)连接和运行D)编辑和运行 3、以下不是二进制代码文件是________。 A)标准库文件 B)目标文件C)源程序文件 D)可执行文件 4、下面个选项组中,均属于C语言关键字的一组是________。 A)auto,enum,include B)switch,typedef,continue C)signed,union,scanf D)if,struct,type 5、下面四组字符串中,都可以用作C语言标识符的是________。 A)print B)I \am C)signed D)if _maf scanf 3mf ty_pr mx_2d mx_ a.f x1# aMb6 AMB A&B 5XY 6、以下不属于流程控制语句的是_________。 A)表达式语句 B)选择语句 C)循环语句 D)转移语句 7、下面描述中,不正确的是________。 A)C语言的函数体由一系列语句和注释组成。 B)注释内容不能单独写在一行上。 C)C程序的函数说明部分包括对函数名、函数类型、形式参数等的定义和说明。 D)scanf和printf是标准库函数而不是输入和输出语句。 8、下面描述中,正确的是________。 A)主函数的花括号必须有,而子函数中的花括号是可有可无的。 B)一个C程序行只能写一个语句。 C)主函数是程序启动时的唯一入口。 D)函数体包含了函数说明部分。 二、填空题 1、一个完整的C程序至少要有一个________函数。(主函数) 2、标准库函数不是C语言本身的组成部分,它是由__________提供的功能函数。(编译系统) 3、C语言是以________为基本单位、整个程序由________组成。(函数函数) 4、常用的标准库函数有数学函数、字符函数和字符串函数、动态分配函数、随机函数和________函数等几个大类。(输入输出) 5、标准库函数存放在________文件中。(函数库) 6、目标程序文件的扩展名是________。(.obj) 7、程序连接过程是将目标程序、________或其它目标程序连接装配成可执行文件。(库函数) 8、因为源程序是________类型文件,所以用具有文本编辑功能的任何编辑软件程序完成编辑。(文本)

C语言第六章习题带答案

练习6-1答案 一、选择题 1.已知函数abc的定义为: void abc() {……} 则函数定义中void的含义是( A )。 A.执行函数abc后,函数没有返回值B.执行函数abc后,函数不再返回C.执行函数abc后,可以返回任意类型 D.以上三个答案全是错误的 2.已知:int p();,p是( C )。 A.int型变量 B.函数p的调用 C.一个函数声明,该函数的返回值是int型的值 D.强制类型转换表达式中的变量 3.以下正确的函数形式是( D )。 A.double fun(int x, int y) B.fun(int x, y) { z=x+y; return z; } { int z; return z; } C.fun(x, y) D.double fun(int x, int y) { int x, y; double z; z=x+y; return z; } { double z; z=x+y; return z; } 4.以下说法正确的是( C )。 A.定义函数时,形参的类型说明可以放在函数体内 B.return后边的值不能为表达式 C.如果函数值的类型与返回值表达式的类型不一致,以函数值类型为准 D.如果形参与实参的类型不一致,以实参类型为准 5.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( B )。 A.float 型B.int型C.long型D.double型6.下面函数调用语句含有实参的个数为( B )。 func((exp1, exp2), (exp3, exp4, exp5)); A.1 B.2 C.4 D.5 7.以下程序的功能是计算函数F(x, y, z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。 #include #include float f(float, float); main() {float x, y, z, sum; scanf("%f%f%f", &x, &y, &z); sum=f( ①B )+f( ②C ); (注:或者选择sum=f( ①C )+f( ②B )) printf("sum=%f\n", sum); } float f(float a, float b) {float value; value=a/b;

C语言PTA平台习题与答案

第二章作业 1 ①.本题要求编写程序,输出一个短句“Welcome to You!” #include int main() { printf("Welcome to You!\n"); return 0; } ②.本题要求编写程序,计算华氏温度100°F对应的摄氏温度。计算公式:C=5×(F?32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。 fahr = 100, celsius = 计算所得摄氏温度的整数值 #include int main() { int fahr = 100; int celsius = 5*(fahr-32)/9; printf("fahr = 100,celsius = %d\n",celsius); return 0; } 第二章作业2 ①求整数均值本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。 在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位 #include int main() { int a,b,c,d,Sum; double Average; scanf("%d %d %d %d",&a,&b,&c,&d); Sum = a + b + c + d; Average = (a + b + c + d)/4.0; printf("Sum = %d,Average = %.1f\n",Sum,Average); return 0; } ②整数四则运算本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内 输入在一行中给出2个正整数A和B。 在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。 #include int main() { int a; int b; scanf("%d %d",&a,&b); printf("%d + %d = %d\n",a,b,a+b); printf("%d - %d = %d\n",a,b,a-b); printf("%d * %d = %d\n",a,b,a*b);

C语言详解(第五版)第二章程序设计项目答案

C语言详解(第五版)程序设计项目答案第二章 1.编写一个程序,以每英里0.35的费率计算一个售货员的里程偿还金。程序中要求与用户进行如下方式的交互。 #include #include int main(void) {float mile_1,mile_2,miles,consume,payment; printf("MILEAGE REIMBURSEMENT CALCULATOR\n"); printf("Enter begainning odometer reading>\n"); scanf("%f",&mile_1); printf("Enter endding odometer reading>\n"); scanf("%f",&mile_2); printf("Enter consume per mile>\n"); scanf("%f",&consume); miles=mile_2-mile_1; payment=miles*consume; printf("You traveled%f miles.At%f per mile,your reimbursement is%f",miles,consume,payment); system("pause"); return(0); } 2.编写一个程序,用于辅助设计水力发电大坝。提示用户输入大坝高度,以及水流量。如果水由重力所做的功有90%转化为电能,测算会有多少M瓦的功率。 #include #include int main(void) {double density,weight,gravitational_acceleration, efficiency,height,water_flow_rate,work,electricity_power; printf("Please type in the density of water>"); scanf("%lf",&density); printf("Please type in the gravitational_acceleration>"); scanf("%lf",&gravitational_acceleration); printf("Please type in the height of the water>"); scanf("%lf",&height); printf("Please type in the efficiency of the transformation\nfrom water to electricity>"); scanf("%lf",&efficiency); printf("Please type in the water_flow_rate>"); scanf("%lf",&water_flow_rate); weight=density*water_flow_rate; work=weight*height*gravitational_acceleration; electricity_power=work*efficiency/1000000; printf("The electric energy production is%fW",electricity_power); system("pause"); return0; }

C语言第二章习题带答案

1.C语言中的简单数据类型包括( B )。 A.整型、实型、逻辑型B.整型、实型、字符型 C.整型、字符型、逻辑型D.整型、实型、逻辑型、字符型2.在C语言中,错误的short类型的常数是( A )。 A.32768 B.0 C.037 D.0Xaf 3.下列常数中不能作为C的常量的是( D )。 A.0x45 B.2.5e-2 C.3e2 D.0582 4.short类型的数据长度为2个字节,则unsigned short类型数据的取值范围是( B )。 A.0至255 B.0~65535 C.-32768~32767 D.-256~255 5.下面4个选项中,均是合法转义字符的选项是( A )。 A.'\'','\\','\n' B.'\','\017','\' C.'\018','\f','xab' D.'\\0,'101','x1f 6.在C语言中,数字029是一个( D )。 A.八进制数B.十六进制数 C.十进制数D.非法数 7.下列可以正确表示字符型常数的是( B )。 A."a" B.'\t' C."\n" D.297 8.以下( C )是错误的转义字符。 A.'\\' B.'\'' C.'\81' D.'\0' 9.C语言中short类型的变量a的值为-8,则a在内存中的存储形式是( A )。 A.1111 1111 1111 1000 B.100000000000 1000 C.000000000000 1000 D.1111 1111 1111 0111 10.将字符g赋给字符变量c,正确的表达式是( C )。 A.c="g" B.c=101 C.c='\147' D.c='0147' 11.字符串"\\\22a,0\n"的长度是( C )。 A.8 B.7 C.6 D.5 12.为求出s=10!的值,则变量s的类型应当为( C )。 A.short B.unsigned short C.long D.以上三种类型均可13.已知:unsigned short x=65535;,则执行以下语句输出是( D )。 printf("%d\n", x); A.65535 B.1 C.无定值D.-1 14.下面4个选项中,均是合法整型常量的选项是( A )。 A.160,-0xffff,011 B.-0xcdf,01a,0xe C.-01,986,012,0668 D.-0x48a,2e5,0x 15.下面4个选项中,均是不合法的整型常量的选项是( D )。 A.--0f1,-0xffff,0011 B.-0Xcdf,01a,0xe C.-018,999,5e2 D.-0x48eg,-068,03f 16.下面4个选项中,均是合法浮点数的选项是( B )。 A.+1e+1,5e-9.4,03e2 B.-.60,12e-4,-8e5 C.123e,1.2e-.4,+2e-1 D.-e3,.8e-4,5.e-0

c语言第二章习题

第二章练习题 一、填空题 1、在C语言中的实型变量分为两种类型,它们是float型和()型。 2、若有定义:char c='\010';则变量c中包含的字符个数为() 3、已知字母a的ASCII码为十进制数97,且设ch为整型变量,则表达式ch='a'+'8'-'3'的值为() 4、在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为()个;一个int型数据在内存中所占的字节数为()个。 5、在C语言中,表示逻辑“假”值用数字()表示。 6、C语言中的标识符只能由字母、数字和()三种字符组成。 7、表达式8/4*(int)(2.5)/(int)(1.25*(3.7+2.3))的值为() 8、整型常量即整常数。可用三种形式表示:十进制整数、八进制整数以()开头、十六进制整数以()开关(注:请用小写字母) 9、请将75写成C语言八进制和十六进制表示(),()。 10、若有定义:int m=5,y=2;则计算表达式y+=y-=m*=y后的y值是() 11、若a是int型变量,则表达式(a=4*5,a*2),a+6的值为()。 12、若a,b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为(),b值为(),c值为()。 13、若a是int型变量,且a的初值为6,则计算表达式a+=a-=a*a后a的值为() 14、若a是int型变量,则计算表达式a=25/3%3 后a的值为() 15、若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为(),n的值为() 16、若有定义:int b=7;float a=2.5,c=4.7;则下面表达式的值为() a+(int)(b/3*(int)(a+c)/2)%4 17、若有以下定义:int a=2,b=3;float x=3.5,y=2.5;则下面表达式的值为()(float)(a+b)/2+(int)x%(int)y 18、若有定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为() (x+y)%2+(int)a/(int)b 19、所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为() 20、若有定义:int e=1,f=4,g=2;float m=11.29,n=4.0,k;则计算赋值表达式k=(e+f)/g+sqrt(n*1.2/g+m)后k的值是() 21、若x为int型变量,则执行以下语句后x的值是()

C语言第六章数组习题

C语言第六章数组习题 第六章数组 6.1 选择题 [题]在C语言中,引用数组元素时,其数组下标的数据类型允许是_____. A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 [题]以下对一维整型数组a的正确说明是_____。 A)int a(10);B)int n=10,a[n]; C)int n;D)#define SIZE 10 scanf(\%d,&n);int a[SIZE]; int a[n]; [题]若有说明:int a[l0];则对a数组元素的正确引用是_____。 A) a[10] B)a[3.5] C)a(5) D)a[10-10] [题]在C 语言中,一维数组的定义方式为:类型说明符数组名_____。 A)[常量表达式] B)[整型表达式] C)[整型常量]或[整型表达式] D)[整型常量] [题]以下能对一维数组a进行正确初始化的语句是_____。 A)int a[l0]=(0,0,0,0,0); B)int a[l0]={}; C)int a={0};D)int a[10]={10*1}; [题]以下对二维数组a的正确说明是_____。

1 A)int a[3]; B)float a(3,4); C)double a[1][4]; D)float a(3)(4); [题]若有说明:int a[3][4];则对a数组元素的正确引用是_____。 A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1) [题]若有说明:int a[3][4];则对a数组元素的非法引用是_____。 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] [题]以下不能对二维数组a进行正确初始化的语句是_____。 A)int a[2][3]={0}; B)int a[3]={{1,2},{0}}; C)int a[2][3]={{l,2},{3,4},{5,6}}; D)int a[3]={1,2,3,4,5,6}; [题]若有说明:int a[3][4]={0};则下面正确的叙述是_____。 A)只有元素a[0][0]可得到初值0 B)此说明语句不正确 C)数组a中各元素都可得到初值,但其值不一定为0 D)数组a中每个元素均可得到初值0 [题]若有说明:int a[3][4];则数组a中各元素_____。 2

C语言第二章习题

1.以下叙述中错误的是( )。 A) 使用三种基本结构构成的程序只能解决简单问题 B) 结构化程序由顺序、分支、循环三种基本结构组成 C) C语言是一种结构化程序设计语言 D) 结构化程序设计提倡模块化的设计方法 2.以下可以将任意一个两位整数n的个位数与十位数对换的表达式为() A) (n-n/10*10)*10+n/10 B) n-n/10*10+n/10 C) n/10+(n-n/10) D) (n-n/10)*10+(n/10) 3.以下叙述中错误的是 A) 算法正确的程序可以有零个输入 B) 算法正确的程序最终一定会结束 C) 算法正确的程序可以有零个输出 D) 算法正确的程序对于相同的输入一定有相同的结果 4.若有定义int x,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++) : (y ++)中的条件表达式(x-y) 等价的是( )。 A) (x-y<0||x-y>0) B) (x-y<0) C) (x-y>0) D) (x-y==0) 5.有以下程序

—#include main() { int a; a = (int)1.99*3; printf("%d\n", a); } 程序的运行结果是() A) 3 B) 5 C) 6 D) 结果不确定 6.请选出合法的C语言赋值语句:() A) a=b=58 B) i++; C) a=58,b=58 D) k=int(a+b) 7.假设在程序中a,b,c均被定义成整型,并且已赋大于1的值,则下列能正确表 示代数式 1/abc 的表达式是:() A) 1/a*b*c B) 1/(a*b*c) C) 1/a/b/(float)c D) 1.0/a/b/c 8.请选出以下语句的输出结果:() printf("%d\n",strlen("\t\"\065\xff\n"));//srelen()为求字符串长度的函数,返回字节数。

c语言 第6章作业

书面作业8 专业理科学号3120101717 姓名马凌浩 习题6 一、选择题 1.设float x=2.5, y=4.7; int a=7;,printf(“%.1f”, x+a%3*(int)(x+y)%2/4)的结果为 A 。 A.2.5 B.2.8 C.3.5 D.3.8 2.执行下列程序段的输出结果是 C 。 int a = 2; a += a *= a -= a *= 3; printf("%d", a); A.-6 B.12 C.0 D.2 3.设字符型变量x 的值是064,表达式“~ x ^ x << 2 & x”的值是 A 。 A.0333 B.333 C.0x333 D.020 4.设a 为整型变量,不能正确表达数学关系:1010 && a<15 D.!(a<=10) && !(a>=15) 5.设以下变量均为int 类型,表达式的值不为9 的是 C 。 A.(x=y=8,x+y,x+1) B.(x=y=8,x+y,y+1) C.(x=8,x+1,y=8,x+y) D.(y=8,y+1,x=y,x+1) 二.填空题 1 .-127 的原码为11111111 、反码为10000000 、补码为10000001 。 2.逻辑表达式x && 1 等价于关系表达式if(x==0) 表达式的值为0;else 表达式的值为1;。3.设int a=5, b=6; 则表达式(++a==b--)? ++a : --b 的值是7 。 4.设c = 'w', a = 1, b = 2, d = -5, 则表达式'x'+1>c, 'y'!=c+2, -a-5*b<=d+1, b==(a=2)的值 分别为 1 、0 、 1 、 1 。 5.运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为c1=2,c2=5 。 #include int main(void) { int c1 = 0, c2 = 0; char ch; while((ch = getchar()) !=?#?) switch(ch){ case …a?: case …h?: c1++; default: c2++; } printf(“c1=%d,c2=%d\n”, c1, c2); return 0; }

c语言第1、2章练习题答案

第1、2章练习题 1.以下叙述正确的是()。B A)C语言程序是由过程和函数组成的B)C语言函数可以嵌套调用,例如fun(fun(x)) C)C语言函数不可以单独编译D)C语言除了main函数外,其他函数不可以作为单独文件形式存在2.以下叙述正确的是()。C A)C程序的基本组成单位是语句B)C程序中的每一行只能写一条语句 C)简单的C语句必须以分号结束D)C语句必须在一行内写完 3.以下叙述中正确的是()。C A)C程序中的注释只能出现在程序的开始位置和语句的后面 B)C程序书写格式严格,要求一行内只能写一条语句 C)C程序书写格式自由,一条语句可以写在多行上 D)用C语言编写的程序只能放在一个程序文件中 4.下列叙述中错误的是()。A A)一个C语言程序只能实现一种算法B)C语言程序可以由多个程序文件组成 C)C语言程序可以由一个或多个函数组成D)一个C函数可以单独作为一个C程序文件存在5.以下叙述中正确的是()。C A)C语言程序将从源程序中的第一个函数开始执行 B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 C)C语言规定必须用main作为主函数名,程序从此开始执行,在此结束 D)main可作为用户标识符,用以命名任意一个函数作为主函数 6.对于一个正常运行的C程序,以下叙述正确的是()。A A)程序的执行总是从main函数开始,在main函数中结束 B)程序的执行总是从程序的第一个函数开始,在main函数结束 C)程序的执行总是从main函数开始,在程序的最后一个函数中结束 D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束 7.下列叙述正确的是()。D A)每个C语言程序文件中都必须有一个main( )函数 B)在C语言程序中main( )函数的位置是固定的 C)C语言程序中所有函数之间都可以相互调用,与函数所在的位置无关 D)在C语言程序的函数中不能定义另一个函数 8.下列叙述中错误的是()。B A)C程序在运行过程中所有计算机都以二进制方式进行 B)C程序在运行过程中所有计算机都以十进制方式进行 C)所有C程序都需要在链接无误后才能运行 D)C程序中整型变量只能存放整数,实型变量只能存放浮点数 9.计算机能直接执行的程序是()。D A)源程序B)目标程序C)汇编程序D)可执行程序 10.C语言源程序的后缀名是()。B A).exe B).c C).obj D).cp 11.下列叙述中错误的是()。D A)计算机不能直接执行用C语言编写的源程序 B)C程序经C编译器编译后,生成后缀为.obj的文件,这是一个二进制文件 C)后缀为.obj的文件,经连接后生成后缀为.exe的文件,这是一个二进制文件 D)后缀为.obj和.exe的二进制文件都可以直接运行 12.算法中,对需要执行的每一步操作都必须给出清楚、严格的规定,这属于算法的()。C

C语言第六章数组习题答案

第六章 数组 习题答案 2、0 4 3、0 6 4、&a[i] i%4==0 printf("\n"); 5、i+j==3_ a[i][j] 6、12 7、a[i][j]+b[i][j] printf(“\n ”) 8、按行存放 9、( a[i]>a[j]) 10、将串str2复制到串str1中后再将串str3连接到串str1之后 三、阅读题 1、如右图所示 2、AQM 3、AzyD 4、9198 5、如右图所示 6、92 7、1,2,5,7, 8、2 9、v1=5,v2=8,v3=6,v4=1 10、a*b*c*d* 四、编程题 1(1)选择法排序 #include void main( ) {int i,j,n=10,p,a[10];int temp; for(i=0;i

for(j=i+1;j void main( ) {int i,j,n=10,p,a[10];int temp; for(i=0;ia[j]) {temp=a[i];a[i]=a[j];a[j]=temp;} printf("\n排序后的一维数组:\n"); for(i=0;i void main( ) {int a[11],i,n=10,k; int point; printf("\n 请输入原始数据:\n"); for(i=0;ik) {point=i; break;} if(i!=n) {for(i=n;i>point;i--) a[i]=a[i-1]; a[point]=k;} /*从后向前方式*/ else a[n]=k; printf("插入后的数是:\n"); for(i=0;i int main() {int i,j,upp,low,dig,spa,oth; char text[3][80];

C语言第二章习题带答案

练习2-1答案 选择题 1.C语言中的简单数据类型包括( B )。 A.整型、实型、逻辑型B.整型、实型、字符型 C.整型、字符型、逻辑型D.整型、实型、逻辑型、字符型2.在C语言中,错误的short类型的常数是( A )。 A.32768 B.0 C.037 D.0Xaf 3.下列常数中不能作为C的常量的是( D )。 A.0x45 B.-2 C.3e2 D.0582 4.short类型的数据长度为2个字节,则unsigned short类型数据的取值范围是( B )。 A.0至255 B.0~65535 C.-32768~32767 D.-256~255 5.下面4个选项中,均是合法转义字符的选项是( A )。 A.'\'','\\','\n' B.'\','\017','\' C.'\018','\f','xab' D.'\\0,'101','x1f 6.在C语言中,数字029是一个( D )。 A.八进制数B.十六进制数 C.十进制数D.非法数7.下列可以正确表示字符型常数的是( B )。 A."a" B.'\t' C."\n" D.297 8.以下( C )是错误的转义字符。 A.'\\' B.'\'' C.'\81' D.'\0' 9.C语言中short类型的变量a的值为-8,则a在内存中的存储形式是( A )。 A.1111 1111 1111 1000 B. 1000 C.000000000000 1000 D.1111 1111 1111 0111 10.将字符g赋给字符变量c,正确的表达式是( C )。 A.c="g" B.c=101 C.c='\147' D.c='0147' 11.字符串"\\\22a,0\n"的长度是( C )。 A.8 B.7 C.6 D.5 12.为求出s=10!的值,则变量s的类型应当为( C )。 A.short B.unsigned short C.long D.以上三种类型均可 13.已知:unsigned short x=65535;,则执行以下语句输出是( D )。 printf("%d\n", x); A.65535 B.1 C.无定值D.-1 14.下面4个选项中,均是合法整型常量的选项是( A )。 A.160,-0xffff,011 B.-0xcdf,01a,0xe C.-01,986,012,0668 D.-0x48a,2e5,0x 15.下面4个选项中,均是不合法的整型常量的选项是( D )。 A.--0f1,-0xffff,0011 B.-0Xcdf,01a,0xe C.-018,999,5e2 D.-0x48eg,-068,03f

C语言第二章习题及详解

二、第二章 1、设整型变量a的值为2,下列表达式值为1的是__。(A) A)a%3B)a/3=0C)--a D)a++ 2.设变量a、b、c已定义并赋值,则下列表达式中符合C语言语法规则的是__。(B) A)a=5++操作数只能是变量B)a=b=c++C)a=%2D)b=a+1=2左边只能是单个变量,即变量1=变量2=。。。 3.下列式中,最终运算结果的数据类型不是单精度的表达式是__。(A) A)(int)(3+3.0)B)1e-3fen:n必须为整数C)(float)(3)D)(int)3.0+3.0 4.字符串”ab\x41\\34cd\102y”的长度是_A_。\xhh表示ASCII码:例\x41,41是16进制的。字符串含有’\0’。’\102’也表示ASCII码,但102是8进制的,长度为10,储存空间占11个字节。 A)10B)12C)14D)18 5、变量是在程序运行过程中可改变的它的三要素是类型、名称、数值 6.以下选项中合法的常量是?D A)’Internet’B)E_3变量C)02x D)0xfeL 7.以下选项中合法的赋值表达式是?C A)d=8+a+f=d+6同2D B)d=(a+8)++同2A C)d=(8+e,e++,d+9)D)d=7+e++=d+7

8.main() {int x=5,y=3; float f; f=x/y;表示为整形 printf(“f=%f\n”,f); } 则程序的输出结果是?f=1.000000 9.设整型变量x,y,z均为2,表达式(x++)+(y++)+(z++)的值是_A先使用值再加 加_。 A)6B)7C)8D)9 10.设int a=3,b=5;float x=7.5,y=3.5;则表达式(float)a+b/2+(int)x%(int)y; 的值是6.0__。 *11.执行语句:int a;a=‘1’+1.5;后,正确的叙述是_D_。 A)a的值是字符‘3’B)a的值是浮点型 C)不允许字符型和浮点型相加 D)a的值是字符’1’的ASCII码值加上1 12.设int类型的数据长度为2个字节,则unsigned int类型数据的取 值范围是_B_。 A)均为2个字节TC与VC不一样B)0~65535 C)-32768~32767D)-256至255

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

1.5请参照本章例题,编写一个C程序,输出以下信息: ************ Very Goodj! ************ 解: main() { printf(" ************ \n"); printf("\n"); printf(" Very Good! \n"); printf("\n"); printf(" ************\n"); } 1.6编写一个程序,输入a b c三个值,输出其中最大者。 解:main() {int a,b,c,max; printf("请输入三个数a,b,c:\n"); scanf("%d,%d,%d",&a,&b,&c); max=a; if(max

C语言数据类型习题包括答案.docx

第二章数据类型,运算符与表达式 一.选择题 1.不合法的字符常量是( B)。 A)‘ \t ’B) “ A” C )‘ a’ D)’ \x32 ’ 2、合法的字符常量是( D)。 A)‘ \084 ’B)‘ \84 ’ C )‘ab’ D)’ \x43 ’ 2.( B)是 C 语言提供的合法的数据类型关键字。 A) Float B) signed C) integer D)Char 3.在以下各组标识符中,合法的标识符是( 4)。 (1) A) B01 B )table_1C) 0_t D) k% (2) A) Fast_ B) void C)pbl D) (3) A) xy_ B ) longdouble C)*p D) CHAR (4) A) sj B)Int C)_xy D)w_y23 4.属于合法的 C 语言长整型常量的是( B)。 A) 5876273B) 0L C) 2E10D) (long)5876273 5.下面选项中,不是合法整型常量的是( B)。 A) 160B)- 0xcdg C)- 01D)- 0x48a 6.判断 int x = 0xaffbc;x 的结果是( B)(turbo c版本)。 A)赋值非法 B )溢出C)为 affb D)为 ffbc 7.下面选项中,均是合法浮点数的是( B)。 A)+ 1e+ 1 B)- .60 C) 123e D )- e3 A)5e -B)12e-4C)- .4 D).8e- 4 A)03e2B)-8e5C)+ 2e-1D) -0 8.在 C 语言中,要求参加运算的数必须是整数的运算符是( C)。A) / B) * C ) % D) = 9.在 C 语言中,字符型数据在内存中以( D)形式存放。 A)原码 B ) BCD码C)反码D) ASCII 码 10.下列语句中,符合语法的赋值语句是( C)。 A) a= 7+ b+ c= a+7;B) a= 7+ b++= a+ 7; C) a=(7 + b, b++, a+ 7) ; D ) a=7+ b, c= a+ 7; 11.( B)是非法的 C 语言转义字符。 A)‘ b’B)‘ 0xf ’ C )‘037’ D )‘’’ 12.对于语句: f=,,,,,;的判断中( B),是正确的。 A)语法错误B)f 为 5.0C)f为 D) f 为 13.与代数式 (x*y)/(u*v)不等价的 C语言表达式是( A)。 A) x*y/u*v B) x*y/u/v C) x*y/(u*v) D) x/(u*v)*y 14.在 C 语言中,数字029 是一个( D)。 A)八进制数 B )十六进制数 C )十进制数 D )非法数 15. C语言中( Turbo C 环境)整数-8 在内存中的存储形式为( A)。A) 000B) 00 C) 000000000001000D)111 16.对于 char cx= ’039’; 语句,正确的是(A) 。 A)不合法 B ) cx 的 ASCII 值是 33 C) cx 的值为四个字符D)cx 的值为三个字符

数据结构(C语言版)第6章习题答案

第6章树和二叉树自测卷解答 一、下面是有关二叉树的叙述,请判断正误(每小题1分,共10分) (√)1. 若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n—1个非空指针域。(×)2.二叉树中每个结点的两棵子树的高度差等于1。 (√)3.二叉树中每个结点的两棵子树是有序的。 (×)4.二叉树中每个结点有两棵非空子树或有两棵空子树。 (×)5.二叉树中每个结点的关键字值大于其左非空子树(若存在的话)所有结点的关键字值,且小于其右非空子树(若存在的话)所有结点的关键字值。(应当是二叉排序树的特点) (×)6.二叉树中所有结点个数是2k-1-1,其中k是树的深度。(应2i-1) (×)7.二叉树中所有结点,如果不存在非空左子树,则不存在非空右子树。 (×)8.对于一棵非空二叉树,它的根结点作为第一层,则它的第i层上最多能有2i—1个结点。(应2i-1)(√)9.用二叉链表法(link-rlink)存储包含n个结点的二叉树,结点的2n个指针区域中有n+1个为空指针。 (正确。用二叉链表存储包含n个结点的二叉树,结点共有2n个链域。由于二叉树中,除根结点外,每一个结点有且仅有一个双亲,所以只有n-1个结点的链域存放指向非空子女结点的指针,还有n+1个空指针。)即有后继链接的指针仅n-1个。 (√)10. 〖01年计算机系研题〗具有12个结点的完全二叉树有5个度为2的结点。 最快方法:用叶子数=[n/2]=6,再求n2=n0-1=5 二、填空(每空1分,共15分) 1.由3个结点所构成的二叉树有5种形态。 2. 【计算机研2000】一棵深度为6的满二叉树有n1+n2=0+ n2= n0-1=31 个分支结点和26-1 =32个叶子。 注:满二叉树没有度为1的结点,所以分支结点数就是二度结点数。 3.一棵具有257个结点的完全二叉树,它的深度为9。 (注:用? log2(n) ?+1= ? 8.xx ?+1=9 4.【全国专升本统考题】设一棵完全二叉树有700个结点,则共有350个叶子结点。 答:最快方法:用叶子数=[n/2]=350 5. 设一棵完全二叉树具有1000个结点,则此完全二叉树有500个叶子结点,有499个度为2的结点,有1个结点只有非空左子树,有0个结点只有非空右子树。 答:最快方法:用叶子数=[n/2]=500 ,n2=n0-1=499。另外,最后一结点为2i属于左叶子,右叶子是空的,所以有1个非空左子树。完全二叉树的特点决定不可能有左空右不空的情况,所以非空右子树数=0. 6.【严题集6.7③】一棵含有n个结点的k叉树,可能达到的最大深度为n,最小深度为2。 答:当k=1(单叉树)时应该最深,深度=n(层);当k=n-1(n-1叉树)时应该最浅,深度=2(层),但不包括n=0或1时的特例情况。教材答案是“完全k叉树”,未定量。) 7. 【试题1】二叉树的基本组成部分是:根(N)、左子树(L)和右 子树(R)。因而二叉树的遍历次序有六种。最常用的是三种:前序法(即 按N L R次序),后序法(即按L R N次序)和中序法(也称

相关文档
相关文档 最新文档