《C程序设计教程课后习题答案.pdf》由会员分享,可在线阅读,更多相关《C程序设计教程课后习题答案.pdf(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 1 章习题一、选择题1、A 2、D 3、C 4、D 5、B 6、C 7、C 8、B 9、B 10、A二、填空题1、一,函数体2、main(主),main(主)3、编译,目标4、.c,.obj,.exe5、缩进,无影响,/*/三、程序分析题1、*Very good!*a=12,b=5a=17,b=223、r=5.50,s=95.033098四、编程题1.用 printf()函数在屏幕上输出自己的班级、学号、姓名。#includestdio.hvoid main()printf(“班级:BX1109n);printf(”学号:111003530901n);printf(姓名:王孟荣n“);2.
2、从键盘输入两个整数,计算它们的和、差、积、商,并在屏幕上输出结果。#includevoid main()(int x,y,a,b,c;float d;printf(Please Input Two lntegers:n);scanf(%d%d,&x,&y);a=x+y;b=x-y;c=x*y;d=1.0*x/y;printf(a=%dnb=%dnc=%dnd=%fn,a,b,c,d);第 2 章习题一、选择题1 5 BCDCD6 10 DBBCA二、填空题1.单精度浮点型、双精度浮点型、字符型2.03.x%10*10+x/104.5.55.5.7 206.sin(sqrt(x*x)/(a*b)
3、7.8.1111011 173 7B9.3 310.3三、程序分析题1.7,8,102.233.5 F4.(int)i=12z12.505.461579112四、编程题1.编写程序,求表达式c=21%9(float)a+b*b的值,假设表达式中a 和 b 的值分别由键盘输入。#includevoid main()(int a,b;float c;printf(Please input data a,b:);scanf(%d%d,&a,&b);c=21%9-(float)a+Vb*b;printf(,c=%5.2fn,z c);2.编写程序,从键盘输入两个整数存入变量a 和 b 中,求 a2-b
4、2的值并输出。#includevoid main()(int a,b,c;printf(Please input data a,b:);scanf(%d%d,&a,&b);c=a*a-b*b;printf(c=%dnz c);)第 3 章习题一、选择题1 2 3 4 5 6 7 8 9 10D C A,B A B B B、CB D D二、填空题1.有穷性确定性可行性2.#3.从 终 端(键盘)输入个字符4.m d5.97,g6.123.456000,123.46,1237.格式控制符不正确(输入数据时不能控制列宽和小数位数)8.63,63,77,3f9.%f%f&x,&y10.ch ch三、程
5、序分析题1.c=ll2.a=123 f=4573.x=345y=3.4600004.a=l,b=3a=3,b=l5.(题目需修改为:从键盘输入一个除a 和 z 以外的小写字母)程序的功能:从键盘输入一个除a 和 z 以外的小写字母,求出该字母对应的大写字母的前趋和后继字母,然后顺序输出此三个大写字母,每个字母所占列宽为3。运行结果:假如输入:f输出:E F G四、编程题1.编写程序,计算的值并输出(保留3 位小数),其中a、b 的值由键盘输入。include#includevoid main()float a,b,x;scanf(,%f%f,/&a,&b);x=(a*a+b*b)/sqrt(3
6、*(a+b);printf(,x=%.3fn,x);)2.编写程序,从键盘输入一个梯形的上底a、下底b 和 高 h,输出梯形的面积s。#include#includevoid main()float a,b,h,s;scanf(”%f,%f,%f”,&a,&b,&h);s=(a+b)*h/2;printf(“梯形面积 s=%.2fnzs);3.编写程序,在屏幕上输入你姓名的第一个字母,显示出该字母以及下面的信息:Hello!This is a c program.My name is 第一个字母include void main()(char name;name=getchar();putch
7、ar(name);printf(nHello!n);printf(This is a c program.n);printf(My name is%cn/name);第 4 章习题一、选择题1 2 3 4 5 6 7 8 9 10B B C B C AC B A C C二、填空题1.!&|2.13.a b4.15.06.x%4=0&x%100!=07.5 68.A9.x10&x5010.-1三、程序分析题1.No2.-23.5324.#&5.(1)2(2)3CCa=2,b=2,c=4四、编程题1.有-个函数如下:x2-2(x5)y=3x+5(5x50)编写程序,输入x 的值,计算相应的y 值输
8、出(保留3 位小数)。#include#includevoid main()float x,y;scanf(%fn,&x);if(x5)y=x*x-2;else if(x50)y=3*x+5;else y=x-sqrt(4*x-l);printf(,x=%f/y=%.3fn,xzy);)2.编写一个程序,根据输入的三角形的二条边判断是否能组成三角形,如果可以则输出它的面积和三角形类型(等边、等腰、直角、一般三角形)。#include#includevoid main()float a,b,c,s,area;scanf(f,%f,%f,&a,&b,&c);if(a+bc&b+ca&a+cb)s=
9、(a+b+c)/2;area=sqrt(s*(s*(s-a)*(s-b)*(s-c);printf(area=%fn,area);if(a=b&b=c)print等边三角形n“);else if(a=b 1 1 a=c 1 1 b=c)printf(等腰三角形n);else if(a*a+b*b=c*c)|(a*a+c*c=b*b)|(b*b+c*c=a*a)printf(直角三角形n“);else printf(一般三角形n“);else printf(不能组成三角形n“);3.设奖金税率r 有如下的要求(n 代表奖金):0 n10005%1000n2000r=8%2000n300010%3
10、000n600015%6000n用 switch多分支选择语句编写程序,输入奖金值,计算并输出相应的税率和实际应得奖金值。#includevoid main()float n,r,s;int m;printf(请输入奖金值:”);scanf(%fH/&n);if(n=6000)m=6;else m=n/1000;switch(m)case 0:r=0;break;case 1:r=0.05;break;case 2:r=0.08;break;case 3:case 4:case 5:r=0.1;break;case 6:r=0.15;break;)s=n-r*n;printf(税率 r=%.O
11、f%,奖金值 n=%.2f,实际应得奖金值 s=%.2fn,r*100,n,s);)4.从键盘输入任意4 个数a、b、c、d,按照从大到小的顺序排列后重新输出。#includevoid main()int a,b,c,d,t;scanf(”d,%d,%d,%cT,&a,&b,&c,&d);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(ad)t=a;a=d;d=t;if(bc)t=b;b=c;c=t;if(bd)t=b;b=d;d=t;if(cd)t=c;c=d;d=t;printf(%d%d%d%dn,a,bzc,d);5.给出一个不超过4 位数的正整数,判断它
12、是几位数,并按逆向输出各位数字。例 1234,输出为4321o#includevoid main()int num,ij/kzm;printW输入一个少于4 位的正整数:scanf(%d,&num);if(num=0&num1000&num=100)printf(是一个 3 位数n“);m=num%10;/*求个位上的数字*/k=num/10%10;/*求十位上的数字*/j=num/100;/*求百位上的数字*/printf(逆序数为:%d%d%dn”,m,kj);)else if(num=10)printf(是一个 2 位数n);m=num%10;/*求个位上的数字*/k=num/10;/*
13、求十位上的数字*/printf(逆序数为:d%dn,m,k);)elseprintf(是一个 1 位数n);printf(逆序数为:%dn,num);)else printf(是一个无效的数n);第5章习题一、选择题123456789 10BCBCABDBAB二 填空题1.循环 switch2.4,73.64.#5.0 26.187.18.sum=809.c=getchar()n:m10.i%13=0break三 程序分析题1.outputl:21 6output2:5 6outputs:5 7 72.n=73.Max=18Min=34.1*1=12*1=2 2*2=43*1=3 3*2=6
14、3*3=95.0 1 2 31 2 3 02 3 0 13 0 12四、编程题1.从键盘上输入若干字符,以按Enter键结束,统计其中字符A 或 a 的个数。#include stdio.hmain()char ch;int k=0;while(ch=getchar()!=n)if(ch=A 11 ch=a)k=k+l;p irtf(dn”,k);)2.利用=x 的前100项之积计算p 的值。#include main()(double term,result=1;/*累乘项初值应为 1*/int n;for(n=2;n=100;n=n+2)(term=(double)(n*n)/(n-l)*
15、(n+l);/*计算累乘项*/result=result*term;)printf(result=%fnz 2*result);)3.用 1 元 5 角钱人民币兑换5 分、2 分 和 1 分的硬币(每一种都要有)共100枚,问共有儿种兑换方案?每种方案各换多少枚?#includemain()int x,y,z,count=0;for(x=l;x=28;x+)for(y=l;y=73;y+)(z=100-x-y;if(5*x+2*y+z=150)(count+;printf(”%d,%d,%dn”,x,y,z);printf(count=%dn,count);4.鸡兔同笼,共有98个头,386只
16、脚,编程求鸡、兔各多少只。/include main()int x,y;for(x=l;x=97;x+)y=98-x;if(2*x+4*y=386)printf(鸡=%d=%d,x,y);5.将一个正整数分解质因数。例如:输入9 0,打印出90=2*3*3*5。#include main()(int nJ;printf(nplease input a number:n);scanf(%d”,&n);printf(%d-;for(i=2;i=n;i+)while(n!=i)(jf(n%i=0)printf(H%d*,i);n=n/i;)else break;)printf(,%dzn);6.从键
17、盘任意输入一个4 位数x,编程计算x 的每一位数字相加之和。例如,输入x 为 1234,则由1234分离出其千位1、百位2、H 立3、个位4,然后计算1+2+3+4=10,并输出10。#include#includemain()int il,i2,i3,i4,k,n;printf(lnputdatais:);scanf(%d,&n);k=fabs(n);/*取绝对值*/il=k/1000;/*分离出千位*/i2=(k-il*1000)/100;/*分离出百位*/i3=(k-il*1000-i2*100)/10;/*分离出十位*/i4=k%10;/*分离出个位*/printf(The sum o
18、f the total bit is%dn,il+i2+i3+i4);)7.打印出所有 水仙花数,所谓 水仙花数 是指一个三位数,其各位数字立方和等于该数本身。例 如:153是一个水仙花数,因为153=13+53+33。include void main()(int i,j,k,n;printffparcissus numbers are:n);for(n=100;n1000;n+)(i=n/100;j=n/10-i*10;k=n%10;if(n=i*i*i+j*j*j+k*k*k)printf(%dn,n);)8.利用泰勒级数sin仅上计算sin(x)的值。要求最后一项的绝对值小于1 0-5
19、,并统计出此时累加了多少项(x 由键盘输入)。include#include main()(int n=l,count=l;float x;double sum,term;/*因为位数多,所以定义为双精度*/printf(nlnputx:);scanf(H%f,&x);sum=x;term=x;/*赋初值*/do(term=-term*x*x/(n+l)*(n+2);sum=sum+term;/*累加*/n=n+2;count+;while(fabs(term)=le-5);printf(sin(x)=%.lf,count=%dn,/sum/count);9.编写个猜数游戏:任意设置个整数,请
20、用户从键盘上输入数据猜想设置的数是什么,告诉用户是猜大了还是小了。1 0 次以内猜对,用户获胜;否则,告诉用户设置的数据是什么。include void main()int num=123,x,n;printf(”hint:0number1000n“);/*给出数据范围的提示信息*/for(n=l;nnum)printf(bigger!n);if(xnum)printf(smaller!nu);)if(n=ll)printf(Lost!the number is%dnzx);)10.编程输出以下图案。*#include main()int i,j;for(i=l;i=l;j-)printf(%
21、c;);for(j=0;j=l;i-)(for(j=2O-i;j=l;j-)printfCc;);for(j=O;j2*i-l;j+)printf(*);printf(n);第 6 章习题一、选择题12345678910DADBDCBDBD二 填空题1.02.14 m3.10 74.数据类型5.strcpy(S2,Sl)#include6.0 37.7,68.sum=0i=jaij9.410.Tony三 程序分析题1.max=85min=5sum=180aver=30.002.a=2b=2c=2d=2e=lf=2g=23.j=454.Ti_saCPormTss_Pgm5.1 1 1 5四、编程
22、题1.从键盘输入15个整数,存放在数组中,找HI其中最小数并指出其所在的位置。#include#define N 15main()int min,iJ,aN;printf(Enter N integers:n);for(i=0;iN;i+)scanf(%d,&ai);min=aO;for(i=l;iai)min=ai;j=i;)printf(“d,%d”,min,j);)2.将输入的十进制正整数化为十六进制数。include main()(int i,x,j,a20;printf(请输入一个正整数门;while(l)(scanf(H%d,&x);if(x=0;j-)if(aj=9)printf
23、(%dzaj);else if(aj=15)printf(“%c”,aj+7V-10);printf(n);)3.从键盘输入-行字符,统计其中有多少单词,假设单词之间以逗号分隔。#include void main()(char string81;int i,num=0,word=0;char c;gets(string);for(i=O;(c=stringi)!=0,;i+)if(c=,)word=0;else if(word=0)word=l;num+;)printf(There are%d words in the line.n,num);)4.从键盘输入一字符串,放在字符数组a 中,将
24、字符数组a 中下标值为偶数的元素按从小到大排序。#include#includevoid main()(char a80,tzm;int ijk;printf(请输入一字符串:”);gets(a);k=strlen(a);for(i=0;i=k-2;i+=2)m=i;for(j=i+2;jaj)m=j;if(m!=i)t=ai;ai=am;am=t;)puts(a);printf(n);)5.编写程序输出以下杨辉三 角 形(要求输出10行)。11 112 113 3 11 4 6 4 11 5 10 10 5 1#include#includevoid main()int i,jza1010;
25、for(i=0;i10;i+)ai0=aii=l;for(j=l;ji;j+)aHU=ai-lj-l+ai-lU;)for(i=0;i10;i+)for(j=0;j=i;j+)printf(%6d,aij);printf(n);6.编程将s 数组中的字符串的正序和反序进行连接,形成一个新串放在t 数组中。例如,当 S 数组中字符串为ABCD时,则 t 数组中的内容应为:ABCDDCBA。#include#includemain()(char s100,t100;int i,d;printf(Please enter string S:);scanf(%sH,s);d=strlen(s);for
26、(i=0;id;i+)ti=si;for(i=0;id;i+)td+i=sd-l-i;t2*d=0;printf(The result is:%sn,t);)7.某公司在传输数据过程中为了安全要对数据进行加密,若传递的是四位的整数,对其进行加密的规则为:每位数字都加上5,然后用和除以1 0 的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。如:输入数字76 5 9,则加密后的数字为4012#includemain()int a,i,aa4,t;printf(“输入一个需加密的四位数整数:);scanf(%d,&a);aa0=a%10;aal=a%100/10;aa2=a%1000/
27、100;aa3=a/1000;for(i=0;i=3;i+)aai+=5;aai%=10;)for(i=0;i=0;i-)pnntf(%cl,aai);printfCAn);8.编写程序查找数值18在以下二维数组中第一次出现的位置。3 4 5 188 12 16 5443 34 18 7include main()int ij,a34=3,4,5,18,8,12,16,54,43,34,18,7;for(i=0;i3;i+)for(j=0;j4;j+)if(aij=18)break;if(j4)break;)printf(“数值18第一次出现的位置在d 行悌d 列n,i+l,j+l);)9.设
28、有4 行 4 列的数组a,其元素aij=3*i+2*j6 编写程序,实现如下功能:(1)求第二行4 元素的累加和;(2)求第四列4 元素的平均值;(3)求主对角线4 元素中负数的个数。include void main()inta44J,jzs=0zm=0;float n=0;for(i=0;i4;i+)for(j=0;j4;j+)aij=3*i+2*j-6;printf(原始数组为:n);for(i=0;i4;i+)for(j=0;j4;j+)printf(%3d,aiU);printf(n);for(j=0;j4;j+)s+=alj;printf(第二行4 元素累加和为:%dn,s);fo
29、r(j=0;j4;j+)n+=aj3;printf(第四列4 元素平均值为:%.2fn,n/4.0);for(i=0;i4;i+)if(aii0)m+;printf(主对角线4 元素中负数的个数为:%dn,m);1 0.约瑟夫环问题:编号为l,2,3,.,n 的 n 个人按顺时针方向围坐一圈,每人持有一个正整数密码。一开始任选个正整数m 作为报数上限值,从第一个人开始按顺时针报数,报到m 时停止,报 m 的人出列,将他的密码作为新的m 值,从他在顺时针方向的下一个人开始重新从1 报数,如 此 F 去,直到所有人全部出列为止。设计程序求出出列顺序。分析:设整型数组a 中保存n 个人的密码,对应的
30、人出列后,数组元素置0 作为标志。顺时针确定下一个人的方法,可将下标加1,再对n 求余。#include#define N 100main()int a100;int i,j,m,n,k=0;prinm”输入人数n 和任选的一个正整数m:);scanf(%d%dz&n,&m);print耳”输入n 个人的密码:);for(i=0;in;i+)scanf(%dH,&ai);printf(n出列顺序为:);for(i=0;in;i+)j=l;while(jm)while(ak=0)/*跳过已出列的人*/k=(k+l)%n;j+;k=(k+l)%n;)while(ak=0)/*跳过已出列的人*/k=
31、(k+l)%n;printf(%d,k+l);m=ak;ak=0;第 7 章习题一、选择题12345678910ADDBADCDBA二填空题1.main()2.main()3.函数首部4.解决函数必须“定义在前,使用在后”的原则问题5.int6.定 义 调 用7.地址传递值传递8.return void9.void f(float a,float b)float f(float a,float b)10.static三 程序分析题1.a=482.8,173.27214.BASICCCOBOLFORTRANPASCALSmalltalk5.61 2 36 5 4四、编程题1.写一个判断素数的函数
32、,在主函数输入一个整数,输出是否素数的信息。#include#includevoid main()int prime(int);int n;printf(lnput an integer:);scanf(%dHz&n);if(prime(n)printf(n%d is a prime.n,n);elseprintf(n%d is not a prime.n,n);)int prime(int n)int flag=l,i;for(i=2;isqrt(n)&flag=l;i+)if(n%i=0)flag=O;return(flag);)2.写一个函数,用于实现函数strcmp()的功能,能将两个
33、字符串进行比较,将两个字符串中第一个不相同字符的ASCII码值之差作为函数的返回值。#include int MyStrcmp(char s,char t);main()char strl20,str220;printf(lnput string:);gets(strl);printf(lnput another string:*);gets(str2);if(MyStrcmp(strl,str2)0)printf(strlstr2n);else if(MyStrcmp(strl,str2)0)printf(strlstr2nu);elseprintf(strl=str2n);)int MyS
34、trcmp(char s,char t)(int i;for(i=0;si=ti;i+)if(si=0)return 0;return(si-ti);3.写一个函数,用于实现函数strcat()的功能,能将两个字符串连接。include void main()void concatenate(char stringl,char string2zchar string);char sl100Ls2100,s100;printf(input stringl:);scanf(%s,sl);printf(input string2:);scanf(%s,s2);concatenate(sl/s2,s)
35、;printf(nThe new string is%sn,s);)void concatenate(char stringl,char string2,char string)int i,j;for(i=O;stringli!=O;i+)stringi=stringli;for(j=0;string2j!=0;j+)stringi+j=string2j;stringi+j=O;4.从键盘任意输入10个整数,用函数编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组。include#define ARRSIZE 10void MaxMinExchang(int a,int n)int
36、maxValue=aO,minValue=aO,maxPos=0,minPos=0;int,temp;for(i=l;i maxValue)(maxValue=ai;maxPos=i;)else if(ai minValue)(minValue=ai;minPos=i;temp=amaxPos;amaxPos=aminPos;aminPos=temp;)main()(intaARRSIZE,i;printf(lnput%d Numbers:n“,ARRSIZE);for(i=0;kARRSIZE;i+)scanf(%d,&ai);MaxMinExchang(a,ARRSIZE);printf(
37、uAfter MaxMinExchange:nn);for(i=O;iARRSIZE;i+)printf(%4d,ai);printf(n);)5.写一函数,能对给定的一个二维 数 组(3 x 3)进行转置(即行列互换)。#include#define N 3int arrayNN;void main()void convert(int array3);int ij;printf(input array:n);for(i=0;iN;i+)for(j=O;jN;j+)scanf(%dz&arrayiU);printf(noriginal array:n);for(i=0;iN;i+)for(j=
38、O;jN;j+)printf(”5d5arrayij);printf(n);convert(array);printf(*convert array:n);for(i=0;iN;i+)for(j=O;jN;j+)printf(%5d,arrayi0);printf(n);void convert(int array3)intfor(i=0;iN;i+)for(j=i+l;jN;j+)t=arrayij;arrayij=arrayji;array ji=t;6.写函数,能用 起泡法 对输入的10个字符按由小到大顺序排序。/include include#define N 10char strN;
39、void main()void sort(char str);int i,flag;for(flag=l;flag=l;)printf(input string:n);scanf(%sH,str);if(strlen(str)N)printf(string too long,input again!);elseflag=O;)sort(str);printf(string sorted:n);for(i=0;iN;i+)printf(%czstri);printfCXn*);void sort(char str)int i,j;char t;for(j=0;jN-l;j+)for(i=O;(i
40、stri+l)t=stri;stri=stri+l;stri+l=t;)7.编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数。#include int letter;digit,space,others;void main()void count(char str);char text80;printf(ninput string:n);gets(text);printf(string:);puts(text);letter=0;digit=O;space=0;others=0;count(text);printf(nletter:%dndigit:%dnsp
41、ace:%dnothers:%dnJetter/digit,space,others);void count(char str)int i;for(i=0;stri!=0;i+)if(stri=*a&stri=A&stri=0&str i=9)digit+;else if(stri=32)space+;elseothers+;)8.编写程序输出310000内的可逆素数。可逆素数是指:一个素数将其各位数字的顺序倒过来构成的反序数也是素数。如 157和 751均为素数,它们是可逆素数。要求调用两个子函数实现。#include#include#includeint invert(int a)(int
42、 s=0;while(a0)(s=10*s+a%10;a/=10;return s;int prime(int a)(int i;for(i=2;i=(int)sqrt(a);i+)jf(a%i=O)return 0;return 1;)main()(int i;for(i=3;i10000;i+)if(prime(i)if(prime(invert(i)printf(%5d,i);printf(n);)9.编写一个函数,实现将一个十进制数转换成八进制数。#include include void main()int i,n;char a33;void transl0_8(char x,int
43、 m);printf(nlnput a positive integer:);scanfC%d;&n);transl0_8(a,n);for(i=strlen(a)-l;i=O;i-)printf(%czai);printf(n);)void transl0_8(char x,int m)(int 止 0;while(m0)(r=m%8;xi=r+48;m=m/S;i+;)xi=0;10.编写个函数,实现对由实参传来的一个字符串,将其字符顺序颠倒后重新存放。#include#include void main()void inverse(char str);char str100;printf
44、(input string:);scanf(H%sHzstr);inverse(str);printf(inverse string:%sn,str);)void inverse(char str)chart;intij;for(i=0J=strlen(str);i(int)(strlen(str)/2);i+J)t=stri;stri=strj-l;strj-l=t;第八章编程题答案1.输入2 个字符串,每个字符串的长度均不超过80字符,用自己实现的cmpstr()函数完成这两个字符串的大小比较,cmpstr()函数的功能和字符串比较函数strcmp()的功能相同。#include#incl
45、udeint cmpstr(char*sl,char*s2)(char*p,*q;P=sl;q=s2;while(*p!=O&*q!=O)(if(*p=*q)(P+;q+;)elsebreak;)return*p-*q;)void main()charstrl81,str281;int c;printf(“请输入第1 个字符串:);gets(strl);printf(请输入第2 个字符串:);gets(str2);c=cmpstr(strl,str2);if(c0)printf(字符串s 大于字符串sn,s%l,str2);else if(c0)printf(字符串s 小于字符串sn“,str
46、l,st;elseprintf(字符串s 等于字符串sn,strl,str2);)3.定义一个函数delSubstr(),删除字符串中第k 个字符开始的m 个字符,例如删除字符串abcde第 2 个字符开始的3 个字符,则删除后结果为ae;又如删除字符串abcde第 4 个字符开始的5 个字符,则删除后结果为abc。#include#include int delSubstr(char*s int k,int m)(char*p,*q;if(k=0|mstrlen(str)return-2;else if(k+mstrlen(str)strk-l=O;return 1;else(p=str+k
47、-l;q=str+k+m-l;while(*q!=O)*p+=*q+;*P=0;return 1;)void main()(char str81;int k,m,state;printf(“请输入字符串:n);gets(str);printf(“请输入要删除的子串起始字符的序号和子串长度:n*);scanf(%d%d,&k,&m);state=delSubstr(str,k,m);if(state0)print*要删除子串起始字符的序号或子串长度输入错误!n);elseprintf(删除指定子串后的字符串为:%sn,str);4.定义一个函数delSpechar。,使用字符指针删除字符串中的所
48、有指定字符(如把字符串“Hove you!”中的。字 符删除,得到“I Ive yu!”)。/include/include void delSpechar(char*str,char ch)char*p,*q;P=str;while(*p!=0)(if(*p-ch)(q=p;while(*q!=0)(*q=*(q+l);q+;)elseP+;void main()char str81,ch;printf(“请输入一个字符串:”);gets(str);printf(“请输入要从字符串中删除的字符:);ch=getchar();delSpechar(strz ch);printf(删除所有指定字
49、符后的字符串为:%sn,str);)5.求整型二维数组aMN中的最大元素值及最大元素的位置(用指针法引用数组元素)。include#define M 3#define N 4void max(int(*pa)Nz int*pRow,int*pCol)(int i,j;for(i=0;iM;i+)for(j=0;jPa*PRow*Pcol)*pRow=i;*pCol=j;void main()int row=Oz col=0;max(a,&row,&col);printf(二维数组中的最大元素值为 a%d%d=%dnz row,col,arowcol);)6.已知字符串str80,编写函数Ist
50、rcharO,实现在数组str中查找字符ch 首次出现的位置,如果字符串中找不到该字符,则返回-1。include include int lstrchar(char*strl,char chi)(char*p,i=l;p=strl;while(*p!=0)(if(*p=chl)break;elseP+;i+;if(*P=O)return-1;elsereturn i;)void main()(char ch,str80;int poi;printf(请输入字符串:);gets(str);printf(请输入待查找的字符:);scanf(%c,&ch);poi=lstrchar(str/ch)