题目一:
这题的考点就在如果取到三位数的各个位。可以通过取余和取整运算去得到。这里用到scanf按理来说他是吸收了我的\n(换行符),但是由于我后续没有使用char的打算,所以我就没有去吸收垃圾字符。
int a;
while (1){
printf("请输入一个三位数;\n");
scanf("%d",&a);
if (a /100 ==0)
printf("该数不是三位数请重新输入。\n");
else
break;
}
int ge,shi,bai;
ge = a%10; //个位
shi = a/10%10; //十位
bai = a/100; //百位
int sum = ge+shi+bai;
printf("总和为%d",sum);
题目二:
这个题的解法就相当多了。1)可以设置一个临时变量。2)加减运算 。3)异或运算。
//临时变量的解法
int a,b;
scanf("%d %d",&a,&b);
int temp; //临时变量
temp = a;
a = b;
b = temp;
printf("%d %d",a,b);
//加减运算的解法
int a,b;
scanf("%d %d",&a,&b);
a = a+b;
b = a-b;
a = a-b;
printf("%d %d",a,b);
//异或的解法(通过位运算实现两数互换)
int a,b;
scanf("%d %d",&a,&b);
a = a^b;
b = a^b;
a = a^b;
printf("%d %d",a,b);
题目三:
输入边长得到三角形面积,这个需要一个海伦公式。
什么是海伦公式呢?如下图所示
根据海伦公式,我们可以直接通过三条边就可以得到三角形的面积了。
但是有个注意:任意两边之和大于第三边,任意两边之差小于第三边!所以要加强代码的健壮性。
其次由于我们用到了sqrt函数所以在开头要引用math.h这个头文件
我们在用gcc的时候要加-lm 因为数学函数位于libm.so库文件中(通常在/lib目录下)-lm选项告诉编译器,我们程序中用到的数学函数要到这个库文件里找.
例如gcc 1.c -lm
int a,b,c;
printf("请输入三角形的边长:\n");
while (1){
scanf("%d %d %d",&a,&b,&c);
if (a+b<=c || a+c<=b || b+c<=a){
printf("三角形的三条应该满足任意两条边的和大于第三条边,请重新输入数据\n");
}
else
break;
}
int p = (a+b+c)/2.0; //p是周长的一半
float s;
s = sqrt(p*(p-a)*(p-b)*(p-c));
printf("三角形面积为%f\n",s);
题目四:
这个题主要就是对应取余运算的使用了,看对于模2是否为0(因为对2取模运算答案只有1或者0,当答案是0则说明没有余数则该数是偶数,同理答案是1则说明余数为1是奇数),以便判断是否为奇数。
int a;
scanf("%d",&a);
printf("请输入一个整数:\n");
if (a%2==0){
printf("%d是偶数",a);
}
else
printf("%d是奇数",a);
return 0;