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);
}