嵌入式第五天

复习:
数组:连续 类型相同 

初始化:
int a[5]={1,2,3};
int a[5]={0};
int a[]={1,23};

a[0]=90
0-4

scanf 
printf 

int a[5]={1,2,3,4,5}
a[5]//错
a[5]={1,2,3,4,5}//错 

冒泡排序:

最大值
int max=a[0]
int m=0;

字符数组:
‘a’
char a[10];

字符串数组:以\0结尾
char a[10]={'1','7','a','\0'}
char a[5]="love";
ch = getchar()-->scanf("%c",&ch);
putchar(ch);-->printf("%c",ch);

%s
scanf("%s",&a[0]);//-->a
 printf("%s",a);
 
 宏定义:
 #define N 50 
 int main()
 {
    int arr[N];
 }

 一、数组名代表数组首地址
 二、类型转换
 int a=3;
 float b=1.23;
 a+b
 当两个不同类型变量进行计算时 要转成同一个类型
 1.隐式转换
 转换规则 :级别从低到高 
 char->short->int->float->double 
    #include<stdio.h>
    int main()
    {
        int a=3;
        float b=1.23;
        float c = a+b;//将a转成float类型 由编译器gcc转换 
        printf("%f\n",c);
    }
2.强制类型转换  
 #include<stdio.h>
int main()
{
    int a=3;
    float b=1.23;
    int c = a+(int)b;//显示转换 (int)b 表示将b强制转成int类型
    printf("%d\n",c);
}
 
3.特殊情况
#include<stdio.h>
int main()
{
    float a = 1.99;
    int b;
    b = a;//赋值 计算机会默认将符号后边的类型转成符号左边的类型
    printf("%d\n",b);    
}
 
 float double 
 2*10^3  ==2000 ==2e3
 2*10^-5 ==0.00002  ==2e-5  
练习:一个水分子重量约3.0*10^-23g 1夸脱水大约950g 
编写程序 输入水的夸脱数 显示这么多水中含有多少个水分子

#include<stdio.h>
int main()
{
    double result;
    double a=3.0e-23;
    int x;
    printf("please input :\n");
    scanf("%d",&x);
    result = x*950/a;
    printf("%lf\n",result);    
}

三、输入输出函数 
1.输出 
(1)输出一个字符到屏幕 
    #include<stdio.h>
    int main()
    {
        char ch='a';
        putchar(ch);
        
        putchar('#');
        putchar('\n');
    }
(2)输出一个字符串
    #include<stdio.h>
    int main()
    {
        char a[]="love";
        printf("%s\n",a);
        puts(a);//自动换行 输出字符串到屏幕
    }
(3)printf格式输出
    整型 %d 
    字符型 %c 
    浮点型 %f 
    双精度 %lf 
    十六进制 %x
    以指数形式输出浮点数 %e 
    #include<stdio.h>
    int main()
    {
        int b=13;
        printf("%d %x\n",b,b);
        
        float f=0.00134;
        printf("%f\n",f);
        printf("%e\n",f);
    }

    #include<stdio.h>
    int main()
    {
        int h=2,m=34,n=6;
        printf("%02d:%02d:%02d\n",h,m,n);//可以指定输出几位
    }

    #include<stdio.h>
    int main()
    {
        float f=1.232;
            printf("%.2f\n",f);//.2f 表示小数点后保留2位数字
    }

2.输入
    (1)输入一个字符 
    char ch = getchar();
    (2)输入一个字符串 
    #include<stdio.h>
    int main()
    {
        char str[50];
        puts("input:");
        gets(str);//从键盘获取一个字符串 阻塞  
        //scanf("%s",str);  
        puts(str);
    }

    (3)scanf 格式化输入 
    格式同printf

四、字符串处理函数 
1.实现求字符串长度(有效字符的个数 不算\0)
#include<stdio.h>
int main()
{
    int i=0;
    char str[50];
    puts("please input a string:");
    gets(str);
    
    while(str[i]!='\0')
    {
        i++;
    }
    
    printf("the length is %d\n",i);
}

2.字符串拷贝  将字符串数组b中的字符串拷贝到字符数组a中 
    char a[100];
    char b[50]="love";
    #include<stdio.h>
    int main()
    {
        int i=0;
        char a[100];
        char b[50]="love";
        
        while(b[i]!='\0')
        {
            a[i] = b[i];
            i++;
        }
        a[i] = '\0';
        puts(a);
            
        
    }

