2.3~2.5

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33528164/article/details/87785498

2.1

/*解法一: 头文件*/
#include <stdio.h>
#include <limits.h>
#include <float.h>

int main(){
    /*signed type*/
    printf("signed char: max=%d, min=%d\n", SCHAR_MAX, SCHAR_MIN);
    printf("signed short int: max=%d, min=%d\n", SHRT_MAX, SHRT_MIN);
    printf("signed int: max=%d, min=%d\n", INT_MAX, INT_MIN);
    printf("signed long int: max=%ld, min=%ld\n", LONG_MAX, LONG_MIN);

    /*unsigned type*/
    printf("unsigned char: max=%u, min=%u\n", UCHAR_MAX, 0);
    printf("unsigned short int: max=%u, min=%u\n", USHRT_MAX, 0);
    printf("unsigned int: max=%u, min=%u\n", UINT_MAX, 0);
    printf("unsigned long int: max=%lu, min=%u\n", ULONG_MAX, 0);

}

/*解法二: 小技巧*/
#include <stdio.h>

int main(){
    /*signed type*/
    printf("singned char min = %d, max = %d\n", -1-(char)((unsigned char)~0 >> 1), \
    (char)((unsigned char)~0 >> 1));
    printf("signed short min = %d, max = %d\n", -1-(short)((unsigned short)~0 >>1), 
    (short)((unsigned short)~0 >>1));
    printf("singned int min = %d, max = %d\n", -1-(int)((unsigned int)~0 >> 1), 
    (int)((unsigned int)~0));
    printf("signed long min = %ld, max = %ld\n", -1-(long)((unsigned long)~0 >> 1), 
    (long)((unsigned long)~0 >> 1));

    /*unsigned type*/
    printf("unsigned char max = %u, min = %u\n", (unsigned char)~0, 0);
    printf("unsigned short max = %u, min = %u\n", (unsigned short)~0, 0);
    printf("unsigned int max = %u, min = %u\n", (unsigned int)~0, 0);
    printf("unsigned long max = %lu, min = %u\n", (unsigned long)~0, 0);
    return 0;
}

2.3

#include <stdio.h>

int htoi(char s[]){
    int result = 0;
    while(*s){
        switch(*s){
            case 'A':
            case 'a':
                result = result * 16 + 10;
                break;
            case 'B':
            case 'b':
                result = result * 16 + 11;
                break;
            case 'C':
            case 'c':
                result = result * 16 + 12;
                break;
            case 'D':
            case 'd':
                result = result * 16 + 13;
                break;
            case 'E':
            case 'e':
                result = result * 16 + 14;
                break;
            case 'F':
            case 'f':
                result = result * 16 + 15;
                break;
            case '0':
            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
            case '8':
            case '9':
                result = result * 16 + *s - '0';
            default:
                break;
        }
        s++;
    }
    return result;
}

int main(){
    char s[128];
    printf("Please a string of hex: ");
    scanf("%s", s);
    int result = htoi(s);
    printf("The result is %d\n", result);
    return 0;
}

2.4

#include <stdio.h>

void newSqueeze(char s1[], char s2[]){
    int i = 0, j = 0, k = 0;
    for(i = 0; s1[i]!='\0'; i++){
        for(j = 0; s2[j] != '\0' && s1[i] != s2[j]; j++);
        if(s2[j] == '\0'){
            s1[k++] = s1[i];
        }
    }
    s1[k] = '\0';
}


int main(){
    char s1[128];
    char s2[128];
    printf("Please input the first string: ");
    fgets(s1, 127, stdin);
    printf("Please input the second string: ");
    fgets(s2, 127, stdin);
    newSqueeze(s1, s2);
    printf("The deleted string: %s\n", s1);
    return 0;
}

2.5

#include <stdio.h>

int any(char s1[], char s2[]){
    int i = 0;
    int j = 0;
    for(i; s1[i] != '\0'; i++){
        for(j=0; s2[j]!='\0'; j++){
            if(s1[i] == s2[j]){
                return i;
            }
        }
    }
    return -1;
}

int main(){
    char s1[128];
    char s2[128];
    printf("Please input the first string: ");
    fgets(s1, 127, stdin);
    printf("Please input the second string: ");
    fgets(s2, 127, stdin);
    int pos = any(s1, s2);
    printf("The first character of s2 in the location of s1 \
is %d\n", pos+1);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_33528164/article/details/87785498
2.3
2.5