VC++6.0支持哪些操作系统

请问各位前辈,vc++6.0对操作系统有什么要求啊?能用在64位win10上吗?如果不行,哪个版本能用?

4个回答

ingjava
ingjava 请问你这个链接是适合哪个系统的
大约 3 年之前 回复

可以的,但需要以管理员身份运行软件

7,8.1,10都可以,要下载相应的版本,百度一大堆,搜的时候加系统名称

如果不行我这有win10可用的版本 q495042691

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
VC++6.0支持哪些操作系统

请问各位前辈,vc++6.0对操作系统有什么要求啊?能用在64位win10上吗?如果不行,哪个版本能用?

32位操作系统中插件安装VC6.0 VA_X

32bit操作系统安装不上VC6.0 VA_X插件事什么原因?

求一个vc6.0 在Windows操作系统上安装的详细底层细节以及原理

**求一个vc6.0 在Windows操作系统上安装的详细底层细节以及原理**

vc6.0编程问题:怎么改窗口名称??

![图片说明](https://img-ask.csdn.net/upload/201504/21/1429607553_904111.png) 如图所示,本人小白,做课题时感觉应用程序自动生成的标题实在是过于单调,想修改下标题,如“图像处理系统”之类的,本来我想,生成标题的程序代码应该在某个cpp中,那个cpp文件里面估计有什么setwindowtittle之类的函数,于是就到各个cpp中去查找,结果一无所获。所以想请问大神,系统设置名称的程序在什么文件中(我建立的是一个多文档应用程序) 如果想修改“119064216--Blood.bmp”为“图像处理系统”改怎么操作。。。。多谢各位 感激不尽。。。

vc6.0如何在工程内调用另一个工程

就是说我有两个独立的工程,一个是系统界面软件,一个是接收数据的软件。我想要在系统界面中点击一个按钮打开接收数据的软件,并且在接收完成后再系统界面上显示下载完成。看到网上虽然可以在系统界面软件按钮处用Winexec或者ShellExecuteEx打开接收软件进行接收,但是不知道接收软件要怎么在下载完成后给系统界面一个返回值,用来执行显示下载完成,要在系统界面显示下载完成。 还有一个办法就是合并,不过不知道具体怎么操作,是把Source Files,Header Files,Resource Files的文件都添加到界面软件代码中吗?我是新手,还请多多指教。

求大神!我打不开VC6.0

![图片说明](https://img-ask.csdn.net/upload/201507/23/1437618394_738968.jpg) 求大神帮忙解决!!! 以前是可以用的,重装系统后就再也用不上了。

关于VC6.0建立MFC AppWizard[exe]

基本对话框类型 控件不见了,怎么破![图片说明](https://img-ask.csdn.net/upload/201605/28/1464439336_580163.png)

想求一个vc++6.0 64位的能兼容的

最好是中文版。我是一个c语言初学者,想去考2级很多东西都不知道。那个考试用的是英文版还是中文版

VC6.0 小学生四则运算

程序调试没有错误,就是运行不了 #include<iostream> #include<cstdlib> #include<string> #include <fstream> #include <conio.h> #include<iomanip> #include<ctime> using namespace std; #define MaxSize 100 struct stud { string usename;//文件记录的用户名 string code;//文件记录的密码 int sumnum;//总题数 double percent;//正确率 string end; }student[100];//stud student[100]; string rightusename,rightcode; int rightsumnum; double rightpercent; int n2;//文件中记录的学生所在第几个位置 int init1() { cout<<"小学生四则运算考试模拟系统"<<endl; cout<<" | "<<endl; cout<<" | "<<endl; cout<<" 1.登陆 | "<<endl; cout<<" | "<<endl; cout<<"------------+-------------"<<endl; cout<<" | "<<endl; cout<<" 2.注册 | "<<endl; cout<<" | "<<endl; cout<<" | "<<endl; cout<<"请选择(输入数字):"<<endl; return 1; } int calculate() { string usename; string code; ifstream fp2; fp2.open ("data.txt"); fp2.seekg (0, ios::end); int last = fp2.tellg(); // cout<<"个数"<<last; // cout<<"模版"<<sizeof(student)/100; int n=last/(sizeof(student)/100-7); // cout<<"对象个数:"<<n<<"\n"; //查询文件中对象的个数 ifstream fp3("data.txt"); int i=0; int sumnum; double percent; string end; while(i<n) { fp3>>usename>>code>>sumnum>>percent>>end; student[i].usename=usename; student[i].code=code; i++; } return n; } bool checkout()//登陆验证 { string usename; string code; cout<<"please input your usename:"; cin>>usename; int count=calculate(); bool findname=false; for (int i=0;i<count;i++) { if (student[i].usename==usename) { findname=true; rightusename=usename; cout<<"Name OK!\n"; int j=0; char str[10]="\0"; cout<<"please input your password:"; while (1) { str[j]= getch(); if (str[j++]=='\r')break; cout<<"*"; } for(int s = 0;s<j-1;s++) code += str[s]; bool findcode=false; if (student[i].code==code) { cout<<"\nLogin successfully!"<<endl; findcode=true; n2=i; rightcode=code; system("pause"); return true; } if (!findcode) { cout<<"\nPassword is not correct!"<<endl; system("pause"); return false; } } } if (!findname) { cout<<"Usename is not existed!"<<endl; system("pause"); return false; } getch(); } void Register()//注册 { string code,usename; double percent=0; int sumnum=0; cout<<"请输入你所确定用户名:"; cin>>usename; bool findname = true; while(findname){ findname = false; int count = calculate(); for (int i=0;i < count;i++) { if (!student[i].usename.compare(usename) ) {findname=true;} } if (findname) { cout<<"******************************"<<endl; cout<<"* 用户名已存在! *"<<endl; cout<<"* 请重新输入你的用户名! *"<<endl; cout<<"******************************"<<endl; system("pause"); system("cls"); cout<<"你所确定的用户名:"; cin>>usename; } } int i=0; char str[10]="\0"; cout<<"请输入你所确定的密码:"; while (1) { str[i]= getch(); if (str[i++]=='\r')break; cout<<"*"; } for(int s = 0;s<i-1;s++) code += str[s]; // cout<<"\n请分别输入你所确定密码:"<<code<<endl; string end="end"; int number=0; ofstream fp("data.txt",ios::app); fp<<setw(16)<<usename<<"\n"<<setw(16)<<code<<"\n" <<setw(4)<<sumnum<<"\n"<<setw(8)<<percent<<"\n"<<end<<endl; cout<<"\n"<<"\t"<<" 注册成功!"<<endl; cout<<"*************************************"<<endl; printf("请重新登陆,退出请按E,继续请按其他键!"); char E; scanf("%s",&E); if(E=='E')exit(0); } struct { char ch; int pri; } //设定运算符优先级,ch运算符,pri优先级 lpri[]={{'=',0},{'(',1},{'*',5},{'/',5},{'+',3}, {'-',3},{')',6}}, rpri[]={{'=',0},{'(',6},{'*',4},{'/',4},{'+',2}, {'-',2},{')',1}}; int leftpri(char op) //求左运算符op的优先级 { int i; for (i=0;i<7;i++) if (lpri[i].ch==op) return lpri[i].pri; } int rightpri(char op) //求右运算符op的优先级 { int i; for (i=0;i<7;i++) if (rpri[i].ch==op) return rpri[i].pri; } bool InOp(char ch) //判断ch是否为运算符 { if (ch=='(' || ch==')' || ch=='+' || ch=='-' || ch=='*' || ch=='/') return true; else return false; } int Precede(char op1,char op2) //op1和op2运算符优先级的比较结果 { if (leftpri(op1)==rightpri(op2)) return 0; else if (leftpri(op1)<rightpri(op2)) return -1; else return 1; } void trans(char *exp,char postexp[]) //将算术表达式exp转换成后缀表达式postexp { struct { char data[MaxSize]; //存放运算符 int top; //栈指针 } op; //定义运算符栈 int i=0; //i作为postexp的下标 op.top=-1; op.top++; //将'='进栈 op.data[op.top]='='; while (*exp!='\0') //exp表达式未扫描完时循环 { if (!InOp(*exp)) //为数字字符的情况 { while (*exp>='0' && *exp<='9') //判定为数字 { postexp[i++]=*exp; exp++; } postexp[i++]='#'; //用#标识一个数值串结束 } else //为运算符的情况 switch(Precede(op.data[op.top],*exp)) { case -1: //栈顶运算符的优先级低:进栈 op.top++;op.data[op.top]=*exp; exp++; //继续扫描其他字符 break; case 0: //只有括号满足这种情况 op.top--; //将(退栈 exp++; //继续扫描其他字符 break; case 1: //退栈并输出到postexp中 postexp[i++]=op.data[op.top]; op.top--; break; } } //while (*exp!='\0') while (op.data[op.top]!='=') //此时exp扫描完毕,退栈到'='为止 { postexp[i++]=op.data[op.top]; op.top--; } postexp[i]='\0'; //给postexp表达式添加结束标识 } float compvalue(char exp[]) //计算后缀表达式的值 { struct { float data[MaxSize]; //存放数值 int top; //栈指针 } st; //定义数值栈 float d; char ch; int t=0; //t作为exp的下标 st.top=-1; ch=exp[t];t++; while (ch!='\0') //exp字符串未扫描完时循环 { switch (ch) { case'+':st.data[st.top-1]= st.data[st.top-1]+st.data[st.top]; st.top--;break; case '-':st.data[st.top-1]= st.data[st.top-1]-st.data[st.top]; st.top--;break; case '*':st.data[st.top-1]= st.data[st.top-1]*st.data[st.top]; st.top--;break; case '/': if (st.data[st.top]!=0) st.data[st.top-1]= st.data[st.top-1]/st.data[st.top]; else { cout<<"\n"<<"\t"<<"除零错误!"<<endl; exit(0); //异常退出 } st.top--;break; default: d=0; //将数字字符转换成数值存放到d中 while (ch>='0' && ch<='9') //为数字字符 { d=10*d+ch-'0'; ch=exp[t];t++; } st.top++; st.data[st.top]=d; } ch=exp[t];t++; } return st.data[st.top]; } void test() { char algtype[10] ;//计算类型 int i,j,t,//for的循环控制变量 points = 0;//成绩 string usename,code,end; srand((unsigned )time(NULL)); int n=rand()%6+5,//题目的个数,为5到10个 num[MaxSize][MaxSize];//操作数 char op[]={'+','-','*','/'}; cout<<"---------------------------------小学生算法运算测评-----------------------------"; cout<<"现在开始计算:"<<endl<<endl; for(i=0;i<n;++i) { cout<<"第"<<i+1<<"道题:"<<endl; srand((unsigned )time(NULL)); int m=rand()%4+2;//每道题中数字的个数,为2到5个 for(j=0;j<m;++j) { num[i][j] = rand() % 9+1; //产生的随机整数 algtype[j] = rand() % 4; } char string[MaxSize];//把符号数组和数字数组组合在一个字符串里 for(t=0,j=0;t<2*m-2;++t) { string[t]=num[i][j]+'0'; t++; string[t]=op[algtype[j]]; j++; } string[2*m-2]=num[i][m-1]+'0'; string[2*m-1]='\0'; //插入括号 int t=rand() % 5, r=rand() % 5,//r,t都是小于m的随机数 min,max,a;//a为字符串的长度 while(t==r||t>=m||r>= m) { r=rand()%5; t=rand() % 5; } min=t>r?r:t;//min为r,t较小的数 max=t>r?t:r;//max为t,r较大的数 if(min==0&&max==m-1); else { for(a=2*m-1;a>2*min;a--) string[a]=string[a-1]; string[2*min]='('; for(a=2*m;a>2*max+2;a--) string[a]=string[a-1]; string[2*max+2]=')'; string[2*m+1]='\0'; } //输出字符串 int d=0; while(string[d]!='\0') cout<<string[d++]; cout<<"= ?"<<"\n"<<"\t"<<"请输入答案:"; char answer[4]; //学生回答 cin>>answer; char postexp[MaxSize]; trans(string,postexp);//求得正确的答案 int value= compvalue(postexp);//value放的是正确的结果程序的计算结果 int i1= 0; int totle=0; bool fuhao = false; if(answer[0] == '-') {fuhao = true;i1++;} for(;answer[i1]!='\0';i1++) { totle=totle*10+answer[i1]-'0'; } if(fuhao) {totle = -totle;} if(totle == value) { cout<<"\t"<<"恭喜你,答案是对的!"<<endl; points++; } else { cout<<"\t"<<"抱歉,你做错了!"; cout<<"\t"<<"正确的答案是:"<<value<<endl; } int sumnum; double percent; char yesORno ; //回答是否继续 if(i<n-1) { cout<<"\t"<<"是否继续?y/n"<<"\t"; cin>>yesORno; if(yesORno =='y') cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl; else { cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl; cout<<"你已终止答题!"<<endl; cout<<"你所答的题目总数为:"<<i+1<<"\t"; cout<<"你目前答对的题目数:"<<points<<"\t"; cout<<"\n"<<"你答题的正确率是:"<<setprecision(3)<<float(points)/float(i+1)*100<<"%"<<endl; rightsumnum=i+1; rightpercent=float(points)/float(i+1)*100; i = n; } } if(i==n-1) { cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl; cout<<"你已完成所有的题目!"<<endl; cout<<"你所答的题目总数为:"<<i+1<<"\t"; cout<<"你目前答对的题目数:"<<points<<"\t"; cout<<"你答题的正确率是:"<<setprecision(3)<<float(points)/float(i+1)*100<<"%"<<endl; rightsumnum=i+1; rightpercent=float(points)/float(i+1)*100; } int location=n2*(sizeof(student)/100-7); fstream inoutfile("data.txt"); inoutfile.seekp(location); inoutfile<<setw(16)<<rightusename<<"\n"<<setw(16)<<rightcode<<"\n" <<setw(4)<<rightsumnum<<"\n"<<setw(8)<<rightpercent<<"\n"<<"end"<<endl; inoutfile.close (); } } int seegrade() { string end; system("cls"); int location=n2*(sizeof(student)/100-7); ifstream infile("data.txt"); infile.seekg(location); infile>>rightusename>>rightcode>>rightsumnum>>rightpercent>>end; int yes=rightpercent/100*rightsumnum; cout<<" \1\1\1\1 尊敬的"<<rightusename<<" \1\1\1\1"<<endl; cout<<"****************************************************"<<endl; cout<<"*您的上一次答题情况 *"<<endl; cout<<"*你所答题的个数为:"<<rightsumnum<<" *"<<endl; cout<<"*你答对的题目数为:"<<yes<<" *"<<endl; cout<<"*你答题的正确率为:"<<rightpercent<<"%"<<" *"<<endl; cout<<"****************************************************"<<endl; infile.close (); return 1; } int init2() { system("cls"); cout<<"小学生四则运算考试模拟系统"<<endl; cout<<" | "<<endl; cout<<" | "<<endl; cout<<" 1.开始答题| "<<endl; cout<<" | "<<endl; cout<<"------------+-------------"<<endl; cout<<" | "<<endl; cout<<" 2.查看分数| "<<endl; cout<<" | "<<endl; cout<<"------------+-------------"<<endl; cout<<" | "<<endl; cout<<" 3.退出 | "<<endl; cout<<" | "<<endl; cout<<" | "<<endl; cout<<"请选择(输入数字):"<<endl; return 1; } int main() { while(1) { int i; init1(); i = getch(); if(i=='1') system("cls"); else if(i='2'){system("cls");Register();system("cls");cout<<"请重新登录!"<<endl; } if(checkout()) { while(1) { init2(); int i = getch(); fflush(stdin);//清除缓冲区 if(i == '1') { system("cls"); test(); system("pause"); } else if(i == '2') {seegrade();system("pause");} else if(i == '3') break; } system("cls"); cout<<"感谢您的使用!"<<endl; system("pause"); } system("cls"); } return(0); } 请各位大神帮一下忙,不胜感激!

VC++6.0 MFC 使用组合框如何返回取值的问题

我用VC++6.0 MFC 做一个简单的个人信息系统登记系统,在登记记录时,对个性别男女用了组合框,登记时默认选项是男只要 m_ecombo.SetCurSel(0); _这个函数里的变量只要是0就可以了,_ _通赤数据库操作,追加进入数据库表了,但当你将这条记录调出修改时,同样需要这个组合框识别,这里我用了以下的操作 CRecEdit dlg; dlg.m_ecombo.InsertString(0,"男"); _dlg.m_ecombo.InsertString(1,"女");_ int nSelect = 1; if("男" == m_grid.GetItemText(nSel,2)) nSelect = 0; dlg.m_ecombo.SetCurSel(nSelect); dlg.DoModal(); 这里总时出错 ![图片说明](https://img-ask.csdn.net/upload/201506/25/1435169921_877534.jpg) 请高手指点指点,就是这个组合框取值返时,怎么处理??

怎样用VC6.0让JPG与GIF图片的文件可以文件关联到我的程序,右键可以选择我的程序打开

请问一下怎样用VC6.0实现注册表代码让JPG与GIF图片的文件可以文件关联到我的程序,也就是右键可以选择我的程序打开,并且出现在“打开方式”的选择项里 以下是我在网络搜索的txt文件关联的代码,测试后可以用,可是改成JPG与GIF就无法用了,注册表里的项目很多,不知道JPG与GIF的代码怎么写,最好有测试后可以用的全代码发一下啊,我的是XP的系统 关联自己的应用程序到右键菜单中在Windows2000中,当用户在“我的电脑”或“资源管理器”中的某一文件上单击鼠标右键时会出现一个快捷菜单。单击的位置和对象不同,快捷菜单的内容也不尽相同。用户可根据自己的需要定制快捷菜单中的一些内容。假设用户希望在txt文件类型的右键快捷菜单中关联上自己的应用程序 (用户的应用程序名为mytxtapp.exe,在D盘根目录下) ,步骤如下: 1、在注册表中找到并打开HKEY_CLASSES_ROOT\.txt子键,查到其默认键值项数据为“txtfile”。 2、在注册表中找到并打开HKEY_CLASSES_ROOT\txtfile子键,在该子键的shell子键中添加一个“我的文本应用程序”子键,并将该子键的默认键值项数据设为“用我的文本程序打开”,“用我的文本程序打开”将作为新添加菜单项的名字出现在右键菜单中。双引号内的文字用户可随意设置。 3、在HKEY_CLASSES_ROOT\txtfile\shell\我的文本应用程序子键中添加一个command子键,并将command子键的默认键值项数据设为“d:\mytxtapp.exe %1”,此处设置的数据是在快捷菜单中选中相应的菜单项时执行的程序,%1表示应用程序启动时自动将当前文件装入。 那有VC怎么做呢?认真看一下面的步骤吧,将程序名和一些路径,扩展名改成自己的就可以了。 用VC++的应用程序向导AppWizard建立一基于对话框的程序,接受所有默认选项。 在主对话框中添加一个按钮控件,双击该按钮,接受默认名, 在该按钮的消息响应函数中添加如下代码: HKEY hresult; CString str1,str2; long value; LPCTSTR dataset1="txtfile\\shell\\我的文本应用程序"; LPCTSTR dataset2="txtfile\\shell\\我的文本应用程序\\command"; str1="用我的文本程序打开"; str2="d:\\mytxtapp.exe %1"; DWORD dwPos; //创建“我的文本应用程序”子键 value=RegCreateKeyEx(HKEY_CLASSES_ROOT,dataset1,0,NULL,REG_OPTION_NON_VOLATILE,KEY_CREATE_SUB_KEY|KEY_ALL_ACCESS,NULL,&hresult,&dwPos); //将该子键的“默认”数据项的数据设置为“用我的文本程序打开” value=RegSetValueEx(hresult,NULL,0,REG_SZ,(const BYTE*)(LPCTSTR)str1,str1.GetLength()); //创建“command”子键value=RegCreateKeyEx(HKEY_CLASSES_ROOT,dataset2,0,NULL,REG_OPTION_NON_VOLATILE,KEY_CREATE_SUB_KEY|KEY_ALL_ACCESS,NULL,&hresult,&dwPos); //将该子键的“默认”数据项的数据设置为用户应用程序的路径 value=RegSetValueEx(hresult,NULL,0,REG_SZ,(const BYTE*)(LPCTSTR)str2,str2.GetLength()); ::RegCloseKey(hresult); //这段代码用来关联用户的应用程序。在主对话框中再添加一个按钮控件,双击该按钮,接受默认名, //在该按钮的消息响应函数中添加如下代码: HKEY hKey;LPCTSTR dataset1="txtfile\\shell\\我的文本应用程序"; LPCTSTR dataset2="txtfile\\shell"; long ret1=::RegOpenKeyEx(HKEY_CLASSES_ROOT,dataset1,0,KEY_READ,&hKey); //删除“command”子键 ::RegDeleteKey(hKey,LPCTSTR("command")); ::RegCloseKey(hKey); ret1=::RegOpenKeyEx(HKEY_CLASSES_ROOT,dataset2,0,KEY_READ,&hKey); //删除“我的文本应用程序”子键 ::RegDeleteKey(hKey,LPCTSTR("我的文本应用程序")); ::RegCloseKey(hKey); //这段代码用来恢复注册表中的默认数据。 至此,我们完成了在扩展名为.txt文件的右键菜单中关联上自己的应用程序,但不是.txt文件的右键菜单上不会出现该菜单项。如果用户希望在所有文件类型的右键菜单中关联上自己的应用程序,则应在HKEY_CLASSES_ROOT\*\shell子键下进行操作,操作步骤同上。对于关联其他类型的文件依此类推。以上程序在Windows2000和VC6中通过。

vc++6.0中代码问题:显示完整的现存学员信息后,还要显示主菜单

#include <stdio.h> #include <string.h> int menu(); void init(); void listStu(); int insertNewStu(int row); int getStuRowByNo(char no[]); int deleteByNo(); void analyse(char c[]); /***************************************************** students保存学生信息,最多50名 一行代表一个学员信息,每列通过-$-字符串将各项信息分开 stu_num表示已存在的学生数目,假设初始存在2名学员 ******************************************************/ char students[5][200]; int stu_num=2; void main() { int opt; int result=1; init(); while(result){ opt=menu(); if(result==0) { break; } switch(opt) { case 1: //printf("\t执行输入学员信息\n"); result=insertNewStu(stu_num); stu_num=stu_num+1; break; case 2: //printf("\t执行删除学员信息\n"); result=deleteByNo(); stu_num=stu_num-1; break; case 3: printf("\t执行查找学员信息\n"); break; case 4: printf("\t执行修改学员信息\n"); break; case 5: //printf("\t执行输出学员信息数据\n"); listStu(); break; case 0: printf("\t谢谢使用!\n"); result=0; break; default: printf("\t您的输入有误。"); } } } /*打印系统菜单*/ int menu() { int option; printf("\n\t--------------------------------------\n"); printf("\t\t学员信息管理系统\n"); printf("\t--------------------------------------\n"); printf("\t1.输入学员资料\n"); printf("\t2.删除学员资料\n"); printf("\t3.查找学员资料\n"); printf("\t4.修改学员资料\n"); printf("\t5.输出学员信息数据\n"); printf("\t0.退出\n\n"); printf("\t请选择您要进行的操作:"); scanf("%d",&option); return option; } /*初始化2名学员信息*/ void init() { strcpy(students[0],"2010-$-张学友-$-男-$-香港-$-13601234567-$-80-$-60-$-"); strcpy(students[1],"2011-$-王菲-$-女-$-北京-$-13678904567-$-60-$-100-$-"); } /*输出学员所有信息*/ void listStu() { //printf("%s\n",students[0]); //printf("%s\n",students[1]); //printf("%s\n",students[2]); int i; char temp[200]=""; printf("\n\t******现存的学员信息******\n"); printf("学号\t"); printf("姓名\t"); printf("性别\t"); printf("地址\t"); printf("手机\t\t"); printf("Java\t"); printf(".Net\n"); //针对每一行学生信息进行处理 for(i=0;i<stu_num;i++) { strcpy(temp,students[i]); while(strlen(temp)!=0) { analyse(temp); } printf("\n"); } } /*输入学员信息*/ int insertNewStu(int row) { char stu_temp[1][200];//暂存该学员的信息 char n_temp[20]; char a_temp[30]; char c_temp[20]; int i_temp; int flag=0;//用来标识前一项信息是否输入完成 int i; //输入学号 while(flag==0) { printf("\n\t请输入学号:"); scanf("%d",&i_temp); if(i_temp<1000 || i_temp>9999) { printf("\t学号非法,必须4位数字!"); continue; }else { sprintf(c_temp,"%d",i_temp); strcpy(stu_temp[0],c_temp); strcat(stu_temp[0],"-$-"); flag=1; } } //输入姓名 while(flag==1) { printf("\n\t请输入姓名:"); scanf("%s",&n_temp); if(strlen(n_temp)>20) { printf("\t姓名长度过大!"); continue; }else { strcat(stu_temp[0],n_temp); strcat(stu_temp[0],"-$-"); flag=2; } } //输入性别 while(flag==2) { printf("\n\t请输入性别(1男 2女):"); scanf("%d",&i_temp); if(i_temp!=1 && i_temp!=2) { printf("\t性别选择错误!"); continue; }else { if(i_temp==1) { strcat(stu_temp[0],"男"); }else { strcat(stu_temp[0],"女"); } strcat(stu_temp[0],"-$-"); flag=3; } } //输入地址 while(flag==3) { printf("\n\t请输入地址:"); scanf("%s",&a_temp); if(strlen(a_temp)>30) { printf("\t地址长度过大!"); continue; }else { strcat(stu_temp[0],a_temp); strcat(stu_temp[0],"-$-"); flag=4; } } //输入手机号码 while(flag==4) { printf("\n\t请输入手机号码:"); scanf("%s",&c_temp); //判断是否存在非数字等非法字符 for(i=0;i<strlen(c_temp);i++) { if(c_temp[i]<'0' || c_temp[i]>'9') { printf("\t手机号码中包括非数字字符。"); break; } } if(strlen(c_temp)!=11) { printf("\n\t手机号码位数不正确。"); continue; }else { strcat(stu_temp[0],c_temp); strcat(stu_temp[0],"-$-"); flag=5; } } //输入Java的成绩 while(flag==5) { printf("\n\t请输入Java的成绩:"); scanf("%d",&i_temp); if(i_temp<0 || i_temp>100) { printf("\t成绩必须在0-100之间。"); continue; }else { sprintf(c_temp,"%d",i_temp); strcat(stu_temp[0],c_temp); strcat(stu_temp[0],"-$-"); flag=6; } } //输入.Net的成绩 while(flag==6) { printf("\n\t请输入.Net的成绩:"); scanf("%d",&i_temp); if(i_temp<0 || i_temp>100) { printf("\t成绩必须在0-100之间。"); continue; }else { sprintf(c_temp,"%d",i_temp); strcat(stu_temp[0],c_temp); strcat(stu_temp[0],"-$-"); flag=7; } } //确认信息 printf("\n\t*********确认学员信息如下*********\n"); printf("%s",stu_temp); printf("\n\t确认学员信息么(y|n)?"); scanf("%s",&c_temp); if(strcmp(c_temp,"y")==0 || strcmp(c_temp,"Y")==0) { strcpy(students[row],stu_temp[0]); }else { insertNewStu(row); } return flag; } /*指定学员的存储位置,即所在的行位置*/ int getStuRowByNo(char no[]) { int i,j; int pos=-1; char temp[5]=""; for(i=0;i<stu_num;i++) { for(j=0;j<strcspn(students[i],"-$-");j++) { temp[j]=students[i][j]; } if(strcmp(no,temp)==0) { pos=i; break; } } return pos; } /*删除指定学号的学员信息*/ int deleteByNo() { char no[5]; int row; int i,j; printf("\n\t请输入要删除的学员学号:"); scanf("%s",&no); row=getStuRowByNo(no); if(row==-1) { printf("\n\t**********没有该学号的学员信息,请核实**********\n"); return -1; }else { for(i=row;i<50;i++) { for(j=0;j<200;j++) { students[i][j]=students[i+1][j]; } } printf("\n\t********删除成功!********\n"); return 1; } } /*解析学员的信息行*/ void analyse(char c[]) { int i,j; int token; char p_temp[100]=""; token=strcspn(c,"-$-"); //该行第一个分隔符之前的信息项进行解析 for(i=0;i<token;i++) { p_temp[i]=c[i]; } printf("%s\t",p_temp); //去掉已经解析出的信息项,即将后面的信息项依次前移 for(j=0;j<strlen(c)-token;j++) { c[j]=c[token+3+j]; } } 运行后显示主菜单,输入5,显示现存的学员信息,但是成绩显示不出来,成绩如果能显示,还需要显示主菜单。求解决。

c语言程序在不同环境下运行情况不同

我在dev-c++下和VC6.0分别都是输入同样的代码(VC6.0下在retnrn 0;前有加上getch();) 为什么dev-cpp下没结果显示出来(不是窗口一闪而过,而是黑窗口,但没结果输出),而VC6.0下则输出 11 30 ?请大神指导,谢谢 #include<stdio.h> int main() { int i,j; float a; for(i=1;i<=100;i++) { for(j=1;j<=100;j++) { a=2.3*i+1.9*j; if(a==82.3&&i<j)printf("%d %d\n",i,j); } } return 0; }

关于VC++ 连接oracle数据库的配置问题

Console子系统设置错误, 提示: LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main 应该如何纠正

Win10和Win7对线程的处理机制不一样了吗?

最近刚开始接触windows程序设计,然后分别在Win10的VS2017运行和Win7的VC6.0 运行同一段代码,但是结果却大不一样? 有人可以解答一下吗,? 在这里谢过了。 运行结果: Win10 VS2017环境: ![图片说明](https://img-ask.csdn.net/upload/201711/20/1511174128_699198.png) win7 VC6.0环境 ![图片说明](https://img-ask.csdn.net/upload/201711/20/1511174141_693927.png) 然后下面是代码: ``` // 两个优先级不同的线程.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <windows.h> #include <stdio.h> DWORD WINAPI ThreadIdle(LPVOID lpParam); //设置空闲线程 DWORD WINAPI ThreadNormal(LPVOID lpParam); //设置正常线程 int main() { DWORD dwThreadID; HANDLE h[2]; //创建线程(优先级为空闲的) h[0] = CreateThread(NULL, 0, ThreadIdle, NULL, CREATE_SUSPENDED, &dwThreadID); //该线程是设置为挂起的 SetThreadPriority(h[0], THREAD_PRIORITY_IDLE); //设置线程的优先级 ResumeThread(h[0]); //线程可以开始执行 //创建线程(优先级为正常的) h[1] = CreateThread(NULL, 0, ThreadNormal, NULL, 0, &dwThreadID); //等待两个线程的内核对象全部变为受信状态(即:线程结束状态) WaitForMultipleObjects(2, h, TRUE, INFINITE); //关闭两个线程 CloseHandle(h[0]); CloseHandle(h[1]); return 0; } DWORD WINAPI ThreadIdle(LPVOID lpParam) //设置空闲线程 { for (size_t i = 0; i < 10; i++) { printf("Idle Thread id runing! is:%5d\n", i); } return 0; } DWORD WINAPI ThreadNormal(LPVOID lpParam) //设置正常线程 { for (size_t i = 0; i < 10; i++) { printf("Norma Thread id runing! is:%5d\n", i); } return 0; } ```

mfc怎么在对话框添加菜单

建了一个菜单menu,但是在运行的时候对话框上面没有显示这个菜单,怎么回事呢 想从第一张图变成第二张图,菜单也建了,就是不显示![图片](https://img-ask.csdn.net/upload/201706/16/1497602402_597464.png)![图片](https://img-ask.csdn.net/upload/201706/16/1497602410_971284.png)

不管是devc++,codeblocks都显示和64位windows不兼容,之前还是好的,突然就这样了。

卸载了重下还是这个问题。 搞不懂,只剩下一个vc 6.0不受影响.... 另外:能问一下vs code要写c和c++的话应该怎么搞啊,教程弄了还是错的。 这几天我为了不用vc那个界面真的努力了很多啊.......

关于windows日志提取的代码

想在VC6.0实现 求问大神需要怎么改,本人小白 ![图片说明](https://img-ask.csdn.net/upload/201605/16/1463375008_402158.png)![图片说明](https://img-ask.csdn.net/upload/201605/16/1463375017_192009.png)

c++的实验,基于序列化的MFC版学生信息管理系统的问题

在不借助数据库的前提下,如何建立一个表头信息?基于序列化的MFC版学生信息管理系统中如何设计单文档能显示表头,比如姓名,性别,民族等信息的表头?![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/8.gif)

求大神帮忙解决这个问题,紧急!!!马上就要交作业了。

我用VS2010写了一个音频播放器,编译的时候出现: 错误 1 error LNK2001: 无法解析的外部符号 "public: virtual long __thiscall CWnd::put_FileName(struct tagVARIANT,char)" (?put_FileName@CWnd@@UAEJUtagVARIANT@@D@Z) 请求大神们帮忙,明天就要交作业了,现在还没有弄好。下面是我的代码 // SoundPlayerDlg.h : 头文件 // #pragma once #include "afxwin.h" // CSoundPlayerDlg 对话框 class CSoundPlayerDlg : public CDialogEx { // 构造 public: CSoundPlayerDlg(CWnd* pParent = NULL); // 标准构造函数 // 对话框数据 enum { IDD = IDD_SOUNDPLAYER_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: HICON m_hIcon; BOOL m_bPlay;//是否在播放文件 BOOL m_bPause;//是否已经暂停播放文件 BOOL m_nIsCda;;//判断是否为播放CD文件 MCIDEVICEID m_MCIDeviceID; // 生成的消息映射函数 virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public: CButton m_ctlOpen; CButton m_ctlPlay; CButton m_ctlPause; CButton m_ctlStop; CString m_strFile; afx_msg void OnBnClickedOpen(); afx_msg void OnBnClickedPlay(); afx_msg void OnBnClickedPause(); afx_msg void OnBnClickedStop(); afx_msg void OnBnClickedOk(); afx_msg void OnEnChangeFile(); afx_msg void OnDestroy(); afx_msg LRESULT OnMciNotify(WPARAM wParam,LPARAM lParam); void ShowError(DWORD dwErroe); }; // SoundPlayerDlg.cpp : 实现文件 // #include "stdafx.h" #include "SoundPlayer.h" #include "SoundPlayerDlg.h" //#include "afxdialogex.h" //#include<MMSystem.h> #ifdef _DEBUG #define new DEBUG_NEW #endif //#define TRUE 1 // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对话框数据 enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CSoundPlayerDlg 对话框 CSoundPlayerDlg::CSoundPlayerDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CSoundPlayerDlg::IDD, pParent), m_strFile(_T("")) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_bPlay = FALSE; m_bPause = FALSE; m_nIsCda = 0; m_MCIDeviceID = 0; } void CSoundPlayerDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_OPEN, m_ctlOpen); DDX_Control(pDX, IDC_PLAY, m_ctlPlay); DDX_Control(pDX, IDC_PAUSE, m_ctlPause); DDX_Control(pDX, IDC_STOP, m_ctlStop); DDX_Text(pDX, IDC_FILE, m_strFile); } BEGIN_MESSAGE_MAP(CSoundPlayerDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_OPEN, &CSoundPlayerDlg::OnBnClickedOpen) ON_BN_CLICKED(IDC_PLAY, &CSoundPlayerDlg::OnBnClickedPlay) ON_BN_CLICKED(IDC_PAUSE, &CSoundPlayerDlg::OnBnClickedPause) ON_BN_CLICKED(IDC_STOP, &CSoundPlayerDlg::OnBnClickedStop) ON_BN_CLICKED(IDOK, &CSoundPlayerDlg::OnBnClickedOk) ON_EN_CHANGE(IDC_FILE, &CSoundPlayerDlg::OnEnChangeFile) ON_WM_DESTROY() END_MESSAGE_MAP() // CSoundPlayerDlg 消息处理程序 BOOL CSoundPlayerDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 m_ctlPlay.EnableWindow(FALSE);//将播放按钮禁止 m_ctlStop.EnableWindow(FALSE);//将停止按钮禁止 m_ctlPause.EnableWindow(FALSE);//将暂停按钮禁止 return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } void CSoundPlayerDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialogEx::OnSysCommand(nID, lParam); } } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CSoundPlayerDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CDialogEx::OnPaint(); } } //当用户拖动最小化窗口时系统调用此函数取得光标 //显示。 HCURSOR CSoundPlayerDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CSoundPlayerDlg::OnBnClickedOpen() { // TODO: 在此添加控件通知处理程序代码 CString filename; CString str; MCI_OPEN_PARMS mciOpen; DWORD dwError; //打开选择文件对话框 static char szFilter[]="波形音频文件(*.wav)|*.wav|MIDI Audio File(*.mid)|*.mid|CD Audio(*.cda)|*.cda|所有文件(*.*)|*.*||"; CFileDialog dlg(TRUE,"wav",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter); if(dlg.DoModal()==IDOK) { filename=dlg.GetPathName();//得到文件名 str = filename.Right(3);//得到文件的扩展名 if(!strcmp(str,"wav"));//判断是否是wav文件 { mciOpen.lpstrDeviceType="waveaudio"; } if(!strcmp(str,"mid"));//判断是否是mid文件 { mciOpen.lpstrDeviceType="sequencer"; } if(!strcmp(str,"cda"));//判断是否是cda文件 { mciOpen.lpstrDeviceType="cdaudio"; m_nIsCda = 1; } m_strFile = filename; UpdateData(FALSE); mciOpen.lpstrElementName=filename;//设置打开文件 dwError = mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciOpen);//打开MCI设备 if(dwError) { ShowError(dwError); } m_MCIDeviceID = mciOpen.wDeviceID;//获得打开的MCI设备的ID m_ctlPlay.EnableWindow(TRUE); m_ctlStop.EnableWindow(TRUE); m_ctlPause.EnableWindow(TRUE); m_ctlOpen.EnableWindow(FALSE); m_bPlay = FALSE; m_bPause = FALSE; } } void CSoundPlayerDlg::OnBnClickedPlay() { // TODO: 在此添加控件通知处理程序代码 MCI_PLAY_PARMS mciPlay; DWORD dwError; if(!m_bPlay) { mciPlay.dwCallback= (long)GetSafeHwnd(); if(m_nIsCda==1) mciPlay.dwFrom=1; else mciPlay.dwFrom=0; dwError=mciSendCommand(m_MCIDeviceID,MCI_PLAY,MCI_FROM|MCI_NOTIFY,(DWORD)(LPVOID)&mciPlay); } if(m_bPlay) { if(m_bPause) { dwError=mciSendCommand(m_MCIDeviceID,MCI_RESUME,0,NULL); } m_bPause=!m_bPause; } if(dwError) { ShowError(dwError); } m_ctlPlay.EnableWindow(FALSE); m_ctlStop.EnableWindow(TRUE); m_ctlPause.EnableWindow(TRUE); m_ctlOpen.EnableWindow(FALSE); m_bPlay = TRUE; } void CSoundPlayerDlg::OnBnClickedPause() { // TODO: 在此添加控件通知处理程序代码 DWORD dwError; if(!m_bPause) { dwError=mciSendCommand(m_MCIDeviceID,MCI_PAUSE,0,NULL); if(dwError) { ShowError(dwError); } m_ctlPlay.EnableWindow(TRUE); m_ctlStop.EnableWindow(TRUE); m_ctlPause.EnableWindow(FALSE); m_ctlOpen.EnableWindow(FALSE); m_bPause=!m_bPause; } } void CSoundPlayerDlg::OnBnClickedStop() { // TODO: 在此添加控件通知处理程序代码 mciSendCommand(m_MCIDeviceID,MCI_STOP,MCI_WAIT,NULL); mciSendCommand(m_MCIDeviceID,MCI_CLOSE,MCI_WAIT,NULL); m_bPlay = FALSE ; m_bPause=FALSE; m_nIsCda = 0; m_ctlPlay.EnableWindow(FALSE); m_ctlStop.EnableWindow(FALSE); m_ctlPause.EnableWindow(FALSE); m_ctlOpen.EnableWindow(TRUE); } void CSoundPlayerDlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 CSoundPlayerDlg::OnDestroy(); CDialogEx::OnOK(); } void CSoundPlayerDlg::OnEnChangeFile() { // TODO: 如果该控件是 RICHEDIT 控件,它将不 // 发送此通知,除非重写 CDialogEx::OnInitDialog() // 函数并调用 CRichEditCtrl().SetEventMask(), // 同时将 ENM_CHANGE 标志“或”运算到掩码中。 // TODO: 在此添加控件通知处理程序代码 UpdateData(); m_ctlPlay.EnableWindow(m_strFile.GetLength()?TRUE:FALSE); } void CSoundPlayerDlg::OnDestroy() { CDialogEx::OnDestroy(); // TODO: 在此处添加消息处理程序代码 mciSendCommand(m_MCIDeviceID,MCI_STOP,MCI_WAIT,NULL);//停止播放 mciSendCommand(m_MCIDeviceID,MCI_CLOSE,MCI_WAIT,NULL);//关闭MCI设备 } LRESULT CSoundPlayerDlg::OnMciNotify(WPARAM wParam,LPARAM lParam) { if(wParam==MCI_NOTIFY_SUCCESSFUL) { m_bPlay=FALSE; m_bPause=FALSE; m_nIsCda=FALSE; return 0; } return -1; } void CSoundPlayerDlg::ShowError(DWORD dwError) { char szBuf[1000]; MessageBeep(MB_ICONEXCLAMATION); if(mciGetErrorString(dwError,(LPSTR)szBuf,MAXERRORLENGTH)) MessageBox(szBuf,"MCI错误",MB_ICONEXCLAMATION); else MessageBox("未知错误","MCI错误",MB_ICONEXCLAMATION); } // stdafx.h : 标准系统包含文件的包含文件, // 或是经常使用但不常更改的 // 特定于项目的包含文件 #pragma once #ifndef VC_EXTRALEAN #define VC_EXTRALEAN // 从 Windows 头中排除极少使用的资料 #endif #include "targetver.h" #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的 // 关闭 MFC 对某些常见但经常可放心忽略的警告消息的隐藏 #define _AFX_ALL_WARNINGS #include <afxwin.h> // MFC 核心组件和标准组件 #include <afxext.h> // MFC 扩展 #include <afxdisp.h> // MFC 自动化类 #ifndef _AFX_NO_OLE_SUPPORT #include <afxdtctl.h> // MFC 对 Internet Explorer 4 公共控件的支持 #endif #ifndef _AFX_NO_AFXCMN_SUPPORT #include <afxcmn.h> // MFC 对 Windows 公共控件的支持 #endif // _AFX_NO_AFXCMN_SUPPORT #include <afxcontrolbars.h> // 功能区和控件条的 MFC 支持 #include<MMSystem.h> #pragma comment(lib,"winmm.lib") #ifdef _UNICODE #if defined _M_IX86 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") #elif defined _M_X64 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") #else #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") #endif #endif

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Linux面试题(2020最新版)

文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别?Linux 使用的进程间通信方式?Linux 有哪些系统日志文件?Linux系统安装多个桌面环境有帮助吗?什么是交换空间?什么是root帐户什么是LILO?什...

将一个接口响应时间从2s优化到 200ms以内的一个案例

一、背景 在开发联调阶段发现一个接口的响应时间特别长,经常超时,囧… 本文讲讲是如何定位到性能瓶颈以及修改的思路,将该接口从 2 s 左右优化到 200ms 以内 。 二、步骤 2.1 定位 定位性能瓶颈有两个思路,一个是通过工具去监控,一个是通过经验去猜想。 2.1.1 工具监控 就工具而言,推荐使用 arthas ,用到的是 trace 命令 具体安装步骤很简单,大家自行研究。 我的使用步骤是...

学历低,无法胜任工作,大佬告诉你应该怎么做

微信上收到一位读者小涛的留言,大致的意思是自己只有高中学历,经过培训后找到了一份工作,但很难胜任,考虑要不要辞职找一份他能力可以胜任的实习工作。下面是他留言的一部分内容: 二哥,我是 2016 年高中毕业的,考上了大学但没去成,主要是因为当时家里经济条件不太允许。 打工了三年后想学一门技术,就去培训了。培训的学校比较垃圾,现在非常后悔没去正规一点的机构培训。 去年 11 月份来北京找到了一份工...

JVM内存结构和Java内存模型别再傻傻分不清了

讲一讲什么是Java内存模型 Java内存模型虽说是一个老生常谈的问题 ,也是大厂面试中绕不过的,甚至初级面试也会问到。但是真正要理解起来,还是相当困难,主要这个东西看不见,摸不着。 这是一个比较开放的题目,面试官主要想考察的是对Java内存模型的了解到了什么程度了,然后根据回答进行进一步的提问 下面,我们就这个问题的回答列一下我们的思路 具体的思路如下: 说一说Java内存模型的缘由 简略辨析...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

Google 与微软的浏览器之争

浏览器再现“神仙打架”。整理 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN(ID:CSDNnews)从 IE 到 Chrome,再从 Chrome 到 Edge,微软与...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

85后蒋凡:28岁实现财务自由、34岁成为阿里万亿电商帝国双掌门,他的人生底层逻辑是什么?...

蒋凡是何许人也? 2017年12月27日,在入职4年时间里,蒋凡开挂般坐上了淘宝总裁位置。 为此,时任阿里CEO张勇在任命书中力赞: 蒋凡加入阿里,始终保持创业者的冲劲,有敏锐的...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

什么时候跳槽,为什么离职,你想好了么?

都是出来打工的,多为自己着想

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

立即提问
相关内容推荐