有人可以看看这个草率的代码,并向我解释为什么它不起作用.我是否正确包装和拆包?(这个实验的目的是使用位移和屏蔽来打包日期.例如31/12/99的控制台输入将被"或"在一起然后"取消",这是我的代码试图做的.谢谢.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define DAY_MASK 0x3e0
#define MONTH_MASK 0xc00
#define YEAR_MASK (~0x3180)
void hr()
{
printf("-----------------------------------------------\n");
}
void fields()
{
printf(" Binary\t\tDTG\t\tBase 10\n");
}
void prnFields(unsigned int *day, unsigned int *month, unsigned int *year)
{
printBits(day);
printf("\tDay\t\t%u\n", day);
printBits(month);
printf("\tMonth\t\t%u\n", month);
printBits(year);
printf("\tYear\t\t%u\n", year);
}
int main()
{
unsigned int day;
unsigned int month;
unsigned int year;
unsigned int packed;
printf("Enter numeric Day\t:");
scanf("%d", &day);
printf("Enter numeric Month\t:");
scanf("%d", &month);
printf("Enter two digit Year\t:");
scanf("%d", &year); …Run Code Online (Sandbox Code Playgroud) 下面的引号是我的实际作业,下面是我当前的代码.有人能指出我正确的方向.
编写一个名为multiplyEvens的递归方法,它返回前n个偶数整数的乘积.例如,multiplyEvens(1)返回2,multiplyEvens(4)返回384(因为2*4*6*8 = 384).如果传递的值小于1,则抛出IllegalArgumentException.
private static int multiplyEvens(int n)
{
if(n%2 == 0)
{
System.out.println(n*n);
return multiplyEvens(n*n);
// I'm lost
}
System.out.println();
return n;
}
Run Code Online (Sandbox Code Playgroud)