1.使用break求3-100中的质数
#include
#include
#include
int main(int argc, const char *argv[])
{
int is_prime=1;
for(int p=3; p<=100; p++){
for(int i=2; i<=p-1 ; i++){
if(p%i==0){
is_prime = 0;
break;
}
}
if(is_prime){
printf("%d\n", p);
}
is_prime=1;
}
return 0;
}
2.输出3-100以内的完美数,(完美数:因子和(因子不包含自身)=数本身)
ubuntu@ubuntu:~/embedded/day05$ cat 17_output_perfect_digital.c
#include
#include
#include
int main(int argc, const char *argv[])
{
int sum, isFactor=0;
printf("3-100内的完美数:\n");
for(int p=3; p<=100; p++){
for(int f=1; f<=p-1; f++){
// printf("%d, %d\n", p, f);
if(p%f==0){
sum+=f;
// printf("p=%d, f=%d, sum=%d\n",p,f,sum);
}
}
if(p==sum){
printf("%d\n", p);
}
sum=0;
}
return 0;
}
3-100内的完美数:
6
28
3.打印字母图形

#include
#include
#include
int main(int argc, const char *argv[])
{
for(int i=0; i<6; i++){
for(int j=0; j<=i; j++)
{
putchar('_');
}
for(int k=0; k<=i; k++)
{
putchar('F'-k);
}
putchar(10);
}
return 0;
}
4.百钱买百鸡问题,一百元钱去买鸡,公鸡5元,母鸡3元,三只小鸡1元,问买一百只鸡,有多少种买法。
#include
#include
#include
int main(int argc, const char *argv[])
{
int method = 0;
for(int m=0; m<=20; m++ )
{
for(int f=0; f<=34; f++)
{
for(int c=0; c<=100; c+=3)
{
if(m*5 + f*3 + c/3 <= 100 && m+f+c==100)
{
printf("公鸡%d只,母鸡%d只,小鸡%d只\n",m,f,c);
method++;
}
}
}
}
printf("买一百只鸡的方法有%d种\n", method);
return 0;
}
5将data第[4]位清0,保持其他位不变;将data第[7]位置1,保持其他位不变; 将data第[31:28]位清0,保持其他位不变; 将data第[7:4]位置1,保持其他位不变
#include
#include
#include
int main(int argc, const char *argv[])
{
int data=0xF0000010;
int p1=0x1;
int p4=0xF;
printf("data=%#x\n", data);
//1111 xxxx xxxx xxxx xxxx xxxx 0xx1 xxxx
//printf("p=%#x\n", p);
printf("第4位清0,data=%#x\n", data&=~(p1<<4)); //0xF0 00 00 00
printf("第7位置1,data=%#x\n", data|=p1<<7); //0xF0 00 00 80
printf("第31:38位清0,data=%#x\n", data&=~(p4<<28)); //0x00 00 00 80
printf("第7:4位清0,data=%#x\n", data|=p4<<4); //0x00 00 00 f0
return 0;
}
6.变量交换方法
#include
#include
#include
int main(int argc, const char *argv[])
{
int a=8, b=3;
printf("原始值: a = %d b=%d\n", a, b);
int temp;
//变量交换方法1,临时变量
temp = a;
a = b;
b = temp;
printf("临时变量: a = %d b=%d\n", a, b);
//变量交换方法2,加减法
a = a + b; // a = 3, b=8, a + b = 11
b = a - b; // b = a + b - b = 3
a = a - b; // a = a + b - a = 8
printf("加减法: a = %d b=%d\n", a, b);
//变量交换方法3,乘除法加减法
a = a * b; // a = 8, b=3, a * b = 24
b = a / b; // b = a * b / b = 8
a = a / b; // a = a * b / a = 3
printf("乘除法: a = %d b=%d\n", a, b);
//变量交换方法4,异或
a = a ^ b; //
b = a ^ b ; // b = a ^ b ^ b = a = 8
a = a ^ b; // a = a ^ b ^ a = b =3
printf("异或法: a = %d b=%d\n", a, b);
//变量交换方法5, 移位法
a<<=16; // a = 0x0008 0000
// b = 0x0000 0003
a|= b ; // a|b = 0x0008 0003
b = a >>16; // a>>16. b = 0x0000 0008
a = a & 0x0000ffff; // a = 0x0000 0003
printf("移位法: a = %d b=%d\n", a, b);
return 0;
}