C语言编程第六章作业答案
- 格式:doc
- 大小:33.50 KB
- 文档页数:7
6.1用筛选法求100以内的素数。
参考答案如下:# include “math.h”main(){ int i,j,a[101];for(i=1;i<=100;i++) a[i]=i; /*初始化数组*/a[1]=0; //1不是素数,所有将a[1]赋值为0for(i=2;i<=sqrt(100);i++) //循环2,3,4-----10if(a[i]!=0) //只要a[i]不是0,那么i就是素数,再把100以内该素数的倍数赋值为0 for(j=i+1;j<=100;j++) //因为给素数的倍数肯定不是素数if (a[j]!=0&&a[j]%i==0) a[j]=0;for(i=1;i<=100;i++) //输出所有素数,只要不是素数的值通过上面for语句赋值为0了if (a[i]!=0) printf(“%d ”,a[i]);//即只要a[i]不是0,那么i就是素数}算法思想:首先,将1,2,3---100存在数组a的a[1],a[2],a[3]----a[100]中,即计算时数组元素下标就表示对应的自然数。
然后从2,3到10中的素数,逐一将10以内的素数的倍数的元素置为0(对应的自然数就是合数)。
最后,将所有素数输出(对应的元素值不为0就是素数)。
6.2用选择法对10个数进行排序(从大到小)。
参考答案如下(降序排列):用逐个比较的方法进行。
*/#include <stdio.h>main(){ int a[10],i,j,k,x;printf("Input 10 numbers:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");for(i=0;i<9;i++) //10个数要排9趟,每趟确定a[i],即从a[i]到a[n-1]找到最大的数// 用k记录其下标,然后a[k]和a[i]交换{ k=i; //假设当前无序序列第一个数为最大数for(j=i+1;j<10;j++) //从下一个数开始到最后去找//是否有更大的数if(a[j]<a[k]) k=j; //若有,则把下标记录在k变量中if(i!=k) //将找到的最大数k下标元素和当前的第一个元素i下标元素交换{ t=a[i]; a[i]=a[k]; a[k]=t; }}printf("The sorted numbers:\n");for(i=0;i<10;i++)printf("%d ",a[i]);}6.3 求一个3*3的整型矩阵对角线元素之和参考答案如下:(思考如果求N*N的整型矩阵对角线元素之和怎么修改程序)main(){ int a[3][3],i,j,sum;for(i=0;i<3;i++) //输入3行3列的矩阵{printf("\nInput three integar for %d line",i+1);for(j=0;j<3;j++)scanf("%d",&a[i][j]);}printf("\nThe array is:\n");for(i=0;i<3;i++) //输出3行3列的矩阵{ for(j=0;j<3;j++)printf("%5d",a[i][j]);printf("\n");}sum=0; //sum累加器,初值为0for(i=0;i<3;i++) //将对角线的元素值累加到sum中sum=sum+a[i][i];for(i=2;i>=0;i--) //将反对角线的元素值累加到sum中sum=sum+a[i][2-i];sum=sum-a[1][1]; //a[1][1]加了2次,所以减去一次printf("sum=%d",sum);}思考如果求N*N的整型矩阵对角线元素之和怎么修改程序?参考答案如下:#define N 5main(){ int a[N][N],i,j,sum;for(i=0;i<N;i++){printf("\nInput %d integar for %d line",N,i+1);for(j=0;j<N;j++)scanf("%d",&a[i][j]);}printf("\nThe array is:\n");for(i=0;i<N;i++){ for(j=0;j<N;j++)printf("%5d",a[i][j]);printf("\n");}sum=0;for(i=0;i<N;i++)sum=sum+a[i][i];for(i=N-1;i>=0;i--)sum=sum+a[i][N-1-i];if((N-1)%2==0) sum=sum-a[(N-1)/2][(N-1)/2]; //当N为偶数时,//没有叠加两次的中间对角线元素printf("sum=%d",sum);}6.4已有一个排好序的数组,要求输入一个数后,按原来的排序规律将它插入数组中。
第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){ putchar('-');n=-n;} i=j=0; if((i=n/10)!=0) stod(i);} putchar(n%10+'0');} }功能:(1)(略)(2)(略)【习题6-3】编写已知三角形三边求面积的函数,对于给定的3个量(正值),按两边之和大于第三边的规定,判别其能否构成三角形,若能构成三角形,输出对应的三角形面积。
c语言课后答案第四版第六章答案《C语言课后答案(第四版)第六章详细解析:助你轻松掌握章节知识点》。
亲爱的在学习C语言的过程中,课后习题可是巩固知识的好帮手呢。
今天呀,咱们就一起来看看C语言第四版教材第六章的课后答案,顺便讲讲为啥是这样的答案,让你真正把知识点搞懂。
习题1(假设题目是关于数组的简单定义和使用)。
题目:定义一个包含5个整数的数组,并给数组元素赋值,然后输出数组中的所有元素。
答案代码示例:#include <stdio.h>.int main() {int arr[5] = {1, 2, 3, 4, 5};int i;for (i = 0; i < 5; i++) {printf("%d ", arr[i]);}.return 0;}.原因讲解:- 首先呢,`int arr[5]` 这行代码就是定义了一个能装5个整数的数组,就好比你准备了5个小盒子来放整数。
- 然后 `{1, 2, 3, 4, 5}` 就是给这5个小盒子分别放上了1、2、3、4、5这几个数字。
- 那个 `for` 循环呀,就像是你依次去打开这5个小盒子,把里面的数字拿出来给大家看。
`i` 从0开始,因为数组的下标是从0开始计数的哦,一直到 `i < 5`,也就是把5个小盒子都打开看一遍,每次通过 `arr[i]` 来取出对应小盒子里的数字,再用 `printf` 函数打印出来。
案例分析:比如说,你要记录班上5个同学的考试成绩,就可以用这样的数组来存。
每个同学的成绩就放在对应的小盒子(数组元素)里,需要查看成绩的时候,就像上面代码那样一个一个拿出来看。
习题2(假设题目是关于函数调用和数组作为参数传递)。
题目:编写一个函数,接受一个整数数组和数组的大小作为参数,计算数组中所有元素的和并返回。
答案代码示例:#include <stdio.h>.int sumArray(int arr[], int size) {int sum = 0;int i;for (i = 0; i < size; i++) {sum += arr[i];}.return sum;}.int main() {int arr[5] = {1, 2, 3, 4, 5};int total = sumArray(arr, 5);printf("数组元素的和是:%d\n", total);return 0;}.原因讲解:- `sumArray` 这个函数呢,它接受一个整数数组 `arr` 和数组的大小 `size`。
6.1 用筛选法求100之内的素数. #include <stdio.h>#define N 101void main(){ int i,j,line,a[N];for(i=1;i<=100;i++)a[i]=i;a[1]=0;for(i=2;i<sqrt(100);i++)for(j=i+1;j<=100;j++){ if(a[i]!=0 && a[j]!=0) if(a[j]%a[i]==0)a[j]=0;}printf("n");for(i=2,line=0;i<=100;i++) { if(a[i]!=0){ printf("%5d",a[i]); line++;if(line==10){ printf("n");line=0;}}}}6.2 用选择法对10个数排序.#define N 10main(){int i,j,min,temp,a[N];printf("请输入十个数:n"); for (i=0;i<=10;i++){ printf("a[%d]=",i);scanf("%d",&a[i]);}printf("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("n排序结果如下:n");for(i=0;i<N;i++)printf("%5d",a[i]);}6.3 对角线和:main(){float a[3][3],sum=0;int i,j;printf("请输入矩阵元素:n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%f",&a[i][j]);for(i=0;i<3;i++)sum=sum+a[i][i];printf("对角元素之和= 6.2f",sum); }6.4 插入数据到数组{ int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1,temp2,number,end,i,j;printf("初始数组如下:");for (i=0;i<10;i++)printf("%5d",a[i]);printf("n");printf("输入插入数据:");scanf("%d",&number);end=a[9];if(number>end)a[10]=number;else{ for(i=0;i<10;i++){ if(a[i]>number){ temp1=a[i];a[i]=number;}for(j=i+1;j<11;j++){ temp2=a[j];a[j]=temp1;temp1=temp2;}break;}}for(i=0;j<11;i++)printf("a%6d",a[i]);}6.5 将一个数组逆序存放。
6.3#include <stdio.h>void 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("%d",&a[i][j]);for (i=0;i<3;i++)for(j=0;j<3;j++)if(i==j||i+j==2)sum=sum+a[i][j];printf("sum=%6d\n",sum);}6.4解一:#include <stdio.h>void main(){ int a[11]={1,4,6,9,13,16,19,28,40,100}; int number,i,j;printf("array a:\n");for (i=0;i<10;i++)printf("%d ",a[i]);printf("\n");printf("insert data:");scanf("%d",&number);if (number>a[9])a[10]=number;elsefor (i=0;i<10;i++)if (a[i]>number){ for(j=9;j>=i;j--) //从后往前移a[j+1]=a[j];a[i]=number;break;}printf("Now array a:\n");for (i=0;i<11;i++)printf("%d ",a[i]);printf("\n");}解二:#include <stdio.h>void main(){ int a[11]={1,4,6,9,13,16,19,28,40,100}; int number,i,j;printf("array a:\n");for (i=0;i<10;i++)printf("%5d",a[i]);printf("\n");printf("insert data:");scanf("%d",&number);for(i=9;i>=0&&a[i]>number;i--)a[i+1]=a[i];a[i+1]=number;printf("Now array a:\n");for (i=0;i<11;i++)printf("%5d",a[i]);printf("\n");}6.5#include <stdio.h>#define N 5void main(){ int a[N],i,temp;printf("enter array a:\n");for (i=0;i<N;i++)scanf("%d",&a[i]);printf("array a:\n");for (i=0;i<N;i++)printf("%4d",a[i]);for (i=0;i<N/2;i++) //循环的作用是将对称的元素的值互换{ temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}printf("\nNow,array a:\n");for (i=0;i<N;i++)printf("%4d",a[i]);printf("\n");}6.8解一:设置两个标志变量:flag用来标记数组是否有鞍点,flag1用来标记第maxj列上是否有鞍点。
第6章练习与思考1.指针变量有哪几种运算类型?除了一般变量能做的它都能做以外,还有取地址和取内容运算。
2.有一个4x4的矩阵,试用指针变量按照4行4列格式,输岀矩阵中各元素的值。
#include "stdio.h"void main(){int 询4][4]={{1,1丄1},{1丄1,1},{1丄1,1},{1,1,1,1}};int *p=a;for(i=0;i<4*4;i++){ printf(n%3d",*(p+i));if((i+l)%4=0)printf(H\n H);}}3•输出一个字符串,将这个字符串屮大写字母改为小写字母,第一个字母变大写。
#include "stdio.h"void main(){char a[100],*p 二NULL;int i;printf(n Please input a string:\n H);gets(a);P=a;if(*p>=,a,&&*p<=,z,)*p=*p・32;for(i=l;a[i]!='\O f;i++){if(*(p+i)>='A '&&*(p+i)v=Z) *(p+i)=*(p+i)+32;}puts(a);}4.指向函数的指针有哪些特点?(1)可以通过调用指向函数的指针来调用函数。
(2)对于已定义的函数指针可以指向返回值类型相同的不同函数。
(3)函数指针可做函数的参数。
5.编写程序,在己知字符串str中截取一子串。
要求该子串是从血的第m个字符开始, 由n个字符组成。
#include "stdio.h"void main()char str[100],s[100];char *pl=str,*p2=s;int i,m,n;printf(n please input string:\n");scanf(n%s n,str);printf(”please input m,n:\n n);scanf("%d,%d",&m,&n);for(i=0;i<n;i++)*(p2+i)=*(pl+m+i);for(i=0;*(p2+i)U\0:i++) prin(f(”%c”,*(p2+i));}6.编写程序,利用指针将二维数组屮各元素输出。
练习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.57.以下程序的功能是计算函数F(x, y, z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。
#include <stdio.h>#include <math.h>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;return(value);}①A.x-y, x+y B.x+y, x-y C.z+y, z-y D.z-y, z+y②A.x-y, x+y B.x+y, x-y C.z+y, z-y D.z-y, z+y二、填空题8.以下程序的功能是根据输入的"y"("Y")与"n"("N"),在屏幕上分别显示出"This is YES."与"This is NO."。
c语言第六章函数习题答案C语言第六章函数习题答案在C语言学习的过程中,函数是一个非常重要的概念。
函数不仅可以提高代码的可读性和可维护性,还可以使程序模块化,提高代码的复用性。
在C语言的第六章中,我们学习了关于函数的一些基础知识,并进行了一些习题的练习。
下面,我将为大家提供一些常见的函数习题答案,希望能够对大家的学习有所帮助。
1. 编写一个函数,实现两个整数的交换。
```c#include <stdio.h>void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;}int main() {int num1 = 10;int num2 = 20;printf("交换前:num1 = %d, num2 = %d\n", num1, num2);swap(&num1, &num2);printf("交换后:num1 = %d, num2 = %d\n", num1, num2);return 0;}```2. 编写一个函数,实现判断一个数是否为素数。
```c#include <stdio.h>int isPrime(int num) {if (num <= 1) {return 0;}for (int i = 2; i < num; i++) {if (num % i == 0) {return 0;}}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d是素数。
\n", num);} else {printf("%d不是素数。
\n", num);}return 0;}```3. 编写一个函数,实现计算一个数的阶乘。
1. 输入两个正整数m和n,求其最大公约数和最小公倍数。
辗除法——辗转相除法,又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。
它是已知最古老的算法,其可追溯至3000年前。
它首次出现于欧几里德的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。
它并不需要把二数作质因子分解。
证明:设两数为a、b(a>b),求它们最大公约数(a、b)的步骤如下:用a除以b,余数为r 1。
若r1=0,则(a,b)=b;若r1≠0,则再用b除以r1,得r2 .若r2=0,则(a,b)=r1,若r2≠0,则继续用r1除以r2,……如此下去,直到能整除为止。
其最后一个非零余数即为(a,b)。
例如,和7890 的最大公因子是6, 这可由下列步骤看出:a b a mod b7890 51067890 5106 27845106 2784 23222784 2322 4622322 462 12462 12 612 6 0#include<stdio.h>#include<conio.h>main(){int a,b,num1,num2,temp;/*temp主要用来转换大小*/printf("please input two numbers:\n");scanf("%d,%d",num1,&num2);if(num1<num2) /*如果num2比num1大,则执行下面循环体,为调整num1要比num2大*/{temp=num1;num1=num2;num2=temp;}a=num1;b=num2;/*a比b大*/while(b!=0) /*只要b不等于0,就一直执行下面的循环体,直至整除完为止。
*/{temp=a%b;a=b;b=temp;/*以上3句调整了a,b大小,使其整除为止*/}printf("公约数:%d\n",a);printf("公倍数:%d\n",num1*num2/a); /*由公式知*/getch();}评析:关键是判断两数的大小,先排好位置,再大除小,一直除尽即可。
用了if判大小,while 判除尽语句2. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
#include<stdio.h>#include<conio.h>main(){char c;int letter=0,space=0,digit=0,others=0;printf("please input some characters\n");while((c=getchar())!='\n') /*终端接收一个字符赋给c,然后判断此赋值表达式的值是否不等于’\n’,如果不等于,就执行循环体*/{if(c>='a'&&c<='z'||c>='A'&&c<='Z') /*如果满足字符那么就在此条件范围内*/letter++; /*字符累加*/else if(c==' ')space++; /*空格的累加*/else if(c>='0'&&c<='9')digit++;/*数字累加*/elseothers++;/*其他字符累加*/}printf("all in all:letter=%d,space=%d,digit=%d,others=%d",letter,space,digit,others);getch();评析:此程序最主要是用while,if复合语句(利用while语句,条件为输入的字符不为'\n'.)3. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
#include<stdio.h>#include<conio.h>main(){int a,n,count=1;long int sn=0,tn=0; /*长整型变量*/printf("please input a and n\n",a,n); /*打印输出please input a and n */scanf("%d,%d",&a,&n); /*定义输入的a和n都是整型*/while(count<=n) /*while条件语句在count<=n 的情况下执行*/{tn=tn+a; /*一轮中初始值*/sn=sn+tn; /*除最高位的数就是sn*/a=a*10; /*每次以的最高位*10再带入上循环。
*/++count; /*一轮后自加1*/}printf("%ld\n",sn);}4. 输出9*9口诀。
(要求下三角阵)main(){int i,j;for(i=1;i<=9;i++) /*输入整型变量i使其循环9次*/{for(j=1;j<=i;j++) /*i=1时,j循环1次;当i=2时,j循环2次;……i=9时,j循环9次*/ printf("%d*%d=%-2d\t",j,i,i*j); /*输出形式*/printf("\n"); /*每次循环后换行*/}}5. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和于该数本身。
例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
#include"stdio.h"main(){int a,b,c,i,t;for(i=100;i<=999;i++){a=i/100;b=(i-100*a)/10;c=i%10;if((a*a*a+b*b*b+c*c*c)==i)printf("%d ",i);}6. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如6=1+2+3.编程找出1000以内的所有完数。
#include<stdio.h>void main(){int m,i,j,s;for(m=6;m<1000;m++) /*m在6到1000内的数,每个循环一次循环体,进行判断*/{s=1;for(i=2;i<m;i++) /*寻找m的所有因子*/if(m%i==0) /*判断i是否为m的因子*/s=s+i;/*每次循环得出的因子想加*/if(m-s==0) /*判断所有的因子加起来是否为m*/{printf("%5d its factors are 1",m); /*输出的格式为m its factors are ……*/for(j=2;j<m;j++) /*为判断出每一个在小于m范围内的因子*/if(m%j==0)printf("%d",j);printf("\n");}}}7. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
#include"stdio.h"main(){int i;float a=1.0,b=2.0,s=0,t;for(i=1;i<=20;i++) /*有20项每一项执行一次循环体*/{s+=(b/a); /*累加分数*/t=a+b;a=b;b=t;/*为了分子,分母的满足条件,因为发现规律中有前一项分子分母和为后一项的分子*/}printf("结果是%f\n",s);}评析:注意是浮点类型,交换变量8. 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?#include"stdio.h"main(){int i;float h=100.0,s=0;for(i=1;i<=10;i++) /*共10次执行循环体*/{h=0.5*h;s+=3*h; /*每一次一次落下反弹所经路程为3倍的弹上来的高度,路程用累加*/}s=s-h; /*最后一次并没有落地,因此减去最后反弹上来的高度*/printf("第十次落地路程是%f,第十次反弹高度是%f\n",s,h);}评析:发现3倍的关系,注意最后一次不算反弹上来的路程。
用for语句进行10次循环9. 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
#include<stdio.h>#include<conio.h>main(){int day,x1,x2;day=9;x2=1;while(day>0) /*在天数大于0的情况下不断循环*/{x1=(x2+1)*2; /*x1作为前一天桃子数,后一天加1个再乘以2即可*/x2=x1;/*转换变量*/day--; /*使其循环9次*/}printf("the total is %d\n",x1);}评析:主要是用while语句,以天数大于0为分界,不断累加与循环。
10. 两个乒乓球队进行比赛,各出三人。
甲队为a,b,c三人,乙队为x,y,z三人。
已抽签决定比赛名单。
有人向队员打听比赛的名单。
a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
#include<stdio.h>#include<conio.h>main(){char i,j,k; /*输入字符变量*/for(i='x';i<='z';i++) /*i属于x和z之间*/for(j='x';j<='z';j++)/* j属于x和z之间*/{if(i!=j) /*如果i与j不同,则执行下面的语句*/for(k='x';k<='z';k++){if(i!='k'&&j!='k')/*I,j,k都不一样,则执行下面语句*/{if(i!='x'&&k!='x'&&k!='z') /*要满足题目条件*/printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);}}}}评析:首先是要判断出I,j,k三者都不一样。