3.4,c语言给出一百分制成绩,要求输出成绩等级'A',"B’,"C”,"D',E”。90分及以上力 A',80~89分为'B',70~79分为‘C',60~69分为「D',60分以下为E。
时间: 2024-10-20 19:04:56 浏览: 3
在C语言中,可以创建一个函数来根据给定的成绩返回相应的等级。下面是一个简单的函数实现的例子:
```c
#include <stdio.h>
#include <string.h> // 用于字符串操作
// 定义一个函数,根据分数返回等级
char getGrade(int score) {
if (score >= 90)
return 'A';
else if (score >= 80)
return 'B';
else if (score >= 70)
return 'C';
else if (score >= 60)
return 'D';
else
return 'E'; // 分数低于60分的情况
}
int main() {
int studentScore;
// 输入学生的分数
printf("请输入学生的成绩(0-100): ");
scanf("%d", &studentScore);
// 获取并输出等级
char grade = getGrade(studentScore);
printf("学生的等级是:%c\n", grade);
return 0;
}
```
在这个程序里,我们首先定义了一个`getGrade`函数,根据传入的成绩返回对应的字母等级。然后在主函数中获取用户的输入,并调用`getGrade`函数来获得等级。
相关问题
设计一套程序实现如下功能:利用AT89C51的P0口作为ADC080的数据总线,连续采样 ADC0808通道 0(IN0)上的电压值,并把转换结果显示在 4 位数码管上,74LS193 对at89c51的 ALE 分频,74LS373锁存P0口信息,在启用AD转换时由WR和P2.7控制ADC0808的地址锁存和转换启动(C语言)
以下是实现该功能的C语言代码:
```
#include <reg51.h>
sbit ALE = P1^0; // 74LS193的ALE引脚接到P1.0
sbit WR = P2^6; // ADC0808的WR引脚接到P2.6
sbit CS = P2^7; // ADC0808的CS引脚接到P2.7
sbit D0 = P0^0; // ADC0808的D0引脚接到P0.0
sbit D1 = P0^1; // ADC0808的D1引脚接到P0.1
sbit D2 = P0^2; // ADC0808的D2引脚接到P0.2
sbit D3 = P0^3; // ADC0808的D3引脚接到P0.3
sbit D4 = P0^4; // ADC0808的D4引脚接到P0.4
sbit D5 = P0^5; // ADC0808的D5引脚接到P0.5
sbit D6 = P0^6; // ADC0808的D6引脚接到P0.6
sbit D7 = P0^7; // ADC0808的D7引脚接到P0.7
sbit LATCH = P3^4; // 74LS373的LATCH引脚接到P3.4
sbit DIG1 = P3^5; // 数码管第1位的选择引脚接到P3.5
sbit DIG2 = P3^6; // 数码管第2位的选择引脚接到P3.6
sbit DIG3 = P3^7; // 数码管第3位的选择引脚接到P3.7
unsigned char code DIGITS[] = { // 数码管显示字符编码
0xC0, // "0"
0xF9, // "1"
0xA4, // "2"
0xB0, // "3"
0x99, // "4"
0x92, // "5"
0x82, // "6"
0xF8, // "7"
0x80, // "8"
0x98, // "9"
};
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for (i = 0; i < t; i++)
for (j = 0; j < 500; j++);
}
unsigned char read_adc(unsigned char channel) // 读取ADC0808的转换结果
{
unsigned char result;
CS = 0; // 选择ADC0808
WR = 1; // 禁止写入
ALE = 0; // 分频器复位
ALE = 1; // 分频器计数
ALE = 0;
P0 = channel; // 设置通道
WR = 0; // 允许写入
WR = 1; // 禁止写入
ALE = 1; // 分频器计数
ALE = 0;
WR = 0; // 允许写入
WR = 1; // 禁止写入
ALE = 1; // 分频器计数
ALE = 0;
while (D7); // 等待转换完成
WR = 0; // 允许写入
WR = 1; // 禁止写入
result = P0; // 读取转换结果
CS = 1; // 取消选择ADC0808
return result;
}
void display(unsigned char value) // 在数码管上显示转换结果
{
unsigned char digit1, digit2, digit3;
digit1 = value % 10; // 分离个位数
digit2 = value / 10 % 10; // 分离十位数
digit3 = value / 100; // 分离百位数
LATCH = 0; // 锁存清零
P0 = DIGITS[digit1]; // 显示个位数
LATCH = 1; // 锁存
DIG1 = 1; // 选择数码管第1位
delay(1); // 延时
DIG1 = 0; // 取消选择
LATCH = 0; // 锁存清零
P0 = DIGITS[digit2]; // 显示十位数
LATCH = 1; // 锁存
DIG2 = 1; // 选择数码管第2位
delay(1); // 延时
DIG2 = 0; // 取消选择
LATCH = 0; // 锁存清零
P0 = DIGITS[digit3]; // 显示百位数
LATCH = 1; // 锁存
DIG3 = 1; // 选择数码管第3位
delay(1); // 延时
DIG3 = 0; // 取消选择
}
void main()
{
while (1)
{
unsigned char value = read_adc(0); // 读取通道0的转换结果
display(value); // 在数码管上显示转换结果
}
}
```
该程序使用P0口作为ADC0808的数据总线,74LS193作为AT89C51的ALE分频器,74LS373作为P0口信息锁存器。在程序中,read_adc函数用于读取ADC0808的转换结果,display函数用于在数码管上显示转换结果。程序的主函数中不断地读取通道0的转换结果,并在数码管上显示。
阅读全文