【问题:分段函数】
有一个函数
y={ x x<1
| 2x-1 1<=x<10
\ 3x-11 x>=10
写一段程序,输入x,输出y。 说明:x 和 y 都是整数。
if语句有三种结构, 最简单的是
1
2
3
4
5
6
7
8
9
10
11
12
| #include <stdio.h>
int main()
{
int a, b, max;
scanf("%d%d", &a, &b);
max = a;
if (b>max) {
max = b;
}
printf("%d\n", max);
return 0;
} |
#include <stdio.h>
int main()
{
int a, b, max;
scanf("%d%d", &a, &b);
max = a;
if (b>max) {
max = b;
}
printf("%d\n", max);
return 0;
}
稍微复杂一点的是
1
2
3
4
5
| if (表达式) {
语句块;
} else {
语句块;
} |
if (表达式) {
语句块;
} else {
语句块;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
| #include <stdio.h>
int main()
{
int a, b, max;
scanf("%d%d", &a, &b);
if (a>b) {
max = a;
} else {
max = b;
}
printf("%d\n", max);
return 0;
} |
#include <stdio.h>
int main()
{
int a, b, max;
scanf("%d%d", &a, &b);
if (a>b) {
max = a;
} else {
max = b;
}
printf("%d\n", max);
return 0;
}
更加复杂的是
1
2
3
4
5
6
7
8
9
| if (表达式) {
语句块;
} else if (表达式) {
语句块;
} else if (表达式) {
语句块;
} else (表达式) {
语句块;
} |
if (表达式) {
语句块;
} else if (表达式) {
语句块;
} else if (表达式) {
语句块;
} else (表达式) {
语句块;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| #include <stdio.h>
int main()
{
int x, y;
scanf("%d",&x);
if(x<1) {
y=x;
}
else if(x<10) {
y=2*x-1;
}
else {
y=3*x-11;
}
printf("%d\n",y);
return 0;
} |
#include <stdio.h>
int main()
{
int x, y;
scanf("%d",&x);
if(x<1) {
y=x;
}
else if(x<10) {
y=2*x-1;
}
else {
y=3*x-11;
}
printf("%d\n",y);
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| #include <stdio.h>
int main(int argc, char *argv[])
{
int x, y;
scanf("%d",&x);
if(x<1)
y=x;
if(x>=1&&x<10)
y=2*x-1;
if(x>=10)
y=3*x-11;
printf("%d",y);
return 0;
} |
#include <stdio.h>
int main(int argc, char *argv[])
{
int x, y;
scanf("%d",&x);
if(x<1)
y=x;
if(x>=1&&x<10)
y=2*x-1;
if(x>=10)
y=3*x-11;
printf("%d",y);
return 0;
}
也可以简化一下判断,如下所示。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| #include <stdio.h>
int main(int argc, char *argv[])
{
int x, y;
scanf("%d",&x);
if(x<1)
y=x;
else if(x<10)
y=2*x-1;
else
y=3*x-11;
printf("%d\n",y);
return 0;
} |
#include <stdio.h>
int main(int argc, char *argv[])
{
int x, y;
scanf("%d",&x);
if(x<1)
y=x;
else if(x<10)
y=2*x-1;
else
y=3*x-11;
printf("%d\n",y);
return 0;
}