C语言100题
考研初试C语言复习 时间:2021.10.3
前言
。
提示:以下是本篇文章正文内容,下面案例可供参考
第一题、
1.题目描述
宏#define命令练习。
2.代码
第一个:
#include<stdio.h>
#define TRUE 1
#define FALSE 0
#define SQ(x) (x)*(x)
int main()
{
int num;
int again = 1;
printf("如果值小于 50 程序将终止。\n");
while (again)
{
printf("\n请输入数字:");
scanf("%d", &num);
printf("该数字的平方为 %d \n", SQ(num));
if (num >= 50)
again = TRUE;
else
again = FALSE;
}
return 0;
}
第二个:
#include<stdio.h>
#define exchange(a,b) { int t;t=a;a=b;b=t;}//注意放在一行里
int main()
{
int x=10;
int y=20;
printf("x=%d; y=%d\n",x,y);
exchange(x,y);
printf("x=%d; y=%d\n",x,y);
return 0;
}
第3个:
#define LAG >
#define SMA <
#define EQ ==
#include <stdio.h>
int main()
{
int i,j;
printf("请输入两个数字:\n");
scanf("%d %d",&i,&j);
if(i LAG j)
printf("%d 大于 %d \n",i,j);
else if(i EQ j)
printf("%d 等于 %d \n",i,j);
else if(i SMA j)
printf("%d 小于 %d \n",i,j);
else
printf("没有值。\n");
return 0;
}
题目思考:简单的#define运用,包括定义变量和定义函数及定义符号
第二题、
1.题目描述
#if #ifdef和#ifndef的综合应用。
2.代码
#include<stdio.h>
#define MAX
#define MAXIMUM(x,y)(x>y)?x:y
#define MINIMUM(x,y) (x>y)?y:x
int main()
{
int a=10,b=20;
#ifdef MAX
printf("更大的数字是 %d\n",MAXIMUM(a,b));
#else
printf("更小的数字是 %d\n",MINIMUM(a,b));
#endif
#ifndef MIN
printf("更小的数字是 %d\n",MINIMUM(a,b));
#else
printf("更大的数字是 %d\n",MAXIMUM(a,b));
#endif
#undef MAX
#ifdef MAX
printf("更大的数字是 %d\n",MAXIMUM(a,b));
#else
printf("更小的数字是 %d\n",MINIMUM(a,b));
#endif
#define MIN
#ifndef MIN
printf("更小的数字是 %d\n",MINIMUM(a,b));
#else
printf("更大的数字是 %d\n",MAXIMUM(a,b));
#endif
return 0;
}
题目思考:
同时#define还可以进行头文件的创造和输入输出,同上
第三题、
1.题目描述
学习使用按位与 &
学习使用按位或 |
学习使用按位异或 ^
2.代码
#include <stdio.h>
//0&0 = 0;0&1 = 0; 1&0 = 0;1&1 = 1
int main()
{
int a, b;
a = 077;//a为8进制,转换为2进制是111111
//3转换为2进制是011
b = a & 3;
/*
* 1111111
* & 0000011
* = 0000011 =3 (10进制)
*/
printf("a & b(decimal) 为 %d \n", b);
b &= 7;//7转换为2进制是0111
printf("a & b(decimal) 为 %d \n", b);
b = a | 3;//0|0=0; 0|1=1; 1|0=1; 1|1=1
printf("b 的值为 %d \n", b);
b |= 7;
printf("b 的值为 %d \n", b);
b = a ^ 3;//0^0=0; 0^1=1; 1^0=1; 1^1=0
printf("b 的值为 %d \n", b);
b ^= 7;
printf("b 的值为 %d \n", b);
return 0;
}
题目思考:
学习使用按位与 &: 先转换为2进制,在对齐按照公式: 0&0 = 0;0&1 = 0; 1&0 = 0;1&1 = 1。后面在转换为其他进制.
学习使用按位或 | :同上,0|0=0; 0|1=1; 1|0=1; 1|1=1
学习使用按位异或 ^ : 同上,0^0=0; 0^1=1; 1^0=1; 1^1=0
第四题、
1.题目描述
取一个整数 a 从右端开始的 4~7 位。(练习按位运算符的题目)
2.代码
#include <stdio.h>
int main() {
unsigned a, b, c, d;
printf("请输入整数:\n");
scanf("%o", &a);
b = a >> 4;
c = ~(~0 << 4);
d = b & c;
printf("%o\n%o\n", a, d);
return 0;
}
题目思考:
(1)先使 a 右移 4 位。
(2)设置一个低 4 位全为 1,其余全为 0 的数,可用(0<<4)
(3)将上面二者进行 & 运算。
第五题、
1.题目描述
2.代码
#include <stdio.h>
int main()
{
int a, b;
a = 234;
b = ~a;
printf("a 的按位取反值为(十进制) %d \n", b);
a = ~a;
printf("a 的按位取反值为(十六进制) %x \n", a);
return 0;
}
题目思考: 反转了捏
总结
:补国庆的前期没写的 ,终于写了一半,做完这个继续leetcode.