当前位置:文档之家› 谭浩强c语言第四版第六章课后答案

谭浩强c语言第四版第六章课后答案

谭浩强c语言第四版第六章课后答案
谭浩强c语言第四版第六章课后答案

//第四版第六章习题

//6.1

# if 0

# include

# include

# define N 101

int main()

{

int a[N];

int i,j,k,m=0;

for(i=1;i

{

a[i]=i;

k=sqrt(a[i]);

for(j=2;j<=k;++j)

{

if(a[i]%j==0)

{

break;

}

}

if(j>k)

{

printf("%-3d,",a[i]);

m++;

if(m%5==0)

{

puts("\b ");

}

}

}

puts("\b ");

return 0;

}

# endif

//6.2

# if 0

# include

# define N 10

int main()

{

int a[N];

int i,j,t;

printf("请输入十个整数:");

printf("\n");

for(i=0;i

{

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

}

for(j=0;j

{

for(i=0;i

{

if(a[i]>a[i+1])

{

t=a[i];

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

a[i+1]=t;

}

}

}

printf("从小到大输出为:\n");

for(i=0;i

{

printf("%d,",a[i]);

}

puts("\b ");

return 0;

}

# endif

//6.3

# if 0

# include

int main()

{

int a[3][3];

int i,j,sum=0;

printf("请输入这个整型矩阵:\n");

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

{

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

{

scanf("%d",&a[i][j]);

}

}

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

{

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

{

if(i==j||(i+j)==2)

{

sum+=a[i][j];

}

}

}

printf("sum=%d\n",sum);

return 0;

}

# endif

//6.4

# if 0

# include

# define N 10

int main()

{

int a[N+1];

int i,j,num,tag;

printf("请输入一个有十个元素已排好序的数组:\n");

for(i=0;i

{

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

}

if(a[0]>a[1])

{

printf("从大到小排列.\n");

tag=1;

}

else

{

printf("从小到大排列.\n");

tag=0;

}

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

scanf("%d",&num);

if(tag==1) //大到小

{

if(num

{

a[N]=num;

}

else

{

for(i=0;i

{

if(a[i]

{

for(j=N-1;j>=i;--j)

{

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

}

a[i]=num;

break;

}

}

}

}

else

{

if(num>a[N-1])

{

a[N]=num;

}

else

{

for(i=0;i

{

if(a[i]>num)

{

for(j=N-1;j>=i;--j)

{

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

}

a[i]=num;

break;

}

}

}

}

printf("插入后的顺序为:\n");

for(i=0;i

{

printf("%d,",a[i]);

}

puts("\b ");

return 0;

}

# endif

//6.5

# if 0

# include

int main()

{

int a[6];

int i,t,len;

len=sizeof(a)/sizeof(int);

printf("请输入这个数组:");

for(i=0;i

{

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

}

printf("原来的顺序为:\n");

for(i=0;i

{

printf("%-5d",a[i]);

}

printf("\n");

for(i=0;i

{

t=a[i];

a[i]=a[len-1-i];

a[len-1-i]=t;

}

printf("逆序为:\n");

for(i=0;i

{

printf("%-5d",a[i]);

}

printf("\n");

return 0;

}

# endif

//6.6

# if 0

# include

int main()

{

int a[10][10];

int i,j;

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

{

a[i][0]=1;

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

{

if(i==j)

{

a[i][j]=1;

}

}

}

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

{

for(j=1;j

{

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

}

}

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

{

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

{

printf("%-5d",a[i][j]);

}

printf("\n");

}

return 0;

}

# endif

//6.7

# if 0

# include

int main()

{

int magic[9][9]={0};

int row=9,colum=9;

int i=0,j=4,n;

magic[0][colum/2]=1;

for(n=2;n<=row*colum;++n)

{

if((i-1)<0&&(j+1)>(colum-1))

{

if(magic[i+row-1][j-(colum-1)]!=0)

{

magic[i+1][j]=n;

i=i+1;

}

else

{

magic[i+row-1][j-(colum-1)]=n;

i=i+row-1;

j=j-(colum-1);

}

}

else

{

if((i-1)<0)

{

if(magic[i+row-1][j+1]!=0)

{

magic[i+1][j]=n;

i=i+1;

}

else

{

magic[i+row-1][j+1]=n;

i=i+row-1;

j=j+1;

}

}

else

{

if((j+1)>(colum-1))

{

if(magic[i-1][j-(colum-1)]!=0)

{

magic[i+1][j]=n;

i=i+1;

}

else

{

magic[i-1][j-(colum-1)]=n;

i=i-1;

j=j-(colum-1);

}

}

else

{

if(magic[i-1][j+1]!=0)

{

magic[i+1][j]=n;

i=i+1;

}

else

{

magic[i-1][j+1]=n;

i=i-1;

j=j+1;

}

}

}

}

}

for(i=0;i

{

for(j=0;j

{

printf("%-3d",magic[i][j]);

}

printf("\n");

}

return 0;

}

# endif

//6.8

# if 0

# include

int main()

{

int array[3][3]={0};

int row=3,colum=3;

int i,j,k,flag,max,maxj;

printf("请输入这个3行3列的数组:\n");

for(i=0;i

{

for(j=0;j

{

scanf("%d",&array[i][j]);

}

}

for(i=0;i

{

max=array[i][0];

maxj=0;

for(j=0;j

{

if(array[i][j]>max)

{

max=array[i][j];

maxj=j;

}

}

flag=1;

for(k=0;k

{

if(max>array[k][maxj])

{

flag=0;

break;

}

}

if(flag)

{

printf("鞍点为:array[%d][%d]=%d\n",i,maxj,max);

break; //一个二维数组只有一个鞍点

}

}

if(!flag)

{

printf("这个二维数组无鞍点.\n");

}

return 0;

}

# endif

//6.9

# if 0

# include

int main()

{

int a[15];

int i,location=0,num,flag=1,sign=0;

int length=sizeof(a)/sizeof(int);

int top=length-1,bottom=0,mid=(top+bottom)/2;

char c;

printf("请按从大到小输入15个数:\n");

for(i=0;i

{

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

}

while(flag)

{

printf("请输入一个要查找的数:");

scanf("%d",&num);

sign=0;

top=length-1,bottom=0;

if(numa[bottom])

{

location=0;

}

else

{

while(!sign&&top>=bottom)

{

mid=(top+bottom)/2;

if(num==a[mid])

{

location=mid+1;

printf("该数在数组中的位置为%d\n",location);

sign=1;

}

else

if(num>a[mid])

{

top=mid-1;

}

else

{

bottom=mid+1;

}

}

}

if(sign=0||location==0)

{

printf("数组中无此数!\n");

}

printf("继续与否(Y/N)?");

fflush(stdin);

scanf("%c",&c);

if(c=='N'||c=='n')

{

flag=0;

}

}

return 0;

}

# endif

//6.10

# if 0

# include

int main()

{

char a[3][80];

int row=3,colum=80;

int i,j,letter1=0,letter2=0,number=0,space=0,others=0;

for(i=0;i

{

printf("请输入一行字符(总共三行):\n");

gets(a[i]);

}

for(i=0;i

{

for(j=0;j

{

if(a[i][j]>='A'&&a[i][j]<='Z')

{

letter1++;

}

else

{

if(a[i][j]>='a'&&a[i][j]<='z')

{

letter2++;

}

else

{

if(a[i][j]>='0'&&a[i][j]<='9')

{

number++;

}

else

{

if(a[i][j]==' ') //=与==不同!!!!!!!!!!!!!!!!!

{

space++;

}

else

{

others++;

}

}

}

}

}

}

printf("大写字母的个数:%d,小写字母的个数:%d,数字的个数:%d,空格的个数:%d,其他字符的个数:%d\n",letter1,letter2,number,space,others);

return 0;

}

# endif

//6.11

# if 0

# include

int main()

{

char a[5][9]={""};

int row=5,colum=9;

int i,j;

for(i=0;i

{

for(j=0;j

{

if(i>j||(j-i)>=5)

{

printf(" ");

}

else

{

printf("*");

}

}

printf("\n");

}

return 0;

}

# endif

//6.12

# if 0

# include

int main()

{

char a[20],b[20];

int i=0,j=0;

printf("请输入电文密码:");

gets(b);

printf("电文密码为:");

puts(b);

while(b[j]!='\0')

{

if(b[j]>='A'&&b[j]<='Z')

{

a[j]=155-b[j];

}

else

{

if(b[j]>='a'&&b[j]<='z')

{

a[j]=219-b[j];

}

else

{

a[j]=b[j];

}

}

j++;

}

i=j;

printf("请输出电文原文:");

for(j=0;j

{

putchar(a[j]);

}

printf("\n");

return 0;

}

# endif

# if 0

# include

int main()

{

char a[40],b[20];

int i=0,j=0;

printf("请输入第一个字符串:");

gets(a);

printf("请输入第二个字符串:");

gets(b);

while(a[i]!='\0')

{

i++;

}

while(b[j]!='\0')

{

a[i++]=b[j++];

}

a[i]='\0'; //字符串结束标志puts(a);

return 0;

}

#endif

//6.14

# if 0

# include

int main()

{

char s1[10],s2[10];

int i=0,j;

printf("请输入第一个字符串:");

gets(s1);

printf("请输入第二个字符串:");

gets(s2);

while(s1[i]==s2[i]&&s1[i]!='\0')

{

i++;

}

if(s1[i]=='\0'&&s2[i]=='\0')

{

j=0;

}

else

{

j=s1[i]-s2[i];

}

printf("输出为:%d\n",j);

return 0;

}

# endif

# if 0

# include

# include

int main()

{

char s1[20],s2[20];

int i=0;

printf("请输入一串字符:"); gets(s2);

puts(s2);

for(i=0;i<=strlen(s2);++i) {

s1[i]=s2[i];

}

printf("复制后的数组为:"); puts(s1);

return 0;

}

# endif

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语言第六章习题带答案

练习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语言第六章数组习题

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语言 第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语言第六章数组习题答案

第六章 数组 习题答案 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语言程序设计(第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语言版)第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次序)和中序法(也称

C语言程序设计教程 第六章 课后习题参考答案

P158 1求三个实数最大值 #include float max(float,float,float); int main() { float a,b,c,m; printf("请输入三个实数:"); scanf("%f %f %f",&a,&b,&c); printf("最大数为%f\n",max(a,b,c)); return 0; } float max(float a,float b,float c) { float t; if(a>b&&a>c) t=a; else if(b>a&&b>c) t=b; else t=c; return t; } P158 2求最大公约数最小公倍数 #include int fun1(int a,int b); int fun2(int a,int b); int main() { int a,b; printf("请输入两个整数:"); scanf("%d %d",&a,&b); printf("最大公约数为:%d\n",fun1(a,b)); printf("最小公倍数为:%d\n",fun2(a,b)); } int fun1(int a,int b) { int t,r; if(a

} while((r=(a%b))!=0) { a=b; b=r; } return b; } int fun2(int a,int b) { int n; n=(a*b)/fun1(a,b); return n; } P158 3求完全数 #include void wan(int n); void main() { int n; for(n=1;n<1000;n++) wan(n); printf("\n"); } void wan(int n) { int i,s=0; for(i=1;i<=n/2;i++) { if(n%i==0) s=s+i; } if(n==s) printf("%d\t",n); } P158 4无暇素数 #include #include

谭浩强c语言第四版第六章课后答案

//第四版第六章习题 //6.1 # if 0 # include # include # define N 101 int main() { int a[N]; int i,j,k,m=0; for(i=1;ik) { printf("%-3d,",a[i]); m++; if(m%5==0) { puts("\b "); } } } puts("\b "); return 0; } # endif //6.2 # if 0 # include # define N 10 int main() { int a[N]; int i,j,t; printf("请输入十个整数:"); printf("\n"); for(i=0;i

for(i=0;ia[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } } } printf("从小到大输出为:\n"); for(i=0;i int main() { int a[3][3]; int i,j,sum=0; printf("请输入这个整型矩阵:\n"); for(i=0;i<3;++i) { for(j=0;j<3;++j) { scanf("%d",&a[i][j]); } } for(i=0;i<3;++i) { for(j=0;j<3;++j) { if(i==j||(i+j)==2) { sum+=a[i][j]; } } } printf("sum=%d\n",sum); return 0; } # endif //6.4 # if 0 # include

C语言课后习题答案

第四章选择结构 4.22 #include main() { int y0,m0,d0,y1,m1,d1,age; printf("please input your birthday(yyyy-mm-dd):\n"); scanf("%d-%d-%d",&y0,&m0,&d0); printf("please inpur current day(yyyy-mm-dd):\n"); scanf("%d-%d-%d",&y1,&m1,&d1); age=y1-y0; if(m1 main() { int i; printf("input a integer:\n"); scanf("%d",&i); if(i%2==0)printf("%d is a even\n",i); else printf("%d is a odd\n",i); } 4.24 #include main() { int a,b,c,max=0; printf("input 3 numbers:\n"); scanf("%d%d%d",&a,&b,&c); max=a; if(a main() { float x,y; scanf("%f",&x); if(x>-5&&x<0)printf("y=%f",x); if(x==0)printf("y=%f",x-1); if(x>0&&x<10)printf("y=%f",x+1); if(x<=-5||x>=10)printf("error"); }

C语言第六章课后答案

xt6-1 #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; } xt6-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); return 0; }

C语言 第六章 函数期末测试习题与答案

C语言第六章函数期末测试习题与答案 1、以下叙述正确的是 A. C语言中除了main函数,其他函数不可作为单独文件形式存在 B.C语言程序是由过程和函数组成的 C.C语言函数可以嵌套调用 D.C语言函数不可以单独编译 参考答案:C 2、以下关于C语言程序中函数的说法正确的是 A.函数的定义和调用均不可以嵌套; B.函数的定义可以嵌套,但函数的调用不可以嵌套; C.函数的定义和点用都可以嵌套。 D.函数的定义不可以嵌套,但函数的调用可以嵌套; 参考答案:D 3、若已定义的函数有返回值,则以关于该函数调用的叙述中错误的是 A.调用可以出现在表达式中 B.调用可以作为独立的语句存在 C.调用可以作为一个函数的形参 D.调用可以作为一个函数的实参 参考答案:C 4、以下关于return语句的叙述中正确的是 A.没有return语句的自定义函数在执行结束时不能返同到调用处 B.一个自定义函数中可以根据不同情况设置多条return语句 C.定义成void类型的函数中可以有带返回值的return语句 D.一个自定义函数中必须有一条return语句

参考答案:B 5、C语言规定:函数返回值类型是由 A.return语句中的表达式类型决定 B.调用该函数时系统临时决定 C. 定义该函数时所指定的函数类型决定 D.调用该函数时的主调函数类型决定 参考答案:C 6、以下错误的描述是() 函数调用可以_____ A.出现在执行语句中 B.出现在一个表达式中 C.做为一个函数的形参 D.做为一个函数的实参 参考答案:C 7、以下说法不正确的是() C语言规定: A.实参可以是任意类型 B.实参可以是常量、变量或表达式 C.形参应与其对应的实参类型一致 D.形参可以是常量、变量或表达式 参考答案:D 8、C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是() A.由用户指定传递方式 B.单向值传递

《C语言程序设计》第6章习题答案

1、选择题 (1)A(2)C(3)A(4)B(5)B(6)D(7)D(8)B(9)D(10)B 2、填空题 (1)a=10,b=20 a=20,b=10 (2)**pp=60 3、程序设计题 (1) #include char *month_name(int n); void main() { int n; printf("\nPlease enter 1 integer:"); scanf("%d",&n); printf("%d month :%s\n",n,month_name(n)); } char *month_name(int n) { static char*name[]={"illegal month", "Jan","Feb","Mar","Apr","May","Jun", "July","Aug","Sept","Oct","Nov","Dec"}; return ((n<1||n>12)?name[0]:name[n]); } (2) #include #define N 10 sort(int data[]) { int i,j,min_a,temp;

for(i=0;i void reverse(char *c); void main()

《C语言程序设计》课后习题答案第6章

6.1 输入两个正整数m,n,求其最大公约数和最小公倍数。 int m,n,temp,b,y; printf("请输入两个正整数m,n:\n"); scanf("%d,%d",&m,&n); if(m='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个",letters,space,digit,other); 6.3 求s=a+aa+aaa+...+aa...a的值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5),n有键盘输入 int i=1,a,n,sum=0,temp=0; printf("请输入a、n的值:\n"); scanf("%d,%d",&a,&n);/*一定不要忘记加&&*/ while(i<=n) { temp=temp+a; sum=sum+temp; a=a*10; ++i; } printf("s=a+aa+aaa+...+aa...a的值为%d\n",sum);

华中科技大学标准C语言程序设计及应用习题答案

第二章 一.选择题 1.C 2.B D 3.A 4.A 5. D 6.C 7.D 8.C 9.A 10.D 11.B 12.D 13.C 14.D 15.A 16.B 17.A 18.B 100011 001111 二.判断题 1.错 2.错 3.错 4.错 三.填空题 1. B 66 2. n1=%d\nn2=%d\n 3. 0 四.计算 1 (1)x|y = 0x002f (2)x^y = 0x0026 (3)x&y = 0x0009; (4)~x+~y = 0xffc6 (5)x<<=3 0x0068 (6)y>>=4 0x0002 2 (1) 6 (2)50 (3) 1 (4)–16 (5) 1 (6)20 3 (1)0 (2) 1 (3) 1 (4) 4 (5)8 (6) 1 4 (1)12 (2)0 (3) 1 (4)27

(6) 6 (7)24 (8)27 (9)–29 5 (1)0 (2) 1 (3) 1 (4)–3 (5) 2 五.程序分析题 程序1 b=20 a=3600 程序2 第三章 一.填空题 1.s=6 2.96 3.(1) scanf("%c",&c); (2) c-32 更好的答案:c-('a'-'A') 2.1 main() { int a,b; printf("please input a & b:"); scanf("%d%d",&a,&b); printf("\nmax is %d\n",(a>b)?a:b); } 2.2 int max(int x,int y); main() { int a,b,c,max; printf("please input a & b & c:"); scanf("%d%d%d",&a,&b,&c); max=a>b?a:b; max=c>max?c:max; printf("\nmax is %d\n",max); } 2.3

C语言苏小红版第六章习题答案

第六章习题1. (1)#include main() { int i,j,k; char space=' '; for(i=1;i<=4;i++) { for(j=1;j<=i;j++) { printf("%c",space); } for(k=1;k<=6;k++) { printf("*"); } printf("\n"); } } (2)#include main() { int k = 4, n; for (n = 0; n < k; n++) { if (n % 2 == 0) continue; k--; } printf("k = %d,n = %d\n",k,n); } (3)#include main() { int k = 4, n;

for (n = 0; n < k; n++) { if (n % 2 ==0) break; k--; } printf("k = %d, n = %d\n", k, n); } 2. (1)计算1+3+5+……99+101= #include main( ) { int i,sum=0; for(i=1;i<=101;i=i+2) { sum=sum+i; } printf("sum=%d\n",sum); } (2)计算1*2*3+3*4*5+...+99*100*101= #include main( ) { long i; long term,sum=0; for(i=1;i<=99;i=i+2) { term=i*(i+1)*(i+2); sum=sum+term; } printf("sum=%ld",sum); }

(完整版)c语言第六章循环结构程序设计(习题册答案)

第六章循环结构程序设计 基础练习(A) 一、选择题 1、C语言中while和do-while循环的主要区别是(A)。 A) do-while的循环体至少无条件执行一次 B) while的循环控制条件比do-while的循环控制条件严格 C) C)do-while允许从外部转到循环体内 D) do-while的循环体不能是复合语句 2、以下描述中正确的是(C)。 A) 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用 复合语句 B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C) 在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操 作 D)do-while循环中,根据情况可以省略while 3、设有程序段 int k=10; while(k) k=k-1; 则下面描述中正确的是(A)。 A)while循环执行10次B)循环是无限循环 C)循环体语句一次也不执行D)循环体语句执行一次 4、下列循环语句中有语法错误的是( D )。 A) while(x=y) 5;B) while(0) ; C) do 2;while(x==b);D) do x++ while(x==10); 5、已知int i=1;执行语句while (i++<4) ;后,变量i的值为(C)。 A) 3 B) 4 C) 5 D) 6 6、语句while(!E);中的表达式!E等价于(A)。 A)E==0 B)E!=1 C)E!=0 D)E==1 7、下面程序段的运行结果是(A)。 a=1; b=2; c=2; while(a main() { int num=0; while(num<=2) { num++; printf(“%d\n”,nu m); } } A)1 B)1 C)1 D)1 2 2 2 3 3 9、以下能正确计算1×2×3×…×10的程序段是(C)。

c语言习题集合预处理命令)

第六章预处理命令 6.1 选择题 1.下面叙述中正确的是()。 A. 带参数的宏定义中参数是没有类型的 B. 宏展开将占用程序的运行时间 C. 宏定义命令是C语言中的一种特殊语句 D. 使用#include命令包含的头文件必须以“.h”为后缀 2.下面叙述中正确的是()。 A. 宏定义是C语句,所以要在行末加分号 B. 可以使用#undef命令来终止宏定义的作用域 C. 在进行宏定义时,宏定义不能层层嵌套 D. 对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换 3.在“文件包含”预处理语句中,当#include后面的文件名用双引号括起时,寻找被包含文件的方式为()。 A. 直接按系统设定的标准方式搜索目录 B.先在源程序所在目录搜索,若找不到,再按系统设定的标准方式搜索 C. 仅仅搜索源程序所在目录 D. 仅仅搜索当前目录 4.下面叙述中不正确的是()。 A. 函数调用时,先求出实参表达式,然后带入形参。而使用带参的宏只是进行简单的字符替换 B. 函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行的,在 展开时也要分配内存单元,进行值传递 C. 对于函数中的实参和形参都要定义类型,二者的类型要求一致,而宏不存在类型问题,宏没 有类型 D. 调用函数只可得到一个返回值,而用宏可以设法得到几个结果 5.下面叙述中不正确的是()。 A. 使用宏的次数较多时,宏展开后源程序长度增长。而函数调用不会使源程序变长 B. 函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行的,在 展开时不分配内存单元,不进行值传递 C. 宏替换占用编译时间 D.函数调用占用编译时间 6.下面叙述中正确的是( )。 A. 可以把define和if定义为用户标识符 B.可以把define定义为用户标识符,但不能把if定义为用户标识符 C. 可以把if定义为用户标识符,但不能把define定义为用户标识符 D. define和if都不能定义为用户标识符 7.下面叙述中正确的是()。 A.#define和printf都是C语句 B.#define是C语句,而printf不是 C.printf是C语句,但#define不是 D.#define和printf都不是C语句 8.以下叙述中正确的是()。 A. 用#include包含的头文件的后缀不可以是“.a”

C语言第六章循环结构复习题

循环结构程序设计复习题 一.选择题 1.以下while循环中,循环体执行的次数是:() k=1; while (--k) k=10; a) 10次b) 无限次c) 一次也不执行d) 1次 2.有以下程序段,其中x为整型变量,以下选项中叙述正确的是:() x=0; while (!x!=0) x++; a) 退出while循环后,x的值为0 b) 退出while循环后,x的值为1 c) while的控制表达式是非法的 d) while循环执行无限次 3. 有以下程序段,其中n为整型变量,执行后输出结果是:() n=20 ; while(n--) ; printf(“%d”,n) ; a) 2 b) 10 c) -1 d) 0 4. 有以下程序段,其中t为整型变量,以下选项中叙述正确的是:() t=1; while (-1)

{ t--; if(t) break;} a) 循环一次也不执行 b) 循环执行一次 c) 循环控制表达式(-1)不合法 d) 循环执行2次 5. 有以下程序段,其中x为整型变量,以下选项中叙述正确的是:() x=-1; do {;} while (x++); printf(“x=%d”,x); a) 该循环没有循环体,程序错误 b) 输出x=1 c) 输出x=0 d) 输出x=-1 6. 有以下程序段,其中x,y为整型变量,程序输出结果是:() for(x=0,y=0;(x<=1)&&(y=1);x++,y--) ; printf(“x=%d,y=%d”,x,y); a) x=2,y=0 b) x=1,y=0 c) x=1,y=1 d) x=0,y=0

相关主题
文本预览
相关文档 最新文档