繁体   English   中英

如何通过c中的值打印整数名称

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM