想要使用if条件-C语言分配字符值



我正在练习制作一个评分表,在这里我想使用if条件在变量中分配科目成绩。

这里eper是我想要检查的主题百分比,并将其相应地存储在变量中。

if(eper >=80){  
    geng = "A";
}

请不要把我和数组和循环混淆,因为我正处于学习阶段,我还处于初学者水平,还没有学习过循环和数组。

正如您在注释中看到的那样,带有双引号的赋值("")将字符串值赋值给左侧的变量。要将单个字符分配给左侧的变量,需要使用单引号来证明它是字符,而不是字符串分配。

下面没有循环等,演示了一种基于数值的字母等级赋值方法。下面的代码要求学生的名字后面跟着一个数字等级(介于0-100之间),用于确定学生的字母等级:

#include <stdio.h>
#include <stdlib.h>
int main (int argc, char **argv) {
    if (argc != 3) { /* validate sufficient number of arguments */
        fprintf (stderr, "error: invalid input. usage: %s name graden",
                argv[0]);
        return 1;
    }
    char *student = argv[1];        /* declare/initialize variables */
    int  grade = atoi (argv[2]);
    char ltrgrade = 0;
    if (grade < 0 || 100 < grade) { /* validate grade in range */
        fprintf (stderr, "error: invalid grade input '%d'.n", grade);
        return 1;
    }
    /* classify the grade with a letter grade */
    if (grade >= 90) 
        ltrgrade = 'A';
    else if (grade >= 80)
        ltrgrade = 'B';
    else if (grade >= 70)
        ltrgrade = 'C';
    else if (grade >= 60)
        ltrgrade = 'D';
    else
        ltrgrade = 'F';
    /* print the results */
    printf ("n %-12s  %3d  (%c)nn", student, grade, ltrgrade);
    return 0;
}

使用/输出

$ ./bin/stdgrade sally 82
 sally          82  (B)
$ ./bin/stdgrade Jonathan 90
 Jonathan       90  (A)

(参见:Jonathan再次获得金星:)

如果您还有其他问题,请告诉我。

欢迎使用类型的概念。

存储在对象中或由函数返回的值的含义由用于访问它的表达式的类型决定

geng = "A";

有两种类型是相关的。表达式geng的类型和表达式"A"的类型。这两个表达式的类型必须按照标准指定的方式兼容,但在这种情况下,只要说它们必须是相同的类型就足够了。要查看所有规则,请参阅C11标准的§6.5.16.1——公平警告,很难阅读。

现在,让我们来计算"A"的类型。"A"字符串文字,它们的类型是char数组。这里需要注意的是,'A'(单引号)指定了一个字符常量,类型为int,可能正是您想要的。

因此,我们手头有几个案例:

  • 如果您希望geng是单个字符,则适当的类型为intchar。如果它的可能值仅来自字符常量,则可以安全地选择:char geng = 'A';

  • 如果假定geng表示字符常量,但其值是函数调用的结果,例如fgetc,则int是合适的类型

  • 如果您想让geng保存字符串,如"A",以便于在代码中进一步使用(如与其他字符串串联或类似),则应指定:const char geng[] = "A";const char *geng = "A";,具体取决于您将如何使用它,是否修改它,等等。

最新更新