c/c++练习–19

这是一系列C/C++编程练习,包括取出16位二进制数的奇数位,获取整数的后四位,位运算操作,如按位与、或、异或和取反,以及使用malloc和calloc动态分配内存。还有针对数组和结构体的内存管理示例,以及商品信息的动态存储和不带参数的宏定义应用来计算平行四边形面积。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c/c++练习–19


  • 习题来源:C语言经典编程282例

181.取出给定16位二进制数的奇数位

#include <stdio.h>
#include <stdlib.h>

int main(void){
    int a=0,b=1,sum=0;

    printf("please input a number:\n");
    scanf("%d",&a);
    for(int i=0;i<8;i++){
        sum |= a&b;
        b<<=2;
    }
    printf("%d",sum);
    return(EXIT_SUCCESS);
}                                           

182.取一个整数的后四位

在屏幕上输入一个八进制数,实现输出其后四位对应的数。

#include <stdio.h>
#include <stdlib.h>

int main(void){
    unsigned int    a=0,b=1;

    printf("please input a base-8 number:\n");
    scanf("%o",&a);
    b = a & 15;
    printf("%d",b);
    return(EXIT_SUCCESS);
}                                                   

183.普通位运算

当a=2,b=4,c=6,d=8时求a&c,b|d,a^d,~a的值。

#include <stdio.h>
#include <stdlib.h>

int main(void){
    int a=2,b=4,c=6,d=8;
    printf("%d %d %d %d\n",a&c,b|d,a^d,~a);
    return(EXIT_SUCCESS);
}                                           

184.整数与0异或

#include <stdio.h>
#include <stdlib.h>

int main(void){
    int a=2;
    printf("%d \n",a^0);
    return(EXIT_SUCCESS);
}                                               

185.使用malloc函数分配内存

创建一个结构体类型指针,其中包含两个成员,一个是整数,另一个是结构体指针,使用malloc函数分配一个结构体的内存空间,然后给这两个成员赋值,并显示出来。

#include <stdio.h>
#include <stdlib.h>

typedef struct node{
    int num;
    struct node *next;
}*Nodedef;

int main(void){
    Nodedef head;
    head = (Nodedef)malloc(sizeof(struct node));
    head->num=1;
    head->next = NULL;
    printf("%d %p\n",head->num,head->next);
    free(head);
    return(EXIT_SUCCESS);
}               

186.使用calloc函数分配内存

创建一个结构体类型指针,其中包含两个成员,一个是整数,另一个是结构体指针,使用malloc函数分配一个结构体的内存空间,然后给这两个成员赋值,并显示出来。

#include <stdio.h>
#include <stdlib.h>

typedef struct node{
    int num;
    struct node *next;
}*Nodedef;

int main(void){
    Nodedef head;
    head = (Nodedef)calloc(1,sizeof(struct node));
    head->num=1;
    head->next = NULL;
    printf("%d %p\n",head->num,head->next);
    free(head);
    return(EXIT_SUCCESS);
}               

187.为具有3个数组元素的数据分配内存

#include <stdio.h>
#include <stdlib.h>

int main(void){
    int *head;
    head = (int *)malloc(3*sizeof(int));
    head[0]=1;
    head[1]=1;
    head[2]=1;
    printf("%d %d   %d\n",*head,  head[1], head[2]);
    free(head);
    return(EXIT_SUCCESS);
}                                           

188.为二位数组动态分配内存

#include <stdio.h>
#include <stdlib.h>

int main(void){
    int **head;
    head = (int **)malloc(3*sizeof(int* [3]));
    for(int i=0;i<3;i++)
        head[i] = (int *)malloc(3*sizeof(int));
    for (int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            head[i][j] = i*3+j;
            printf("%d\t",head[i][j]);
        }
        printf("\n");
    }
    for(int i=0;i<3;i++)free(head[i]);
    free(head);
    return(EXIT_SUCCESS);
}

189.商品信息的动态存放

#include <stdio.h>
#include <stdlib.h>

struct goods{
    char    *name;
    int num;
    int mount;
    float   price;  
};

int main(void){
    struct goods *head;
    head = (struct goods *)malloc(sizeof(struct goods));
    head->name = "apple";
    head->num = 101;
    head->mount = 100;
    head->price = 2.01;

    printf("%s--%d--%d--%f\n",head->name,head->num,head->mount,head->price);

    free(head);
    return(EXIT_SUCCESS);
}                                               

190.用不带参数的宏定义求平行四边形面积

利用不带参数的宏定义求平行四边形的面积,平行四边形的面积=底边*高,将平行四边形

#include <stdio.h>
#include <stdlib.h>

#define LENGTH  3
#define HIGN        4

int main(void){
    printf("%d\n",LENGTH*HIGN);

    return(EXIT_SUCCESS);
}                                                   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值