版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}