之前做题时遇到了一些问题,进行理解。
int main()
{
int a = 0;
int b = 0;
int c = 0;
float x =0;
scanf("%d %d %d", &a, &b, &c);
int d = (a+b)>(b>c?b:c)?(a+b):(b>c?b:c);
int e = (b+c)>(a>c?a:c)?(b+c):(a>c?a:c);
int f = (b+c)>(a>b?a:b)?(b+c):(a>b?a:b);
x =d*1.0/(e+f);
printf("%.2lf",x);
return 0;
}
对于上面的代码,其中x =d*1.0/(e+f)其中*1.0不能省,否则不能输出。因为要求转换float类型。但是如果是(e+f)*1却不行。
#include<stdio.h>
int max(int x,int y,int z);
int main(){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("%.2f",((float)max(a+b,b,c))/(max(a,b+c,c)+max(a,b,b+c)));
return 0;
}
int max(int x,int y,int z){
x=x>y?x:y;
x=x>z?x:z;
return x;
}
这是别人的另外一种解法。由此可见函数声明可以分开两步。总声明和具体声明。同样具有效果。
struct complex
{
int x;
int y;
}num[2]={1,3,2,7};
//则表达式num[0].y+num[1].x的结果是
虽然目前个人还没有做这个题的知识框架。但是凭借着网络我摸清了这个题的思路。大致为:
int x和y放到num[2]里面。
num[2]={1,3,2,7}
=num[0]={1,3}和num[1]={2,7} 。其中第一个元素对应的x,第二个元素对应的y。
所以num[0].y=3,num[1].x=2。这个跟之前提到的结构体的格式很像。应该是对应数组的元素。
所以答案为x+y=5。
int main()
{
int i, j;
for (i = 1;i <= 3;i++)
{
for (j = 1;j <= 5;j++)
if (j % 2 == 0) break;
printf("%d", j);
}
}
//要求求出输出结果。
输出结果为2 2 2。
因为每次都是当j=2到时候被整除。然后i=1,2,3三次轮完后也就打印了三个j=2。所以输出2 2 2。