练习1:输入一个数,判断是否是水仙花 水仙花: 是三位数 各个位的立方和等于本身 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[])
{
int x,single,tens,hundreds;//定义一个整数以及它的个十百位
printf("please input num:\n");
scanf("%d",&x);//输入一个整数
single=x%10;//计算个位数
tens=((x%100)-single)/10;//计算十位数
hundreds=x/100;//计算百位数
if(x<=0||x>999)//判断是否合法输入
{
printf("ERROR!\n");
}
else if(single*single*single+tens*tens*tens+hundreds*hundreds*hundreds==x)//判断是否满足水仙花数条件
{
printf("This num is the shuixianhua num\n");
}
else
{
printf("This num is not the shuixianhua num\n");
}
return 0;
}
练习2:输入三角形的三条边,判断是什么三角形? 等腰\直角\等边\普通三角形
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
int a,b,c;//定义三角形三条边
printf("Please input the three sides of the triangle\n");
scanf("%d""%d""%d",&a,&b,&c);
if(a+b<=c||b+c<=a||a+c<=b)//判断输入是否合法
{
printf("ERROR\n!");
}
else if(a==b,b==c)//判断是否为等边三角形
{
printf("This triangle is an equilateral triangle\n");
}
else if(a==b||a==c||b==c)///判断是否为等腰三角形
{
printf("This triangle is an isosceles triangle\n");
}
else if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)//判断是否为直角三角形
{
printf("This triangle is an right triangle\n");
}
else//判断是否为普通三角形
{
printf("This triangle is an ordinary triangle\n");
}
return 0;
}
练习3:输入一个成绩,判断学生成绩等级? 90--100 A 90-99 100 80--89 B 70--79 C 0---60 D if(a>=90&&a<=100) printf("A"); 1.判断成绩在0--100之间,判断等级 switch(a/10) { case 10:case 9: } 2.如果成绩不在0--100之间,输出不合法
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
int score;//定义一个分数变量
printf("Please input your score:\n");
scanf("%d",&score);//输入分数
if(score<0||score>100)//判断输入是否合法
{
printf("ERROR!\n");
}
else
switch(score/10)
{
case 10:
case 9:printf("A\n");break;//判断是否为A等级
case 8:printf("B\n");break;//判断是否为B等级
case 7:printf("C\n");break;//判断是否为C等级
case 6:
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:printf("D\n");break;//判断是否为D等级
}
return 0;
}
练习4:输入两个数,实现从小到大排序
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
int a,b;//定义两个数
printf("Please input two num:\n");
scanf("%d""%d",&a,&b);
if(a>b||a==b)//判断a,b大小
{
printf("%d,%d\n",b,a);
}
else
{
printf("%d,%d\n",a,b);
}
return 0;
}
练习5:设有以下语句:int a=3,b=6,c; c=a^b<<2; 则c的二进制值是 。
A、00011011 B、00010100 C、00011100 D、00011000
在运算符优先级中,左移大于按位异或,先计算b<<2,
int a=3,a的原码为00000011,原反补同码,
int b=6,b的原码为00000110,原反补同码,
b<<2 ------->b<<2= 00011000,
a^b<<2 =00011011,原反补同码,故选A
练习6:解读程序 void main() { int a=180; char c; c=(char)++a; printf("c=%d a=%d\n",c,a); char d=4; short e; e=(++d)++; printf("d=%d e=%d\n",d,e); }
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
int a=180; char c;
c=(char)++a;
printf("c=%d a=%d\n",c,a);
char d=4;
short e;
char t=++d;
e=(short)(t)++;
printf("d=%d e=%d\n",d,e);
return 0;
}
运算结果
c=-75 a=181
d=5 e=5
练习7.有以下代码
#include<stdio.h>
int main(int argc, const char *argv[])
{
int a[]={2,3,5,4},i;
for(i=0;i<4;i++) //循环i=0,1,2,3
{
switch(i%2) // i%2=0,1,0,1
{
case 0:switch(a[i]%2) //i=0,2
{
case 0:a[i]++;break;//i=0——a[i]%2=a[0]%2=2%2=0,a[0]++——>3
case 1:a[i]--;//i=2——a[i]%2=a[2]%2=5%2=1,a[2]--——>4
}break;
case 1:a[i]=0; //i=1,3——>a[1]=a[3]=0
}
}
for(i=0;i<4;i++) //循环输出
printf("%d",a[i]); //a[0]=3,a[1]=0,a[2]=4,a[3]=0
//3040
printf("\n");
}
程序运行的输出结果是()
A:3344 B:2050 C:3040 D:0304
故答案为C
流程图