随笔分类 -  C学习

摘要:八十七、回答结果(结构体变量传递)输出依然为3,a。函数f传递的是变量a的一个副本复制。#include "stdio.h"struct student{ int x;char c;} a;main(){a.x=3;a.c='a';f(a);printf("%d,%c",a.x,a.c);}f(struct student b){b.x=20;b.c='y';}八十九、某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交 阅读全文
posted @ 2013-08-21 17:02 tsembrace 阅读(945) 评论(0) 推荐(0) 编辑
摘要:六十八、有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。#includevoid move_array(int a[],int n,int m){ int i; int b[100]; if(m>n) { printf("input error(%d must less than %d).\n",m,n); } else { for(i=0;i#define mynumber 17int pick_num(int a[],int n){ int i=0; //数组下标 ... 阅读全文
posted @ 2013-08-19 19:29 tsembrace 阅读(879) 评论(0) 推荐(0) 编辑
摘要:二十二、两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。#includeint main(){ char i,j,k; //设a\b\c对手 for(i='X';i%c\nb------->%c\nc------->%c\n",i,j,k); } getch(); return 0;}二十四、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。程序分析:第一... 阅读全文
posted @ 2013-08-17 13:44 tsembrace 阅读(1049) 评论(0) 推荐(0) 编辑
摘要:回顾总结:前面花了两大篇幅分别说一维和二维数组,始终在围绕着“地址”说数组。再回头想一下:数组在C语言里是一种构造类型,那么C语言是如何构造它的?C语言先在数组定义时候将其元素依序存储在一段内存中,如果没有“构造”的过程,也就没有数组的概念了,因为如果要访问这段连续的内存,只需要知道这段内存的基址、元素的数据类型以及长度,就可以访问、操作任一个元素了,比如:访问第i个元素就可以用*(Base_address+i*sizeof(element type))进行,这是一种直接的地址偏移的访问方式。而通过构造数组,使得我们可以很方便的通过下标方式array_name[i]访问。C语言构造数组的主要工 阅读全文
posted @ 2013-08-14 11:21 tsembrace 阅读(918) 评论(0) 推荐(0) 编辑
摘要:二、二维数组对于一个n维数组,其实质上还是一个一维数组,这个一维数组的每个元素又都是一个(n-1)维数组。。以此类推。复杂的不去深究,就看二维数组a[m][n],实质是一个由m个元素组成的一维数组,每个元素又都是含n个元素的一维数组,这个二维数组共计m*n个元素。对于一个二维数组,它实质上是一个一维数组,但是是什么样的一维数组?这个一维数组的元素是什么?对于int a[2][3],逻辑上是2行×3列的整型矩阵,在内存分布中为线性存储。其定义为:int a[2][3]={{1,2,3},{4,5,6}};容易看出这是含有两个元素的一维数组,每个元素又都是一个含有3个整型数据的一维数组。 阅读全文
posted @ 2013-08-13 21:43 tsembrace 阅读(496) 评论(0) 推荐(0) 编辑
摘要:一、一维数组1、在内存空间上的存放一个数组在定义后其在内存中各元素的存放是占据一段连续的地址空间,每个元素需要的空间取决于数组类型:整型需要4字节,字符型需要1字节。示例:对于int a[100],在内存中占用100×4=400字节空间;对于char c[100]占据内存空间为100字节。2、数组名2.1数组名是什么?首先数组名是数组的名字,所以数组名表示该数组=。=这绝不是废话,这句话非常有助于后面的理解。其次,数组名还能表示什么?我们都知道,数组名能表示一个地址,如何描述该地址,先直接给出答案:数组名还表示该数组首元素的地址=。=(依然不是废话,而是要注意到:是该数组首元素地址, 阅读全文
posted @ 2013-08-13 21:31 tsembrace 阅读(6475) 评论(0) 推荐(0) 编辑
摘要:十七、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。#includeint main(){ char mychar; int c_num,sp_num,num_num,oc_num,all_num; c_num=sp_num=num_num=oc_num=all_num=0; printf("请输入一串字符,以换行符结尾\n"); mychar=getchar(); while(mychar!='\n') { if(mychar>='0'&&mychar='A')&&( 阅读全文
posted @ 2013-08-11 14:04 tsembrace 阅读(562) 评论(0) 推荐(0) 编辑
摘要:八、输出9*9口诀。#includeint main(){ int r[9]={1,2,3,4,5,6,7,8,9}; int c[9]={1,2,3,4,5,6,7,8,9}; int i,j; printf("0\t1\t2\t3\t4\t5\t6\t7\t8\t9\n"); for(i=1;iint F_rabbit(unsigned int x){ if(x==0) return 0; if(x==1||x==2) return 2; else return F_rabbit(x-1)+F_rabbit(x-2);}int main(){... 阅读全文
posted @ 2013-08-08 14:19 tsembrace 阅读(702) 评论(0) 推荐(0) 编辑
摘要:一、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?#includeint main(){ int i,j,k; int number=0; for(i=1;iint main(){ long profit,bonus; printf("请输入利润额:\n"); scanf("%ld",&profit); if(profitint main(){ long i,j; int x; for(i=13;iint Judge_leapyear(int year){ if(year%400==0) ... 阅读全文
posted @ 2013-08-06 22:02 tsembrace 阅读(807) 评论(0) 推荐(0) 编辑
摘要:一、目标描述:1、建立一个通讯录,按姓名字母排序存储联系人信息。2、可显示菜单提供显示、新增、删除、修改等功能。3、显示:(1)显示联系人数量及全部联系人信息;(2)提供特定条件查询指定联系人信息。4、新增:逐步提示对应信息输入。5、删除:删除指定联系人信息。6、修改:提供特定条件修改指定单个联系人信息:先显示原先信息,再提供选项修改对应条目。7、通讯录信息保存在文件中。二、目标分析:1、项目需要排序、新增,则考虑使用二叉搜索树来建立数据堆模型。2、该模型须提供以下具体功能模块:(1)初始化(2)新增项目(3)删除(4)查询有无(5)修改3、信息要保存到文件中,每一次更新信息都要对应到文件中; 阅读全文
posted @ 2013-07-21 19:48 tsembrace 阅读(10667) 评论(0) 推荐(0) 编辑
摘要:7、编写一个程序,能打开、读入一个文本文件并统计文件中每个单词出现的次数。用改进的二叉搜索树存储单词及其出现的次数。程序读入文件后,会提供一个有三个选项的菜单。第一个选项为列出所有单词连同其出现的次数。第二个选项为让您输入一个单词,程序报告该单词在文件中出现的次数。第三个选项为退出。断断续续编写代码、测试,花了差不多两天时间,总算告成。*建立该问题的二叉树节点模型//BST Model--START------------------typedef struct node{ char word[15]; int times; //出现的次数 struct nod... 阅读全文
posted @ 2013-07-17 12:58 tsembrace 阅读(360) 评论(0) 推荐(0) 编辑
摘要:1、修改程序清单17.2,使其既能以郑旭又能以逆序显示电影列表。一种方法是修改链表定义使其可以双向遍历;另一种用递归//双向链表#include#include#include#define TSIZE 45struct film{ char title[TSIZE]; int rating; struct film *prev; struct film *next;};int main(void){ struct film *head=NULL; struct film *temp,*current; char input[TSIZE]; puts("Ent... 阅读全文
posted @ 2013-07-17 12:48 tsembrace 阅读(367) 评论(0) 推荐(0) 编辑
摘要:1、定义一个数据类型包含什么?包含数据本身的定义及其操作的定义。2、为什么程序清单17.2中的链表只能沿一个方向遍历?怎样修改struct film的定义才能双向遍历链表?每个节点只记录了下一个节点的地址。strcut film{ char title[TSIZE]; int rating; struct film *previous; //指向前序节点 struct film *next;}3、什么是ADT?抽象数据模型,用户自定义的数据类型,包括数据的存储、组合方式以及可实现的操作。4、QueueIsEmpty()函数以一个指向队列的指针为参数,但它本可以编写成接受一个queue结... 阅读全文
posted @ 2013-07-15 19:31 tsembrace 阅读(495) 评论(0) 推荐(0) 编辑
摘要:第十七章 高级数据表示四、二叉搜索树先梳理一下链表和数组方式对几种操作的利弊特点:a.访问:链表形式,必须从首节点开始找起,直到要访问的节点为止,这个称为顺序访问。而数组方式则方便的多,可直接定位到某个元素,这称为随机访问。b.插入/删除:对于链表形式,插入或删除操作仅需要修改前续和后续节点就可以完成;而数组方式需修改被增加或删除元素后面所有的元素。c.查找/搜索:其实也是一种访问形式。一般情况,对于顺序排列的“数据堆”,可以通过"折半查找法”非常效率的进行查找。可折半查找,首先得定位到中间的元素,对数组而言,因为有下标,很容易定位;而对于链表定位中间元素,首先要知道数据堆里总共有多 阅读全文
posted @ 2013-07-12 20:59 tsembrace 阅读(541) 评论(0) 推荐(0) 编辑
摘要:第十七章 高级数据表示 三、队列ADT 前面通过一个单链表形式来构建一个数据堆,单链表是通过在结点中设置一个指向下一节点的指针成员来实现组合。对于队列形式,有几个特点:1、依然是线性序列;2、只能在队尾部增加节点;3、只能在队首部删除节点。 1、队列ADT的定义描述 2、队列ADT的操作描述及实现 阅读全文
posted @ 2013-07-12 16:09 tsembrace 阅读(400) 评论(0) 推荐(0) 编辑
摘要:第十七章 高级数据表示(一)一、抽象数据类型抽象数据类型(abstract data type:ADT)是指由用户依据实际需求所创建的某种数据类型,它可以是C语言中的任何数据类型,甚至是基本类型,或数组,复杂的就会用到结构。为何说是抽象?是因为ADT并不会是固定某种数据类型,而是依据实际应用需求中提炼出来的某种数据类型的表达方式。那么,如何定义一种ADT呢?在C语言里,定义一种数据类型,包括两方面:一方面是数据存储方式的描述(对取值的限定),另外一方面是对该类型的可使用的操作的定义。比如:定义一个int型数据a,则表示a取值范围是-32768~32767中的整数;同时a可以使用所有对整型数据的 阅读全文
posted @ 2013-07-12 12:51 tsembrace 阅读(540) 评论(0) 推荐(0) 编辑
摘要:1、编写一个程序。请求用户键入日、月和年。月份可以是月份号,月份名或月份缩写。然后程序返回一年中到给定日期的总天数。(1)只考虑月份的数字输入:#include#includevoid eatline();int count_days(struct date p);struct date{ int day; int month; char year[4];};int main(void){ struct date yourday; int days; printf("please input yourday's date:\n"); scanf("%d&q 阅读全文
posted @ 2013-07-03 20:21 tsembrace 阅读(1823) 评论(0) 推荐(0) 编辑
摘要:第14章 结构和其他数据形式基础概念性的内容在谭浩强C的笔记里已经记录过,不再抄记。选出以下重点巩固:1、结构的指定初始化项目C99支持该功能;对于:struct stu{ char name[10]; int age; float score;}可以在定义其结构变量时候初始化该变量的某几项数据,如下:struct stu s1={.name[10]="Tommy",.score=97.5};struct stu s2={.age=15};2、结构数组对于上述stu结构,创建其变量数组:struct stu s[10];成员的引用标识:s[0].name[10];s[9]. 阅读全文
posted @ 2013-07-02 12:46 tsembrace 阅读(446) 评论(0) 推荐(0) 编辑
摘要:6、编写一个产生1000个1到10范围内的随机数的程序。不必保存或打印数字,仅打印每个数被产生了多少次。让程序对10个不同的种子值进行计算。#include<stdio.h>#include<stdlib.h>int sides=10;static int a[10];void f1(int times);int main(void){ int times; int i; extern int a[10]; //可选的引用声明 printf("please input the numbers for times:\n"); scanf("% 阅读全文
posted @ 2013-06-21 12:45 tsembrace 阅读(451) 评论(0) 推荐(0) 编辑
摘要:1、哪一类存储类生成的变量对于包含他们的函数来说是局部变量?答:自动存储类。2、哪一存储类的变量在包含他们的程序运行时期内一直存在?答:静态存储类。3、哪一存储类的变量可以在多个文件中使用?哪一存储类变量只限于在一个文件中使用?答:外部链接的静态存储变量、内部链接的静态存储变量。4、代码块作用域变量具有哪种链接?答:空链接。5、关键字extern的用处?答:一种是对外部文件中外部变量的引用声明;另外一种是对同文件中外部链接或内部链接静态变量的引用声明。6、考虑如下代码段:int *p1=(int *)malloc(100*sizeof(int));考虑最终结果,下面语句有何不同?int *p1 阅读全文
posted @ 2013-06-20 23:09 tsembrace 阅读(1058) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示