本文目录一览:
C语言详解(第5版)这本书怎么样?适合自学者看吗?
对于初学者偏难,但是也不是不能用来自学,关键看你能不能坚持下去了。图灵系列的书籍都非常不错,希望你能够好好利用。
严蔚敏 的 《数据结构(C语言版)》 这本书在豆瓣评分为什么不高?
严蔚敏的《数据结构(C语言版)》这本书在豆瓣评分挺高的。数据结构(C语言版)的具体内容:
数据结构分为8类有:数组、栈、队列、链表、树、散列表、堆、图。数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。
1、数组
数组是可以再内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从0开始。例如下面这段代码就是将数组的第一个元素赋值为 1。
2、栈
栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。 栈的特点是:先进后出,或者说是后进先出,从栈顶放入元素的操作叫入栈,取出元素叫出栈。
3、队列
队列与栈一样,也是一种线性表,不同的是,队列可以在一端添加元素,在另一端取出元素,也就是:先进先出。从一端放入元素的操作称为入队,取出元素为出队。
4、链表
链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,每个元素包含两个结点,一个是存储元素的数据域 (内存空间),另一个是指向下一个结点地址的指针域。根据指针的指向,链表能形成不同的结构,例如单链表,双向链表,循环链表等。
C语言,求大神详解24 25 27
24.把a[0]是什么搞清楚就好弄了:a[0]是第0行第0个元素的地址,p=a[0]后p就是第0行第0个元素的地址。那么——
A:*(p+i)+j就是第0行第i个元素值+j,错;
B:*(*(a+i)+j)是把第0行第i个元素值+j的和作为指针来用了,错;
C:p[i]+j是第0行第i个元素值+j,这与A同义,只是写法不同,错;
D:p+4*i+j是第0行第0个元素的地址+一个整数(4*i+j),仍然是地址,且4*i+j表示第i行第j个元素相对第0行第0个元素的位置数,所以正确。
25.D正确。此题与24不同之处是求第i行第j列的元素值而不是地址,但分析完全可以参照24题。
27.此题要搞清p是指向有4个int型元素的数组的指针,就是说p+1要跳过4个int型数据所占有的空间——所以:
A:p+4*i+j因4*i+j是个整型数使整体还是指向一个数组的指针而不会是元素a[i][j]的指针,所以错,所以选A正确。
B:*(a+i)+j——a+i是第i行的指针,*(a+i)就是第i行第0个元素的指针,*(a+i)+j就是第i行第j个元素的指针,亦即a[i][j]的指针,正确。
C:p[i]+j——p[i]是第i行第0个元素指针,p[i]+j就是第i行第j个元素的指针,正确。
D:*(p+i)+j——*(p+i)不就是p[i]吗?*(p+i)和p[i]是同一目标的两种写法而已,所以与C同,正确。
C语言求详解
//找到它的流程和作用
#include stdio.h
int main()
{
int v1 = 0,v2 = 0;char ch;
//while()默认控制一个语句或一个结构块
while((ch = getchar()) != '#')
//一直获取输入,直到输入有'#'就跳出while
switch(ch)
{
//遇到'a'字符就从这里开始执行switch()
case 'a':
//遇到'h'字符就从这里开始执行switch()
case 'h':
//遇到其他字符就从这里开始执行switch()
default: v1++;
//遇到'0'字符就从这里开始执行,不跳出switch()
case '0':v2++;
//switch()执行结束
}
printf("%d,%d\n",v1,v2);
}
/*
china#
-c 非'#'执行default 然后执行case '0'跳出switch,执行while
-h 非'#'执行default 然后执行case '0'跳出switch,执行while
-i 非'#'执行default 然后执行case '0'跳出switch,执行while
-n 非'#'执行default 然后执行case '0'跳出switch,执行while
-a 非'#'执行default 然后执行case '0'跳出switch,执行while
-# '#'跳出循环
*/