博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
联合枚举
阅读量:5114 次
发布时间:2019-06-13

本文共 6984 字,大约阅读时间需要 23 分钟。

 

 

//union

//联合体中的成员变量共用的是同一块内存

//union Unit

//{

//    char ch[9];

//    short a;

//    int amount;

//    float price;

//    long number;

//};

//

//

struct Goods{

    char name[20];

    float price;

    union Unit

    {

        int amount;

        float number;

    }num;

};

//

//int main(int argc, const char * argv[]) {

//    

//    union Unit unit;

//    //unit.price =15.8;

//    //unit.amount = 12;

//    

//    //printf("%d %.2f\n",unit.amount, unit.price);

//    

//    //printf("%p %p %p\n",&unit.amount, &unit.price,&unit.number);

//    

//    printf("%ld\n", sizeof(union Unit));

//    

//    return 0;

//}

 

//定义联合体,初始化只能初始化第一个成员变量

//typedef union Book{

//    float price;

//    char name[30];

//}Book;

//

//int main(int argc,const char *argv[])

//{

//    Book book={12.56};

//    

//    printf("name:%s price:%.2f\n", book.name, book.price);

//    

//    return 0;

//}

 

 

//枚举类型(枚举常量)

//enum

//枚举常量中的每个成员都占用4字节空间

//enum bool{

//    FALSE,

//    TRUE

//};

//

//

//#include <stdbool.h>

//

//int main(int argc,const char *argv[])

//{

//    

//    printf("%d\n",FALSE);

//    printf("%d\n",TRUE);

//    printf("%ld\n", sizeof(FALSE));

//    

//    enum bool a;

//    a = FALSE;

//    

//    return 0;

//}

 

//枚举类型的变量占用4字节空间

//typedef enum Week{

//    MON=1,

//    TUE,

//    WED,

//    THU,

//    FRI,

//    SAT,

//    SUN

//}Week;

//

//int main(int argc,const char *argv[])

//{

//    //printf("%d %d\n", MON,SUN);

//    enum Week day;

//    scanf("%d", &day);

//    switch (day) {

//        case MON:

//            printf("星期一 \n");

//            break;

//        case TUE:

//            printf("星期二 \n");

//            break;

//        case WED:

//            printf("星期三 \n");

//            break;

//        case THU:

//            printf("星期四 \n");

//            break;

//        case FRI:

//            printf("星期五 \n");

//            break;

//        case SAT:

//            printf("星期六 \n");

//            break;

//        case SUN:

//            printf("星期日 \n");

//            break;

//        default:

//            break;

//    }

//    //printf("%ld\n", sizeof(day));

//    

//    return 0;

//}

 

 

//宏定义

//宏定义只是简单的替换,不做类型检查

//无参数的宏

//定义宏的时候,不要再宏语句后加;

#define PRINT printf("hello world\n");printf("welcome\n")

#define PI 3.14

#define LEN 100

 

//int main(int argc,const char *argv[])

//{

//

//    PRINT;

//    printf("%.2f\n", PI);

//

//    return 0;

//}

 

//带参数的宏

//确保宏展开之后对我们的程序没有影响

 

//#define max(a,b) ((a)>(b)?(a):(b))

//#define max(a,b) a>b?a:b

//#define MUL(a,b) a*b//错误

//#define MUL(a,b) ((a)*(b))

//

//int main(int argc, const char *argv[])

//{

//    //printf("max = %d\n", max(5, 3));

//    //printf("max = %d\n", ((5)>(3)?(5):(3)));

//    //printf("max = %d\n",max(5, 3));

//    //printf("max = %d\n", max(3+5, 5-1));

//    //printf("max = %d\n", 3+5>5-1?3+5:5-1);

//    //int a=10,b=20;

//    

//    //printf("max = %d\n",max(a*b, a+b));//a*b>a+b?a*b:a+b;

//    printf("%d\n", MUL(3+5, 5+6)); //((3+5)*(5+6));

//    

//    

//    

//    return 0;

//}

//两行代码连接成一行 用'\'

#define max(a,b,c,max) {\

if(a>b)\

{\

   if(a>c)\

    {\

        max = a;\

    }\

    else\

    {\

        max = c;\

    }\

}\

else\

