1.数据间的与或计算
#include <stdio.h>
int main(){
unsigned int a=123;
unsigned int b=888;
unsigned int c;
c=a&b;
printf("a&b = %d \r\n",c);
c=a|b;
printf("a|b = %d \r\n",c);
return 0;
}
2.数据的拆分与修改
#include <stdio.h>
int main(){
unsigned int data;
unsigned char a=55;
unsigned char b=66;
unsigned char c=77;
unsigned char d=88;
data=(a<<24)|(b<<16)|(c<<8)|(d);
printf("data=[%x %d]\r\n",data,data);
printf("a =[%x %d]\t\r\n",data>>24,data>>24);
printf("b =[%x %d]\t\r\n",(data>>16)&0xFF,(data>>16)&0xFF);
printf("c =[%x %d]\t\r\n",(data>>8)&0xFF,(data>>8)&0xFF);
printf("d =[%x %d]\t\r\n",data&0xFF,data&0xFF);
printf("------------------------------------------\r\n");
//改变中间8位的数据,将 66 --> 250[对应的十进制:FA]
data&=0xFF00FFFF;
data|=0x00FA0000;
printf("data=[%x %d]\r\n",data,data);
printf("b =[%x %d]\t\r\n",(data>>16)&0xFF,(data>>16)&0xFF);
return 0;
}
3.任意输入三个数,按升序排序
#include <stdio.h>
int main(){
int temp;
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a>b){
temp=a;
a=b;
b=temp;
}
if(b>c){
temp=b;
b=c;
c=temp;
}
if(a>b){
temp=a;
a=b;
b=temp;
}
printf("升序:%d %d %d\r\n",a,b,c);
return 0;
}
4.输入一个不多于 5 位的正整数,判断他是几位数,并逆序输出
#include <stdio.h>
int main(){
int num;
int a=0,b=0,c=0,d=0,e=0;
printf("变量初始值:%d %d %d %d %d\r\n请输入一个不多于5位的正整数: ",e,d,c,b,a);
scanf("%d",&num);
a=num/10000; //万位
b=num%10000/1000; //千位
c=num%1000/100; //百位
d=num%100/10; //十位
e=num%10; //个位
if(a!=0){
printf("[5] 逆序输出:%d%d%d%d%d\r\n",e,d,c,b,a);
}
else if(b!=0){
printf("[4] 逆序输出:%d%d%d%d\r\n",e,d,c,b);
}
else if(c!=0){
printf("[3] 逆序输出:%d%d%d\r\n",e,d,c);
}
else if(d!=0){
printf("[2] 逆序输出:%d%d\r\n",e,d);
}
else{
printf("[1] 逆序输出:%d\r\n",e);
}
return 0;
}
5.判断回文数。从键盘上输入一个整数(不超过 5 位),判断是否是回文
#include <stdio.h>
int main(){
int num;
int a=0,b=0,c=0,d=0,e=0;
printf("变量初始值:%d %d %d %d %d\r\n请输入一个不超过5位的正整数: ",e,d,c,b,a);
scanf("%d",&num);
a=num/10000; //万位
b=num%10000/1000; //千位
c=num%1000/100; //百位
d=num%100/10; //十位
e=num%10; //个位
if(a!=0){
if(a==e&&b==d){
printf("是回文数\r\n");
}
else{
printf("不是回文数\r\n");
}
}
else if(b!=0){
if(b==e&&c==d){
printf("是回文数\r\n");
}
else{
printf("不是回文数\r\n");
}
}
else if(c!=0){
if(e==c){
printf("是回文数\r\n");
}
else{
printf("不是回文数\r\n");
}
}
else if(d!=0){
if(d==e){
printf("是回文数\r\n");
}
else{
printf("不是回文数\r\n");
}
}
else{
printf("是回文数\r\n",e);
}
return 0;
}
6.输出所有 200~400 以内能被 3 整除且个位数字为 6 的整数
#include <stdio.h>
int main(){
int i,start=200,end=400;
int temp;
for(i=start;i<=end;i++){
temp=i%10;
if(temp==6&&i%3==0){
printf("%d ",i);
}
}
return 0;
}
7.判断 10~100 之间的所有素数 --> 素数:只能被1和本身整除的数
#include <stdio.h>
/*判断 10~100 之间的所有素数 -- 素数:只能被1和本身整除的数*/
int main(){
int i,j,start=10,end=100,stat=0,cnt=0;
for(i=start;i<=end;i++){
//判断i是否为素数
for(j=2;j<i;j++){
if(i%j==0){
stat=1;
break;
}
}
if(stat==1){
stat=0;
}
else{
printf("%d ",i);
cnt++;
}
}
printf("\r\n10~100之间素数总共有:%d 个\r\n",cnt);
return 0;
}
8.输出100~999之间所有的水仙数
#include <stdio.h>
int main(){
int i,start=100,end=999;
int a,b,c;
for(i=start;i<=end;i++){
//获取i的个位、十位、百位
a=i/100;
b=i%100/10;
c=i%10;
if((a*a*a+b*b*b+c*c*c)==i){
printf("%d ",i);
}
}
return 0;
}
9.编程计算 1! +2! +3! + 。。。+10!的值 (阶乘)
#include <stdio.h>
int main(){
int i,s=1,sum=0;
for(i=1;i<=10;i++){
s*=i;
sum+=s;
}
printf("sum = %d \r\n",sum);
return 0;
}
10.输出 9*9 乘法口诀表
#include <stdio.h>
int main(){
int i,j;
for(i=1;i<=9;i++){
for(j=1;j<=9;j++){
if(j<=i){
printf("%d*%d=%d\t",j,i,i*j);
}
else break;
}
printf("\n");
}
return 0;
}