1.练习1
输入一个数,判断是否是水仙花
条件:
1.是三位数 100--999
2.水仙花:各个位数字立方和等于本身
eg:153 --->1*1*1+5*5*5+3*3*3==153
程序:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
unsigned int a=0;
printf("请输入一个在100和999之间得数\n");
if (scanf("%u",&a)!=1)
{
//清理缓存区内容,防止后续的scanf()调用受影响
int gg;
while((gg=getchar())!='\n'&&gg!=EOF){}
printf("错误:非法输入,请重新输入一个整数\n");
//重新输入
scanf("%u",&a);
}
unsigned int n=0;
for(int i=1;i<=3;i++)
{
if(a<100||a>999)
{
printf("输入不在范围内,请重新输入:");
scanf("%u",&a);
n=n+1;
}
}
if(n>2)
{
printf("输入三次错误,强制退出\n");
exit(EXIT_SUCCESS);
}
int c=a/100;
int d=a/10%10;
int e=a%10;
if(a!=c*c*c+d*d*d+e*e*e)
printf("不是水仙花\n");
else
printf("是水仙花\n");
return 0;
}
2.练习2
对于整数A=0x12345678,画出little endian和big ending系统如何存储
3.练习3
如何判断一个数是unsigned格式
1.如果这个数据是负数,则不是unsigned格式
2.如果这个数大于0,对其按位取反,若仍>0,则为unsigned格式
4.练习4
下面代码执行后,a\b\c的结果是?
int a=5,b=7,c;
c=a+++b;
如果为c=a+ ++b
a=5 b=8 c=13
如果为c=a++ +b
a=6 b=7 c=12
5.练习5
代码如下
void main()
{
int c=9,d=0;
c=c++%5;
d=c;
printf("d=%d\n",d);
}
d=4
6.练习6
用预处理指令#define声明一个常数,用于表明1年有多少秒?(不需要考虑润年)
#define years 31536000
7.练习7
给定一个整数,判断它是否被3、5、7整除,并输出一下信息
1.能同时被3,5,7整除(直接输出3 5 7,每个数字之间一个空格)
2.只能内其中两个整数整除(输出两个数,小的在前,大的在后,例如3 5 或者 3 7 或者5 7,中间使用空格隔开)
3. 只能被其中一个整数整除(输出这个除数)
4.不能被任何数整除,输出小写字母n
案例如下:
输入:105
输出:3 5 7
程序:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
unsigned int a;
printf("请输入一个数\n");
scanf("%u",&a);
if(a%3==0&&a%5==0&&a%7==0)
{
printf("%d %d %d\n",3,5,7);
}
else if(a%3==0&&a%5==0&&a%7!=0)
{
printf("%d %d\n",3,5);
}
else if(a%3==0&&a%5!=0&&a%7==0)
{
printf("%d %d\n",3,7);
}
else if(a%3!=0&&a%5==0&&a%7==0)
{
printf("%d %d\n",5,7);
}else if(a%3==0&&a%5!=0&&a%7!=0)
{
printf("%d\n",3);
}
else if(a%3!=0&&a%5!=0&&a%7==0)
{
printf("%d\n",3);
}
else if(a%3!=0&&a%5==0&&a%7!=0)
{
printf("%d\n",5);
}
else
{
printf("n");
}
return 0;
}
8.练习8
输出:b, c, d:10, 12, 120