vs 2022 c++画图


#include <graphics.h>
#include <conio.h>
 
int main() {
    initgraph(640, 480); // 初始化图形界面
    setbkcolor(WHITE); // 设置背景色为白色
    cleardevice(); // 清空屏幕
 
    // 绘制缺口的弧形
    int x1 = 200, y1 = 200; // 起点坐标
    int r1 = 50; // 半径1
    int r2 = 30; // 半径2
    int angle1 = 0, angle2 = 90; // 起始角度和终止角度
    int n = 100; // 圆周上的点数
    int i;
    for (i = 0; i < n; i++) {
        int x = x1 + r1 * cos(angle1) + r2 * sin(angle1);
        int y = y1 + r1 * sin(angle1) + r2 * cos(angle1);
        setfillcolor(RED); // 设置填充颜色为红色
        fillcircle(x, y, r1); // 在圆周上绘制红色小圆点
        angle1 += PI/n; // 每次旋转的角度增加PI/n
    }

为啥画不成路徽的形状

img

img

  • 关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:2022华为机试真题 C++ 实现【分苹果】
  • 除此之外, 这篇博客: 2022蓝桥杯C++刷题记录中的 括号序列 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 题解链接.

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<vector>
    #include<algorithm>
    #include<map>
    #include<cmath>
    #include<queue>
    using namespace std;
    const int N=5003,mod=1e9+7;
    int n;
    char s[N];
    long long f[N][N];//f[i][j]表示前i个序列中左括号比右括号多j个的合法方案数 
    long long cal()//计算插入括号合法方案数 
    {
    	memset(f,0,sizeof f);
    	f[0][0]=1;//初始化
    	for(int i=1;i<=n;i++)
    	{
    		if(s[i]=='(') 
    		{
    			for(int j=1;j<=n;j++)
    				f[i][j]=f[i-1][j-1];
    		}
    		else
    		{
    			f[i][0]=(f[i-1][0]+f[i-1][1])%mod;//注意0的时候需要特殊处理一下,因为j-1=-1,所以我们不能用化简后的递推式去计算,只能用化简前的递推式去计算
    			for(int j=1;j<=n;j++)
    				f[i][j]=(f[i-1][j+1]+f[i][j-1])%mod;
    		}
    		for(int i=0;i<=n;i++)//答案要求我们插入的括号数尽量小,所以要从小向大枚举,右括号的数目是不变的,当加入尽量小的左括号且有解时就返回即可 
    			if(f[n][i]) return f[n][i];
    	} 
    }
    int main()
    {
    	scanf("%s",s+1);
    	n=strlen(s+1);
    	long long ans1=cal();//记录左括号的插入方案数 
    	reverse(s+1,s+n+1);//将原序列逆置
    	for(int i=1;i<=n;i++)
    		if(s[i]=='(') s[i]=')';
    		else s[i]='(';
    	long long ans2=cal();//记录右括号的插入方案数
    	printf("%lld",ans1*ans2%mod);
    	return 0; 
    }
    

    在这里插入图片描述

angle1 angle2类型改为浮点型。