还剩26页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
C程实验复习目录分支结构…………………………………3循环结构…………………………………4函数与程序结构…………………………10数组………………………………………20分支结构
1.出租车计费:输入一个正整数repeat0repeat10,做repeat次下列运算某城市普通出租车收费标准如下起步里程3公里,起步费10元;超起步里程后10公里内,每公里租费2元,超过10公里以上的部分加收50%的回空补贴费,即每公里租费3元营运过程中,因路阻及乘客要求临时停车的,每5分钟按1公里租费计收运价计费尾数四舍五入,保留到元编写程序,输入行驶里程公里与等待时间分钟,计算并输出乘客应支付的车费元输入输出示例括号内是说明输入3repeat=
31.6252行驶
1.6公里等待2分52秒
3.1615行驶
3.1公里等待6分15秒
11.8230行驶
11.8公里等待2分30秒输出cost=10cost=13cost=31#includestdio.hintmainvoid{intrepeatri;intminutesseconds;doublecostmile;scanf%drepeat;forri=1;ri=repeat;ri++{scanf%lf%d%dmileminutesseconds;/*---------*/printfcost=%.0f\ncost;}}Key:mile+=minutes+seconds/
60.0/
5.0;ifmile=
3.0{cost=
10.0;}else{ifmile=
10.0{cost=10+mile-
3.0*
2.0;}else{cost=
10.0+
7.0*
2.0+mile-
10.0*
3.0;}}
2.输出21世纪所有闰年输入21世纪所有的闰年判断闰年的条件是能被4整除但不能被100整除,或者能被400整除输出使用语句printf%d\nyear;输入输出示例括号内是说明输出20002004…20922096#includestdio.hintmainvoid{intyear;/*---------*/printf%d\nyear;}}Key foryear=2000;year=2099;year++{ifyear%4==0year%100!=0||year%400==
03.统计学生成绩输入一个正整数n,再输入n个学生的百分制成绩,统计各等级成绩的个数成绩等级分为五级,分别为A90-
100、B80-
89、C70-
79、D60-69和E0-59输入输出示例括号内是说明输入5n=57754927360输出NumberofA90-100:1NumberofB80-89:0NumberofC70-79:2NumberofD60-69:1NumberofE0-59:1#includestdio.hintmainvoid{intmarkni;intnanbncndne;scanf%dn;na=nb=nc=nd=ne=0;fori=1;i=n;i++{scanf%dmark;/*---------*/}printfNumberofA90-100:%d\nna;printfNumberofB80-89:%d\nnb;printfNumberofC70-79:%d\nnc;printfNumberofD60-69:%d\nnd;printfNumberofE0-59:%d\nne;return0;}Key ifmark=90mark=100na++;elseifmark=80mark=89nb++;elseifmark=70mark=79nc++;elseifmark=60mark=69nd++;elsene++;循环结构
1.求2/1+3/2+5/3+8/5+...输入一个正整数repeat0repeat10,做repeat次下列运算输入一个正整数n,输出2/1+3/2+5/3+8/5+……前n项之和,保留2位小数该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子输入输出示例括号内是说明输入3repeat=31n=15n=520n=20输出sum=
2.00第1项是
2.00sum=
8.39前5项的和是
8.39sum=
32.66前20项的和是
32.66#includestdio.hintmainvoid{intin;intrepeatri;doubledenominatornumeratorsumtemp;scanf%drepeat;forri=1;ri=repeat;ri++{scanf%dn;/*---------*/printfsum=%.2f\nsum;}}Key sum=0;denominator=1;numerator=2;fori=1;i=n;i++{sum+=numerator/denominator;temp=denominator;denominator=numerator;numerator=numerator+temp;
2.分解质因数输入一个正整数repeat0repeat10,做repeat次下列运算输入一个正整数m1m1000,将m分解质因数输出使用以下语句printf%d*i;输入输出示例括号内为说明输入3repeat=32m=28m=890m=90输出2=28=2*2*290=2*3*3*5把一个合数分解成几个质数(素数)相乘的过程,叫做分解质因数其中,这几个质数就叫做这个合数的质因数#includestdio.hintprimeintn;intmainvoid{intim;intrepeatri;scanf%drepeat;forri=1;ri=repeat;ri++{scanf%dm;printf%d=m;/*---------*/printf%d\nm;}return0;}/*---------*/Key
1、whileprimem!=1m!=1{fori=2;i=m;i++{ifm%i==0{printf%d*i;m=m/i;break;}}}
2、intprimeintn{inti;ifn==1return0;fori=2;i=n/2;i++{ifn%i==0return0;}return1;}
3.打印图案输入一个正整数repeat0repeat10,做repeat次下列操作输入一个正整数n,打印一个边长为n的菱形图案输出使用以下语句printf;printf*;printf\n;输入输出示例括号内为说明输入2repeat=23n=34n=4输出*(n=3的菱形图案)************(n=4的菱形图案)************************#includestdio.hintmainvoid{intn;intrepeatri;intnRownValnCol;scanf%drepeat;forri=1;ri=repeat;ri++{scanf%dn;/*---------*/}}Key:fornRow=1;nRow=n*2-1;nRow++{ifnRow=nnVal=nRow;elsenVal=2*n-nRow;fornCol=1;nCol=n-nVal;nCol++printf;fornCol=1;nCol=nVal*2-1;nCol++printf*;printf\n;}
4.输入一个正整数repeat0repeat10,做repeat次下列运算将一笔零钱(大于8分,小于1元精确到分)换成5分、2分和1分的硬币输入金额,问有几种换法?针对每一种换法,输出各种面额硬币的数量和硬币的总数量,要求每种硬币至少有一枚先输出硬币总数量少的换法输出使用语句printffen5:%dfen2:%dfen1:%dtotal:%d\nfen5fen2fen1fen5+fen2+fen1;输入输出示例括号内为说明输入2repeat=210money=10分13money=13分输出fen5:1fen2:2fen1:1total:4fen5:1fen2:1fen1:3total:5count=210分有2种换法fen5:2fen2:1fen1:1total:4fen5:1fen2:3fen1:2total:6fen5:1fen2:2fen1:4total:7fen5:1fen2:1fen1:6total:8count=413分有4种换法#includestdio.hintmainvoid{intcountfen1fen2fen5money;intrepeatri;scanf%drepeat;forri=1;ri=repeat;ri++{scanf%dmoney;/*---------*/printfcount=%d\ncount;}}Key count=0;forfen5=money/5;fen5=1;fen5--forfen2=money/2;fen2=1;fen2--forfen1=1;fen1money;fen1++iffen1*1+fen2*2+fen5*5==money{count++;printffen5:%dfen2:%dfen1:%dtotal:%d\nfen5fen2fen1fen5+fen2+fen1;}函数与程序结构要点回顾a.函数内部变量不可与函数头部变量形参相同:intmaxintaintb{intab;错误:重复定义intc;c=a+b;returnc;}b.变量名不可与函数名相同intmaxintaintb{…}main{intx=100y=200max;max=maxxy;/*变量名不可以与函数名相同*/}c.不同函数中包括函数头及函数体允许出现同名变量,并且同名变量互不影响:intmaxintaintb{intz;ifabz=a;elsez=b;a=0;b=0;/*这里故意把a、b改成0,但是并不会破坏main中a、b的值*/returnz;}main{inta=100b=200z;z=maxab;printfa=%db=%dz=%dabz;}d.函数的形参值已经通过实参代入,因此不要对它重新赋值或输入intmaxintaintb{intz;/*一般来说,函数内部不要输入输出*/scanf%d%dab;/*错误*/ifabz=a;elsez=b;returnz;}main{intabz;scanf%d%dab;z=maxab;printfz=%d\nz;}e.函数定义1若某个函数的返回值类型为void,则表示该函数无返回值,所以该函数不可以在return时带一个值返回,只能使用return;或者遇到函数体结束符}自动返回2若某个函数的返回值类型省略,则表示该函数的返回值类型为int3若某个函数的参数为void,则表示该函数无任何参数;若函数的参数为空,则表示该函数的参数个数任意,参数类型任意f.函数调用如果函数定义出现在函数调用之前,则可以省略函数原型说明如果函数定义出现在函数调用之后,则必须在函数调用之前说明函数原型
1.输入一个正整数repeat0repeat10,做repeat次下列运算输入2个正整数m和n1=mn=1000,输出m到n之间的所有水仙花数水仙花数是指各位数字的立方和等于其自身的数要求定义并调用函数isnumber判断number的各位数字之立方和是否等于其自身,若相等则返回1,否则返回0,函数形参number的类型是int,函数类型是int输出使用语句printf%d\ni;输入输出示例括号内是说明输入2repeat=2100400m=100n=4001100m=1n=100输出result:100到400之间的水仙花数1531*1*1+5*5*5+3*3*3=1533703*3*3+7*7*7=3703713*3*3+7*7*7+1*1*1=371result:1到100之间的水仙花数11*1*1=1#includestdio.hintmainvoid{intimn;intrepeatri;intisintnumber;scanf%drepeat;forri=1;ri=repeat;ri++{scanf%d%dmn;printfresult:\n;/*---------*/}}/*---------*/Key fori=m;i=n;i++ifisiprintf%d\ni;intisintnumber{ints=0mdigit=number;whiledigit{m=digit%10;s=s+m*m*m;digit=digit/10;}ifs==numberreturn1;elsereturn0;}
2.程序填空,不要改变与输入输出有关的语句输入一个正整数m0m10,求1!+2!+…+m!,要求定义并调用函数factn计算n!,函数形参n的类型是int,函数类型是double输入输出示例括号内是说明输入5m=5输出1!+2!+...+5!=
153.000000#includestdio.hdoublefactintn;intmainvoid{intim;doublesum;scanf%dm;/*---------*/printf1!+2!+...+%d!=%f\nmsum;}/*---------*/Key sum=0;fori=1;i=m;i++sum=sum+facti;doublefactintn{inti;doubles=1;fori=1;i=n;i++s=s*i;returns;}
3.程序填空,不要改变与输入输出有关的语句输入一个正整数repeat0repeat10,做repeat次下列运算读入1个整数in,再输入一个数字digit0≤digit10,统计并输出整数in中数字digit的个数要求定义并调用函数countdigitnumberdigit,它的功能是统计整数number中数字digit的个数函数形参number和digit的类型是int,函数类型是int例如,countdigit100900的返回值是3输入输出示例括号内是说明输入2repeat=2212522number=21252digit=2-11119number=-1111digit=9输出Number21252ofdigit2:321252中有3个2Number-1111ofdigit9:0-1111中有0个9#includestdio.hintmainvoid{intcountdigitin;intrepeatri;intcountdigitintnumberintdigit;scanf%drepeat;forri=1;ri=repeat;ri++{scanf%d%dindigit;/*---------*/printfNumber%dofdigit%d:%d\nindigitcount;}}/*---------*/Key count=countdigitindigit;intcountdigitintnumberintdigit{intn=0m;ifnumber0number=-number;whilenumber{m=number%10;ifdigit==mn++;number=number/10;}returnn;}
4.编一个名为root的函数,求方程ax2+bx+c=0的b2-4ac,并作为函数的返回值其中的a、b、c作为函数的形式参数floatrootfloatafloatbfloatc{returnb*b-4*a*c;}
5.编一个函数,若有参数y为闰年,则返回1;否则返回0intyearinty{ify%4==0y%100!=0||y%400==0return1;elsereturn0;}
6.编一个无返回值、名为root2的函数,要求如下形式参数abc单精度实型,root单精度实型数组名功能计算ax2+bx+c=0的两个实根(设b2-4ac0)存入root
[2]中#includemath.hvoidroot2floatroot
[2]floatafloatbfloatc{floatp;p=sqtrb*b-4*a*c;root
[0]=-b+p/2*a;root
[1]=-b-p/2*a;}
7.编一个无返回值、名为max_min的函数,对两个整数实参能求出它们的最大公约数和最小公倍数并显示voidmax_minintmintn{intabtr;a=m;b=n;ifmn{t=m;m=n;n=t;}r=m%n;whiler!=0{m=n;n=r;r=m%n;}printf“%d和%d的最大公约数是%\n”abn;printf“%d和%d的最小公倍数是%\n”aba*b/n;}
8.编一个能判断一个整数是否是素数的函数,并用它求出3到100之间的所有素数#includestdio.h#includemath.hintprimeintm{intki;k=sqrtm;fori=2;i=k;i++ifm%i==0return0;return1;}voidmain{inta;fora=3;a=100;a++ifprimeaprintf“%3d”a;printf“\n”;}
9.编一个名为days的函数,要求如下形式参数整数ymd分别表示年、月、日功能计算该日是该年的第几天返回值整数第几天intdaysintyintmintd{intn;switch1{case1:n=0;ifm==1break;case2:n=n+31;ifm==2break;case3:n=n+28;ifm==3break;case4:n=n+31;ifm==4break;case5:n=n+30;ifm==5break;case6:n=n+31;ifm==6break;case7:n=n+30;ifm==7break;case8:n=n+31;ifm==8break;case9:n=n+31;ifm==9break;case10:n=n+30;ifm==10break;case11:n=n+31;ifm==11break;case12:n=n+30;}n=n+d;ifm2ify%4==0y%100!=0||y%400==0n=n+1;returnn;}
10.编一个无返回值、名为trus的函数,要求如下形式参数s1
[2]
[3]s2
[3]
[2]整型数组功能将s1数组转置后存入s2数组中voidtrusints1
[2]
[3]ints2
[3]
[2]{intij;fori=0;i2;i++forj=0;j3;j++s2[j][i]=s1[i][j];}
11.编一个名为countc函数,要求如下形式参数array存放字符串的字符型数组名功能统计array数组中大写字母的数目返回值字符串中大写字母的数目includestring.hintcountcchararray[]{intin=0;fori=0;istrlenarray;i++ifarray[i]=’A’array[i]=’Z’n++;returnn;}
12.编一个名为link函数,要求如下形式参数s1
[40]s2
[40]s3
[80]存放字符串的字符型数组功能将s2连接到s1后存入s3中返回值连接后字符串的长度includestring.hintlinkchars1
[40]chars2
[40]chars3
[80]{intikn=0;fori=0;istrlens1;i++{s3[i]=s1[i];n++;}k=i;fori=0;istrlens2;i++{s3[k+i]=s2[i];n++;}s3[i]=’\0’;returnn;}
13.编一个函数,返回一维实型数组前n个元素的最大数、最小数和平均值数组、n和最大数、最小数、平均值均作为函数的形式参数,本函数无返回值(用指针方法实现)voidfunfloata[]intnfloat*maxfloat*minfloat*vag{inti;*vag=a
[0];*max=a
[0];*min=a
[0];fori=1;in;i++{ifa[i]*max*max=a[i];ifa[i]*min*min=a[i];*vag=*vag+a[i];}*vag=*vag/n;}
14.编一个函数,用“冒泡法”对字符数组中的字符按由小到大顺序排列要求字符数组作为形参voidsortcchara[]{intnij;charch;n=strlena;fori=0;in-1;i++forj=0;jn-i-1;j++ifa[j]a[j+1]{ch=a[j];a[j]=a[j+1];a[j+1]=ch;}}
15.编一函数,能将十六进制数转换成十进制数形参字符指针,指向放十六进制数的字符数组返回值十进制整数#includectype.hinttvchar*s{intmn=0;while*s!=\0{ifisalpha*s*s=toupper*s;switch*s{caseF:m=15;break;caseE:m=14;break;caseD:m=13;break;caseC:m=12;break;caseB:m=11;break;caseA:m=10;break;default:m=*s-48;}n=n*16+m;s++;}returnn;}
16.用递归法将一个整数转换成字符串#includestring.hchara
[255];//全局数组voidcontwintm//递归转换{intn;statici=1;charc;ifm!=0{n=m%10;c=n+48;a[i]=c;m=m/10;i++;contwm;}return;}voidconvertchar*b//倒置数组{intli;charc*p;l=strlenb;p=b+l-1;fori=1b++;i=l/2;i++b++p--{c=*b;*b=*p;*p=c;}return;}voidmain{intn;voidcontwintm;voidconvertchar*b;printf输入一整数:;scanf%dn;ifn0{a
[0]=-;n=-n;}elsea
[0]=;contwn;converta;printf字符串:%s\na;return;}数组
1.冒泡法排序fori=4;i=1;i--/*每次循环找出一个最大值先确实a
[4]再确定a
[3]a
[2]a
[1]*/{forj=0;ji;j++/*a[j]为a[i]前的值*/{ifa[j]a[j+1]/*若前大后小则交换*/{t=a[j];a[j]=a[j+1];a[j+1]=t;}}}
2.字符数组及整型数组的输出charx
[5]=ABCD;printf%sx;/*会输出ABCD,把数组x当作字符串*/inta
[3]={102030};printf%sa;/*错误!%s要求后面是char类型的数组名或者字符串常量*/fori=0;i3;i++printf%da[i];/*正确*/
3.输入字符串保存到字符数组的4种方法写法1输入字符串可以用getchar循环实现charb
[100];chara;inti=0;a=getchar;/*假定输入ABC回车*/whilea!=\n{b[i]=a;/*b
[0]=Ab
[1]=Bb
[2]=C*/i++;a=getchar;/*BC\n*/}b[i]=\0;/*b
[3]=\0*/printfb=%s\nb;写法2输入字符串可以用getchar循环实现inti=0;charcs
[100];whilec=getchar!=\n{s[i]=c;i++;}s[i]=\0;写法3输入字符串也可以用gets实现chars
[100];getss;/*假定输入ABC回车,则数组s中的内容为s:ABC\0*/写法4用字符串函数strcpy实现#includestring.hintmain{chara
[20];strcpyaWelcome;putsa;}
4.选择法排序fori=0;i=3;i++/*每次循环找出一个最小值先确实a
[0]再确定a
[1]a
[2]a
[3]*/{k=i;/*假定a[i]是最小值*/forj=i+1;j=4;j++/*a[j]在a[i]后*/{ifa[j]a[k]/*若有更小值则设为最小*/k=j;}/*交换a[i]与最小值a[k]*/t=a[i];a[i]=a[k];a[k]=t;}
5.把十六进制字符串转化成一个整数whiles[i]!=\0{ifs[i]=0s[i]=9x=x*16+s[i]-0;elsex=x*16+s[i]-A+10;i++;}
6.把一个整数转化成十六进制字符串#includestdio.hvoidmain{intx=1234;chars
[10];intid;fori=3;i=0;i--{d=x%16;x/=16;ifd10s[i]=d+0;elses[i]=d-10+A;}s
[4]=\0;putss;}
7.用移位法把一个短整型数转化成十六进制输出#includestdio.hmain{unsignedshortintx;inti;chara
[10];chart[]=0123456789ABCDEF;scanf%ux;fori=0;i4;i++{a[i]=t[xi*412];}a[i]=\0;printf%s\na;}
8.字符串逆序#includestdio.h#includestring.hvoidmain{chars
[100]t;intilen;putsPleaseinputastring:;getss;printfsbeforechange:%s\ns;len=strlens;/*求字符串长度,不包括\0*/fori=0;ilen/2;i++/*两头对称交换*/{t=s[i];s[i]=s[len-1-i];s[len-1-i]=t;}putssafterchange:;/*用puts输出*/putss;putssafterchange:;/*用循环输出*/i=0;whiles[i]/*相当于whiles[i]!=\0*/{putchars[i];i++;}putchar\n;}
9.strcpy、strcat、strcmp#includestdio.h#includestring.hvoidmain{charpass
[20]temp
[20];putsPleaseinputyourID:;getstemp;strcpypassM;/*字符串复制*//*以上这句相当于pass
[0]=M;pass
[1]=\0;*/strcatpasstemp;/*字符串连接*/ifstrcmppassM1234==0/*比较*/putsWelcome!;elseputsAccessdenied!;}
10.统计单词个数#includestdio.hvoidmain{charc0cs
[100];inticount=0;getss;c0=;/*假定前面是空格*/fori=0;istrlens;i++{c=s[i];/*若当前位置不是空格且前面是空格,则必定是一个单词的开始*/ifc!=c0==count++;c0=c;}printfwords=%d\ncount;}
11.用数组作为函数参数的2个例子,注意实参、形参的用法例
1.用myputs输出一个字符串voidmyputschars[]{inti=0;whiles[i]!=\0{putchars[i];i++;}putchar\n;}main{chara
[100];getsa;myputsa;}例
2.用reverse把一个字符串逆序voidreversechars[];main{chara[]=ABCD;reversea;putsa;}voidreversechars[]{intn=strlensi;chart;fori=0;in/2;i++{t=s[i];s[i]=s[n-1-i];s[n-1-i]=t;}}
12.矩阵乘法#includestdio.h #defineM5 #defineN4 #defineK3 voidmain { floata[M][N]b[N][K]c[M][K]; intijL; fori=0;iM;i++ //按行输入a数组各元素值 forj=0;jN;j++ scanf%fa[i][j]; fori=0;iN;i++ //按行输入b数组各元素值 forj=0;jK;j++ scanf%fb[i][j]; fori=0;iM;i++ forj=0;jK;j++{ //按公式计算c数组各元素值 c[i][j]=0; forL=0;LN;L++ c[i][j]+=a[i][L]*b[L][j]; } fori=0;iM;i++{ forj=0;jK;j++ printf%
8.2fc[i][j]; printf\n;} //每次输出c数组一行元素后,换行 }
13.转置行数等于列数的矩阵#defineN4 #includestdio.h voidmain { floata[N][N]temp; intij; fori=0;iN;i++ forj=0;jN;j++ scanf%fa[i][j]; fori=0;iN-1;i++ forj=i+1;jN;j++{ temp=a[i][j]; a[i][j]=a[j][i]; a[j][i]=temp; } fori=0;iN;i++{ forj=0;jN;j++ printf%
8.2fa[i][j]; printf\n; } }
14.将下列形式的螺旋方阵存放到n行n列(n≤10)数组,然后输出该数组以n=5为例,编制程序,输出数据应如图所示运算的基本步骤如下1声明数组为m
[10]
[10],输入n后将1至n2顺序送入数组;2首先确定上、下、左、右边界之初值分别为
0、n-
1、
0、n-1;3图7-3所示之4步为1次送数过程每次送数结束后,修改上、下、左、右边界值(左、上边界加1,右、下边界减1),再次执行图7-3所示的4步,直到1~n2均被送入数组为止11615141321724231231825221141920211056789图 操作步骤示意图#includestdio.hvoidmain{intm
[10]
[10]ni1i2j1j2ijk;scanf%dn;i1=j1=0;i2=j2=n-1;k=1; //确定上、下、左、右边界以及所送数初值whilek=n*n{fori=i1;i=i2;i++m[i][j1]=k++; //执行第
① 步forj=j1+1;j=j2;j++m[i2][j]=k++; //执行第
② 步fori=i2-1;i=i1;i--m[i][j2]=k++; //执行第
③ 步forj=j2-1;j=j1+1;j--m[i1][j]=k++; //执行第
④ 步i1=++j1;i2=--j2; //修改上、下、左、右边界值}fori=0;in;i++forj=0;jn;j++printf%4dm[i][j];printf\n;}}
15.输入两个字符串(40个字符),连接后输出(不准用系统函数)#includestdioh#includestring.hvoidmain{chara
[40]b
[40]c
[80];intij;printf“分二行输入两个字符串\n;getsagetsb;fori=0;a[i]!=’\0’;i++c[i]=a[i];forj=0;b[j]!=’\0’;j++c[i+j]=b[j];c[j]=’\0’;putsc;return;}
16.编一个程序,输入一个短整型数据,输出每位数字,其间用逗号分隔例如输入整数为2345,则输出应为2345#includestdio.hvoidmain{inta
[5]ni=0;printf“输入一短整数\n”;scanf“%d”n;do{a[i]=n%10;i++;n=n/10;}whilen!=0;for--i;i0;--iprintf“%c”a[i]+48;printf“%c\n”a
[0]+48;return;}
17.找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小也可能没有鞍点#includestdio.hvoidmain{floata
[3]
[3]maxmin;intijkmax_kmin_kflag=0;fori=0;i3;i++forj=0;j3;j++scanf%fa[i][j];fori=0;i3;i++{forj=0;j3;j++printf%fa[i][j];printf\n;}fori=0;i3;i++{max=a[i]
[0];max_k=0;forj=1;j3;j++ifa[i][j]max{max=a[i][j];max_k=j;}min=a
[0][max_k];min_k=0;fork=1;k3;k++ifa[k][max_k]min{min=a[k][max_k];min_k=k;}ifi==min_k{flag=1;printf在%2d行%2d列鞍点是:%f\nmin_k+1max_k+1a[min_k][max_k];}}if!flagprintf找不到鞍点\n;return;}
18.有15个整数按由大到小顺序存放在一个数组中,输入一个整数,要求用二分查找法找出该数是数组中第几个元素的值如果该数不在数组中,则打印“找不到”#includestdio.h#defineN15voidmain{inta[N];intit;inttop=N-1low=0mid;fori=0;iN;i++scanf%da[i];//输出数组看看printf数组是:\n;fori=0;iN;i++printf%da[i];printf\n;printf请输入要查找的数;scanf%dt;whilelowtoptop-low1{mid=top-low/2+low;ift==a[mid]{printf%d位于表中第%d个数\ntmid+1;break;}elseifta[mid]top=mid;elselow=mid;}iftop-low=1ift==a[top]printf%d位于表中第%d个数\nttop+1;elseift==a[low]printf%d位于表中第%d个数\ntlow+1;elseprintf%d不在表中\nt;return;}
19.有3行每行80个字符要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数#includestdio.h#includestring.hvoidmain{chara
[3]
[80];intijdxskq;d=x=s=k=q=0;printf输入3行文字,每行不超过80个字符\n;fori=0;i3;i++getsa[i];fori=0;i3;i++forj=0;j80a[i][j]!=\0;j++ifa[i][j]=Aa[i][j]=Zd++;elseifa[i][j]=aa[i][j]=zx++;elseifa[i][j]=0a[i][j]=9s++;elseifa[i][j]==k++;elseq++;printf大写字母数%d\nd;printf小写字母数%d\nx;printf数字字符数%d\ns;printf空格字符数%d\nk;printf其他字符数%d\nq;return;}。