c++函数返回字符串
#include <time.h>
using namespace std;
char TK(int k)
{
switch(k)
case 0:
return "+";
case 1:
return "-";
case 2:
return "*";
default:
return "error";
}
int TheRanswer(int x,int y,int k)
{
switch(k)
case 0:
return x+y;
case 1:
return x-y;
case 2:
return x*y;
default:
return -1;
}
int main()
{
srand((unsigned)time(NULL));
cout<<"加法练习"<<endl;
int x,y,k,answer;
go:
x=rand()%100;y=rand()%100;k=rand()%3;
if(x>y){x^=y;y^=x;x^=y;}
cout<<x<<TK(k)<<y<<"=";
cin>>answer;
if (answer==TheRanswer(x,y,k)){cout<<"你答对了!";}
else cout<<"你答错了!";
system("pause");
goto go;
return 0;
}
请问怎么实现TK函数的功能?以上代码会出错,希望知道TK函数的正确写法。 展开
错误集中在两个函数里:首先,switch后面没加{},其次TK的输出应是char类型,不能return“+” 要return‘+’ ,return “error”也不行
char TK(int k)
{
switch(k)
{
case 0:
return '+';
case 1:
return '-';
case 2:
return '*';
default:
return '\0';
}
}
int TheRanswer(int x,int y,int k)
{
switch(k)
{
case 0:
return x+y;
case 1:
return x-y;
case 2:
return x*y;
default:
return -1;
}
}
/*
加法练习
43-25=18
你答对了!
1、继续,0、结束,请选择 : 1
94+60=154
你答对了!
1、继续,0、结束,请选择 : 1
66+25=91
你答对了!
1、继续,0、结束,请选择 : 1
57+54=111
你答对了!
1、继续,0、结束,请选择 : 3
38-5=33
你答对了!
1、继续,0、结束,请选择 : 3
89*26=
*/
#include <iostream>
#include <ctime>
using namespace std;
char TK(int k) { // 返回 char
switch(k) {
case 0 : return '+';
case 1 : return '-';
case 2 : return '*';
default: return ' ';
}
}
int TheRanswer(int x,int y,int k) {
switch(k) {
case 0 : return x + y;
case 1 : return x - y;
case 2 : return x * y;
default: return -1;
}
}
int main() {
srand((unsigned)time(NULL));
cout << "加法练习\n";
int x,y,k,answer,choose;
do {
x = rand()%100;
y = rand()%100;
k = rand()%3;
if(x < y){x ^= y;y ^= x;x ^= y;}
cout << x << TK(k) << y << "=";
cin >> answer;
if(answer == TheRanswer(x,y,k)) {
cout<<"你答对了!\n";
}
else cout<<"你答错了!\n";
cout << "1、继续,0、结束,请选择 : ";
cin >> choose;
}while(choose);
return 0;
}
最好改为 const char* TK(int k)
p.s. 乘除都出来了,为什么叫“加法练习”(锤锤锤
补充:哦对你switch没加 { } 我刚刚都没注意到……