谭浩强C语言 第十章课后习题.docx

上传人:b****6 文档编号:12885162 上传时间:2023-06-08 格式:DOCX 页数:32 大小:19.31KB
下载 相关 举报
谭浩强C语言 第十章课后习题.docx_第1页
第1页 / 共32页
谭浩强C语言 第十章课后习题.docx_第2页
第2页 / 共32页
谭浩强C语言 第十章课后习题.docx_第3页
第3页 / 共32页
谭浩强C语言 第十章课后习题.docx_第4页
第4页 / 共32页
谭浩强C语言 第十章课后习题.docx_第5页
第5页 / 共32页
谭浩强C语言 第十章课后习题.docx_第6页
第6页 / 共32页
谭浩强C语言 第十章课后习题.docx_第7页
第7页 / 共32页
谭浩强C语言 第十章课后习题.docx_第8页
第8页 / 共32页
谭浩强C语言 第十章课后习题.docx_第9页
第9页 / 共32页
谭浩强C语言 第十章课后习题.docx_第10页
第10页 / 共32页
谭浩强C语言 第十章课后习题.docx_第11页
第11页 / 共32页
谭浩强C语言 第十章课后习题.docx_第12页
第12页 / 共32页
谭浩强C语言 第十章课后习题.docx_第13页
第13页 / 共32页
谭浩强C语言 第十章课后习题.docx_第14页
第14页 / 共32页
谭浩强C语言 第十章课后习题.docx_第15页
第15页 / 共32页
谭浩强C语言 第十章课后习题.docx_第16页
第16页 / 共32页
谭浩强C语言 第十章课后习题.docx_第17页
第17页 / 共32页
谭浩强C语言 第十章课后习题.docx_第18页
第18页 / 共32页
谭浩强C语言 第十章课后习题.docx_第19页
第19页 / 共32页
谭浩强C语言 第十章课后习题.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

谭浩强C语言 第十章课后习题.docx

《谭浩强C语言 第十章课后习题.docx》由会员分享,可在线阅读,更多相关《谭浩强C语言 第十章课后习题.docx(32页珍藏版)》请在冰点文库上搜索。

谭浩强C语言 第十章课后习题.docx

谭浩强C语言第十章课后习题

10.1

#include

#include

intswap(int*p1,int*p2)

{

inttemp;

if(*p1>*p2)temp=*p1,*p1=*p2,*p2=temp;

return0;

}

intexchange(int*a,int*b,int*c)

{

if(*a>*b)swap(a,b);

if(*a>*c)swap(a,c);

if(*b>*c)swap(b,c);

return0;

}

 

intmain()

