[英]how to print the name of an integer by its value in c
我们如何打印输出中最年轻的名称? 我想计算最小的人。
那是我的代码:
#include <stdio.h>
#include <conio.h>
int main() {
int john;
int ahmad;
int saleem;
printf("Enter the age of john,ahamd, saleem simaltanoeusly\n");
scanf_s("%d\n%d\n%d", &john, &ahmad, &saleem);
int youngest = john;
if (john > ahmad)
youngest = ahmad;
if (ahmad > saleem)
youngest = saleem;
printf("youngest of you is %d", youngest);
_getch();
return 0;
}
您可以使用宏来做到这一点
#include <stdio.h>
#define SHOW(varname) printf("%s is age %d", #varname, varname)
int main(void){
int john = 23;
int ahmed = 19;
int saleem = 27;
if (john < ahmed && john < saleem)
SHOW(john);
else if (ahmed < saleem)
SHOW(ahmed);
else
SHOW(saleem);
return 0;
}
程序输出:
ahmed is age 19
最好将名称放入数组中。 然后通过其索引引用每个名称。
const char * names[] = {
"John",
"Ahmad",
"Salem",
};
int youngestage = -1;
char* youngest = 0;
printf("Enter the age of john,ahamd, saleem simaltanoeusly\n");
for (int i=0;i<sizeof(names)/sizeof(names[0]);i++)
{
int age;
scanf("%d", &age);
if (youngestage == -1 || age < youngestage)
{
youngestage = age;
youngest = names[i];
}
}
printf("%s is the youngest", youngest);
printf("youngest of you is %d", youngestage);
最简单的解决方案是为每个人创建一个结构,其中将包含他们的姓名和年龄。
struct person {
char *name;
int age;
}
您还需要修正对最小年龄的计算。 就您而言,您可以这样做:
int youngest = john;
if (youngest.age > ahmad.age)
youngest = ahmad;
if (youngest.age > saleem.age)
youngest = saleem;
对于通用解决方案,您应该通过遍历数组来做到这一点。
因此,您要在此处打印与最小值关联的变量名称吗?
与宏中的变量一起使用时,预处理程序指令#输出编码器使用的变量的名称
//Code by Rahul Anand Jha
//using GCC Compiler
#include <stdio.h>
#include <conio.h>
#define display(n) printf(#n) //add this
int main() {
int john;
int ahmad;
int saleem;
printf("Enter the age of john,ahamd, saleem simaltanoeusly\n");
scanf("%d\n%d\n%d", &john, &ahmad, &saleem);
if(john<ahmad && john <saleem)
display(john);
else if(ahmad<john && ahmad<saleem)
display(ahmad);
else
display(saleem);
return 0;
}
但是我建议您不要使用这样的解决方案,因为只有当您要测试的人的姓名是John,Ahmad,Saleem时,这才是有益的。否则,您每次都需要修改代码。
您也可以使用Structures,Arrays。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.