C和指针课后习题(第五章)

来源:互联网 发布:卷皮网怎样跳转到淘宝 编辑:程序博客网 时间:2024/05/22 20:21

5.1

#include <stdio.h>#include <stdlib.h>#include <ctype.h>int main(){char ch;while(scanf("%c",&ch)){if (islower(ch)){putchar(toupper(ch));}elseputchar(ch);}system("pause");return 0;}

5.2

#include <stdio.h>#include <stdlib.h>#include <ctype.h>int main(){char ch;while(scanf("%c",&ch)){if (isalpha(ch)){if (isupper(ch)){ch += 13;if(ch>90)ch -= 26;}else{ch -= 13;if(ch<97)ch += 26;}putchar(ch);}elseputchar(ch);}system("pause");return 0;}

5.3

#include <stdio.h>#include <stdlib.h>#include <string.h>long long number;char *string_bits(long long n){const int bits = sizeof(int)*8;#if 0printf("sizeof(bits)=%d\n",bits);#endifint i,j=0;char *string = (char *)malloc(bits);memset(string,'\0',sizeof(char)*(bits));for(i=bits-1; i>=0; i--){//printf("%c", (n & (1<<i)) ?'1':'0');string[j++] = (n & (1<<i)) ?'1':'0';}char string_of_bit[33];for (int j=0;j<32;j++){string_of_bit[j] = string[j];}string_of_bit[32] = '\0';#if 1printf("string_of_bit = \n%s\n",string_of_bit);#endifreturn string_of_bit;}unsigned int reverse_bits(unsigned int value){int num = 0;for (int i=strlen(string_bits(number))-1;i>=0;i--){num *= 2;num += string_bits(number)[i] - '0';}return num;}int main(){printf("please input a number:\n");scanf("%lld",&number);printf("%s\n",string_bits(number));printf("the number is %lld\n",reverse_bits(number));system("pause");return 0;}

5.4

#include <stdio.h>#include <stdlib.h>//#define NDEBUG#include <assert.h>#include <string.h>#define TRUE 1#define FALSE 0void set_bit(char bit_array[],unsigned bit_number);void clear_bit(char bit_array[],unsigned bit_number);void assign_bit(char bit_array[],unsigned bit_number,int value);int test_bit(char bit_array[],unsigned bit_number);void set_bit(char bit_array[],unsigned bit_number){assert(bit_number>=sizeof(bit_array)||bit_number<0);bit_array[bit_number-1] = 1;printf("bit_array is \n%s\n",bit_array);}void clear_bit(char bit_array[],unsigned bit_number){assert(bit_number>=sizeof(bit_array)||bit_number<0);bit_array[bit_number-1] = 0;printf("bit_array is \n%s\n",bit_array);}void assign_bit(char bit_array[],unsigned bit_number,int value){assert(bit_number>=sizeof(bit_array)||bit_number<0);if (0 == value){bit_array[bit_number-1] = 0;}elsebit_array[bit_number-1] = 1;printf("bit_array is \n%s\n",bit_array);}int test_bit(char bit_array[],unsigned bit_number){assert(bit_number>=sizeof(bit_array)||bit_number<0);if (bit_number!=0){return TRUE;}elsereturn FALSE;}char *string_bits(long long n){#pragma pack(8)const int bits = sizeof(int)*8;#if 0printf("sizeof(bits)=%d\n",bits);#endifint i,j=0;char *string = (char *)malloc(bits);memset(string,'\0',sizeof(char)*(bits));for(i=bits-1; i>=0; i--){//printf("%c", (n & (1<<i)) ?'1':'0');string[j++] = (n & (1<<i)) ?'1':'0';}char string_of_bit[33];for (int j=0;j<32;j++){string_of_bit[j] = string[j];}string_of_bit[32] = '\0';#if 0printf("string_of_bit = \n%s\n",string_of_bit);#endifreturn string_of_bit;}int main(){int number,bit_number,value;char *bit_array = (char *)malloc(sizeof(char));printf("please input a number:\n");int i,j=0;scanf("%d",&number);for (i=0;i<32;i++){bit_array = (char *)realloc(bit_array,i+1);bit_array[i] = string_bits(number)[i];}printf("the original bit_array is %s\n",bit_array);printf("after set_bit:\n");set_bit(bit_array,10);printf("after clear_bit:\n");clear_bit(bit_array,31);printf("after assign_bit:\n");assign_bit(bit_array,31,0);printf("the result is %d\n",test_bit(bit_array,32));system("pause");return 0;}


0 0
原创粉丝点击