C/C++ 常用开发代码片段

Stack容器适配器中的数据是以LIFO的方式组织的,它是一种先进后出的数据结构,栈允许对元素进行新增,移除,获取栈顶,等操作,但栈不允许对内部元素进行遍历,只能访问栈顶部的元素,只有在移除栈顶部的元素后,才能访问下方的元素.

Stack 压栈/出栈

当运行该C++代码时,它会创建一个整数类型的栈,并将数字1和2依次压入栈中。然后,它会进入一个循环,在每次循环迭代中,从栈顶取出一个元素并打印其值,然后将其从栈中移除,直到栈为空为止。

#include <iostream>
#include <stack>
using namespace std;

int main(int argc, char* argv[])
{
	stack<int> st;

	st.push(1);   // 入栈
	st.push(2);

	while (!st.empty() || st.size()!=0)
	{
		cout << "pop -> " << st.top() << endl;
		st.pop();  // 出栈
	}
	system("pause");
	return 0;
}

heap 堆容器

这段C++代码使用标准库中的向量(vector)来存储整数,并将其中的元素转换为堆。然后,通过遍历输出堆中的元素,展示堆的内容,但输出的顺序可能不是按照升序排列。

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

void print(int x){ cout << x << "  "; }

int main(int argc, char* argv[])
{
	vector<int> v;

	v.push_back(1);
	v.push_back(2);
	v.push_back(3);

	push_heap(v.begin(), v.end());   // 入堆
	for_each(v.begin(), v.end(), print);
	system("pause");
	return 0;
}

数组实现逆序排列

这是一段使用C语言编写的程序。它包含一个自定义函数Swap_Array,用于将给定整数数组翻转。在主函数中,创建了一个包含从1到10的整数的数组,并调用Swap_Array函数将数组进行翻转。最后,程序输出翻转后的数组内容:10 9 8 7 6 5 4 3 2 1

#include <stdio.h>

void Swap_Array(int Array[], int Number)
{
	int x = 0;
	int y = Number - 1;
	while (x < y)
	{
		int tmp;
		tmp = Array[x];
		Array[x] = Array[y];
		Array[y] = tmp;
		x++; y--;
	}
}

