C和指针 第十三章 习题
1,1标准输入读入字符,统计各类字符所占百分比
#include <stdio.h>
#include <ctype.h> //不可打印字符
int isunprint(int ch){
return !isprint(ch);
} //转换表,储存各个判断函数指针
int (*tables[])(int) = {iscntrl, isspace, isdigit, islower, isupper, ispunct, isunprint}; int main()
{
int count[7] = {0};
int ch;
int idx; while((ch = getchar()) != EOF){
//转换表中的函数进行测试,如果符合对应的数组项+1
for(idx = 0; idx < 7; idx++){
if(tables[idx](ch)){
count[idx]++;
}
}
} for(idx = 0; idx < 7; idx++){
printf("%d\n", count[idx]);
} return 0;
}
运行结果:

1.4 编写sort函数,对任何类型数组进行排序
#include <stdio.h>
#include <stdlib.h>
#include <string.h> void sort(void *array, unsigned length, unsigned int size, int(*compare)(void const *value1, void const *value2))
{
//循环变量
int idx, idy;
void *temp = malloc(size); for (idx = 0; idx < length - 1; idx++) {
for (idy = idx + 1; idy < length; idy++) {
//通过字节复制,交换位置,由于array是void类型的,所以需要根据size来进行偏移,找到对应的元素地址
if (compare(array + (idx * size), array + idy * size) == 1) {
//array是指向数组的指针,根据元素大小,得到元素地址
memcpy(temp, array + idx * size, size);
memcpy(array + idx * size, array + idy * size, size);
memcpy(array + idy * size, temp, size);
}
}
}
} int int_compare(void const *value1, void const *value2)
{
if (*(int *)value1 == *(int *)value2) {
return 0;
}
else if (*(int *)value1 <= *(int *)value2) {
return -1;
}
else {
return 1;
}
} int main()
{
int array[] = { 1, 4, 5, 2, 3, 8, 6, -10};
for (int idx = 0; idx < 8; idx++) {
printf("%d\t", array[idx]);
}
printf("\n");
sort(array, 8, 4, int_compare); for (int idx = 0; idx < 8; idx++) {
printf("%d\t", array[idx]);
} return 0;
}
运行:

C和指针 第十三章 习题的更多相关文章
- C和指针 第六章 习题
6.1编写一个函数,它在一个字符串中进行搜索,查找所有在一个给定字符集中出现的字符,返回第一个找到的字符位置指针,未找到返回NULL #include <stdio.h> char * f ...
- C和指针 第十七章 习题
17.8 为数组形式的树编写模块,用于从树中删除一个值,如果没有找到,程序节点 ArrayBinaryTree.c // // Created by mao on 16-9-18. // #inclu ...
- C和指针 第十三章 高级指针话题
高级声明: int (*f)(); 这里声明有两个括号,第二个括号是函数调用,第一个括号是聚组作用.(*f)是一个函数,所以f是指向返回整型的函数的指针.程序中的每个函数都位于,内存中某个位置,所以存 ...
- C和指针 第十一章 习题
1编写calloc,内部使用malloc函数获取内存 #include <stdio.h> #include <stdlib.h> void *myAlloc(unsigned ...
- C和指针 第七章 习题
7.1 hermite递归函数 int hermite(int n, int x) { if (n <= 0) { return 1; } if (n == 1) { return 2 * x; ...
- C和指针 第五章 习题
下列输出的值: #include <stdio.h> int func(){ static int count = 1; return ++count; } int main() { in ...
- C和指针 第四章 习题
4.1正数的n的平方根可以通过: ai+1= (ai + n / ai ) / 2 得到,第一个a1是1,结果会越来越精确. #include <stdio.h> int main() { ...
- C和指针 第三章 习题
在一个源文件中,有两个函数x和y,定义一个链接属性external储存类型static的变量a,且y可以访问,x不可以访问,该如何定义呢? #include <stdio.h> void ...
- perl5 第十三章 Perl的面向对象编程
第十三章 Perl的面向对象编程 by flamephoenix 一.模块简介二.Perl中的类三.创建类四.构造函数 实例变量 五.方法六.方法的输出七.方法的调用八.重载九.析构函数十.继承十一. ...
随机推荐
- [No000069]Javascript中this关键字详解
Quiz 请看下面的代码,最后alert出来的是什么呢?(chrome下按F12,选择Console直接复制粘贴运行) var name = "Bob"; var nameObj ...
- jquery的各种隐藏显现动画的区别
<!DOCTYPE html> <html> <head lang="en"> <meta charset="utf-8&quo ...
- 【笔记3】用pandas实现矩阵数据格式的推荐算法 (基于用户的协同)
原书作者使用字典dict实现推荐算法,并且惊叹于18行代码实现了向量的余弦夹角公式. 我用pandas实现相同的公式只要3行. 特别说明:本篇笔记是针对矩阵数据,下篇笔记是针对条目数据. ''' 基于 ...
- CSS常用浮出层的写法
点此查看实例展示 是的,我们即将实现的就是以上功能,是不是很生动? 贴上HTML: <div class="poptip"> <span class=" ...
- IE浏览器中Image对象onload失效的解决办法
作为WEB设计者,为了在网页展示上加强用户体验,经常会利用图象载入显示状态方法,这自然需要Image对象的onload事件. 在firefox浏览器下完成开发后,可是在IE浏览器中进行调试总不能被调用 ...
- 关于DOS与cmd(windows系统)
dos是计算机的最初期的操作系统,对电脑操作必须输入各种dos命令窗口,可以理解成运行计算机机器内部语言,知道编程吗?其实早期dos命令操作系统就是运行计算机内部的编程命令,因此操作人员都必须具有一定 ...
- Xamarin Mono For Android 4.6.07004 完整离线安装破解版(C#开发Android、IOS工具)
Xamarin是由Miguel de Icaza成立的一家新的独立公司,目的是给Mono一个继续奋斗的机会.Mono for Android (原名:MonoDroid)可以让开发人员使用 Mic ...
- bootstrap快速搭建属于自己的后台模板库
不论做什么项目,我们都以快速搭建为主,设计师固然重要,但是,我们前端开发的也必须能给出自己以前做过什么样的模板,自己收藏的模板,或者我们弹框的形式,我的提示框的形式,我用的下拉框的插件,日历的插件,我 ...
- JAVA集合介绍
一.集合概述 Java是一种面向对象语言,如果我们要针对多个对象进行操作,就必须对多个对象进行存储.而数组长度固定,不能满足变化的要求.所以,java提供了集合. 特点 1. 长度可以发 ...
- mysql select
select 查询: 赋值:赋值不能应用在where中,因为where操作的是磁盘上的文件,可以应用在having筛选中. 例:select (market_price-shop_price) as ...