电商专业学习嵌入式软件开发第三十一天

  • C第五天

老师早上先给我们讲了昨天留的两道题,然后就开始给我们讲数组和指针,最后还涉及一点二维数组。每次到了指针这里总感觉头脑绕不过来,但是确实又是讲来讲去就那么点内容,感觉内容很少,就是消化特别慢。

"最近总能听到在“终端”下面不能粘贴复制,在这里我推荐试试ctrl+shift+c复制,ctrl+shift+v粘贴,反正我在虚拟机中可以这么用,实体机应该也可以"。

作业1.有一个袋子,里面有三种颜色的球,白:3 红:3 黑:6. 从中间取8只球,共有多少种方案
#include <stdio.h>
void main()
{
    int i,j;
    for(i=0;i<=3;i++)
        for(j=0;j<=3;j++)
            if(8-i-j<=6)
                printf("红:%d 白:%d 黑:%d\n",i,j,8-i-j);
}
作业2.求输出和为一个给定整数的所有组合
如:4
  0+4
  1+3
  2+2;
  5
  0+5
  1+4
  2+3
#include <stdio.h>
void main()
{
    int data,i;
    printf("请输入一个数:");
    scanf("%d",&data);
    for(i=0;i<=data/2;i++)
    printf("%d+%d\n",i,data-i);
}

练习:有一个整型数组,含有10个元素,在整个数组中查找某一个值,找到了就给出这个值在数组中的位置,没有找到就输出"没有找到"

#include <stdio.h>
void main()
{
    printf("请输入10个数:");
    int i,a[10],search;
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("请输入要找的值:");
    scanf("%d",&search);
    int flag=0;
    for(i=0;i<10;i++)
    {
        if(search==a[i])
        {
            printf("%d\n",i+1);
            flag++;
        }
    }
    if(flag==0)
    {
        printf("没有找到!\n");
    }
}

定义一个数组,里面升序排好了5个数,现在往其中插入某个数,使插入后的数组依然有序。

#include <stdio.h>
void main()
{
    int a[6]={1,3,5,7,9,11},in,i,j;
    printf("请输入要插入的数:");
    scanf("%d",&in);
    //1.找到要插入的位置
    for(i=0;i<=4;i++)
    {
        if(a[i]>in)
            break;//找到第一个比in大的元素结束循环,此时i即为in的下标号
    }
    //2.把原有数组中比插入的数大的元素往后挪一个位置
    for(j=5;j>i;j--)//把插入点i之后的元素都往后挪一个位置
    {
        a[j]=a[j-1];
    }
    //3.把数插进入
    a[i]=in;
    for(i=0;i<6;i++)
        printf("%d\n",a[i]);
}
#include <stdio.h>
void main()
{
    int a=5;
//  &a;  //表示a所代表的空间的地址
    printf("%d\n",*(&a));
    *(&a)=3;//*,表示一个地址里面的值
    printf("%d\n",a);
}

指针变量:用来接受内存中的地址。
指针:地址。
定义一个指针变量:
例:要定义一个指针变量,用来接受一个整型变量的地址

