C语言课后习题解答2_第1页
C语言课后习题解答2_第2页
C语言课后习题解答2_第3页
C语言课后习题解答2_第4页
C语言课后习题解答2_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章

1、算法描述主要是用两种基本方法:第一是自然语言描述,第二是使用专用工具进行算法描述

2、c语言程序的结构如下:

1、c语言程序由函数组成,每个程序必须具有一个main函数作为程序的主控函数。

2、,,/*,,与,,*/,,之间的内容构成c语言程序的注释部分。

3、用预处理命令#include可以包含有关文件的信息。

4、大小写字母在c语言中是有区别的。

5、除main函数和标准库函数以外,用户可以自己编写函数,程序一般由多个函数组成,这些函数制定实

际所需要做的工作。

例如:

voidmain()

(

inta,b,c,s;

a=8;b=12;c=6;

s=a+b*c;

printf(ns=%d\n",s);

)

3、c语言的特点:

1、c语言具有结构语言的特点,程序之间很容易实现段的共享;

2、c语言的主要结构成分为函数,函数可以在程序中被定义完成独立的任务,独立地编译成代码,以实现

程序的模块化。

3、c语言运算符丰富,运算包含的范围很广;

4、c语言数据类型丰富。

5、c语言允许直接访问物理地址,即可直接对硬件进行操作,实现汇编语言的大部分功能;

6、c语言语法限制不太严格,程序设计自由度大,这样是c语言能够减少对程序员的束缚;

7、用c语言编程,生成的目标代码质量高,程序执行效率高,可移植性好;

4、合法标识符:AB12、leed_3、EF3_3、_762,PAS、XYZ43K2

不合法标识符:a*b2、8stu、D.K.Jon、if、ave#xy、#_DT5、C.D

5、F2:将当前编辑器中文件存盘

F10:调用主菜单

F4:程序运行到光标所在行

Ctrl+F9:当前编辑环境下,进行编译、连接且运行程序;

Alt+F5:将窗口切换到DOS下,查看程序运行结果

6、

(1):

welcomeyou

verygood

(2):

pleaseinputthreenumber;5,7,8

maxnumberis:8

7、main

8、Userscreen>Alt+F5

9、标识符必须是字母或下划线开头,大小写字母含义不同。由数字、字母和下划线组成;

关键字是一种语言中规定具有特定含义的标识符。关键字不能作为变量或函数名来使用,用户只能根据系

统的规定使用它们。

10、选择主菜单File项下拉子菜单中Save项或直接按F2键存盘。

第二章

1、符合C语法规定的常数为:Oxle、"ab\n”、l.e5

2、(1):

错误如下:intx,y=5,z=5,aver;

x=7;

aver=(x+y+x)/3;

结果如下:AVER=5

(2):

错误如下:charcl=a,,c2=rb',c3='c,;

printf("a=%db=V%c^"endV,\nH,a,b);

结果如下:a=3b='AM,endH

aabccabc

3、略

4、(1):9,11,9,10

(2)31,0,0

(3):11,19,31,1

5、(1):0

(2):0

(3):9.500000

(4):90

(5):10

(6):10

(7):65

(8):2

(9):4.500000

(10):1

(H):0

(12):20

(13):0

6、(5)

7、求x的绝对值

8、c>(max=a>b?a:b)?c:max;

9、B

10、D

第三章

1、输入函数scanf的参数错误,应该为:scanfr%F,&k);

2、1123412341

3、fflO

4、1,3,1

5、原字符串

左边加空格再加字符串本省,字符个数总和为5个

6、scanf(n%d,%d,%c,%cn,&ah&a2,&cl,&c2);

7^printf("a+b=%d\n",a+b);

