
/定义字符串数组/
const string outInfo[13] = {
"欢迎使用上机评测系统,请依提示 *** 作,要退出系统,请输入\"exit\"\n\n" ,
"当前是第 " ,
" 题,您还有 " ,
" 次机会:\n" ,
"您已经选择退出,您的当前得分是: " ,
"\n系统即将退出,请再接再厉" ,
"恭喜您回答正确,请继续回答下一题\n\n" ,
"您的回答错误,请继续尝试\n\n" ,
"您第 " ,
" 题的得分是 : " ,
" 。\n" ,
"您的总得分是 : " ,
" 。\n\n"
} ;
/定义字符串数组/
const string resultInfo[5] = {
"TRY AGAIN\n" ,
"PASS\n" ,
"OK\n" ,
"GOOD\n" ,
"SMART\n"
} ;
/定义整形数组,并且是个const类型,不能被改变/
const int scoreGet[4] = {0 , 5 , 7 , 10} ;
/定义一个整形数组/
int scoreEveryProblem[10] ;
int main() {
srand((unsigned)time(NULL)) ;//通过时间函数获得随机因子
string inputInfo ;//定义一个 字符串类型
cout << outInfo[0] ;//输出outInfo字符数组的第一行
int score = 0 ;
/for循环并且循环10次, 1,2,3,4,5,6,7,8,9,10 /
for(int problemNumber = 1 ; problemNumber <= 10 ; problemNumber++) {
int res = rand() % 51 ;//获取一个随机数,并且其对51取余数 范围0~50
int pa = rand() % (res + 1) ;//获取一个随机数,并且对res变量+1取余数 范围不定
int pb = res - pa ;//pb等于res-pa
bool op = rand() % 2 ;//获取随机数,对2区域不是0就是1
if(op) swap(res , pa) ;//如果为1, 执行swap函数
/循环控制错误次数3次 3,2,1/
for(int tryTime = 3 ; tryTime >= 1 ; tryTime--) {
cout << outInfo[1] << problemNumber << outInfo[2]
<< tryTime << outInfo[3] ;//输出
cout << pa << (op " - " : " + ") << pb << " = " ;//通过op判断+ -法
cin >> inputInfo ;//接收输入
if(inputInfosubstr(0 , 4) == "exit") {//如果输入exit 退出
system("cls") ;
cout << outInfo[4] << score << outInfo[5] ;
for(int t = 0 ; t < 1000000000 ; t++) ;
return 0 ;
}
else {
int ans ;
sscanf(inputInfoc_str() , "%d" , &ans) ;//接收的字符串转换成整形
if(ans == res) {//成功答对了
cout << outInfo[6] ;//输出成功
score += scoreGet[tryTime] ;//通过次数获得分
scoreEveryProblem[problemNumber - 1] = scoreGet[tryTime] ;//这道题得分
break ;
}
else if(tryTime > 1) {
cout << outInfo[7] ;//回答错误
}
else {
cout << pa << (op " - " : " + ") << pb << " = " << res << "\n\n" ;//再次显示问题
}
}
}
}
/输出回答结果/
for(int i = 0 ; i < 10 ; i++) {
cout << outInfo[8] << (i + 1) << outInfo[9]
<< scoreEveryProblem[i] << outInfo[10] ;
}
cout << outInfo[11] << score << outInfo[12] ;
cout << resultInfo[min(4 , max(0 , (score - 50) / 10))] << endl ;
system("pause") ;
return 0 ;
}
pa-pb=02
pa+pb=1
pa=06,pb=04
06a+04b=14
EX方=DX+(EX)方=22=06a方+04b方
a=1,b=2
本文拟以SYBASE ASE 10X和11X数据库为例,说明如何在PB脚本当中获取存储过程的返回值。作为一个存储过程,其输出的结果数据可能包括三类:SELECT结果集、RETURN结果、OUTPUT参数。尽管输出方式众多,但PB脚本仅仅借助简单的FETCH…INTO…语句即可全部获取这些输出数据,具体方式如下:
(一)在SYBASE ASE 10X和11X数据库当中创建一个存储过程deptroster,其有一个输入参数@deptno、两个输出参数@totsal 和 @avgsal、一个RETURN值@number_of_emps以及包含职员姓名和工资的SELECT结果集,可见除了输入参数@deptno外,其他均为输出数据,我们需要在PB脚本中获取,具体代码如下:
CREATE PROCEDURE deptroster @deptno integer,
@totsal double precision output,
@avgsal double precision output
AS
DECLARE @number_of_emps integer
SELECT emp_fname, emp_lname, salary FROM employee
WHERE dept_id = @deptno
SELECT @totsal = sum(salary),
@avgsal = avg(salary),
@number_of_emps = COUNT() FROM employee
WHERE dept_id = @deptno
RETURN @number_of_emps;
二)PB脚本当中我们需要捕获SELECT结果集、RETURN值和两个输出参数,其输出顺序也是按照“SELECT结果集、RETURN值、输出参数”顺序输出,具体代码如下:
integer fetchcount = 0
long lDeptno, rc
string fname, lname
double dSalary, dTotSal, dAvgSal
lDeptno = 100
//此处声明存储过程名称
DECLARE deptproc PROCEDURE FOR
@rc = dbodeptroster
@deptno = :lDeptno,
@totsal = 0 output,
@avgsal = 0 output
USING SQLCA;
//此处开始执行存储过程
EXECUTE deptproc;
//判断执行结果
CHOOSE CASE SQLCAsqlcode
CASE 0
//如果返回0则表示执行成功,至少存在一个SELECT结果集
//借助LOOP循环开始捕获这个SELECT结果集
DO
FETCH deptproc INTO :fname, :lname, :dSalary;
CHOOSE CASE SQLCAsqlcode
CASE 0
fetchcount++
CASE 100
MessageBox ("End of Result Set", &
string (fetchcount) " rows fetched")
CASE -1
MessageBox ("Fetch Failed", &
//此处关闭存储过程
CLOSE deptproc;
CASE 100
// 如果返回100,则表示没有返回结果集
// 此时不需要单独执行CLOSE语句
MessageBox ("Execute Successful", "No result set")
CASE ELSE
//其他情况则表示存储过程执行失败,提示用户即可
MessageBox ("Execute Failed", &
string (SQLCAsqldbcode) " = " &
以上就是关于我有一段C语言程序,拜求哪位大神能帮我注释一下小学生50以内,随机10道加减法的那种题全部的内容,包括:我有一段C语言程序,拜求哪位大神能帮我注释一下小学生50以内,随机10道加减法的那种题、设随机变量X只取两个值a、b,a、如何在pb脚本当中获取存储过程的返回值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)