int a;//得到整型变量  &a 整型变量的地址
int *p=&a;  //定义一个接受整型变量的地址的变量。指针变量。取名指针变量因为它保存的是一个变量的地址,只要找到了该指针变量就能找到那个变量,像一个指针时刻指向那个变量.
char c;
char *p=&c;//定义一个指向字符变量c的指针变量
整型变量数据类型:int
定义一个整型变量: int p; 用来接受一个整数: p=10;
小数变量数据类型:float
定义一个小数变量:float p;用来接受一个小数: p=1.2
字符变量的数据类型:char
定义一个字符变量:char p;用来接受一个字符:p='a'
指针变量数据类型:datatype*
定义一个接受整型变量的地址的指针变量:int *p; int a; p=&a;
定义一个接受小数变量的地址的指针变量:float* p;float a; p=&a;
定义一个接受字符变量的地址的指针变量:char*  p;char a; p=&a;
int *p1,*p2;正确写法
int* p1,p2;错误写法
#include <stdio.h>
void main()
{
    int a=5;
    int *p=&a;
    *p;
    printf("*p=%d p=%p\n",*p,p);
}
#include <stdio.h>
void main()
{
    int a[5]={1,2,3,4,5};
    int *p;
/*
    printf("a:%p &a[0]:%p\n",a,&a[0]);
    printf("a+1:%p &a[0]+1:%p &a[1]:%p\n",a+1,&a[0]+1,&a[1]);
*/
    printf("&a=%p a=%p &a+1=%p a+1=%p\n",&a,a,&a+1,a+1);
}
/*
1.a:表示数组的首元素的首地址。
  a+1:表示数组第二个元素的地址,+1,跨过指针所指向对象的一个长度,此处a作为指针所指向的对象是数组中的元素。
  %p:输出一个地址的格式
3.指针的含义包含2方面:1.它的值(地址)2.它指向的对象
2.&a:它的值是数组a的第一个元素的地址,但是作为一个指针,所指向的对象是整个数组,
  &a+1:指针&a跨过一个&a所指向的对象,即从数组开头指向了数组最后,跨过整个数组
4.指向一个数组的指针p,加*,即为*p,变为指向该数组中的元素的指针,再加*,即为**p,变成了所指向的这个元素的值
*/
#include <stdio.h>
void main()
{
    int a[5]={1,2,3,4,5};
    int (*p)[5]=&a;
    printf("%p\n",p);
}
/*
    int a[5];//定义了一个int型的数组a,里面含有五个int型的元素
    int *a[5];//定义了一个int*型的数组a,里面含有5个int*型的元素,指针数组——指针的数组
    int (*a)[5];//定义了一个指向含有5个int型元素的数组的指针a.数组指针——数组的指针.
    int *(*a)[5];//定义了一个指向含有5个int*型元素的数组的指针a.
*/
int a[5]={1,2,3,4,5};
a:1的地址
a+1:2的地址
&a:整个数组的地址==1的地址
&a+1:跳过该数组长度的地址
*a:1
*(a+1)=2
*&a<=>a
**&a<=>*a
int (*p)[3]=a
#include <stdio.h>
void main()
{
    int a[5]={1,2,3,4,5};
        int (*p)[3]=(int (*)[3])&a; 
    //左边:指针p指向含有3个int型元素的数组的指针
    //右边:指针&a是一个指向含有5个int型元素的数组的指针,强制转换成指向一个含有3个int型元素的数组的指针。
    printf("**p=%d,*p=%p,*p+1=%p,*(*p+1)=%d\n",**p,*p,*p+1,*(*p+1));
    printf("**p=%d **(p+1)=%d\n",**p,**(p+1));  
}

二维数组
定义一个二维数组:
datatype name[行数r][列数c];

例:int a[2][3];定义了一个二维数组,数组的名字为0;是一个2行3列的数组,数组中的每个元素都是int型
a[0][0]:第一行第一列的元素
a[1][1]:第二行第二列的元素

二维数组的行下标号从0开始到r-1结束,列下标号从0开始到c-1结束
二维数组在存储的时候是按行存储的,
二维数组的赋值:
1.初始化赋值:
2.先定义数组再赋值:

//求一个4行5列的整型数组的最大值,并输出他的行号和列号
#include<stdio.h>
int main()
{
    printf("请输入一个4行5列的整型数组:");
    int i,j,a[4][5],max = 0,c,d;
    for(i = 0;i < 4;i++)
    {
        for(j = 0;j < 5;j++)
        {
            scanf("%d",&a[i][j]);
            if(max < a[i][j])
            {
                max = a[i][j];
                c=i;
                d=j;
            }
        }
    }
    printf("max = %d %d %d\n",max,c,d);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,924评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,781评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,813评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,264评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,273评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,383评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,800评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,482评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,673评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,497评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,545评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,240评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,802评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,866评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,101评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,673评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,245评论 2 341

推荐阅读更多精彩内容