3.实现字符串的连接 例如:
#include<stdio.h>
int main()
{
    char a[100]="good good study";
    char b[50]="day day up";
    int i=0;
    while(a[i]!='\0')
    {
        i++;
    }
    
    int j=0;
    while(b[j]!='\0')
    {
        a[i] = b[j];
        j++;
        i++;
    }
    
    a[i]='\0';
    
    puts(a);
    
}

4.系统中字符串处理函数
strlen strcpy strcat strcmp --》 必须加头文件#include<string.h>

(1)
strlen:计算字符串的长度 不包括'\0'
#include<stdio.h>
#include<string.h>
int main()
{
    char a[100]="good good study";
    char b[50]="day day up";
    
    printf("%d\n",strlen(b));    
}

注意: 
strlen sizeof()区别
#include<stdio.h>
#include<string.h>
int main()
{
    char b[50]="day day up";
    
    printf("strlen:%d\n",strlen(b));//10
    printf("sizeof:%d\n",sizeof(b));//50  sizeof(数组名) 测整个数组大小
    
    printf("%d\n",sizeof(b[0]));//1
    
}

(2)strcpy(str1,str2)//将str2字符串(含'\0')拷贝到str1空间里 str2 源字符串  str1目标位置
#include<stdio.h>
#include<string.h>
int main()
{
    char a[100]="good good study";
    char b[50]="day day up";
    
    strcpy(a,b);
    
    puts(a);//day day up    
}

(3)strcat(str1,str2)//将str2追加到str1
    #include<stdio.h>
    #include<string.h>
    int main()
    {
        char a[100]="good good study";
        char b[50]="day day up";
        strcat(a,b);
        
        puts(a);
        
    }

(4)strcmp(str1,str2) 
功能:将str1中字符与str2中字符逐个比较(按ascii大小) 直到遇到不相同的
字符或者遇到'\0'停止
返回值:
如果str1>str2 返回1 
如果str1==str2 返回0 
如果str1<str2 返回-1 

#include<stdio.h>
#include<string.h>
int main()
{
    char a[100]="abc";
    char b[50]="ag";
    char str[]="abcd";
    char str2[100]="abc";
    printf("%d\n",strcmp(a,b));
    printf("%d\n",strcmp(a,str));
}

练习:输入一个名字 判断这个人的名字是不是"xiaoming"
#include<stdio.h>
#include<string.h>
int main()
{
    char str[100];
    puts("please input string:");
    gets(str);
    if(strcmp(str,"xiaoming")==0)
    {
        puts("he is xiaoming");
    }
    else 
    {
        puts("he isn't xiaoming");
    }
}

五、随机函数
1.rand() 能产生随机数
需要添加头文件#include<stdlib.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int ret;
    while(1)
    {
         ret = rand()%10+1;
        printf("%d\n",ret);
        getchar();//等待键盘按键
    }
}

2.srand 
srand(seed)//seed 是rand的种子 用来初始化rand()起始值
#include<stdio.h>
#include<stdlib.h>
int main()
{
    srand(time(NULL));//一次  time(NULL)获取当前系统的时间 秒数 
    //1970.1.1.0.0.0到现在经历的秒数
    int ret;
    while(1)
    {
         ret = rand()%10+1;//rand的范围  
        printf("%d\n",ret);
        getchar();
    }    
}

练习:随机产生一个1-10之间的数 让对方猜5次 如果猜对了 就提示
“congratulations!” 如果猜错了 提示"bigger"或"small"
#include<stdio.h>
#include<stdlib.h>
int main()
{
    srand(time(NULL));//一次  time(NULL)获取当前系统的时间
    int ret,input,i;
     ret = rand()%10+1;//rand的范围  

    for(i=0;i<5;i++)
    {
        puts("please input :");
        scanf("%d",&input);
        if(input==ret)
        {
            puts("congratulations!");
            break;
        }
        else if(input>ret)
        {
            puts("bigger!");
        }
        else 
        {
            puts("smaller!");
        }
    }        
}

作业1:
从键盘输入一行字符 统计其中 英文字母 空格 数字 其他 的个数
*^?8 _agbc

作业2:
求出一句话中最长的单词的长度 并找到首字母在数组中的位置 
i am a student.  

作业3:实现35选7 
(1)系统随机产生1-35之间不重复的7个数
(2)用户键盘输入7个数
(3) 开奖
a 3571289
b 3876492

count==2
switch(count) 
{
    case 7:
        puts("500 0000!");
        break;
    case 6:
        puts("50 0000");
        break;    
    case 5:
        puts("5 0000");
        break;
    case 4:
        puts("5000");
        break;
    ...    
}
作业4.实现mystrcmp功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值