题目:输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b,使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果
提示:0 ^ 0 = 0; 1
^ 1 = 0; 0 ^ 1 = 1; 1 ^ 0 = 1;
#include<stdio.h>
int main()
{
int t,i,c;
int b=1,j=1;
int a[32];
int p[32];
printf(“please input one numbers(0-32):”);
scanf("%d",&t);
for(i=0;i<32;i++)
{
c= b & t;
t = t>>1;
a[i]=c;
}
p[0]=a[0];
p[31]=a[31];
for(i=0;i<30;i++)
{
if(a[i]==1 &&
a[i+2]==1)
p[j]=0;
else
p[j]= a[i] | a[i+2];
j++;
}
for(j=31;j>=0;j–)
{
printf("%d",p[j]);
}
printf("\n");
return 0;
}
题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.
提示:用数组完成
#include<stdio.h>
int main()
{
printf(“please input a number,which is 4 to 1000\n”);
int n,i,t,b,c,d;
int a[1000];
int sum=0;
int number=0;
scanf("%d",&n);
if(n<=3)
printf("error!under four people can’t encircle a circle\n ");
for(i=0;i<n;i++)
{
a[i]=i+1;
}
while(n-number!=2)
{
for(i=0;i<n;i++)
{
if(a[i]!=0)
{
sum=sum+1;
}
if(sum==3)
{
sum=0;
a[i]=0;
number=number+1;
if(n-number==2)
{
break;
}
continue;
}
}
}
c=i+1;
for(i=0;i<n;i++)
{
if(a[i]!=0)
{
t=i+1;
a[i]=0;
break;
}
}
for(i=0;i<n;i++)
{
if(a[i]!=0)
{
b=i+1;
a[i]=0;
break;
}
}
if(c<b && c>t)
{
printf("the prime
number is %d",t);
}
if(c>b || c<b &&
c<t)
{
printf("the prime
number is %d",b);
}
return 0;
}
加强版
#include<stdio.h>
int main()
{
printf(“please input a number\n”);
int n,i,c;
int a[1000];
int sum=0;
scanf("%d",&n);
c=n;
for(i=0;i<n;i++)
a[i]=1;
i=0;
while(n>1)
{
if(i==c)
i=0;
if(a[i]==1)
sum=sum+1;
if(sum==3)
{
sum=0;
a[i]=0;
n=n-1;
}
i++;
}
for(i=0;i<c;i++)
{
if(a[i]==1)
printf("the prime
number is %d",i+1);
}
return 0;
}
1.
题目: 一个数如果恰好等于它的因子之和,这个数被成为”完数”,例如:6=1+2+3.请编程找出1000以内的完数
#include<stdio.h>
int main()
{
int i,j,sum;
for(i=4;i<1001;i++)
{
sum=0;
for(j=i-1;j>1;j–)
{
if(i%j==0)
{
sum=sum+j;
}
}
if(sum+1==i)
{
printf("\n");
printf("%d
",i);
}
}
return 0;
}