c++编写代码实现以下图形+++* ++*** +***** *******
时间: 2023-11-25 20:49:53 浏览: 75
以下是c++编写代码实现以上图形的例子:
```c++
#include <iostream>
using namespace std;
int main() {
cout << " + " << endl;
cout << " ++* " << endl;
cout << "+***" << endl;
cout << "*****" << endl;
cout << "+***" << endl;
cout << " ++* " << endl;
cout << " + " << endl;
return 0;
}
```
输出:
```
+
++*
+***
*****
+***
++*
+
```
相关问题
devc++编写界面计算器有+-*/和括号
好的,我可以帮你解决这个问题。你可以使用Dev-C++集成开发环境中的图形用户界面库来创建一个简单的计算器程序。以下是一个简单的示例代码,可以实现基本的数学计算和括号运算:
```c++
#include <graphics.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#define MaxSize 100
int stack[MaxSize];
int top = -1;
// 定义计算器按键的位置和尺寸
int button_left = 50;
int button_top = 100;
int button_width = 50;
int button_height = 50;
void push(int x) {
if (top == MaxSize - 1) {
printf("Stack is full!\n");
} else {
top++;
stack[top] = x;
}
}
int pop() {
if (top == -1) {
printf("Stack is empty!\n");
return -1;
} else {
int x = stack[top];
top--;
return x;
}
}
void draw_button(char* text, int x, int y) {
setcolor(WHITE);
rectangle(x, y, x + button_width, y + button_height);
outtextxy(x + 10, y + 10, text);
}
void draw_digit_buttons() {
char text[2];
int x = button_left;
int y = button_top;
for (int i = 0; i <= 9; i++) {
text[0] = '0' + i;
text[1] = '\0';
draw_button(text, x, y);
x += button_width;
if ((i + 1) % 3 == 0) {
x = button_left;
y += button_height;
}
}
}
void draw_operator_buttons() {
draw_button("+", button_left + button_width * 3, button_top);
draw_button("-", button_left + button_width * 3, button_top + button_height);
draw_button("*", button_left + button_width * 3, button_top + button_height * 2);
draw_button("/", button_left + button_width * 3, button_top + button_height * 3);
draw_button("(", button_left + button_width * 4, button_top);
draw_button(")", button_left + button_width * 4, button_top + button_height);
}
void draw_equal_button() {
draw_button("=", button_left + button_width * 2, button_top + button_height * 4);
}
void draw_clear_button() {
draw_button("C", button_left + button_width * 3, button_top + button_height * 4);
}
void draw_all_buttons() {
draw_digit_buttons();
draw_operator_buttons();
draw_equal_button();
draw_clear_button();
}
void evaluate_expression(char* expression) {
int len = strlen(expression);
int i = 0;
while (i < len) {
if (isdigit(expression[i])) {
int num = 0;
while (i < len && isdigit(expression[i])) {
num = num * 10 + (expression[i] - '0');
i++;
}
push(num);
} else if (expression[i] == '+' || expression[i] == '-' || expression[i] == '*' || expression[i] == '/') {
int b = pop();
int a = pop();
int result = 0;
switch (expression[i]) {
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
case '/':
result = a / b;
break;
}
push(result);
i++;
} else if (expression[i] == '(') {
push(-1);
i++;
} else if (expression[i] == ')') {
int result = 0;
while (stack[top] != -1) {
result += pop();
}
pop();
push(result);
i++;
} else {
i++;
}
}
printf("%s = %d\n", expression, pop());
}
int main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
draw_all_buttons();
char expression[MaxSize];
int pos = 0;
while (true) {
if (kbhit()) {
char ch = getch();
if (ch == 'C' || ch == 'c') {
// 清空输入
pos = 0;
setcolor(BLACK);
rectangle(button_left, button_top - 20, button_left + button_width * 5, button_top - 5);
continue;
} else if (ch == '=') {
// 计算表达式
expression[pos] = '\0';
evaluate_expression(expression);
pos = 0;
setcolor(BLACK);
rectangle(button_left, button_top - 20, button_left + button_width * 5, button_top - 5);
continue;
}
// 显示输入的字符
setcolor(WHITE);
outtextxy(button_left + pos * button_width, button_top - 20, &ch);
// 添加到表达式中
expression[pos++] = ch;
}
}
closegraph();
return 0;
}
```
这个程序使用了 Dev-C++ 集成开发环境中的图形用户界面库,通过鼠标点击计算器按钮来输入数字和运算符,并且支持括号运算。在这个程序中,我们使用一个栈来计算表达式的值。你可以根据自己的需求来修改这个程序,并添加更多的功能。
C# 调用C++ Dll 参数 void*
### 回答1:
在 C# 中调用 C++ DLL 时,如果 DLL 中的函数接受一个 void* 类型的参数,可以使用 IntPtr 来代替。
例如,假设 C++ DLL 中有以下函数:
```cpp
void MyFunction(void* data);
```
在 C# 中可以这样调用:
```csharp
[DllImport("mydll.dll")]
public static extern void MyFunction(IntPtr data);
// 调用
byte[] myData = new byte[100];
IntPtr ptr = Marshal.AllocHGlobal(myData.Length);
Marshal.Copy(myData, 0, ptr, myData.Length);
MyFunction(ptr);
Marshal.FreeHGlobal(ptr);
```
在上面的代码中,我们先使用 `Marshal.AllocHGlobal` 分配了一块内存,然后使用 `Marshal.Copy` 将数据拷贝到这个内存中。最后,我们将这个内存的指针传递给了 `MyFunction` 函数。调用结束后,我们需要使用 `Marshal.FreeHGlobal` 释放这块内存。
需要注意的是,void* 类型的参数在 C++ 中可以表示任何类型的指针,所以在 C# 中调用时需要确保传递的指针类型与 C++ 中期望的类型相同。
### 回答2:
C是一种常见的编程语言,最初由贝尔实验室的丹尼斯·里奇和肯·汤普逊开发出来。它是一种通用的、过程化的编程语言,具有高度可移植性和高效性。
C语言的设计目标是为了编写操作系统和系统软件,因此它具有很高的效率和灵活性。它提供了丰富的控制结构,如条件语句、循环语句和函数,使程序员能够更加精确地控制程序的执行流程。
C语言还具有强大的指针功能,可以直接访问和操作内存中的数据,这使得C语言在系统级编程中非常实用和强大。同时,C语言的指针也是学习其他高级编程语言的基础,例如C++和Java。
另外,C语言还具有广泛的应用领域。它可以用于开发图形界面应用程序、嵌入式系统、网络协议等等。由于C语言的高效性和可移植性,许多著名的软件和操作系统都是使用C语言编写的,如UNIX操作系统和Linux操作系统。
总之,C语言是一种强大而广泛应用的编程语言,具有高效性、可移植性和灵活性。无论是初学者还是专业开发者,在学习和应用C语言时都可以受益匪浅。