{   \

    if(b>c)\

    {\

       max = b;\

    }\

    else\

    {\

        max = c;\

    }\

}\

}

 

//int main(int argc,const char *argv[])

//{

//    int maxn;

//    max(3, 10,\

//        8,maxn);

//    printf("%d\n",maxn);

//#undef LEN//提前取消宏定义

//    //printf("%d\n", LEN);

//

//    return 0;

//}

 

#define die() while(1);

//返回在两字符串中第一个相同的子串(大于1个字符),并将子串输出

//

//

//比如:

//输入

//adbAFEHHFS

//acwfagAFEf

//输出为

//AFE

//

//输入

//qfdgJKlin

//qdfgJKwfo

//输出为

//gJK

//#include <string.h>

//

//int main(int argc,const char *argv[])

//{

//    char str1[100]={};

//    char str2[100]={};

//    scanf("%s%s",str1,str2);

//    char substr[3]={};

//    int len2 = (int)strlen(str2);

//    char *pstr = NULL;

//    char *pstr2 = str2;

//    for (int i=0; i<len2-1; i++) {

//        strncpy(substr, pstr2, 2);

//        pstr = strstr(str1, substr);

//        if (pstr) {

//            break;

//        }

//        pstr2++;

//    }

//    

//    if (pstr) {

//        int i=2;

//        while (*(pstr+i)==*(pstr2+i)) {

//            i++;

//        }

//        *(pstr+i)='\0';

//        printf("%s\n",pstr);

//    }

//

//    return 0;

//}

 

//输入两个字符串,以第二个字符串整体作为分割条件把第一个字符串进行分割,然后输出分割之后的单词。

//比如:

//输入:

//I:am:Optimus:Prime!

//:

//输出:

//I

//am

//Optimus

//Prime!

//输入:

//Hi#@welcome#@to#@qianfeng#@

//#@

//输出:

//Hi

//welcome

//to

//qianfeng

//#include <string.h>

//

//int main(int argc,const char *argv[])

//{

//    char str[100]={};

//    char substr[50]={};

//    

//    scanf("%s%s", str,substr);

//    

//    char *p,*q;

//    p = q = str;

//    int len = (int)strlen(substr);

//    while ((p = strstr(p,substr))) {

//        *p = '\0';

//        printf("%s\n",q);

//        p+=len;

//        q = p;

//    }

//    if (*q) {

//        printf("%s\n",q);

//    }

//

//    return 0;

//}

 

//在给定的任意字符串中查找指定的大写字符,将其删掉,然后将删除后的字符串输出

//

//

//输入

//772WdfWFDGWH3r

//D

//输出为

//772WdfWFGWH3r

//#include <string.h>

//

//int main(int argc,const char *argv[])

//{

//    char str[100]={};

//    char ch;

//    scanf("%s %c",str,&ch);

//    char *pstr = str;

//    while (*pstr) {

//        if (*pstr==ch) {

//            int len = (int)strlen(pstr+1);

//            memmove(pstr, pstr+1,len+1);

//            pstr--;//

//        }

//        pstr++;

//    }

//    printf("%s\n",str);

//    

//    return 0;

//}

 

 

 

//字符串逆序

 

//#include <string.h>

//

//int main(int argc,const char *argv[])

//{

//    char str[100]={};

//    

//    scanf("%s",str);

//    int len = (int)strlen(str);

//    for (int i=0; i<len/2; i++) {

//        char temp = str[i];

//        str[i]=str[len-i-1];

//        str[len-i-1]=temp;

//    }

//    printf("%s\n",str);

//    

//    return 0;

//}

 

//输入一段字符串(不超过10个单词),没有空格外的标点符号,将每个单词逆序输出

//比如:

//输入 this is a cat

//输出:

//cat a is this

//

//输入 who are you

//输出:

//you are who

//#include <string.h>

//

//int main(int argc,const char *argv[])

//{

//    char str[1000]={};

//    char *p[10]={NULL};

//    scanf("%[^\n]",str);

//    //printf("%s\n",str);

//    char *pstr = str;

//    int cnt=0;

//    while ((pstr = strtok(pstr," "))) {

//        p[cnt++]=pstr;

//        pstr = NULL;

//    }

//    

    memmove(p, &p[1], (cnt-1)*8);

    cnt--;

