求C语言的成绩输入!
来源:百度知道 编辑:UC知道 时间:2024/05/21 17:10:21
录入时允许输入"03"的类似数据,然后把数据处理成"3.0",并重新输出;
结果全部保留一位小数。并且只能是0或5。范围0-100
要求:
输入要求用字符串接收,然后经过验证合格后转换成需要的格式.
讲个判断是否合格的思路。也可以
1楼的写的是什么意思啊?我试验了一下你的和楼主所说不是一回事。
本题的一个完整的c程序如下,这是从键盘输入任意正负实数的通用程序,用到状态表,在win-tc和Dev-c++下都调试通过。当输入!@#$%*类似这样的符号程序会结束执行,退出。
#define ERR 5
#define OK 6
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int status;
double result,sig,scale;
int sign(int c)/*处理数的符号函数*/
{
if(c=='-')/*若为负号,置负数标记*/
sig=-sig;
}
int integer(int c)/*转换整数部分,转换一位整数位*/
{
result=result*10.0+c-'0';
}
int decimal(int c)/*转换小数部分,转换一位小数位*/
{
result+=(c-'0')*scale;
scale/=10.0;
}
/*状态表*/
int statbl[ ][4]={{ 1,2,3,ERR},/*0*/
{ERR,2,3,ERR},/*1*/
{OK,2,4,OK},/*2*/
{ERR,4,ERR,ERR},/*3*/
{OK,4,OK,OK}};/*4*/
/*转换函数表*/
int(*funtbl[ ][4])( )={{sign,integer,NULL,NULL},
{NULL,integer,NULL,NULL},
{NULL,integer,NULL,NULL},
{NULL,decimal,NULL,NULL},
{NULL,decimal,NUL