int main(int argc, char* argv[])
{
	int Array[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

	Swap_Array(Array, 10);

	for (int x = 0; x < 10; x++)
	{
		printf("%d ", Array[x]);
	}

	system("pause");
	return 0;
}

用数组冒泡排序

这是一个使用C语言编写的冒泡排序算法程序。它通过自定义函数bubble对给定的整数数组进行排序。在主函数中,创建了一个包含从1到10的整数的数组,并调用bubble函数将数组排序。最后,程序输出已经排序后的数组内容:1 2 3 4 5 6 7 8 9 10

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void bubble(int *arr, int len)
{
	int flag = 1;
	for (int i = 0; i < len - 1; i++)
	{
		for (int j = 0; j < len - i - 1; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				flag = 0;
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
		if (flag)
			return;
		flag = 1;
	}
}

int main(int argc, char* argv[])
{
	int Array[] = {1,2,3,4,5,6,7,8,9,10};

	int len = sizeof(Array) / sizeof(int);
	bubble(Array, len);

	for (int x = 0; x < len; x++)
		printf("%d \n", Array[x]);

	system("pause");
	return 0;
}

打印乘法口诀表

这是一个使用C语言编写的九九乘法表程序。它通过两层嵌套循环,输出从1到9的乘法表。程序会在控制台输出九行九列的乘法表,每个乘法算式之间用制表符分隔,每一行之间用换行符分隔。

#include <stdio.h>

int main(int argc, char* argv[])
{
	int i, j;
	for (i = 1; i <= 9; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf("%d*%d=%d\t", j, i, i*j);
		}
		printf("\n");
	}
	system("pause");
	return 0;
}

输出随机数与字母

这是一个使用C语言编写的生成随机数的程序。它通过设置随机种子,并使用rand()函数生成不同范围内的随机整数和随机字符。程序将输出20组随机数,包括1到100范围内的整数、大写字母A到Z、小写字母a到z。每组随机数输出一行。

#include <stdio.h>
#include <time.h>

int main(int argc, char* argv[])
{
	srand((unsigned int)time(NULL));     // 设置随机种子
	for (int x = 0; x <= 20; x++)
	{
		int rand_num = rand() % 100 + 1; // 产生 1 - 100 范围内的随机数
		printf("1-100以内随机数: %d \n", rand_num);

		rand_num = rand() % 25 + 66;     // 产生 65 - 90 范围内的随机数
		printf("A-Z以内的随机数: %c \n", rand_num);

		rand_num = rand() % 25 + 98;     // 产生 97 - 122 范围内的随机数
		printf("a-z以内的随机数: %c \n", rand_num);
	}
	system("pause");
	return 0;
}

生成随机数字串

这是一个使用C++编写的生成随机数的程序。它包含一个名为GetRandom的自定义函数,用于生成包含随机整数和随机字母的随机数序列。在主函数中,通过调用GetRandom函数,生成三组长度为5的随机数序列,并在每组序列之间用短横线连接输出。每组随机数序列输出一行。

#include <iostream>
#include <time.h>

int GetRandom(int bit){
	for (int x = 0; x < bit; x++)
	{
		int rand_number = 0;
		int rand_range = rand() % 4 + 1;  // 取 1-3 之间的随机数
		switch (rand_range)
		{
		case 1:  // 得到一个整数
			rand_number = rand() % 10 + 1;
			printf("%d", rand_number);
		case 2: // 得到一个小写字母
			rand_number = rand() % 25 + 66;
			printf("%c", rand_number);
		case 3: // 得到一个大写字母
			rand_number = rand() % 25 + 98;
			printf("%c", rand_number);
		default:
			continue;
		}
	}
	return 1;
}

int main(int argc, char* argv[])
{
	for (int x = 0; x < 3; x++)
	{
		GetRandom(5);
		printf("-");
	}
	printf("\n");
	system("pause");
	return 0;
}

随机数去重

这是一个使用C语言编写的生成随机数并去重的程序。它通过设置随机种子,生成10个不重复的随机整数,并将它们存储在数组中。程序会输出这10个不重复的随机整数。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

int main(int argc, char* argv[])
{
	srand((unsigned int)time(NULL));

	int ran[10];


	for (int x = 0; x < 10; x++)
	{
		ran[x] = rand() % 33 + 1;
		// 实现去重
		for (int y = 0; y < x; y++)
		{
			if (ran[x] == ran[y])
			{
				x--; continue;
			}
		}
	}

	for (int x = 0; x < 10; x++)
	{
		printf("%d ", ran[x]);
	}

	system("pause");
	return 0;
}

时间日期格式化

  1. 主函数:int main(int argc, char* argv[]) 是C++程序的入口点。

  2. 获取当前时间:使用time函数获取当前的时间戳,并使用ctime函数将时间戳转换成可读格式,然后输出当前时间。

  3. 格式化本地时间:使用localtime函数获取本地时间的结构体表示,然后对年份和月份进行修改(年份向后延期一年,月份向前推2个月)。

  4. 输出格式化本地时间:使用strftime函数将修改后的本地时间按照指定格式("%Y-%m-%d %H:%M:%S")进行格式化,并输出格式化后的本地时间。

  5. 计算自 1970-01-01 起的小时数:使用time函数获取当前时间戳,并通过除以3600(每小时的秒数)计算自1970年1月1日以来的小时数,并输出结果。

  6. 等待用户输入:system("pause");这行代码在Windows系统中用于暂停程序的执行,以便用户查看输出结果。

该程序涵盖了获取当前时间、本地时间的修改和格式化,以及计算时间戳对应的小时数等功能。

#include <iostream>
#include <time.h>

int main(int argc, char* argv[])
{
	time_t curtime;
	struct tm *info;
	char buffer[80];

	time(&curtime);
	printf("当前时间: %s\n", ctime(&curtime));

	info = localtime(&curtime);
	info->tm_year = info->tm_year + 1;  // 年份向后延期一年
	info->tm_mon = info->tm_mon - 2;  // 月份向前推2个月

	strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", info);
	printf("格式化本地时间: %s\n", buffer);

	time_t seconds;
	seconds = time(NULL);
	printf("自 1970-01-01 起的小时数 = %ld\n", seconds / 3600);

	system("pause");
	return 0;
}

输入日期判断是周几

功能概述:

  1. 主函数:int main(int argc, char* argv[]) 是C++程序的入口点。

  2. 定义日期:程序中定义了一个日期,即 year 年份为 2013,month 月份为 12,day 日期为 21。

  3. 获取星期:使用 time 函数获取当前的时间戳 rawtime,然后使用 localtime 函数将时间戳转换为本地时间结构体 timeinfo。接着,将年、月、日分别设置为给定的日期,通过调用 mktime 函数将 timeinfo 结构体转换为标准的日历时间。最后,通过索引数组 weekday 获取给定日期的星期,并输出结果。

  4. 输出结果:程序输出给定日期(2013-12-21)对应的星期信息。

  5. 等待用户输入:system("pause");这行代码在Windows系统中用于暂停程序的执行,以便用户查看输出结果。

该程序用于获取给定日期的星期信息,如输出结果可能是:2013-12-21 是 => 周六

#include <iostream>
#include <time.h>

int main(int argc, char* argv[])
{
	time_t rawtime;
	struct tm *timeinfo;
	int year = 2013, month = 12, day=21;
	const char *weekday[] = { "周日", "周一", "周二", "周三", "周四", "周五", "周六" };

	time(&rawtime);
	timeinfo = localtime(&rawtime);
	timeinfo->tm_year = year - 1900;
	timeinfo->tm_mon = month - 1;
	timeinfo->tm_mday = day;
	mktime(timeinfo);

	printf("%d-%d-%d 是 => %s \n", year,month,day,weekday[timeinfo->tm_wday]);
	system("pause");
	return 0;
}

计算时间差

功能概述:

  1. 主函数:int main(int argc, char* argv[]) 是C++程序的入口点。

  2. 计时器:使用 clock 函数来测量程序中一个空循环的执行时间。

  3. 空循环:程序中有一个空的 for 循环,循环执行一千万次,但在循环体内没有任何实际操作。

  4. 测量时间:通过记录循环开始和结束的 clock 值,计算循环的总执行时间,并输出结果。

  5. 输出结果:程序输出循环的总执行时间,即 CPU 占用的总时间。

  6. 等待用户输入:system("pause");这行代码在Windows系统中用于暂停程序的执行,以便用户查看输出结果。

该程序用于测量一个空循环的执行时间,以测试程序在计算上的耗时。输出结果为 CPU 占用的总时间,单位为秒。

#include <time.h>
#include <iostream>

int main(int argc, char* argv[])
{
	clock_t start_t, end_t;
	double total_t;
	start_t = clock();
	for (int i = 0; i< 10000000; i++)
	{
	}
	end_t = clock();
	total_t = (double)(end_t - start_t) / CLOCKS_PER_SEC;
	printf("CPU 占用的总时间:%f\n", total_t);
	system("pause");
	return(0);
}

Popen 执行命令

功能概述:

  1. 主函数:int main(int argc, char* argv[]) 是C++程序的入口点。

  2. 执行外部命令:程序通过调用_popen函数执行外部命令ipconfig,并以只读方式打开其输出流。

  3. 读取并输出输出流:通过fgets函数从输出流中读取数据,并将读取到的内容输出到标准输出流(stdout)。

  4. 输出结果:程序将ipconfig命令的输出结果显示在控制台中。

  5. 等待用户输入:system("pause");这行代码在Windows系统中用于暂停程序的执行,以便用户查看输出结果。

该程序用于执行并显示ipconfig命令的输出结果。它可以显示当前系统的网络配置信息,包括IP地址、网关、子网掩码等。

#include <iostream>
#include <stdio.h>

int main(int argc, char* argv[])
{
	char buffer[4096];
	FILE *fi = _popen("ipconfig", "r");
	while (fgets(buffer, 4096, fi) != NULL){
		fprintf(stdout, "%s", buffer);
	}
	system("pause");
	return 0;
}

隐藏控制台

功能概述:

  1. #pragma comment 指令:这是一个编译器指令,用于告诉链接器(linker)使用指定的子系统(subsystem)和入口点(entry point)。

  2. 子系统和入口点:通过 #pragma comment 指令,程序被设置为使用"windows"子系统,且入口点被设置为"mainCRTStartup"。

  3. 主函数:int main() 是C语言程序的入口点。

  4. 无限循环:程序中有一个无限循环 while(1),在循环体内不断输出字符 "a"。

  5. 输出结果:程序将不断输出字符 "a",直到手动中止程序的运行。

该程序被设置为以Windows子系统方式运行,而且在执行时会持续输出字符 "a"。由于是无限循环,程序会一直运行下去,直到手动停止它的运行。

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
#include <stdio.h>

int main()
{
    while (1)
        printf("a");
    return 0;
}

猴子吃桃

#include <stdio.h>
int main(int argc, char *argv[])
{
  int day,x1,x2;
  day=9;
  x2=1;
  while(day>0)
    {
      x1=(x2+1)*2;
      x2=x1;
      day--;
    }
  printf ("the total is %d\n",x1);
  return 0;
}

穷举灯塔数量

#include <stdio.h>
int main(int argc, char *argv[])
{
  int n=1,m,sum,i;
  while(1)
    {
      m=n;
      sum=0;
      for (i=1; i<8; i++)
{
  m=m*2;
  sum+=m;
 }
      sum+=n;
      if (sum==765)
{
  printf ("the first floor has %d\n",n);
  printf ("the eight floor has %d\n",m);
  break;
 }
      n++;
    }
  return 0;
}

小球下落问题

#include <stdio.h>
int main(int argc, char *argv[])
{
  float i,h=100,s=100;
  for (i=1; i<=9; i++)
    {
      h=h/2;
      s+=h*2;
    }
  printf ("the total length is %f\n",s);
  printf ("the lenght of tenth time is %f\n",h/2);
  return 0;
}

彩球问题

#include <stdio.h>
int main(int argc, char *argv[])
{
  int i,j,count;
  puts("the result is:\n");   //向屏幕上输出提示信息
  printf ("time  red ball  white ball  black ball\n");
  count = 1;
  for(i=0;i<=3;i++)
    for(j=0;j<=3;j++)
      if((8-i-j)<=6)
	printf ("%3d%7d%12d%12d\n",count++,i,j,8-i-j);
  return 0;
}

打印杨辉三角

#include <stdio.h>
int main(int argc, char *argv[])
{
       int i,j,a[11][11];
       for (i=1; i<11; i++)
	 {
	   a[i][i]=1;
	   a[i][1]=1;
	 }
       for (i=3; i<11; i++)
	 {
	   for (j=2; j<=i-1; j++)
	     {
	       a[i][j]=a[i-1][j-1]+a[i-1][j];
	     }
	 }
       for (i=1; i<11; i++)
	 {
	   for (j=1; j<=i; j++)
	       printf ("%4d\t",a[i][j]);
	   printf ("\n");
	 }
       return 0;
}

打印乘法口决表

#include <stdio.h>
int main(int argc, char *argv[])
{
  int i,j;
  for (i=1; i<=9; i++)
    {
      for (j=1; j<=i; j++)
{
  printf ("%d*%d=%d p",i,j,i*j);
 }
      printf ("\n");
    }
  return 0;
}

评定成绩等级

#include <stdio.h>
int main(int argc, char *argv[])
{
  int score;
  printf ("please enter score(score<=10):");
  scanf("%d",&score);
  if (score==100)
    {
      score =90;
    }
  score = score/10;
  switch(score)
    {
    case 9:
      printf ("the grade is A\n");
      break;
    case 8:
      printf ("the grade is B\n");
      break;
    case 7:
      printf ("the grade is C\n");
      break;
    case 6:
      printf ("the grade is D\n");
      break;
    default:
      printf ("the grade is E\n");
    }
  return 0;
}

对调数问题

#include <stdio.h>
int main(int argc, char *argv[])
{
  int x,y,z,x1,y1,z1,i,k,n,j=0;
  while(1)
    {
      printf ("please input an integer\n");
      scanf("%d",&n);
      if (n<=10||n>=100)
{
  printf ("data error\n");
  continue;
 }
      else if (n%10==0)
{
  printf ("data error\n");
  continue;
 }
      else
	{
	  x=n/10;
	  y=n%10;
	  z=10*y+x;
	  break;
	}
    }
  for (i=11; i<100; i++)
    {
      if (i%10==0)
	continue;   //结束本次循环
      else
	{
	  x1=i/10;
	  y1=i%10;
	  z1=10*y1+1;
	  //判断是否满足等式条件
	  if (n+i==z+z1&&n!=z1)
{
  printf ("%d+%d=%d+%d\n",n,i,z,z1);
  j++;
 }
	  else
	    continue;
	}
    }
if(j==0)
  printf ("inexistince\n");
  return 0;
}

判断润年

#include <stdio.h>
int main(int argc, char *argv[])
{
  int year;
  printf ("please input the year:\n");
  scanf("%d",&year);
  if((year%4==0&&year%100!=0)||year%400==0)
    printf ("%d is a leap year\n",year);
  else
    printf ("%d is not a leap year\n",year);
  return 0;
}

阶梯问题

#include <stdio.h>
int main(int argc, char *argv[])
{
  int i;
  for (i=100; i<1000; i++)
    {
      if(i%2==1&&i%3==2&&i%5==4&&i%6==5&&i%7==0)
	printf ("the number of the stairs is %d\n",i);
    }
  return 0;
}

IP地址形式输出

#include <stdio.h>
 int bin_dec(int x,int n)     //将而进制转换成十进制
 {
   if(n==0)
     return 1;
   return x*bin_dec(x,n-1);
 }
int main(int argc, char *argv[])
{
  int i;
  int ip[4]={0};
  char a[33];
  printf ("please input binary number:\n");
  scanf("%s",a);
  for (i=0; i<8; i++)
    {
      if (a[i]=='1')
{
  ip[0]+=bin_dec(2,7-i);
 }
    }
  for (i=8; i<16; i++)
    {
      if (a[i]=='1')
{
  ip[1]+=bin_dec(2,15-i);
 }
    }
  for (i=16; i<24; i++)
    {
      if (a[i]=='1')
	{
	  ip[2]+=bin_dec(2,23-i);
	}
    }
  for (i=24; i<32; i++)
    {
      if (a[i]=='1')
	{
	  ip[3]+=bin_dec(2,31-i);
	}
      if (a[i]=='\0')
	{
	  break;
	}
    }
printf ("ip:");
printf ("%d.%d.%d.%d\n",ip[0],ip[1],ip[2],ip[3]);
  return 0;
}

N进制转换为十进制

#include <stdio.h>
#include <string.h>
main()
{
  long t1;
  int i,n,t,t3;
  char a[100];
  printf ("please input a number string:\n");
  gets(a);      //输入N进制数存到数组a中
  strupr(a);    //将a中的小写字母转换成大写字母
  t3=strlen(a);
  t1=0;
  printf ("please input n(2or8or16):\n");
  scanf("%d",&n);
  for (i=0; i<t3; i++)
    {
      if (a[i]-'0'>=n&&a[i]<'A'||a[i]-'A'+10>=n)//判断输入的数据和进制数是否相等
{
  printf ("data error!!");
  exit(0);        //推出程序
 }
      if (a[i] >= '0'&&a[i] <= '9')    //判断是否为数字
	t=a[i]-'0';
      else if(n>=11&&(a[i]>='A'&&a[i]<='A'+n-10))  //判断是否为字母o
	t=a[i]-'A'+10;
      t1=t1*n+t;      //求出最终转换成十进制的值
    }
  printf ("the decimal is %ld\n",t1);
  return 0;
}

求同学的平均身高

#include <stdio.h>

float average(float array[],int n)
{
  int i;
  float aver,sum=0;
  for(i=0;i<n;i++)
    sum+=array[i];
  aver=sum/n;
  return(aver);
}
int main(int argc, char *argv[])
{
  float average(float array[],int n);
  float height[100],aver;
  int i,n;
  printf ("please input the number of students:\n");
  scanf("%d",&n);
  printf ("please input student's height:\n");
  for(i=0;i<n;i++)
    scanf("%f",&height[i]);
  printf ("\n");
  aver=average(height,n);
  printf ("average height is %6.2f\n",aver);
  return 0;
}

读取进程中的PEB环境块

#include <stdio.h>
#include <windows.h>
#include <winternl.h>

typedef NTSTATUS(NTAPI *typedef_NtQueryInformationProcess)(
	IN HANDLE ProcessHandle,
	IN PROCESSINFOCLASS ProcessInformationClass,
	OUT PVOID ProcessInformation,
	IN ULONG ProcessInformationLength,
	OUT PULONG ReturnLength OPTIONAL
	);

PEB Get_PEB(DWORD dwPid)
{
	typedef_NtQueryInformationProcess NtQueryInformationProcess = NULL;
	PROCESS_BASIC_INFORMATION pbi = { 0 };
	RTL_USER_PROCESS_PARAMETERS Param = { 0 };
	PEB peb = { 0 };

	HANDLE hProcess = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPid);

	// 需要通过 LoadLibrary、GetProcessAddress 从 ntdll.dll 中获取地址
	NtQueryInformationProcess = (typedef_NtQueryInformationProcess)::GetProcAddress(
		::LoadLibrary("ntdll.dll"), "NtQueryInformationProcess");
	if (NULL != NtQueryInformationProcess)
	{
		// 获取指定进程的基本信息
		NTSTATUS status = NtQueryInformationProcess(hProcess, ProcessBasicInformation, &pbi, sizeof(pbi), NULL);
	}

	// 获取指定进程进本信息结构中的PebBaseAddress
	::ReadProcessMemory(hProcess, pbi.PebBaseAddress, &peb, sizeof(peb), NULL);
	// 获取指定进程环境块结构中的ProcessParameters, 注意指针指向的是指定进程空间中
	// ::ReadProcessMemory(hProcess, peb.ProcessParameters, &Param, sizeof(Param), NULL);

	printf("是否被调试: %d \n", peb.BeingDebugged);
	return peb;
}

