- /*
- 屏幕上输入一个数,实现使用其低四位翻转,即0变1,1变0,并输出得到的结果。
- */
- #include <stdio.h>
- int main(int argc, const char * argv[]) {
- int len;
- int n;
- int b;
- printf("请输入一个整数");
- scanf("%d",&n);
-
- len=sizeof(n)*8;
- for(int i=0;i<len-4;i++)
- {
- b=(n>>(len-1-i))&1;
- printf("%d",b);
- }
- for (int i=0; i<4; i++) {
- int c=(n>>i)&1;
- printf("%d",c);
- }
-
- return 0;
- }
复制代码- //将正数转换成二进制数
- #include <stdio.h>
- int main(int argc, const char * argv[]) {
- int len;
- int n;
- int b;
- printf("请输入一个正整数");
- scanf("%d",&n);
-
- len=sizeof(n)*8;
- for(int i=0;i<len;i++)
- {
- b=(n>>(len-1-i))&1;
- printf("%d",b);
- }
- return 0;
- }
复制代码- /*
- 编写一个移位函数,使移位函数既能循环左移又能循环右移。参数n大于0时便是左移,参数n小于0时便是右移
-
- 解释:循环右移:把右边移出的位放到左边移入的位
- 如: 1101 0101 1100 循环左移四位 0101 1100 1101
-
- 循环左移:把左边移出的位放到右边移入的位
- */
- #include <stdio.h>
- int main(int argc, const char * argv[]) {
- int n;
- int num;
- int len;
- printf("请输入一个整数与参数n,参数n大于0时便是左移,参数n小于0时便是右移(中间用逗号隔开)");
- scanf("%d,%d",&num,&n);
- len=sizeof(num)*8;
-
- if (n>0) {
- //左移,即先顺序输出后len-n位再顺序输出前n位
- for (int i=0;i<len-n;i++) {
- int c=(num>>(len-n-1-i))&1;
- printf("%d",c);
- }
- for (int j=0; j<n; j++) {
- int d=(num>>(len-1-j))&1;
- printf("%d",d);
-
- }
-
- }
- if (n<0)
- { //右移,即先顺序输出后n位,再顺序输出前len-n位
- for (int i=0;i<n;i++) {
- int c=(num>>(n-1-i))&1;
- printf("%d",c);
- }
- for (int j=0; j<len-n; j++) {
- int d=(num>>(len-1-j))&1;
- printf("%d",d);
- }
-
- if(n==0)
- printf("输入错误请重新运行");
-
-
- return 0;
- }
- }
复制代码
- /*
- 题目:
- 编写一个函数int pieAdd(int n),计算1!+2!+3!+……+n!的值(n>=1)。
- 比如pieAdd(3)的返回值是1! + 2! + 3! = 1 + 1*2 + 1*2*3 = 9
- */
- #include <stdio.h>
- int pieAdd(int n);
- int main() {
- // insert code here...
-
- int sum=0;
- int p=0;
- printf("请输入个数:");
- scanf("%d",&p);
- for(int i=1;i<=p;i++)
- {
- int a=pieAdd(i);
- sum +=a;
-
- }
- printf("最终值为%d\n",sum);
- return 0;
- }
- int pieAdd(int n)
- {
-
- int j=1;
- if(n==1)
- return j=1;
- else
- {
- j=n*pieAdd(n-1);
- return j;
- }
-
- }
- int pieAdd(int n);
复制代码
|