记住 宏定义 不要预先自己去计算,一定要替换后 再去计算
z = 4 + FUN(x, y);
// 替换后
z = 4 + 5 < 8 ? 5 : 8;
// + 的优先级高于 <,所以先计算 4 + 5 = 9
z = 9 < 8 ? 5 : 8
// 9 < 8 不成立, z = 8
就是9,他这答案错了吧
展开后是z=4+5<8 ? 5:8
这时你应该知道答案了
给出数字到字母的映射与电话9键对应字母相同。
注意 1 不对应任何字母。
示例
输入:“23”
输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”]
#include <stdio.h>
int main(void)
{
int n, a, b;
int i, j, k, p;
char *character[10]={ "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
scanf("%d", &n);
b = n % 10;
a = n / 10;
if( a>1 && a<10 && b>1 && b<10 )
{
a = a - 2;
b = b - 2;
for(i=a, j=0; character[i][j] != 0; j++)
{
for(k=b, p=0; character[k][p] != 0; p++)
{
printf("%c%c ",character[i][j], character[k][p]);
}
}
}
else
{
printf("error!");
}
return 0;
}