C语言程序设计习题答案(6-13).pdf
1 C语言程序设计习题答案习题六数组一、选择题110:BDBCD CDBAB1120:BCDCC DABBC2130:CCADC ABBCB3141:BDDDD CDCCB A二、填空题1 9 、0 2先行后列3连续的存储空间中4 QuickC 5.(c=getchar()、A+i 或 65+i 6.0、str1i-str2i 7 CDABC 8 10 14 9 6 10 1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 111 600 12 AzyD 13 4 some string*test 三、编程题1.定义一个有20 个元素的整型数组,分别求出下标为奇数和偶数的元素的平均值。答:程序参见文件Cprogram#include#include main()int i,s0=0,s1=0,a20;for(i=0;i20;i+)ai=rand()%100;for(i=0;i20;i+=2)printf(%3d,ai);s0=s0+ai;printf(sum is:%d ave=%fn,s0,s0/;for(i=1;i20;i+=2)printf(%3d,ai);s1=s1+ai;printf(sum is:%d ave=%fn,s1,s1/;2 2.设有一个整型数组,另输入一个整数,编程查找这个整数是否在数组中出现过,若出现,则输出第一次出现的位置,否则,输出no found。答:程序参见文件Cprogram#include#include main()int i,s,a20;for(i=0;i20;i+)ai=rand()%100;scanf(%d,&s);for(i=0;i20;i+)if(ai=s)printf(found:a%d=%dn,i,ai);break;if(i=20)printf(no foundn);for(i=0;i20;i+)printf(%3d,ai);printf(n);3.设有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入到数组中。答:程序参见文件Cprogram#include#define N 10main()int i,j,s,aN=17,15,13,11,9,7,5,3,1;编一程序,从一个已排好序的数组中删去某个位置上的元素。答:程序参见文件Cprogram#include#define N 10main()int i,j,aN=1,3,5,7,9,11,13,15,17,19;for(i=0;iN;i+)printf(%3d,ai);printf(n);scanf(%d,&i);for(j=i;jN-1;j+)aj=aj+1;aj=0;for(i=0;iN;i+)printf(%3d,ai);printf(n);5.将一个二维数组的行、列互换后存到另一个二维数组中并输出结果。答:程序参见文件Cprogram#include main()int i,j;int a34=1,3,5,7,9,11,13,15,17,19,21,23,b43;for(i=0;i4;i+)3 for(j=0;j3;j+)bij=aji;printf(array a:n);for(i=0;i3;i+)for(j=0;j4;j+)printf(%5d,aij);printf(n);printf(array b:n);for(i=0;i4;i+)for(j=0;j3;j+)printf(%5d,bij);printf(n);6.编一程序,在一个二维数组中,查找第一次出现的负数,并输出该数及其所在的行、列号。答:程序参见文件Cprogram#include main()int i,j,flag;int a34=1,3,5,7,9,11,13,-15,17,19,-21,23;flag=0;for(i=0;i3;i+)for(j=0;j4;j+)if(aij0)flag=1;printf(found:a%d%d=%dn,i,j,aij);i=j=100;编程将一个字符数组中的字母,按由大到小的顺序进行排序。答:程序参见文件Cprogram#include#include main()char t,s=ABCDIVBHFBVCNLKFDB;int i,j,n;puts(s);n=strlen(s);for(i=0;in-1;i+)for(j=i+1;jn;j+)if(sisj)t=si;si=sj;sj=t;puts(s);8.输入一行字符,统计其中有多少个英语单词,单词之间用空格隔开。答:程序参见文件Cprogram#include#include main()char s81;int w,i,n;4 gets(s);i=0;n=0;w=0;while(si!=0)if(si=)w=0;/*end of a word*/elseif(w=0)w=1;n+;/*begin of a word*/i+;printf(number of word:%dn,n);9.编程将两个一维数组中的对应元素的值相减后进行输出。答:程序参见文件Cprogram#include#include main()int i,a10,b10;for(i=0;i10;i+)ai=rand()%100;printf(%4d,ai);printf(n);for(i=0;i10;i+)bi=rand()%100;printf(%4d,bi);printf(n);for(i=0;i10;i+)printf(%4d,ai-bi);printf(n);10.有 n 个无序的数放在数组a 中,请将相同的那些数删得只剩得一个,输出经过删除后的数据。答:程序参见文件Cprogram#include main()int i,j,k,a10=90,20,40,30,50,50,50,50,20,80;for(i=0;i10;i+)printf(%4d,ai);printf(n);for(i=0;i9;i+)for(j=i+1;j10;j+)if(aj=ai)aj=-888;k=0;for(i=0;i10;i+)if(ai!=-888)printf(%4d,ai);ak+=ai;求二维数组中这样一个元素的位置:它在行上最小,在列上也最小。如果没有这样的元素则输出相应的信息。答:程序参见文件Cprogram#include#include main()int j,i,k,flag,fz=0,a45;for(i=0;i4;i+)for(j=0;j5;j+)aij=rand()%100;printf(%4d,aij);printf(n);for(i=0;i4;i+)for(j=0;j5;j+)flag=1;for(k=0;k5;k+)if(aikaij)flag=0;break;for(k=0;k4&flag;k+)if(akjaij)flag=0;break;if(flag)fz+;printf(min a%d%d=%dn,i,j,aij);if(fz=0)printf(no found!);12.在一个二维数组中形成并输出如下矩阵:1 1 1 1 1 2 1 1 1 1 A=3 2 1 1 1 4 3 2 1 1 5 4 3 2 1 答:程序参见文件Cprogram#include#define N 5main()int j,i,aNN;for(i=0;iN;i+)for(j=0;jN;j+)if(i=j)aij=1;else if(j=0)aij=i+1;else aij=ai-1j-1;for(i=0;iN;i+)for(j=0;jN;j+)printf(%4d,aij);printf(n);6 13.已知 A 是一个 34 的矩阵,B是一个 45 的矩阵,编程求AB得到的新矩阵C,并输出C 矩阵。答:程序参见文件Cprogram#include main()int j,i,k,a34=1,2,3,4,5,6,7,8,9,10,11,12;int b45=3,2,1,5,4,4,3,2,5,1,2,3,5,4,1,7,8,5,6,9,c35;printf(array A(3*4):n);for(i=0;i3;i+)for(j=0;j4;j+)printf(%4d,aij);printf(n);printf(array B(4*5):n);for(i=0;i4;i+)for(j=0;j5;j+)printf(%4d,bij);printf(n);for(i=0;i3;i+)for(j=0;j5;j+)cij=0;for(k=0;k4;k+)cij+=aik*bkj;printf(array C(3*5)=A*B:n);for(i=0;i3;i+)for(j=0;j5;j+)printf(%4d,cij);printf(n);14.编程输出两个字符串中对应位置上相同的字符。答:程序参见文件Cprogram#include main()int i;char a81=acbsbdvhfejbvewvkbewljbv;char b81=anbdxwdbviuerkjvbfidbvuie bik;printf(string1:%sn,a);printf(string2:%sn,b);printf(string3:);i=0;while(ai!=0&bi!=0)if(ai=bi)printf(%c,ai);i+;printf(n);7 15.设有一字符串已按升序排列在字符数组a 中,请将另一字符串b 中的字符按升序的规律插到数组 a 中。答:程序参见文件Cprogram#include#include main()int i,j,k;char a81=acdfhjklmopxz;char b81=anbdx;printf(string1:%sn,a);printf(string2:%sn,b);i=0;while(bi!=0)j=0;while(aj=j)ak+1=ak;k-;aj=bi;i+;printf(string3:%sn,a);16.将已按升序排列的两个字符串a 和 b 中的字符按升序归并到字符数组c 中。答:程序参见文件Cprogram#include#include main()int i,j,k;char a81=acdfhjklmopxz;char b81=abdnx;char c81;printf(string1:%sn,a);printf(string2:%sn,b);i=0;j=0;k=0;while(ai!=0&bj!=0)if(aibj)ck+=ai+;else ck+=bj+;while(ai)ck+=ai+;while(bj)ck+=bj+;ck=0;printf(string3:%sn,c);8 习题七函数一、选择题 110:BDCDD BDBAC 1120:AABBB ABAAC 2131:CDAAC DDABB A二、填空题1函数声明2自动将其转换为函数定义时的类型3 10 4 1100 56 i=n 、s 、0 、f(k)7*(x0+a/x0)、a,x1 8 Itis 9 2721 10 0246 11 k 、-1 12 2 、2 13 p=j 、xip 14 5 15 7 16 24 17 age(n-1)+2 、age(n)18 m%10 、m/10 、m 或 m!=0 、r(m)三、编程题1.编一函数,判断某年是否为闰年,若是返回1,否则返回0。答:程序参见文件Cprogram#include fun(int m)return(m%4=0)&(m%100!=0)|(m%400=0);main()int n;for(n=1987;n2009;n+)if(fun(n)printf(year:%d is a leap!n,n);2.编写计算三角形面积的程序,将计算面积定义成函数。三角形面积公式为:A=)()(csbsass式中 s=(a+b+c)/2其中 A为三角形面积,a、b、c 为三角形的三条边的长度。答:程序参见文件Cprogram#include#include 9 float fun(float a,float b,float c)float f,s;s=(a+b+c)/2;if(s=a)|(s=b)|(s=c)编写两个函数,分别求出两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。答:程序参见文件Cprogram#include#include int fmax(int m,int n)int r;r=m%n;while(r!=0)m=n;n=r;r=m%n;return n;int fmin(int m,int n)return m*n/fmax(m,n);main()int a,b;scanf(%d%d,&a,&b);printf(fmax is:%dn,fmax(a,b);printf(fmin is:%dn,fmin(a,b);4.编写函数,根据整型形参m的值,计算公式 t=1-2*21-3*31-mm*1的值。例如,若m=5,则应输出。答:程序参见文件Cprogram#include float fun(int m)float t=1;int i;for(i=2;i=m;i+)t=i/i;return t;main()printf(t(5)=%fn,fun(5);5.计算 s=1+!21+!31+!1n。n由终端输入,将计算n!定义成函数。答:程序参见文件Cprogram#include float fun(int m)int i;float s=0,t=1;for(i=1;i=m;i+)10 t=t/i;s=s+t;return s;main()printf(s(5)=%fn,fun(5);6.编写函数,利用公式:9473523173523152313112计算的近似值,当某一项的值小于10-5时,认为达到精度要求。答:程序参见文件Cprogram#include double fun()int n;double pi=1,t=1;n=1;do t=t*n/(2*n+1);pi=pi+t;n+;while(t1e-5);return 2*pi;main()printf(pi=%fn,fun();7.编一函数,判断某一整数是否为回文数,若是返回1,否则返回0。所谓回文数就是该数正读与反读是一样的。例如12321 就是一个回文数。答:程序参见文件Cprogram#include#include int huiwen(int m)int t,n=0;t=m;while(t)n+;t=t/10;编写一个求水仙花数的函数,然后通过主函数调用该函数求100 到 999 之间的全部水仙花数。所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。例如:153 就是一个水仙花数:153=1*1*1+5*5*5+3*3*3答:程序参见文件Cprogram#include#include int fun8(int m)int a,b,c;a=m/100;b=m/10%10;c=m%10;if(m=a*a*a+b*b*b+c*c*c)return 1;else return 0;main()int i;for(i=100;i=999;i+)11 if(fun8(i)printf(%5d,i);printf(n);9.编一函数primedec(m),求整数m的所有因子并输出。例如:120 的因子为:2,2,2,3,5答:程序参见文件Cprogram#include#include void primedec(int m)int n=2;while(m1)while(m%n=0)printf(%d ,n);m=m/n;n+;printf(n);main()int x;scanf(%d,&x);primedec(x);10.求 100200 之间的所有素数,按每行6 个输出。答:程序参见文件Cprogram#include#include int prime(int m)int n,f=1;for(n=2;nm;n+)if(m%n=0)f=0;break;return f;main()int x,n=0;for(x=100;x=200;x+)if(prime(x)n+;printf(%5d,x);if(n%6=0)printf(n);printf(n);11.编一函数,求末尾数非0 的正整数的逆序数,如:reverse(3407)=7043。答:程序参见文件Cprogram#include#include int reverse(int m)int x=0;while(m)12 x=x*10+m%10;m=m/10;return x;main()int w;scanf(%d,&w);printf(%d=%dn,w,reverse(w);12.编一函数,将一个字符数组中的数字字符存于另一个字符数组中。答:程序参见文件Cprogram#include#include void fun12(char a,char b)int i=0,j;for(j=0;j=0&bj=9)ai+=bj;ai=0;main()char s181,s281;gets(s2);fun12(s1,s2);puts(s2);puts(s1);13.编一函数,统计一个字符串中字母、数字、空格和其它字符的个数。答:程序参见文件Cprogram#include#include void fun13(char s)int i,num=0,ch=0,sp=0,oh=0;char c;for(i=0;(c=si)!=0;i+)if(c=)sp+;else if(c=0&c=A&toupper(c)=Z)ch+;else oh+;printf(char:%d,number:%d,space:%d,other:%dn,ch,num,sp,oh);main()char s181;gets(s1);fun13(s1);14.用递归的方法实现求1+2+3+n。13 答:程序参见文件Cprogram#include#include int fun14(int m)int w;if(m=1)w=1;else w=fun14(m-1)+m;return w;main()int x,i;scanf(%d,&x);printf(1+2+.+%d=%dn,x,fun14(x);15.用递归的方法将一个整数转换成字符串。例如:输入345,应输出字符串“345”。答:程序参见文件Cprogram#include#include void fun15(int m)if(m!=0)fun15(m/10);printf(%c,0+m%10);main()int x;scanf(%d,&x);printf(%d=,x);fun15(x);printf(n);16.用递归的方法计算下列函数的值:p(x,n)=x-x2+x3-x4+(-1)n-1xn n0答:程序参见文件Cprogram#include#include float p(float x,int n)float f;if(n=0)f=0;else f=p(x,n-1)+pow(-1,n-1)*pow(x,n);return f;14 main()printf(p(2,3)=%f,p(2,3);17.采用递归的方法计算x 的 n 次方。答:程序参见文件Cprogram#include#include float p(float x,int n)float f;if(n=0)f=1;else f=p(x,n-1)*x;return f;main()printf(p(2,8)=%f,p(2,8);18.根据勒让德多项式的定义计算Pn(x)。n 和 x 为任意正整数,把计算Pn(x)定义成递归函数。1 n=0 Pn(x)=x n=1(2n-1)Pn-1(x)-(n-1)Pn-2(x)/n)n1 答:程序参见文件Cprogram#include float p(float x,int n)float f;if(n=0)f=1;else if(n=1)f=x;else f=(2*n-1)*p(x,n-1)-(n-1)*p(x,n-2)/n;return f;main()printf(p(2,8)=%f,p(2,8);习题八用户标识符的作用域和存储类一选择题1 10:ADBBC CABDB11-20:DBABC CCDAC二填空题1.静态局部变量的作用域是从定义点到函数体(或复合语句)结束。15 2.凡在函数中未指定存储类别的变量,其隐含的存储类别为auto。3.变量的作用域是指变量的有效范围,在作用域内可以引用该变量。按作用域来说,变量可分为局部变量和全局变量。4.根据函数能否被其它源文件调用,函数可分为 外部 函数和静态(或内部)函数。5.下列程序的输出结果是2468。#include#define MAX_COUNT 4 void fun();main()int count;for(count=1;count=MAX_COUNT;count+)fun();void fun()static int i;i+=2;printf(%d,i);6.下列程序的输出结果是2,5,1,2,3,-2。main()int a=3,b=2,c=1;c-=+b;b*=a+c;int b=5,c=12;c/=b*2;a-=c;printf(“%d,%d,%d,”,a,b,c);a+=-c;printf(“%d,%d,%d n”,a,b,c);7.下列程序的输出结果是。#include static int a=5;main()printf(“a=%d n”,a);p1();p2();p1()printf(“a*a=%d n”,a*a);a=2;p2()printf(“a*a*a=%dn”,a*a*a);8.下列程序的输出结果是20,10。#include main()int x=10;int x=20;printf(“%d,”,x);printf(“%d n”,x);9.下列程序由两个文件组成,其运行结果是x=2。/*文件 1*/int x;sub()x=4;/*文件 2*/static int x=2;main()sub();printf(“x=%dn”,x);10.下列程序由两个文件组成,其运行结果是x=25,y=25。/*文件 1*/#include a=5a*a=25a*a*a=816 int x=10;int y=10;void add(void)y=x+10;x*=2;main()extern void sub();x+=5;add();sub();printf(“x=%d,y=%dn”,x,y);/*文件 2*/void sub(void)extern int x;x-=5;11.下列程序由两个文件组成,其运行结果是。/*文件 1*/#include int x=10;int y=10;extern void sub();void add(void)int y=5;y=x+10;x*=2;printf(“add:y=%d;”,y);main()x+=5;add();sub();printf(“main:x=%d;main:y=%dn”,x,y);/*文件 2*/extern int x;void sub(void)int y=5;x-=y;printf(“sub:y=%d;”,y);12.下列程序由两个文件组成,其运行结果是。/*文件 1*/#include static int x=2;int y=3;extern void add2();void add1();main()add1();add2();add1();add2();printf(“in main x=%d y=%dn”,x,y);void add1(void)x+=2;y+=3;printf(“in add1 x=%d y=%d”,x,y);/*文件 2*/static int x=10;void add2(void)extern int y;x+=10;y+=2;printf(“in add2 x=%d y=%dn”,x,y);习题九编译预处理一选择题1 10:DDCBC CABBB 11-20:BBCBB 二填空题1.下列程序的输出结果是1000 10。#define N 10#define s(x)x*x#define f(x)(x*x)main()add:y=25;sub:y=5;main:x=25;main:y=10in add1 x=4 y=6in add2 x=20 y=8in add1 x=6 y=11in add2 x=30 y=13in main x=6 y=1317 int i1,i2;i1=1000/s(N);i2=1000/f(N);printf(“%d%dn”,i1,i2);2.设有如下宏定义:#define MYSWAP(z,x,y)z=x;x=y;y=z;以下程序段通过宏调用实现变量a、b 内容交换,请填空。float a=5,b=16,c;MYSWAP(c ,a,b);3.下列程序的输出结果是11。#define NX 2+3#define NY NX*NXmain()int i=0,m=0;for(;i(y)(x):(y)main()int a=5,b=2,c=3,d=3,t;t=MAX(a+b,c+d)*10;printf(“%dn”,t);5.下列程序的输出结果是MIN。#define MAX(a,b)ab#define EQU(a,b)a=b#define MIN(a,b)abmain()int a=5,b=6;if(MAX(a,b)printf(“MAXn”);if(EQU(a,b)printf(“EQUn”);if(MIN(a,b)printf(“MINn”);6.下列程序的输出结果是0 1 1。#define TESTmain()int x=0,y=1,z;z=2*x+y;#ifdef TESTprintf(“%d%d”,x,y);#endifprintf(“%d n”,z);三编程题1.定义一个带参的宏,求两个整数的余数。通过宏调用,输出求得的结果。#define R(m,n)(m)%(n)#include void main()int m,n;printf(enter two integers:n);scanf(%d%d,&m,&n);printf(remainder=%dn,R(m,n);2.分别用函数和带参的宏,从3 个数中找出最大者。#include#define MAX(a,b)(a)(b)(a):(b)MACRO max=%dn,MAX(MAX(m,n),k);printf(2.function max=%dn,max3(m,n,k);18 3.输入一个整数m,判断它能否被3 整除。要求利用带参的宏实现。#include#define DIVIDEDBY3(m)(m)%3=0void main()int m;printf(enter a integer:n);scanf(%d,&m);if(DIVIDEDBY3(m)printf(%d is divided by 3n,m);elseprintf(%d is not divided by 3n,m);习题十指针一填空题1.指针变量是把内存中另一个数据的首地址作为其值的变量。2.能够直接赋值给指针变量的整数是0。3.如果程序中已有定义:int k;1)定义一个指向变量k 的指针变量p 的语句是int*p=&k;。2)通过指针变量,将数值6 赋值给 k 的语句是*p=6;。3)定义一个可以指向指针变量p 的变量 pp 的语句是int*pp;。4)通过赋值语句将pp 指向指针变量p 的语句是pp=&p;。5)通过指向指针的变量pp,将 k 的值增加一倍的语句是(*pp)*=2;。4.当定义某函数时,有一个形参被说明成int*类型,那么可以与之结合的实参类型可以是整型数组名、指向整型数据的指针值等。5.以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如,输入的字符串为:556,则输出十进制整数366。请填空。#include main()char*p,s6;int n;p=s;gets(p);n=*p-0;while(*(p+)!=0)n=n*8+*p-0;printf(%d n,n);二选择题110:BCADC AAABB 11-15:CBCDC 16.以下 count 函数的功能是统计substr在母串 str中出现的次数。int count(char*str,char*substr)int i,j,k,num=0;for(i=0;i+)for(,k=0;substrk=strj;k+,j+)if(substr =0)num+;break;return num;A)stri=substri B)stri!=019 C)stri=0 D)strisubstri A)j=i+1 B)j=i C)j=i+10 D)j=1 A)k B)k+C)k+1 D)+k17.以下 Delblank函数的功能是删除字符串s 中的所有空格(包括Tab、回车符和换行符)。void Delblank(char*s)int i,t;char c80;for(i=0,t=0;i+)if(!isspace()ct+=si;ct=0;strcpy(s,c);A)si B)!siC)si=0 D)si=0 A)s+i B)*ci C)*(s+i)=0 D)*(s+i)18.以下 conj 函数的功能是将两个字符串s 和 t 连接起来。char*conj(char*s,char*t)char*p=s;while(*s);while(*t)*s=;s+;t+;*s=0;A)s-B)s+C)s D)*s A)*t B)t C)t-D)*t+A)return s B)return t C)return p D)return p-t19.下列程序的输出结果是。#include main()int*k,*a,b=100;a=&b;k=&a;printf(“%dn”,*k);A)运行出错B)100 C)a的地址 D)b的地址20.下列程序的输出结果是。#include fun(int*a,int*b)int*w;*a=*a+*a;*w=*a;*a=*b;*b=*w;main()int x=9,y=5,*px=&x,*py=&y;fun(px,py);printf(“%d,%dn”,x,y);A)出错 B)18,5 C)5,9 D)5,1821.若定义了以下函数:void f()p=(double*)malloc(10*sizeof(double);p 是该函数的形参,要求通过p 把动态分配存储单元的地址传回主调函数,则形参p 的正确定义应当是。A)double *p B)float *p C)double *pD)float *p20 三编程题1.编写函数,对传递进来的两个整型量计算它们的和与积之后,通过参数返回。#include void compute(int m,int n,int*sum,int*p);void compute(int m,int n,int*sum,int*p)*sum=m+n;*p=m*n;void main()int x,y,sum,product;printf(enter 2 integers:n);scanf(%d%d,&x,&y);compute(x,y,&sum,&product);printf(x=%d y=%d sum=%d product=%dn,x,y,sum,product);2.编写一个程序,将用户输入的字符串中的所有数字提取出来。#include#include void main()char string81,digit81;char*ps;int i=0;printf(enter a string:n);gets(string);ps=string;while(*ps!=0)if(*ps=0&*ps=9)digiti=*ps;i+;ps+;digiti=0;printf(string=%s digit=%sn,string,digit);3.编写函数实现,计算字符串的串长。#include#include int StringLength(char*s);int StringLength(char*s)int k;for(k=0;*s+;k+);return k;void main()char string81;printf(enter a string:n);gets(string);printf(length of the string=%dn,StringLength(string);21 4.编写函数实现,将一个字符串中的字母全部转换为大写。#include#include char*Upper(char*s);char*Upper(char*s)char*ps;ps=s;while(*ps)if(*ps=a&*ps=z)*ps=*ps-32;ps+;return s;void main()char string81;printf(enter a string:n);gets(string);printf(before convert:string=%sn,string);printf(after convert:string=%sn,Upper(string);5.编写函数实现,计算一个字符在一个字符串中出现的次数。#include#include int Occur(char*s,char c);int Occur(char*s,char c)int k=0;while(*s)if(*s=c)k+;s+;return k;void main()char string81,c;printf(enter a string:n);gets(string);printf(enter a character:n);c=getchar();printf(character%c occurs%d times in string%sn,c,Occur(string,c),string);6.编写函数实现,判断一个子字符串是否在某个给定的字符串中出现。#include#include int IsSubstring(char*str,char*substr)int i,j,k,num=0;for(i=0;stri!=0&num=0;i+)for(j=i,k=0;substrk=strj;k+,j+)if(substr k+1 =0)22 num=1;break;return num;void main()char string81,sub81;printf(enter first string:n);gets(string);printf(enter second string:n);gets(sub);printf(string%s is,sub);if(!IsSubstring(string,sub)printf(not);printf(substring of%sn,string);7.有 n 个人围成一圈,顺序排号。由用户从键盘输入报数的起始位置,从该人开始报数(计数从0开始),凡报数为3 的倍数出圈。问最后剩下的是几号见导学例8.由一个整型二维数组,大小为m n,要求找出其中最大值所在的行和列,以及该最大值。请编一个函数 max,数组元素在main 函数中输入,结果在函数max中输出。见导学例9.由 n 个学生,每个学生考m门课程,要求编一函数,能检查n 个学生有无不及格的课程,如果由某一学生有一门或一门以上课程不及格,就输出该学生的号码(学号从0 开始)和其全部课程成绩。见导学例