IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 《C语言程序设计》第4版 何钦铭、颜晖主编 课后习题答案 第8章 习题8 -> 正文阅读

[数据结构与算法]《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<q? ? ?q--? ?

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

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

三、程序设计题

第1题

#include<stdio.h>//习题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("整数部分:%d\n小数部分:%lf",intpart,fracpart);
	
	return 0;
}

?第2题

#include<stdio.h>//习题8.2 数组中查找指定元素
int search(int list[],int n,int x)
{
	int i,flag=0,k;
	for(i=0;i<n;i++)
	{
		if(x==list[i]){
			k=i;
			flag=1;
		}
	}
	if(flag==1)
	{
		return k;//只返回最大下标 
	}
	else return -1;
}/*
int search(int list[],int n,int x,int *pk)
{
	int i,flag=0;
	for(i=0;i<n;i++)
	{
		if(x==list[i]){
			*pk=i;
			flag=1;
		}
	}
	if(flag==0) return -1;
}*/
main()
{
	int n,i,a[10],x,result;
	
	printf("Enter n(n<=10):");
	scanf("%d",&n);
	printf("Enter %d numbers:",n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	printf("Enter x:");
	scanf("%d",&x);
	result=search(a,n,x);
	if(result==-1)
	{
		printf("Not Found!");
	}
	else printf("下标:%d",result);
	

}

第3题

#include<stdio.h>//习题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<n;i++)
	{
		scanf("%d",&a[i]);
	} 
	for(i=0;i<n;i++)
	{
		j=i;
		if(i+m<n){
			b[j+m]=a[i];
		}
		else {
			b[j-(n-m)]=a[i];
		}
	}
	for(j=0;j<n;j++)
	{
		printf("%d",b[j]); //4会改变为-1 
	}
}

第4题

#include<stdio.h>//习题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<n;i++)
	{
		a[i]=i+1;//编号 
	}
	for(i=1;i<n;i++)//与编号相同,a[1]=2 
	{
		a[i]=i+1;//建立链表 ,a[i]作为“指针”变量使用,存放下一节点的位置 
	}//设指针j指向当前节点,j=a[i]表示移动节点 
	a[n]=1;//第n个人指向第一个人
	j=n;
	while(p<n)//n个数均出列为止 
	{
		while(k<m)//从出局的下一个报数
		{
			j=a[j];//移动节点,到下一个 
			k++;//报数计数器加一 
		}
		printf("%d  ",a[j]);//数到m的出列
		p++;//出列人数计数 
		a[j]=a[a[j]];// 以出局的那个数的编号作为下标,移动到下一个数 
		k=1;//计数器初始化为1,因为是出局的下一个报1 
	} 
}

第5题

#include<stdio.h>//习题8.5 使用函数实现字符串复制 
#include<string.h>
#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<stdio.h>//习题8.6  删除字符 
#include<string.h>
void delchar(char s[],char c)
{

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

第7题

#include<stdio.h>//习题8.7 
#include<string.h>
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<stdio.h>//习题8.8 判断回文 
#include<string.h>
#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){
		if(s[i]!=s[k]){
			break;
		}
		i++;
		k--;
	}
	if(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);//有效长度,不包括'\0' 
	q=&s[n-1];//指向数组最后一个字符 
	while(*q==' ')
	{
		q--;//计算回车键前有多少个空格需消除 
	}
	while(p<q&&*p==*q)//从两头开始,判断是否相等 
	{
		p++;//向中间缩进 
		q--;
	}
	if(p<q) printf("No.\n");//相对中间对称,如果大于,就已经出现重复比较了 
	else printf("Yes.\n");} 
	
}

第9题

#include<stdio.h>//习题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;
}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 08:55:25  更:2022-04-30 08:56:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:52:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码