{

printf("习题10.1输入3个整数,从小到大输出.\n===================\n");

inta,b,c,*p1,*p2,*p3;

printf("请输入3个整数(空格隔开):

\n");

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

p1=&a;

p2=&b;

p3=&c;

exchange(p1,p2,p3);

printf("输出为:

%d%d%d",a,b,c);

 

return0;

}

10.2

#include"stdio.h"

voidmin(char*p1[100],char*p2[100])

{

chart[100];

if(strcmp(p1,p2)>0)

{

strcpy(t,p1);

strcpy(p1,p2);

strcpy(p2,t);

}

}

voidmain()

{

printf("习题10.2\n=================\n");

printf("请输入三个字符串(空格隔开):

\n");

char*a[100],*b[100],*c[100];

scanf("%s%s%s",a,b,c);

min(a,b);

min(a,c);

min(b,c);

printf("从小到大:

\n");

printf("%s\n%s\n%s\n",a,b,c);

}

10.3

#include

#include

#include

#defineN5

 

inta[N],i,j,t;

int*p1,*p2;

 

intinput()

{

printf("请输入10个整数:

\n");

for(i=0;i

{

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

}

return0;

}

intdeal()

{

p1=a;

p2=a;

for(i=0;i

{

for(j=0;j

{

if(a[i]>a[j+1])p1=&(a[j+1]);

}

}

 

t=a[0];

a[0]=*p1;

*p1=t;

for(i=0;i

{

for(j=0;j

{

if(a[i]

}

}

t=a[N-1];

a[N-1]=*p2;

*p2=t;

return0;

}

intoutput()

{

printf("处理后:

\n");

for(i=0;i

{

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

}

return0;

}

 

intmain()

{

printf("习题10.3对换最小的数和最大的数\n===================\n");

input();

deal();

output();

return0;

}

10.4

#include

#include

#defineN

 

voidmove(inta[],intn,intm)

{

int*p,a_end;

a_end=a[n-1];

for(p=a+n-1;p>a;p--)

{

*p=*(p-1);

}

a[0]=a_end;

m--;

if(m>0)move(a,n,m);

}

 

intmain()

{

printf("习题10.4移动整数\n===================\n");

inti,n,m;

printf("请输入数字个数:

\n");

scanf("%d",&n);

inta[n];

printf("请输入%d个数字:

\n",n);

for(i=0;i

{

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

}

printf("请输入要移动个数:

\n");

scanf("%d",&m);

move(a,n,m);

printf("输出为:

\n");

for(i=0;i

{

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

}

 

return0;

}

10.5

#include

#include

intremain(inta[],intn)

{

inti,k=1;

intm=n;

while(m>1)

{

for(i=0;i

{

if(a[i]!

=0)k++;

if(k==4)

{

a[i]=0;

m--;

k=1;

}

}

}

int*p=a;

for(i=0;i

{

if(*p==0)p++;

}

printf("是%d号留下",*p);

}

intmain()

{

printf("习题10.5n个人围圈,最后留下的是几号\n===================\n");

printf("请输入人的个数n:

\n");

inti,n;

scanf("%d",&n);

inta[n];

for(i=0;i

{

a[i]=i+1;

}

remain(a,n);

 

return0;

}

10.6

#include

#include

intlength(chara[])

{

char*p;

inti=0;

p=a;

while(*p!

='\0'){p++;i++;}

returni;

}

intmain()

{

printf("习题10.6\n===========\n");

printf("请输入字符串:

\n");

chara[80];

scanf("%s",a);

printf("长度为:

\n%d",length(a));

return0;

}

10.7

#include

#include

voidcopy(chara[],intm,intn)

{

inti;

char*p,b[80];

p=&a[m-1];

for(i=0;i

{

b[i]=*p++;

}

b[i]='\0';

printf("复制后的字符串:

\n%s",b);

}

 

voidmain()

{

printf("习题10.7将n个字符的字符串的第m个字符复制给另一个字符串\n===================\n");

chara[80];

intm,n;

printf("请输入字符串:

\n");

scanf("%s",a);

printf("请输入第m个字符:

\n");

scanf("%d",&m);

n=sizeof(a);

copy(a,m,n);

 

}

10.8

#include

#include

 

intmain()

{

printf("习题10.8输入一行文字,找出其中大写字母,小写字母,空格,数字,以及其他字符各有多少个\n===================\n");

printf("请输入一行文字:

\n");

chara[80],*p;

p=&a[0];

intcapital=0,lowercase=0,space=0,number=0,other=0;

while((*p=getchar())!

='\n')

{

if(*p>='A'&&*p<='Z')capital++;

elseif(*p>='a'&&*p<='z')lowercase++;

elseif(*p=='')space++;

elseif(*p<='9'&&*p>='0')number++;

elseother++;

p++;

}

printf("该行文字有大写字母%d个\n",capital);

printf("该行文字有小写字母%d个\n",lowercase);

printf("该行文字有空格%d个\n",space);

printf("该行文字有数字%d个\n",number);

printf("该行文字有其他字符%d个\n",other);

return0;

}

10.9

#include

#include

voidtranspose(inta[][])

{

int(*p)[3],i,j;

p=a;

printf("转置后的矩阵为:

\n");

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

{

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

printf("%d",*(*(p+i)+j));

printf("\n");

}

}

 

intmain()

{

printf("习题10.9写一个函数,将一个3*3矩阵转置.\n===================\n");

inta[3][3]={1,2,3,4,5,6,7,8,9},i,j;

printf("转置前的矩阵为:

\n");

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

{

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

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

printf("\n");

}

transpose(a);

return0;

}

10.10

#include

#include

voidchange(inta[][])

{

inti,j,temp;

int*pm1,*pm2,*pm3,*pm4,*pmax,*p;

p=a;

pmax=(int*)malloc

(2);

pm1=(int*)malloc

(2);

pm2=(int*)malloc

(2);

pm3=(int*)malloc

(2);

pm4=(int*)malloc

(2);

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

{

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

if(*(p+i*5+j)>*pmax)pmax=p+i*5+j;

}

temp=*(p+2*5+2);

*(p+2*5+2)=*pmax;

*pmax=temp;

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

{

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

if(*(p+i*5+j)<*pm1)pm1=p+i*5+j;

}

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

{

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

if(*(p+i*5+j)<*pm2&&*(p+i*5+j)>*pm1)pm2=p+i*5+j;

}

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

{

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

if(*(p+i*5+j)<*pm3&&*(p+i*5+j)>*pm2)pm3=p+i*5+j;

}

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

{

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

if(*(p+i*5+j)<*pm4&&*(p+i*5+j)>*pm3)pm4=p+i*5+j;

}

temp=*(p+0+0);

*(p+0+0)=*pm1;

*pm1=temp;

temp=*(p+4);

*(p+4)=*pm2;

*pm2=temp;

temp=*(p+20);

*(p+20)=*pm3;

*pm3=temp;

temp=*(p+24);

*(p+24)=*pm4;

*pm4=temp;

}

intmain()

{

printf("习题10.10将5*5矩阵中的最大值放到中间,次小的4个值按序放到四个角.\n===================\n");

inta[5][5]={25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};

printf("转换前:

\n");

inti,j;

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

{

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

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

printf("\n");

}

change(a);

printf("转换后:

\n");

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

{

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

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

printf("\n");

}

return0;

}

10.11

#include

#include

#include

#defineN10

#defineM10

voidcmp(char*p)

{

chartemp[M],*smin,*smax;

inti,j;

for(i=0;i

{

smax=p+i*M;

for(j=i+1;j

{

smin=p+j*M;

if(strcmp(smax,smin)>0)

{

strcpy(temp,smin);

strcpy(smin,smax);

strcpy(smax,temp);

}

}

}

}

intmain()

{

printf("习题10.11主函数输入10个等长字符串,用另一个函数对它们排序.然后在主函数输出排序后字符串\n=============\n");

chara[N][M],(*p)[M];

p=a;

inti;

printf("请输入等长字符串:

\n");

for(i=0;i

{

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

}

printf("比较前字符串:

\n");

for(i=0;i

{

printf("%s\n",*(p+i));

}

cmp(p);

printf("比较后字符串:

\n");

for(i=0;i

{

printf("%s\n",*(p+i));

}

return0;

}

10.12

#include

#include

#include

#defineN2

#defineM4

voidcmp(char*p[])

{

chartemp[M],*smin,*smax;

inti,j;

for(i=0;i

{

smax=p[i];

for(j=i+1;j

{

smin=p[j];

if(strcmp(smax,smin)>0)

{

strcpy(temp,smin);

strcpy(smin,smax);

strcpy(smax,temp);

}

}

}

}

intmain()

{

printf("习题10.12主函数输入10个等长字符串,用另一个函数对它们排序.然后在主函数输出排序后字符串(利用指针数组)\n=============\n");

chara[N][M],*p[N];

inti;

printf("请输入等长字符串:

\n");

for(i=0;i

{

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

}

for(i=0;i

{

p[i]=a[i];

}

printf("比较前字符串:

\n");

for(i=0;i

{

printf("%s\n",p[i]);

}

cmp(p);

printf("比较后字符串:

\n");

for(i=0;i

{

printf("%s\n",p[i]);

}

return0;

}

 

10.14

#include

#include

intmain()

{

printf("习题10.14,将N个数按输入时的逆序排列.\n=============\n");

printf("请输入数字个数N:

\n");

intn,i,*p;

scanf("%d",&n);

inta[n];

p=a;

printf("请输入这%d个数N:

\n",n);

for(i=0;i

{

scanf("%d",p++);

}

printf("您的输入为:

\n");

for(i=0;i

{

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

}

printf("\n逆序输出为:

\n");

for(i=0;i

{

printf("%d",*--p);

}

return0;

}

10.15

#include

#include

#defineM2

#defineN2

 

intc,i,j;

structstudent

{

intnumber;

intscore[M];

intaverage;

}stu[N];

voidfir_ave(structstudent*p)

{

floattotal=0;

for(i=0;i

{

total+=p->score[0];

}

printf("第一门课程的平均分为%f:

\n",total/N);

}

voidfind_fail(structstudent*p)

{

intcount=0,flag=1;

for(i=0;i

{

for(j=0;j

{

if(p->score[j]<60)count++;

}

if(count>=2)

{

printf("第%d号学生有2科以上不及格,他的所有课程成绩为:

\n",i+1);

for(j=0;j

{

printf("第%d门:

%d",j+1,stu[i].score[j]);

flag=0;

}

count=0;

}

count=0;

 

}

if(flag)printf("\n没找到!

");

}

 

voidfind_high(structstudent*p)

{

intfla=1,flag1=0,flag2=0;

floattotal=0;

for(i=0;i

{

total=0;

for(j=0;j

{

total+=p->score[j];

p->average=total/M;

}

}

for(i=0;i

for(i=0;i

{

flag1=1;

for(j=0;j

{

if(p->score[j]<=85)flag1=0;

}

if(p->average>90)flag2=1;

elseflag2=0;

if(flag1||flag2)

{

printf("\n第%d号同学符合要求!

他的所有课程成绩为:

\n",i+1);fla=0;

for(j=0;j

{

printf("第%d门:

%d",j+1,stu[i].score[j]);

}

}

}

if(fla)printf("没找到!

\n");

}

 

intmain()

{

printf("习题10.15有一个班四个学生5门课,编3个函数实现:

\n1.求第一门课程的平均分\n2.找出有2门以上课程不及格的学生,输出学号和全部课程\n3.找出平均成绩在90分以上或者全部成绩在85分以上的学生\n=====================================\n");

printf("请输入四个学生分数:

\n");

structstudent*p;

p=stu;

for(i=0;i

{

stu[i].number=i+1;

}

for(i=0;i

{

for(j=0;j

{

printf("请输入第%d个学生的第%d门分数:

___",i+1,j+1);

scanf("%d",&stu[i].score[j]);

}

}

while

(1)

{

printf("\n请选择:

\n1.求第一门课程的平均分\n2.找出有2门以上课程不及格的学生,输出学号和全部课程\n3.找出平均成绩在90分以上或者全部成绩在85分以上的学生\n4.退出.\n");

scanf("%d",&c);

if(c==1)fir_ave(p);

if(c==2)find_fail(p);

if(c==3)find_high(p);

if(c==4)break;

}

return0;

}

10.16

#include

#include

intmain()

{

printf("习题10.16输入如一个字符串,将连续的数字作为一个整数,统计数量并输出\n==========================

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2