c语言练习题
来源:互联网 发布:经典网络歌曲试听 编辑:程序博客网 时间:2024/04/28 16:24
int printf_er(int a){
int sum=0,m=1,i=0;
int b[32]={};
for (a; a; a/=2) {
if (a%2==0) {
b[i]=0;
}else{
b[i]=1;
}
i++;
}
for (int j=0; j<=i; j++) {
if (j%2==0) {
int temp=b[j];
b[j]=b[j+1];
b[j+1]=temp;
}
}
for (int j=0; j<=i; j++) {
int c[i];
c[j]=b[j]*m;
m*=2;
sum+=c[j];
}
return sum;
}
int max_value(int a,int b,int c){
return (((a>b)?a:b)>c)?((a>b)?a:b):c;
}
#define Max(a,b,c)max_value((a),(b),(c))
#define Hu(x)printf_er((x))
int main(int argc, const char * argv[])
{
// 1、定义一个宏,求三个数的最大值
printf("%d\n", Max(45,9,3));
// 2、定义一个宏,来实现一个整数奇偶比特位的交换。例如:6奇偶比特位交换后结果是9。如何用宏来实现?
printf("%d",Hu(8));
return 0;
}
typedef char (*pfun)(char);
void getValue(char str[],long strlen ,pfun p){
for (int i=0; i<strlen; i++) {
if (i==0||str[i-1]==' ') {
str[i]= p(str[i]);
}
}
}
char putatoA(char a){
return a-32;
}
////////////////////////////////////
int beivalue(int a,int b){
int j=0;
for ( j=(a>b?a:b); j<=a*b; j++) {
if (j%a==0&&j%b==0) {
break;
}
}
return j;
}
int yuevalue(int a,int b){
return a*b/beivalue(a, b);
}
int sumvalue(int a,int b){
return a+b;
}
int chavalue(int a,int b){
return a-b;
}
typedef int (*Pfun)(int,int);
typedef struct pfunl
{
char name;
Pfun p;
}FUN_POIN;
/////////////////////////////////////
typedef float (*Pun)(float,float);
typedef struct nameFunctionPair{
char name[10];
Pun q;
}NaFun;
float maxvalue(float a,float b){
return (a>b)?a:b;
}
float minvalue(float a,float b){
return (a<b)?a:b;
}
float avgvalue(float a,float b){
return (a+b)/2;
}
int main(int argc, const char * argv[])
{
//1、输入一句英文句子,将其中所有单词首字符转换成大写,用回调函数实现。(修改单词功能写成回调函数)。
char str[]="dhuf fsh iujwe fw rtgr df drgfd rrr";
getValue(str, strlen(str), putatoA);
printf("%s\n",str);
// 2、动态函数调用实现下列操作,输入2个数以及操作符计算结果。
// @求最大公约数 $求最小公倍数
// - 求差 + 求和 等等
int a=0,b=0;
char c;
printf("第二题\n请输入两个数和操作符:");
scanf ("%d,%c,%d",&a,&c,&b);
FUN_POIN arr[4] = {'@',yuevalue,'$',beivalue,'+',sumvalue,'-',chavalue};
for (int i=0;i<4;i++){
if(arr[i].name==c){
printf("%d\n",arr[i].p(a,b));
}
}
// 使用函数名的字符串调用函数 函数名 函数指针
// “max” maxValue
// “min” minValue
// “avg” avgValue
float m=0,n=0;
printf("第三题\n请输入两个数:");
scanf("%f%f",&m,&n);
NaFun func[3]={"max",maxvalue,"min",minvalue,"avg",avgvalue};
char strs[10] = {0};
printf("请输入操作:");
scanf("%s", strs);
for (int i = 0; i < 3; i++) {
if (strcmp(strs, func[i].name) == 0) {
printf("结果为%.2f",func[i].q(m,n));
break;
}
}
return 0;
}
- C 语言练习题
- c语言循环练习题
- C语言程序练习题
- c语言练习题
- c语言练习题2
- c语言练习题1
- c语言练习题3
- c语言练习题
- c语言练习题
- c语言练习题
- c语言练习题
- c语言小练习题
- c语言练习题(二)
- C语言练习题 1
- C 语言练习题总结
- C语言练习题---strlen()
- C语言 基础练习题
- C语言练习题
- 2013年北京师范大学新生程序设计竞赛网络赛--A. 卡路里
- 关于INT转型和合并
- 数字的世界——好神奇
- const、volatile、mutable详解
- SAP query生成的程序名
- c语言练习题
- 2013.12.29
- ZOJ 3745 Salary Increasing
- N-Queens II
- 卓金武——从数学建模到MATLAB
- 2013年北京师范大学新生程序设计竞赛网络赛--B. 阿基米德螺线
- ZOJ-2736
- 文件操作-标准I/O操作--文件结束标识EOF
- 关于百度地图的导入包的问题!