栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

《C语言程序设计》第4版 何钦铭、颜晖主编 课后习题答案 第8章 习题8

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

《C语言程序设计》第4版 何钦铭、颜晖主编 课后习题答案 第8章 习题8

一、选择题

1~4 B C A D 

5~8 C B A B

二、填空题 

1、a  10  &maxskub  &minsub             *maxsub=i            *minsub=i

2、i<*n-1     j<=i     a[j+1]      x

3、s     p++     &s[n-1]     p

4、q=p     p>&str[0]     *p=*(p-1)

5、cnt==3     k++     cnt=0

三、程序设计题

第1题

#include//习题8.1 拆分实数的整数与小数部分 
void splitfloat(float x,int *intpart,float *fracpart)
{
	*intpart=(int)x;//强制转换为整型 
	*fracpart=x-*intpart;//直接减去整数部分可得小数部分 
}
main(void)
{
	float x,fracpart;//x=123.456,小数部分会输出为0.456001 
	int intpart;//x=345.89,小数部分为0.890015 
	printf("Enter x:");
	scanf("%f",&x);
	splitfloat(x,&intpart,&fracpart);
	printf("整数部分:%dn小数部分:%lf",intpart,fracpart);
	
	return 0;
}

 第2题

#include//习题8.2 数组中查找指定元素
int search(int list[],int n,int x)
{
	int i,flag=0,k;
	for(i=0;i 

第3题

#include//习题8.3 循环后移 
main()
{
	int n,m,i,a[10],j,b[10];
	
	printf("Enter n:");
	scanf("%d",&n);
	printf("Enter m:");
	scanf("%d",&m);
	printf("Enter %d numbers:",n);
	for(i=0;i 

第4题

#include//习题60.4 
#define N 20
main()
{
	int n,i,m,k=1,j,p=0;
	int a[N];
	
	printf("Enter n:");
	scanf("%d",&n);
	printf("Enter m:");
	scanf("%d",&m);
	
	for(i=0;i 

第5题

#include//习题8.5 使用函数实现字符串复制 
#include
#define N 80
void strmcpy(char *s,char *t,int m)//题目要求从字符串中第m个字符开始复制,即m=下标+1 
{
//	t=t+m;//指针指向下标为m的字符,从下标为m的字符开始复制
    t=t+m-1;//t指向第m个字符 
	strcpy(s,t);
	*s=*s;
}
int main(void)
{
	int m,i;
	char t[N],s[N];
	
	gets(t);
	printf("Enter m(m>=1):");
	scanf("%d",&m);
	strmcpy(s,t,m); 
	printf("复制后的字符串为:");//原字符复制,m=1 
	puts(s);
	
	return 0;
}

第6题

#include//习题8.6  删除字符 
#include
void delchar(char s[],char c)
{

	int i,j=0;
	for(i=0;s[i]!='';i++)//遍历字符串 
	{
		if(s[i]!=c){//比较 
			s[j]=s[i];//不同则放在以j为下标的s数组中 ,直接改变了字符数组s。也可以放在字符数组t中,直接在自定义函数中输出 
		    j++;//每放一个,下标加一 
		}   
	}
	s[j]='';//加上字符串结束标志 
}
main()
{
	char ch,s[80],t[80];
	int i;
	
	gets(s);
	ch=getchar();
	delchar(s,ch);
	printf("删除后:n");
	puts(s);
}

第7题

#include//习题8.7 
#include
int main(void)
{
	char s[5][80],t[10];//定义二维数组,中间变量 
	int i,j,k;
	
	printf("输入5个字符串:");
	for(i=0;i<5;i++)
	{
		scanf("%s",s[i]);//输入二维字符数组 ,或者用gets(s[i]);,需每行输入一个 
	}
	 
	for(i=0;i<4;i++) 
	{
		for(j=0;j<5-i;j++) 
		{
			if(strcmp(s[j],s[j+1])>0)//比较,后面小于前面(>0),后面换到前面 
		    {
			    strcpy(t,s[j+1]);
		        strcpy(s[j+1],s[j]);//交换 
		        strcpy(s[j],t);
		    }
		}
	} 
	 
	for(i=0;i<4;i++) 
	{
		k=i;
		for(j=i+1;j<5;j++) 
		{
			if(strcmp(s[j],s[k])<0)//比较,后面小于前面(>0),后面换到前面 
		    {
			    k=j;//s[j]小,则赋值 
		    }
		}
		if(k!=i)
		{
		    strcpy(t,s[k]);
		    strcpy(s[k],s[i]);//交换 
		    strcpy(s[i],t);
		}
	}
	printf("从小到大排序后:n");
	for(i=0;i<5;i++)
	{
		puts(s[i]);//输出交换好的数组 
	}
	
	
	return 0;
}

第8题

#include//习题8.8 判断回文 
#include
#define N 80
main()
{
	 
	int i,k,lenth;
	char s[N];
	
	printf("输入一个字符串:");
	scanf("%s",s);
	lenth=strlen(s); 
	i=0;
	k=lenth-1;
	while(i=k)
	{
		printf("%s是回文。",s);
	}
	else {
		printf("%s不是回文。",s); 
	}
	
	//两个不能同时用
	 
	{
	char ch,s[80],*p,*q;
	int i,j,n;
	printf("输入一个字符串:");
	gets(s);
	p=s;//指向s ,空格也算字符,也归在字符串里 
	while(*p==' ')
	{
		p++;//计算S前的空格 
	}
	n=strlen(s);//有效长度,不包括'' 
	q=&s[n-1];//指向数组最后一个字符 
	while(*q==' ')
	{
		q--;//计算回车键前有多少个空格需消除 
	}
	while(p 

第9题

#include//习题8.9 
int main(void)
{
	int A_count,a_count,blank,digit,other;
	char ch;
	
	A_count=a_count=blank=digit=other=0;
	while((ch=getchar())!='n'){
		if(ch>='A'&&ch<='Z'){
			A_count++;
		}
		else if(ch>='a'&&ch<='z'){
			a_count++;
		}
		else if(ch==' '){
			blank++;
		}
		else if(ch>='0'&&ch<='9'){
			digit++;
		}
		else other++;
	}
	printf("A_count=%d,a_count=%d,blank=%d,digit=%d,other=%d",A_count,a_count,blank,digit,other);
	
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/850831.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号