C/C++ 常用开发代码片段
Stack容器适配器中的数据是以LIFO的方式组织的,它是一种先进后出的数据结构,栈允许对元素进行新增,移除,获取栈顶,等操作,但栈不允许对内部元素进行遍历,只能访问栈顶部的元素,只有在移除栈顶部的元素后,才能访问下方的元素.
Stack 压栈/出栈
当运行该C++代码时,它会创建一个整数类型的栈,并将数字1和2依次压入栈中。然后,它会进入一个循环,在每次循环迭代中,从栈顶取出一个元素并打印其值,然后将其从栈中移除,直到栈为空为止。
#include
#include
using namespace std;int main(int argc, char* argv[])
{stack 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
#include
#include using namespace std;void print(int x){ cout << x << " "; }int main(int argc, char* argv[])
{vector 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 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
#include
#include 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 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
#include 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
#include 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
#include
#include
#include 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;
} 时间日期格式化
-
主函数:
int main(int argc, char* argv[])是C++程序的入口点。 -
获取当前时间:使用
time函数获取当前的时间戳,并使用ctime函数将时间戳转换成可读格式,然后输出当前时间。 -
格式化本地时间:使用
localtime函数获取本地时间的结构体表示,然后对年份和月份进行修改(年份向后延期一年,月份向前推2个月)。 -
输出格式化本地时间:使用
strftime函数将修改后的本地时间按照指定格式("%Y-%m-%d %H:%M:%S")进行格式化,并输出格式化后的本地时间。 -
计算自 1970-01-01 起的小时数:使用
time函数获取当前时间戳,并通过除以3600(每小时的秒数)计算自1970年1月1日以来的小时数,并输出结果。 -
等待用户输入:
system("pause");这行代码在Windows系统中用于暂停程序的执行,以便用户查看输出结果。
该程序涵盖了获取当前时间、本地时间的修改和格式化,以及计算时间戳对应的小时数等功能。
#include
#include 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;
} 输入日期判断是周几
功能概述:
-
主函数:
int main(int argc, char* argv[])是C++程序的入口点。 -
定义日期:程序中定义了一个日期,即
year年份为 2013,month月份为 12,day日期为 21。 -
获取星期:使用
time函数获取当前的时间戳rawtime,然后使用localtime函数将时间戳转换为本地时间结构体timeinfo。接着,将年、月、日分别设置为给定的日期,通过调用mktime函数将timeinfo结构体转换为标准的日历时间。最后,通过索引数组weekday获取给定日期的星期,并输出结果。 -
输出结果:程序输出给定日期(2013-12-21)对应的星期信息。
-
等待用户输入:
system("pause");这行代码在Windows系统中用于暂停程序的执行,以便用户查看输出结果。
该程序用于获取给定日期的星期信息,如输出结果可能是:2013-12-21 是 => 周六。
#include
#include 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;
} 计算时间差
功能概述:
-
主函数:
int main(int argc, char* argv[])是C++程序的入口点。 -
计时器:使用
clock函数来测量程序中一个空循环的执行时间。 -
空循环:程序中有一个空的
for循环,循环执行一千万次,但在循环体内没有任何实际操作。 -
测量时间:通过记录循环开始和结束的
clock值,计算循环的总执行时间,并输出结果。 -
输出结果:程序输出循环的总执行时间,即 CPU 占用的总时间。
-
等待用户输入:
system("pause");这行代码在Windows系统中用于暂停程序的执行,以便用户查看输出结果。
该程序用于测量一个空循环的执行时间,以测试程序在计算上的耗时。输出结果为 CPU 占用的总时间,单位为秒。
#include
#include 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 执行命令
功能概述:
-
主函数:
int main(int argc, char* argv[])是C++程序的入口点。 -
执行外部命令:程序通过调用
_popen函数执行外部命令ipconfig,并以只读方式打开其输出流。 -
读取并输出输出流:通过
fgets函数从输出流中读取数据,并将读取到的内容输出到标准输出流(stdout)。 -
输出结果:程序将
ipconfig命令的输出结果显示在控制台中。 -
等待用户输入:
system("pause");这行代码在Windows系统中用于暂停程序的执行,以便用户查看输出结果。
该程序用于执行并显示ipconfig命令的输出结果。它可以显示当前系统的网络配置信息,包括IP地址、网关、子网掩码等。
#include
#include 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;
} 隐藏控制台
功能概述:
-
#pragma comment指令:这是一个编译器指令,用于告诉链接器(linker)使用指定的子系统(subsystem)和入口点(entry point)。 -
子系统和入口点:通过
#pragma comment指令,程序被设置为使用"windows"子系统,且入口点被设置为"mainCRTStartup"。 -
主函数:
int main()是C语言程序的入口点。 -
无限循环:程序中有一个无限循环
while(1),在循环体内不断输出字符 "a"。 -
输出结果:程序将不断输出字符 "a",直到手动中止程序的运行。
该程序被设置为以Windows子系统方式运行,而且在执行时会持续输出字符 "a"。由于是无限循环,程序会一直运行下去,直到手动停止它的运行。
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
#include int main()
{while (1)printf("a");return 0;
} 猴子吃桃
#include
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
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
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
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
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
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
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
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++;}elsecontinue;}}
if(j==0)printf ("inexistince\n");return 0;
} 判断润年
#include
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);elseprintf ("%d is not a leap year\n",year);return 0;
} 阶梯问题
#include
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 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
#include
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=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)) //判断是否为字母ot=a[i]-'A'+10;t1=t1*n+t; //求出最终转换成十进制的值}printf ("the decimal is %ld\n",t1);return 0;
} 求同学的平均身高
#include float average(float array[],int n)
{int i;float aver,sum=0;for(i=0;i 读取进程中的PEB环境块
#include
#include
#include 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;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