int main(int argc, char * argv[])
{
	Get_PEB(GetCurrentProcessId());
	system("pause");
	return 0;
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VS Code提供了很多强大的C/C++插件,可以帮助开发者更高效地编写和调试C/C++代码。以下是一些常用的C/C++插件: 1. C/C++:这是必选的C/C++插件,它提供了语法高亮、智能代码补全、代码导航和调试等功能。 2. C/C++ Extension Pack:这是一个C/C++扩展包,包含了一组常用的C/C++插件,可以提供更全面的开发支持。 3. C/C++ Snippets:这个插件提供了一些常用的C/C++代码片段,可以帮助开发者快速编写重复的代码块。 4. C/C++ Advanced Lint:这个插件用于进行静态代码检查,可以帮助开发者找出潜在的代码错误和质量问题。 5. Better C Syntax:这个插件提供了更好的C语法高亮显示,可以让代码更易读。 6. Code Runner:这个插件可以帮助开发者在VS Code中直接运行C/C++代码,方便测试和调试。 7. Include AutoComplete:这个插件可以自动补全C/C++头文件的包含路径,减少手动输入的工作量。 8. GBKtoUTF8:这个插件可以将GBK编码的文件自动转换为UTF8编码,解决中文乱码问题。 9. compareit:这个插件可以用于比较两个文件的差异,方便代码审查和版本控制。 10. TabNine:这是一款AI自动补全插件,可以根据上下文快速生成代码片段,提高开发效率。 11. C/C++ Themes:这个插件提供了一些漂亮的C/C++图标和颜色主题,可以让代码编辑器更具个性化。 12. Prettier - Code formatter:这个插件可以自动调整C/C++代码的格式,统一代码风格。 13. vscode-icons:这个插件提供了一些漂亮的图标,可以用于美化资源管理器中的文件夹图标。 14. CMake、CMake Integration、CMake Language Support、CMake Tools、cmake-format:这几个插件用于在VS Code中支持CMake编译。 以上是一些常用的C/C++插件,可以根据自己的需求选择适合的插件来提高开发效率和代码质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值