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不明白。请给我讲讲,谢谢。

main函数中void action1(int,int),action2(int,int);是函数声明。
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 &amp; i 是前置任务,我无法更改。我只需要这个向量的颠倒副本。

【问题讨论】:

谢天谢地,标准库不包含读取整个向量的内置方式。另请参阅此问题:***.com/questions/26589317/… 问自己这个问题。你认为这段代码cin &gt;&gt; v; 怎么知道向量有多大?希望这表明您无法以这种方式读取向量。如果你需要读取一个向量然后写一个循环,然后你可以决定做多大的向量。 您到底想做什么?我可以在您的函数中看到多个超出范围的索引错误... 错误消息告诉您vector 不包含该功能。有很多方法可以将一系列 int 读入向量,但这不是其中之一。值得注意的是,working[i] = working[z]; 看起来像是越界访问向量。 不要预先声明你的变量。在初始化它们时声明它们。 【参考方案1】:

您似乎在要求用户输入数字列表。 std::cin(或者只是cin,因为你有use namespace std;)不知道如何接收整数列表并将其转换为vector&lt;int&gt;

如果您想从用户输入接收矢量,我建议您向用户询问数字列表,例如:

// replace VECTOR_LENGTH
for (int i = 0; i < VECTOR_LENGTH; i++) 
  int num;
  cin >> num;
  v.push_back(num);

【讨论】:

非常感谢!我是新手,所以我不认为 不通过 "cin >>" 取值 查看代码中的错误消息,它并不能很好地表明您所犯的错误。这与 cin &gt;&gt;cout &lt;&lt; 是如何通过重载移位运算符实现的有关,这不一定对新手有帮助!【参考方案2】:

当您这样做cin &gt;&gt; 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的主要内容,如果未能解决你的问题,请参考以下文章

C语言中,怎么比较三个数的大小??

请问C语言是啥啊? 能给我详细的解释一下么? 谢谢了!

c语言 时间函数

c语言程序设计的基础题目求教,请给解析(多追积分)

C语言实现NFA转DFA

c语言for循环求高手讲解一下下面这道题--输出100以内的素数。