c语言:请给我讲解一下action
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言:请给我讲解一下action相关的知识,希望对你有一定的参考价值。
#include
main()
void action1(int,int),action2(int,int);
char c;
int a=1,b=3;
c=getchar();
switch(c)
case'a':
case'A':action1(a,b);break;
case'b':
case'B':action2(a,b);break;
default:putchar('\a');
getch();
void action1(int x,int y)
printf("x*y=%d",x*y);
void action2(int x,int y)
printf("x+y=%d",x+y);
请给我讲解一下action的意思,所有的action,我看选择结构出现这么一段,其他的我都懂,就是action不明白。请给我讲讲,谢谢。
case'a': //如果c==a,什么也不做,继续执行下一句,直到遇到break或语句结束
case'A':action1(a,b);break; //如果c==A,执行action1(a,b),break跳出选择语句;
case'b'://如果c==b,什么也不做,继续执行下一句,直到遇到break或语句结束
case'B':action2(a,b);break; //如果c==B,执行action2(a,b),break跳出选择语句;
default:putchar('\a'); ////如果c==其他,执行putchar('\a');
action1(a,b)输出:x*y=z,(z=x*y的具体值)
action1(a,b)输出:x+y=z,(z=x+y的具体值) 参考技术A action应该是自己声明的一个函数吧,第一部分是对它的使用,第二部分是对它的解释
就像max(a,b)一样要事先声明 参考技术B 你不知道瞎菜什么呢,人家让你讲action,你讲了switch
“不匹配运算符>>”但我不明白为啥。请给我解释一下好吗?
【中文标题】“不匹配运算符>>”但我不明白为啥。请给我解释一下好吗?【英文标题】:"No match for operator>>" but I don't understand why. Could you explain me, please?“不匹配运算符>>”但我不明白为什么。请给我解释一下好吗? 【发布时间】:2020-10-15 19:37:14 【问题描述】:我有以下代码:
#include <iostream>
#include <vector>
using namespace std;
vector<int> Reversed(const vector<int>& v)
//vector<int> v; //[Error] declaration of 'std::vector<int> v' shadows a parameter
int z; vector<int> copy; vector<int> working;
working = v;
z = working.size();
int i;
for (i = 0; i<=z; i++)
working[i] = working[z];
copy.push_back(working[i]);
return copy;
int main()
vector<int> v;
cin >> v; /*[Error] no match for 'operator>>' (operand types are 'std::istream'
aka 'std::basic_istream<char>' and 'std::vector<int>')*/
cout << Reversed(v);
return 0;
请向我解释为什么我在第 18 行收到此错误:
运算符不匹配>>`
P.s.:const & i
是前置任务,我无法更改。我只需要这个向量的颠倒副本。
【问题讨论】:
谢天谢地,标准库不包含读取整个向量的内置方式。另请参阅此问题:***.com/questions/26589317/… 问自己这个问题。你认为这段代码cin >> v;
怎么知道向量有多大?希望这表明您无法以这种方式读取向量。如果你需要读取一个向量然后写一个循环,然后你可以决定做多大的向量。
您到底想做什么?我可以在您的函数中看到多个超出范围的索引错误...
错误消息告诉您vector
不包含该功能。有很多方法可以将一系列 int 读入向量,但这不是其中之一。值得注意的是,working[i] = working[z];
看起来像是越界访问向量。
不要预先声明你的变量。在初始化它们时声明它们。
【参考方案1】:
您似乎在要求用户输入数字列表。 std::cin
(或者只是cin
,因为你有use namespace std;
)不知道如何接收整数列表并将其转换为vector<int>
。
如果您想从用户输入接收矢量,我建议您向用户询问数字列表,例如:
// replace VECTOR_LENGTH
for (int i = 0; i < VECTOR_LENGTH; i++)
int num;
cin >> num;
v.push_back(num);
【讨论】:
非常感谢!我是新手,所以我不认为cin >>
和 cout <<
是如何通过重载移位运算符实现的有关,这不一定对新手有帮助!【参考方案2】:
当您这样做cin >> v;
时,您正试图一口气读取整个向量。您可能希望一次读取一个元素,例如:
#include <iostream>
#include <vector>
using namespace std;
int main(void)
// read five integers from stdin
const int n = 5;
vector<int> v(n);
for(int i = 0; i < n; ++i)
cin >> v[i];
for(int i = 0; i < n; ++i)
cout << v[i] << "\n";
return 0;
输出:
0
1
2
3
4
或者使用std::vector::push_back
@ajm 答案。
【讨论】:
我完全是新手。感谢您的提示,我会研究一下并尝试! @RamRai 请检查我更新的答案,大部分都丢失了。以上是关于c语言:请给我讲解一下action的主要内容,如果未能解决你的问题,请参考以下文章