printf(na-b=%d\n",a-b);

printf("a*b=%d\n",a*b);

printf(na/b=%d\nn,a/b);

printf("(float)a/b=%f\n",(float)a/b);

printf(',a%b=%d\n',,a%b);

8^voidmain()

(

floatr;

floats,c;

printf(Hpleaseinputthenumber:");

scanf(H%f',&r);

if(r>=0)

(

s=3.14*r*r;

c=2*3.14*r;

printf(*'s=%f,c=%f\n”,s,c);

)

else

printf(nyouinputnumberiserror!'1);

)

9、voidmain()

(

intn;

printfC'pleaseinputthenumber:u);

scanf(u%d",&n);

if(n>=100&&n<=999)

printf(,'%d%d%d,,,n%10,(n/10)%10,n/100);

else

printf("youinputnumberiserror!1');

)

10、voidmain()

inti,j,k;

scanf(n%d,%d,%d",&i,&j,&k);

((i%2!=0?l:0)+(j%2!=0?l:0)+(k%2!=0?l:0))=2?printf(,,YES\n"):printf("NO\nu);

)

11、voidmain()

(

chara;

scanf("%c",&a);

primf(”%c,%c,%c”,a-l,a,a+l);

printf("%d,%d,%dH,a-1,a,a+1);

)

12、voidmain()

(

floata,b,c,s,Area;

scanf(u%f,%f,%f;&a,&b,&c);

if(a+b>cIIa+c>bIIb+c>a)

(

s=(a+b+c)/2;

Area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(u%f\nn,Area);

)

else

printf("youinputthenumberiserror!\n,');

第四章

1:0

2:20

3:(x<30&&x>20)ll(x<-l00)

4:***a=25,b=14,c=16***

5:37

6:if(a<=b)printf(T);

elseprintf(u2M);

7、

#include<stdio.h>

voidmain()

{chara,b,tl,t2;

scanf(n%c,%c",&a,&b);

tl=a>b?a:b;

t2=a<b?a:b;

if((tl-t2)%2==0)printf(n%c,%cn,a+1,b+1);

elseprintf("%c,%c'\a-1,b-1);

getch();

)

8、

#include<stdio.h>

voidmain()

{inttemp1=0,temp2=0,x,y,i=1;

printf(*'Pleaseinput(x,y):");

scanf(u%d,%dM,&x,&y);

while((i*y)<=x)

{if(x==(i*y)){templ=l;break;}

temp2=i;

i++;

}

if(templ)

printf("%d/%d=%d",x,y,i);

else

printf(u%d/%d—>shang=%d,yushu=%du,x,y,temp2,x-y*temp2);

getch();

}

9、

#include<stdio.h>

voidmain()

{floatx,y,m=0,n=0;

scanf(H%f,%f,,&x,&y);

n=(x-2)*(x-2);

m=(y-2)*(y-2);

if((m+n)<=l)

printf("(%.3f,%.3f)Intheyuan'1,x,y);

else

printf(*'(%.3f,%.3f)outoftheyuan",x,y);

getch();

)

10、

#include<stdio.h>

voidmain()

{inttemp=0,month,year;

printf(nPleaseinput(year,month):");

scanf(u%d,%d",&year,&month);

if((year%400==0)ll(year%4==0&&year%100!=0))

temp=l;

if(month==2)

{if(temp)printf(n%dyear%dmonthhave29",year,month);

elseprintf("%dyear%dmonthhave28",year,month);

)

elseif(month%2==0)

printf(u%dyear%dmonthhave301year,month);

elseprintf("%dyear%dmonthhave31:year,month);

getch();

)

11、

switch(a/10)

{case5:m=4;break;

case4:m=3;break;

case3:m=2;break;

case2:m=l;break;

default:m=5;

)

12、

方法一:

#include<stdio.h>

voidmain()

{intx,y;

scanf(M%d",&x);

if(x<0&&x>-5)

y=x-l;

elseif(x==0)

y=x;

elseif(x>0&&x<8)

y=x+l;

printf(M%dM,y);

getch();

)

方法二:

#include<stdio.h>

voidmain()

{intx,y;

scanf(n%d",&x);

if(x<8&&x>-5)

{if(x==0)y=x;

elseif(x>0&&x<8)y=y=x+1;

elsey=x-l;

printf(u%dn,y);

elseprintf("Inputerror!!!");

getch();

方法三:

#include<stdio.h>

voidmain()

{intx,y,i;

scanf(M%dM,&x);

if(x<8&&x>-5)

{if(x==0)i=l;

elseif(x>0&&x<8)i=2;

elsei=3;

)

elsei=4;

switch(i)

{case1:y=x;printf(n%dH,y);break;

case2:y=x+l;printf(n%dn,y);break;

case3:y=x-l;printf(',%d,,,y);break;

case4:printf("Inputerror!!n);break;

}getch();

第五章

1、voidmain()

(

intn,value;

inti,count=0;

floataverage=0;

longintsum=0;

scanf("%d",&n);

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

(

scanf("%d",&value);

if(value%2==0)

(

sum+=value;

count++;

)

)

average=sum/(float)count;

printf(Htheaverageis%An",average);

2、

#include"stdio.h*'

voidmain()

(

charch;

intzm=0,sz=0;

ch=getchar();

while(ch!='*')

(

if((ch>=*A,&&chv=2')II(ch>='a,&&ch<'z'))

zm++;

if(ch>='O'&&ch<=9)

sz++;

ch=getchar();

)

printf(nzm=%d;sz=%d\n",zm,sz);

)

3、

voidmain()

(

longi_value;

intsum=0;

inttemp=0;

scanf(M%ld',,&i_value);

if(i_value<0){printf(nyouinputtheintiserror!\nH);return;}

for(;;)

(

temp=i_value%10;

i_value=i_value/10;

sum+=temp;

printf(u%d4-n,temp);

if(i_value==0)break;

}

printf("\b=%d\nH,sum);

#include"stdio.h"

voidmain()

(

charch;

ch=getchar();

while(ch!=*.')

(

if((ch>=W&&chv=Z))

(

ch=ch+32;

putchar(ch);

)

elseif((ch>='a'&&ch<'z'))

(

ch=ch-32;

putchar(ch);

)

else

(

putchar(ch);

}

ch=getchar();

}

printf(n\nH);

)

voidmain()

(

floatsum=200;

intcount=0;

for(;;)

(

sum=sum+sum*0.045;

count++;

if(sum>500)break;

)

printf(nthe%dyearslatercomplete!\n",count);

)

voidmain()

(

inti,temp=0,bit=0;

for(i=1;i<=999;i++)

(

if(i%3==0)

temp=i;

for(;temp!=0;)

(

bit=temp%10;

if(bit==5){printf("%d;',i);break;}

temp=temp/10;

)

)

)

printf(n\b\nH);

)

7、

#include<stdio.h>

intmain(void)

(

intsteps=29,i=1;

while(steps%7)

(

steps=(30*++i)-1;

)

printf(HTotalsteps:%d\nu,steps);

return0;

)

8、

main()

(

inti,j,k,n;

printf(Hthenarcissusnumberis:\nn);

for(n=100;n<1000;n++)

{i=n/100;

j=n/10-i*10;

k=n%10;

if(i*i*i+j*j*j+k*k*k==n)printf(',%d\n,,,n);

)

)

9、

main()

{floati,j,temp,n,sum;

intt;

i=2;j=l;sum=0;

scanf(u%d",&t);

for(n=1;n<=t;n++)

{sum=sum+i/j;

temp=i;i=i+j;j=temp;

)

printf(M2/l+3/2+5/3+8/5+13/8+...=%f\n,,,sum);

}

10、

voidmain()

(

intnWidth,a,b;

scanf(u%d",&nWidth);

for(a=(nWidth%2);a<=nWidth;a+=2)

(

for(b=0;b<nWidth;b++)

(

charchOut

intnleft=(nWidth-a)/2;

intnright=(nWidth+a)/2;

if(b>=nleft&&b<nright)

(

chOut

)

printf("%cu,chOut);

)

printf("\n");

)

)

11、

voidmain()

(

inti=lj=l;

for(i=l;i<=9;i++)

(

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

printf(,,%d*%d=%d,,,i,j,i*j);

printfCAn1')

)

)

12、

#include"stdio.h"

voidmain()

charc;

//count1是正数的个数

//count2是负数的个数

intcount1=0,count2=0;

//suml是正数之和

//sum2是负数之和

intsuml=0,sum2=0;

intflage=0;

c=getchar();

while(c!='*')

(

if(c=='-')flage=1;

if(flage==0)

{sum1+=(c-48);count1++;}

else

{if(c!=,-,){sum2-=(c-48);flage=0;count2++;}}

c=getchar();

)

printf("%d,%d\n",count1,count2);

printf(n%f,%f\n",suml/countl,sum2/count2);

)

13、

voidmain()

(

inti,j;

ints=0;

for(i=100;i<=999;i++)

(

s=0;

for(j=l;j<i-l;j++)

(

if(i%j==0)s=s+j;

)

if(s==i)printf(n%5d",i);

)

}

14、

#include<stdio.h>

#include<math.h>

voidmain()

(

intn;

longk=1;

floate=1;

n=1;

clrscr();

while(fabs(1.0/k)>=0.000001)

n++;

e=e+1.0/k;

k=k*n;

)

printf("%f\nH,e);

}

15、

#include"math.h"

main()

{floatx0,xl,x2,f0,fl,f2;

xl=-10;

fl=2*xl*xl*xl-4*xl*xl+3*xl;

x2=10;

f2=2*x2*x2*x2~4*x2*x2+3*x2;

do

{x0=(xl+x2)/2;

f0=2*x0*x0*x0-4*x0*x0+3*x0;

if((fO*fl)<O)

{x2=x0;f2=fO;}

else

{xl=xO;fl=fO;}

}

while(fabs(fO)>1e-6);

printf("2*X*X*X~4*X*X+3*X==0\n"):

printf("therootis%f\nH,xO);

、,

第Aft八早

1、

#include<stdio.h>

intdivisor(inta,intb)

{intr;

while((r=a%b)!=O)

{a=b;

b=r;

)

returnb;

}

intmultiple(inta,intb)

{intd;

d=divisor(a,b);

returna*b/d;

voidmain()

{inta,b,c,d;

printf(*'intput(a,b):");

scanf(u%d,%d",&a,&b);

c=divisor(a,b);

d=multiple(a,b);

printf(',\ndivisor=%d\t\tmultiple=%d,',c,d);

)

2、

#include<stdio.h>

voidtongji(chara[])

{intb[3]={0,0,0},i=0;

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

{if((a[i]<=90&&a[i]>=65)ll(a[i]<=122&&a[i]>=97))

b[0]++;

elseif(a[i]<=57&&a[i]>=48)

b[lj++;

else

b[2]++;

i++;

)

printf("zimuhave:%d;shuzihave:%d;qitahave:%dn,b[0],b[l],b[2]);

getch();

)

voidmain()

{chara[100];

printf(*'Pleaseinputastring:*');

gets(a);

tongji(a);

)

3、

#include<stdio.h>

intflower(intn)

{intx=O,i,j,k;

i=(n%10);

j=(n/10%10);

k=(n/100);

x=i*i*i+j*j*j+k*k*k;

if(x==n)return1;

elsereturn0;

)

voidmain()

{inti,n;

printf(nPleaseintputn:");

scanf(',%d,,,&n);

if(n>999lln<100)printf(,'Inputerror!!!,1);

else

{for(i=100;i<n;i++)

if(flower(i))printf("%dH,i);

}getch();

)

4、

#include<stdio.h>

#defineSWAP(a,b)t=b;b=a;a=t;

main()

{floatx,y,t;

printf("Entertwonumber(x,y):");

scanf(n%f,%f;&x,&y);

SWAP(x,y);

printf(,,\n\nExchanged:x=%f,y=%f,',x,y);

getch();

)

5、

#include<stdio.h>

intfib(intn)

{intp;

if(n==0)p=0;

elseif(n==l)p=l;

elsep=fib(n-1)+fib(n-2);

returnp;

)

voidmain()

{intn;

printf(nPleaseinputfib:*');

scanf(H%d",&n);

printf(n\n\nfibonacci=%d",fib(n));

}

6、

#include<stdio.h>

longfac(intn)

{longf;

if(n==0)f=l;

elsef=n*fac(n-l);

returnf;

)

voidmain()

{intm,n;

longf;

printfC'Pleaseinput(m,n):");

scanf("%ld,%kT,&m,&n);

f=fac(n+m)+fac(n);

printf(,'\n\nfibonacci=%ld,',f);

)

7、

#include<stdio.h>

voidlist()

{intij;

for(i=l;i<=9;i++)

{for(j=l;j<=i;j++)

printf(u%d*%d=%dH,i,j,i*j);

printf(M\nu);

)

)

voidmain()

{list();

)

8、

#include<stdio.h>

inthe(intn)

{inti,s=0;

for(i=l;i<n;i++)

if(n%i=0)s+=i;

returns;

)

voidmain()

{inti,j;

for(i=l;i<30000;i++)

{for(j=1;j<3OOOO;j++)

if((he(i)==j)&&(heg)=i)&&(i!=j))

printf(n%d<-->%d

)

)

9、

#include<stdio.h>

#definemax100

structwork

{longsid;

charname[15];

)worker[max];

intsize=0;

structwork*set_list()

{do

{printf(H\n\nPleaseinput(sid,name):");

scanf("%ld,%s”,&worker[size].sid,worker[size].name);

size++;

}while(worker[size-l].sid!=O);

returnworker;

)

voidpaixu(structworka[])

{inti,j,k;longt;charv[15];

for(i=0;i<size-1-2;i++)

{k=i;

for(j=i;j<size-2;j++)

if(a[i].sid>a[j].sid)k=j;

if(k!=i)

{t=a[i].sid;a[i].sid=a[j].si(i;a[j].sid=t;

strcpy(v,a[i].name);strcpy(a[i].name,a[j].name);strcpy(a[j].name,v);

1

)

for(i=0;i<=size-2;i++)

printf(usid:%ld\tname:%s\n\nM,a[i].sid,a[i].name);

getch();

)

voidselect(structworkalJ)

{inti=0,found=1;longnum;

printf("Inputselectsid:");

scanf(u%ld",&num);

for(i=0;i<=size-2;i++)

{if(a[i].sid==num)

{found=0;

printf(n%ld:%s",num,a[i].name);

break;

)

)

if(found)printf("\n\nNOthissid!!!");

getch();

}

voidmain()

{structwork*p;

p=set_list();

paixu(p);

select(p);

)

10、

#include<stdio.h>

floatjiecheng(intn)

{longs=l;inti;

for(i=l;i<=n;i++)

s=s*i;

returns;

floatchengfang(floatx,intn)

{floats=l;inti;

for(i=l;i<=n;i++)

s=s*x;

returns;

)

floatf(floatx,intn)

{floats=l,t=0;inti=l,j=-l;

for(i=l;i<=n;i++)

{t=j*chengfang(x,2*i)/jiecheng(2*i);

s+=t;

j=j*j;

)

returns;

)

main()

{floatsl=0,s2=0,s3=0,s4=0,x=5.6;intn=7;

sl=f(x,n);

s2=f(x+2.3,n);

s3=f(x-3.2,n+3);

s4=sl/(s2+s3);

printf(”%f”,s4);

getch();

第七章

1:(1)D

(2)A

(3)D

(4)B

(5)D

2:(1)1544

678

23

4

(2)6333

3:(1)a[8J=data;k>=0a[kj=tempbreakk<=8

⑵“%s”str[i]<=,Z,c[str[i]+26-al++i+'a'

4、/*题目:求组成绩的平均分数以及高于平均分的成绩。*/

#include<stdio.h>

#definemax100

voidmain()

(

floata[max],s=0,average=0;

inti.n;

printf(HPleaseinputN:");/*输入要处理元素的个数*/

scanf(H%d'\&n);

printf("\nPleaseinput%dgeshu:”,n);/*输入90,85,92,77,80,62*/

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

(

scanf(n%f;&a[i]);

s+=a[i];

)

average=s/n;

printf("\naverage=%.2f\n",average);/*输fli81.00*/

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

if(a[ij>average)

printf(u%.2fn,a[i]);/*输出90.00,85.00,92.00*/

/*题目:编写程序,输入一组整数,将他们排序后由小到大输出。*/

#include<stdio.h>

#definemax100

voidmain()

(

inta[max],j,i,k=0,t=0,n=0;

printf(nPleaseinputN:");/*输入要处理元素的个数*/

scanf("%d",&n);

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

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

for(i=0;i<n-l;i++)/*比较n-1遍*/

{k=i;

for(j=i+1;j<n;j++)/*每遍比较n-(i+l)次*/

if(a[k]>a[j])

k=j;

if(k!=i)/*元素排序前下标与排序后下标不符,则交换其值*/

{t=a[i];

a[i]=a[k];

a[k]=t;

printf(n\n\nn);

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

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

)

6^

/*题目:从键盘输入一个4x4的整数矩阵,以主对角线(\)为对称轴*/

/*将左下角元素中较大者替换右上角元素,并将右上角含对称轴输出。*/

#include<stdio.h>

#include<string.h>

voidmain()

(

intd[4][4]={{0,0,0,0}},i,j;

clrscr();

printf(H\nPleaseinput16num:");

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

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

scanf(n%dn,&dLiJ[jJ);

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

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

if(d[i][jl>d[j][i])/*左下角元素大于右上角元素则交换*/

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

{prinlf("\n\n\n\n\n");/*为了保持每行的间隔与每列的相同*/

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

ig)

为了使位数不同的数输出依然保持三角型*/

else

printf(n\tn);

7、

*题目:输入一个3x4的二维数组,然后分别按行和按列输出。*/

#include<stdio.h>

#include<string.h>

voidmain()

(

intd[3][4]={{0,0Q0}},i,j;

printf(nPleaseinput12num:");

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

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

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

printf(n\n\nAnhang:");

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

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

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

printf("\n\nAnlie:");

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

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

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

)

8、

/*题目:编写程序,将两个字符串连接起来,不用strcat函数。*/

#include<stdio.h>

#include<string.h>

voidmain()

{charsl[5O],s2[5O];

inti=O,j=O,t=O;

printf("Inputone:");

gets(sl);

while(sl[i]!=W)i++;/*统计si中字符个数字/

printf(n\n\nInputsecond:");

gets(s2);

while(s2U]!=、(nj++;/*统计s2中字符个数*/

for(t=0;t<=j;t++)/*把s2中字符连接到si后面可

{sl[i]=s2[t];i++;}

printf(n\n\none+second:");

puts(sl);

)

9、

/*输入一行字符串,统计字符对ab的个数。*/

#include<stdio.h>

#include<string.h>

#defineMAX100

voidmain()

(

charstrfMAX];

inti=0,flage=0;

intcount=0;

printf(n\nPleaseinputastring:");

gets(str);

while(str[ij)

{if(str[i]==,a')

flage=l;

elseif(str[i]==b')

if(flage==1)

{count++;flage=0;}

elseflage=O;

i++;

)

printf("thedoublecharV'ab\ucountis%d\n',,count);

)

10、

#include<stdio.h>/*相对于第一种方法,这种方法能把同为最大的字符串全部打印出来。*/

#include<string.h>

intpaixu(inta[J,intn)/*构造对长度为n的数组排序的函数*/

(

inti,j,t,k,temp;

for(i=0;i<n-l;i++)

{k=i;

for(j=i+l;j<n;j++)

if(a[k]>a[j])

k=j;

if(k!=i)

{t=ali];

a[i]=a[k];

a[k]=t;

)

)

temp=a[n-l];

returntemp;/*返回最大字符串的长度的值*/

)

voidmain()

(

charstrl[50],str2[50],str3[50],str4[50],str5[50],str6[50];

charstr7[50],str8[50],str9[50],strl0[50];

intcountll0J={0},tempi10]={0},ij;

intpaixu(inta[],intn);

for(i=l;i<=10;i++)/*输入10个字符串*/

(

printf(n\nPleaseinput%dstring:"j);

if(i==l)

{gets(strl);while(str1[count[0]]){count[0]++;temp[0]++;}}

if(i==2)

{gets(str2);while(str2[count[1]]){count[l]++;temp[l]4-+;})

if(i==3)

{gets(str3);while(str3[counl[2]]){count[2]++;temp[2]++;}}

if(i==4)

{gets(str4);while(str4[count[3]]){count[3]++;temp[3]++;}}

if(i==5)

{gets(str5);while(str5[count[4]]){count[4J++;temp[4]++;})

if(i==6)

{gets(str6);while(str6[count[5]]){count[5]++;temp[5]++;}}

if(i==7)

{gets(str7);while(str7[count[6]]){count[6]++;temp[6]++;}}

if(i==8)

{gets(str8);while(str8[count[7]]){count[7]++;temp[7]++;}}

if(i==9)

{gets(str9);while(str9[count[8]]){count[8]++;temp[8]++;}}

if(i==10)

{gets(strlO);while(strlO[count[9]]){count[9]-H-;temp[9]++;}}

}

j=paixu(temp,10);

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

(

if(count[i-l]==j)

{/*只要字符串长度与最大长度相等就打印出来*/

switch(i)

{casekputs(strl);printfCXn'1);break;

case2:puts(str2);printf("\n");break;

case3:puts(str3);printf("\n");break;

case4:puts(str4);printf(n\nn);break;

case5:puts(str5);printf(',\nn);break;

case6:puts(str6);printf('^\n^^);break;

case7:puts(str7);printf("\nM);break;

case8:puts(str8);printf(M\nn);break;

case9:puts(str9);printfCXn'1);break;

case10:puts(strl0);printf(n\nn);break;

)

)

11>

/*给数组a输入m个按升序排列的数,给数组b输入n个按降序排列的数*/

/*将a与b中的元素按降序排列存在数组c中。*/

#include<stdio.h>

voidmain()

{

inta[100],b[100],c[100],k,temp=0,s;

printf(H\nm=u);scanf("%dH,&m);/*确定M的个数*/

printf("\nn=,');scanf(,,%d,,,&n);/*确定N的个数*/

printf("\nPleaseinputmgeshu:");

for(s=0;s<m;s++)

scanf(M%dn,&a[s]);

printf(H\nPleaseinputngeshu:");

for(s=0;s<n;s++)

scanf("%dn,&b[s]);

i=m-l;j=O;k=O;/*i,j,分别标记叫与b[]且都是从最大元素开始做标记*/

for(;;)

{if(i==O)/*叫中只有一个数或者叫处理到了最后一个元素*/

{if(a[i]<=b[j])/*如果a□的最后一个元素<=b口中当前元素*/

{c[k]=b[j];k++;j++;}

else

{c[k]=a[i];

k++;

for(;;)/*把b[]数组接到c[]后面*/

{c[k]=b[j];

j++;

k++;

if(j==n)/*如果b[]处理完,结束。并做标记temp=I*/

{temp=l;break;}

)

)

}if(temp==1)break;/*标记temp=l,全部处理结束次/

if((a[i]<=b[j])&&(i!=O)&&(j!=n))

{c[k]=b[j];j++;k++;}

if<(a[i]>b[j])&&(i!=O)&&(j!=n))

{c[k]=a[i];i-;k++;}

if(j==n)/*b口处理到完可

{for(;;)/*把b口数组接到c口后面刃

{if(i==O)/*如果a口处理完,结束。并做标记temp=l*/

{c[k]=a[i];temp=l;break;}

c[k]=a[i];

i-;

k++;

)

}if(temp==l)break;/*标记temp=l,全部处理结束*/

)

for(s=0;s<m+n;s++)

printf("%dM,c[s]);

getch();

第八章

(1)A

(2)B

(3)D

2:(1)1011101110

(2)pogam

3:(1)*p!=O&&*q!=O*p>=*q;q++

(2)i<ll&a[i]{i-;if(i==O)break;}i!=0

4、

/*题目:输入一个字符串,再删除指定的字符*/

/*如果字符串中没有指定字符,则输出原字符串。*/

#include<stdio.h>

voidfun(char*str,charc)

{char*p;

for(p=str;*p!='\0,;p++)

if(*p!=c)

*str++=*p;

*slr=V)';

)

voidmain()

{charstr[8O],c;

printf(''\nPleaseinputastring:");

gets(str);

printf(H\n\nPleaseinputdeletechar:");

scanf(u%c",&c);

fun(str,c);

puts(str);

getch();

)

5、

/*从键盘输入单词,每个单词之间用空格隔开,号结束输入,*/

/*将每个单词的第一个字母转化成大写字母。*/

#include<stdio.h>

#include<string.h>

charzhuanhua(charc)/*定义将小写字母转化为大写字母的函数*/

{charC;

if(c>='a,&&c<=,z,)/*是小写字母就转化,不是则原样返回可

C=c-32;

elseC=c;

returnC;

}/*此函数防止有标点符号或者第一个字母本身是大写字母*/

voidmain()

{chara[1001,*p=a;

inti=lj;

a[0]=f,;p++;/*为方便下面的if语句,初始化a[0]为空格*/

printf(M\nPleaseinputastring:");

for(;;)

{scanf("%c”,p);

if(*p=Y)

break;

p++;i++;

)

a[i]=W;

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

{if(aU-l]=='&&30]!=')/*第一个字母前面可能有很多空格*/

a|jkzhuanhua(a|jD;/*调用转化函数,使其变为大写字母*/

)

p=a;

while(*p)

{printf(H%c',,*p);p++;}

getch();

)

6、

/*输入8个数,排序后输出。*/

#include<stdio.h>

#include<string.h>

voidmain()

{intdata[8],i,*pl,*p2,temp;

p1=data;

printf("\nlnput8number:");

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

{scanf(n%dn,pl);pl++;}

for(p1=data;pl<data+8-l;p1++)

for(p2=p1+1;p2<data+8;p2++)

if(*pl<*p2)

{temp=*p1;*p1=*p2;*p2=temp;}

for(i=0,p1=data;i<8;i++,p1++)

printf(H%dn,*pl);

getch();

)

7、

/*题目:输入一个字符串,将此字符串的m个字符开始的第n个字符复制到另一个字符串。*/

#include<stdio.h>

voidmain()

{intm,n,i;

charaf100],b[100],*p,*q;

printf(nPleaseinputastring:");

gets(a);

p=a;q=b;

printf("\n\nPleaseinputmandn(like1,1):");

scanf("%d,%d",&m,&n);

if((strlen(a)>=m)&&((strlen(a)-m+1)>=n))/*复制的位置要符合要求*/

{p+=m-1;/*指针指向第一个要复制的字符*/

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

{*q=*p;p++;q++;}

*q='\0';

printf(HStringais:%s\nH,a);

printf("stringbis:%s\nu,b);

}

elseprintf(H\nError!!!!");/*复制的位置不符合要求,打印错误*/

getch();

)

8、

/*输入8个数,将最大的数与第一个数对换。*/

/*将最小的数与最后一个数对换*/

#include<stdio.h>

voidmain()

(

inta[100],temp1=0,temp2=0,max=0,min=0,k;

printf(H\nPleaseinput8geshu:");

for(k=0;k<8;k++)

{scanf(H%d,',&a[k]);

if(a[k]<a[min])min=k;/*用标记min最小值的下标*/

if(a[k]>a[max])max=k;/*用标记max最大值的下标*/

)

if(min==0)

{if(max==7)

{templ=a[0J;a[0]=a[7];a[7]=templ;}

else

{temp2=a[7];a[7]=a[min];

a[0]=a[max];a[max]=temp2;

)

}

elseif(max==0)

{if(min!=7)

{temp2=a[7J;a[7]=a[min];a[mm]=temp2;}

)

else

{if(min==7)

{temp1=a[OJ;alO]=a[max];a[maxJ=temp1;}

elseif(max==7)

{temp2=a[7];a[7]=a[min];

a[min]=a[0];a[0]=temp2;

)

else

{temp1=a[OJ;temp2=a[7];

a[0]=a[max];a[7]=a[min];

a[min]=temp2;a[max]=templ;

for(k=0;k<8;k++)

printf("%dn,a[k]);

getch();

)

9、

/*输入n个数,并排序后输出。*/

#include<stdio.h>

#include<string.h>

int*paixu(intdata[],intn)

{inti,*pl,*p2,temp;

pl=data;

for(p1=data;p1<data+n-1;p1++)

for(p2=p1+1;p2vdala+n;p2++)

if(*pl<*p2)

{temp=*p1;*p1=*p2;*p2=temp;}

pl=data;

returnpI;

)

voidmain()

{intn,a[100],i,*p=a;

printf(HPleaseinputn:");

scanf(u%du,&n);

printf(H\n\nPleaseenter%dgeshu:u,n);

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

{scanf(n%d",p);p++;}

p=paixu(a,n);

for(i=0;i<n;i++,p++)

printf("%dn,*p);

getch();

)

10、

#include"stdio.h"

#definemax1042

main()

(

floatj,almaxj;intt,i=0;

charb[m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论