//    int i;

//    for (i=cnt-1; i>=0; i--) {

//        printf("%s\n",p[i]);

//    }

//    

//    

//    return 0;

//}

 

//从键盘输入个数不定的字符串(不超过10个),把这些字符串放入一个数组中,然后输入两个数n和m(n 是数组的下标,m是从下标n开始数m个字符串),删除从下标n开始数m个字符串;后面没有删除的字符串的前移,输出删除后数组中的字符串

//比如:

//输入:

//I am Optimus Prime lucy

//0 2

//输出为

//Optimus

//Prime

//lucy

//输入:

//Hi welcome to qianfeng lilei

//2 3

//输出为

//Hi

//welcome

//输入

//abc def ghi jkl heihei

//0 3

//输出为

//jkl

//heihei

//#include <stdlib.h>

//

//int main(int argc,const char *argv[])

//{

//    char *p[10]={NULL};

//    int cnt=0;

//    for (int i=0; i<10; i++) {

//        p[i]=(char *)malloc(100*sizeof(char));

//        if (!p[i]) {

//            return -1;

//        }

//        scanf("%s",p[i]);

//        cnt++;

//        if (getchar()=='\n') {

//            break;

//        }

//    }

//    int n,m;

//    scanf("%d%d", &n,&m);

//    if (n+m>cnt) {

//        return -1;

//    }

//    for (int i=n; i<m+n; i++) {

//        free(p[i]);

//        p[i]=NULL;

//    }

//    

//    for (int i=0; i<cnt-m; i++) {

//        if (!p[i]) {

//            for (int j=i; j<cnt; j++) {

//                p[j]=p[j+m];

//                p[j+m]=NULL;

//            }

//            break;

//        }

//    }

//    

//    

//    for (int i=0; i<cnt-m; i++) {

//        //if (p[i]) {

//            printf("%s\n",p[i]);

//        //}

//    }

//

//    return 0;

//}

 

//输入两个字符串,然后再输入两个数字n 和 m,将第一个字符串从第n(从0开始数)个字符开始,数m个字符(包含第n个)替换为第二个字符串;(注意不要超过字符串的范围)

//比如:

//输入:

//12345 abcde    123456789 abcde  1 7  (p+n+m) (p+n+len)

//1 2

//输出为1abcde45

//输入:

//12345 abcde

//0

//4

//输出为abcde5

//输入

//Iloveyou hate

//1

//4

//输出为Ihateyou

#include <string.h>

 

int main(int argc,const char *argv[])

{

    char str1[100]={};

    char str2[100]={};

    int n,m;

    scanf("%s%s%d%d",str1,str2,&n,&m);

    

    int len1= (int)strlen(str1);

    if (n+m>len1) {

        return -1;

    }

    int len2 = (int)strlen(str2);

    memmove(str1+n+len2, str1+n+m, len1-n-m+1);

    memcpy(str1+n, str2, len2);

    printf("%s\n",str1);

    

    

    return 0;

}

 

转载于:https://www.cnblogs.com/-yun/p/4275982.html

你可能感兴趣的文章
手机抓包的两种方法:wireshark抓包和fiddler抓包
查看>>
7.1.21 jQuery 的 Post请求
查看>>
Go---语言变量
查看>>
Liunx系统命令sed的使用
查看>>
springboot+dubbo
查看>>
Java技术面试汇总
查看>>
Fastify 系列教程三 (验证、序列化和生命周期)
查看>>
Asp.net MVC Linq to SQL Model verification
查看>>
JDK5.0新特性系列---11.5.4线程 同步装置之Exchanger
查看>>
Java性能优化权威指南-读书笔记(一)-操作系统性能监控工具
查看>>
每天一个linux命令(50):crontab命令
查看>>
在EF6.0中打印数据库操作日志
查看>>
dedecms 自定义表单提交后的跳转链接修改方法
查看>>
Docker容器服务发现方案
查看>>
舍友成后妈
查看>>
C++中引用与指针的区别(详细介绍)
查看>>
001_阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)
查看>>
meta通用集合版
查看>>
c#利用反射+特性实现简单的实体映射数据库操作类(表与类的映射)
查看>>
LeetCode 151:Reverse Words in a String
查看>>