❶ c语言 学生管理系统
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct Node//定义链表结点
{
char* class_0;//班级
int number;
char* name;//姓名
float elec;//电子技术成绩
float c_prog;//C程序设计成绩
float media;//多媒体技术成绩
float eng;//大学英语成绩
float math;//高等数学成绩
float sport;//大学体育成绩
float polity;//马克思主义政治经济学成绩
float ave;//平均成绩
int order;//名次
Node* link;
Node(){link=NULL;}
Node(int _number,char* _class_0,char* _name,float _elec,
float _c_prog,float _media,float _eng,float _math,
float _sport,float _polity,float _ave,int _order,Node* next)
{
number=_number;
class_0=new char[21];
strcpy(class_0,_class_0);
name=new char[9];
strcpy(name,_name);
elec=_elec;
c_prog=_c_prog;
media=_media;
eng=_eng;
math=_math;
sport=_sport;
polity=_polity;
ave=_ave;
order=_order;
link=next;
}
~Node()
{
delete []class_0;
delete []name;
}
};
class StudentScore
{
private:
Node* first;//链表的头指针
int choice;//选择数据的读入方式
int fileNum;//当前文件数减一
int fileLoc;//定位当前文件
string* fileName;
int operChoice;
int RecordLength;
public:
StudentScore();
void Save();
void BuildList();//手工建立成绩链表
void ReadInfo(int k);//从内存中读入学生信息
void ClearList();
void Statistic();
void Sort();
void Add();
void Delete();
void PrintList();
void Menu();
};
StudentScore::StudentScore()
{
RecordLength=0;
operChoice=0;
first=NULL;
choice=0;
fileLoc=0;
fileNum=0;
fileName=new string[10];//最多可以存10个文件
}
int GetOrder(Node* first,float ave);
void StudentScore::BuildList()
{
int _number;//学号
char* _class_0=new char[21];//班级
char* _name=new char[9];//姓名
float _elec;//电子技术成绩
float _c_prog;//C程序设计成绩
float _media;//多媒体技术成绩
float _eng;//大学英语成绩
float _math;//高等数学成绩
float _sport;//大学体育成绩
float _polity;//马克思主义政治经济学成绩
float _ave;//平均成绩
int _order;//名次
char c;
Node *p,*r=NULL;
first=NULL;
cout<<"您要输入学生成绩信息?"<<endl;
while((c=getchar())=='n');
while(tolower(c)!='n')
{
cin>>_class_0;//班级
cin>>_number;
cin>>_name;//姓名
cin>>_elec;
cin>>_c_prog;
cin>>_media;
cin>>_eng;
cin>>_math;
cin>>_sport;
cin>>_polity;
_ave=(_elec+_c_prog+_media+_eng+_math+_sport+_polity)/7;//求得平均成绩
_order=GetOrder(first,_ave);
p=new Node(_number,_class_0,_name,_elec,
_c_prog,_media,_eng,_math,_sport,_polity,
_ave,_order,NULL);//建立一个新的结点储存信息
if(first!=NULL)
r->link=p;
else first=p;
r=p;
RecordLength++;
cout<<"您要输入学生成绩信息?"<<endl;
while((c=getchar())=='n');
}
}
int GetOrder(Node* first,float ave)//名次记录有严重问题
{
int order=1;
Node* temp=first;
for(;temp;temp=temp->link)
{ if(temp->ave>ave) order++;
if(temp->ave<ave) (temp->order)++;
}
return order;
}
void StudentScore::Statistic()
{
Node* temp=first;
float a_elec=0.0;//电子技术成绩
float a_c_prog=0.0;//C程序设计成绩
float a_media=0.0;//多媒体技术成绩
float a_eng=0.0;//大学英语成绩
float a_math=0.0;//高等数学成绩
float a_sport=0.0;//大学体育成绩
float a_polity=0.0;//马克思主义政治经济学成绩
int i=0;
while(temp)
{
a_elec+=temp->elec;
a_c_prog+=temp->c_prog;
a_media+=temp->media;
a_eng+=temp->eng;
a_math+=temp->math;
a_sport+=temp->sport;
a_polity+=temp->polity;
i++;
temp=temp->link;
}
a_elec=a_elec/i;
a_c_prog=a_c_prog/i;
a_media=a_media/i;
a_eng=a_eng/i;
a_math=a_math/i;
a_sport=a_sport/i;
a_polity=a_polity/i;
cout<<"电子技术平均成绩为:"<<a_elec<<endl;
cout<<"c程序设计平均成绩为:"<<a_c_prog<<endl;
cout<<"多媒体技术平均成绩为:"<<a_media<<endl;
cout<<"英语平均成绩为:"<<a_eng<<endl;
cout<<"高等数学平均成绩为:"<<a_math<<endl;
cout<<"体育平均成绩为:"<<a_sport<<endl;
cout<<"政治平均成绩为:"<<a_polity<<endl;
}
void StudentScore::Delete()
{
int studNum;
Node* p;
Node* temp=first;
cout<<"请输入要删除的学生学号"<<endl;
cin>>studNum;
float average;
for(;temp;temp=temp->link)
{
cout<<temp->number;
if(temp->number==studNum)
{
average=temp->ave;
if(temp==first)//说明是第一次
{
first=first->link;
delete temp;
break;//如果不跳出的话 temp=temp->link会出错
}
else
{
p->link=temp->link;
delete temp;
break;
}
}
p=temp;
RecordLength--;
}
//下面修改学生排名
temp=first;
for(;temp;temp=temp->link)
if(temp->ave<average) temp->order--;
}
void StudentScore::Add()
{
int _number;//学号
char* _class_0=new char[21];//班级
char* _name=new char[9];//姓名
float _elec;//电子技术成绩
float _c_prog;//C程序设计成绩
float _media;//多媒体技术成绩
float _eng;//大学英语成绩
float _math;//高等数学成绩
float _sport;//大学体育成绩
float _polity;//马克思主义政治经济学成绩
float _ave;//平均成绩
int _order;//名次
char c;
Node *p,*r=NULL;
r=first;
while(r->link)
r=r->link;
// first=NULL;
cout<<"您要输入学生成绩信息?"<<endl;
while((c=getchar())=='n');
while(tolower(c)!='n')
{
cin>>_class_0;//班级
cin>>_number;
cin>>_name;//姓名
cin>>_elec;
cin>>_c_prog;
cin>>_media;
cin>>_eng;
cin>>_math;
cin>>_sport;
cin>>_polity;
_ave=(_elec+_c_prog+_media+_eng+_math+_sport+_polity)/7;//求得平均成绩
//写一个返回排名的程序
_order=GetOrder(first,_ave);
p=new Node(_number,_class_0,_name,_elec,
_c_prog,_media,_eng,_math,_sport,_polity,
_ave,_order,NULL);//建立一个新的结点储存信息
if(first!=NULL)
r->link=p;
else first=p;
r=p;
RecordLength++;
cout<<"您要输入学生成绩信息?"<<endl;
while((c=getchar())=='n');
}
}
void StudentScore::Sort()//简单bubble排序从高分到低分排序
{
int i=0;
Node* temp=first;
Node* before;
// Node* p=first;
for(;temp->link;)
{
if(temp->ave<temp->link->ave)
{
if(temp==first)//说明是第一个结点
{
first=first->link;
// p=temp;
// temp=temp->link;
temp->link=temp->link->link;
first->link=temp;
before=first;
}
else//不是第一个结点
{
before->link=temp->link;
temp->link=temp->link->link;
before->link->link=temp;
before=before->link;
}
}
else
{
temp=temp->link;
}
i++;//计算次数
}
for(;i>0;i--)
{
temp=first;
for(int j=0;j<i;j++)
{
if(temp->ave<temp->link->ave)
{
cout<<"small!"<<endl;
if(temp==first)//说明是第一个结点
{
first=first->link;
// p=temp;
// temp=temp->link;
temp->link=temp->link->link;
first->link=temp;
before=first;
}
else//不是第一个结点
{
before->link=temp->link;
temp->link=temp->link->link;
before->link->link=temp;
before=before->link;
}
}
else
{
temp=temp->link;
}
}
}
}
/*
bool IsSorted(Node* first)
{
for(;first;first=first->link)
if(first->ave<first->link->ave) return false;
return true;
}*/
void StudentScore::PrintList()//打印链表程序
{
cout<<"The list contains:"<<endl;
Node* temp=first;
for(;temp;temp=temp->link)
{
cout<<temp->class_0<<","<<temp->name<<endl;
cout<<temp->order<<endl;
}
}
void StudentScore::ClearList()//清除链表
{
Node* p=new Node;
while(first)
{
p=first->link;
delete first;
first=p;
}
}
//读函数
void StudentScore::ReadInfo(int k)//读第k个文件的信息存入链表
{
// int wordLength;//记录子段长度
int _number;//学号
char* _class_0=new char[21];//班级
char* _name=new char[9];//姓名
float _elec;//电子技术成绩
float _c_prog;//C程序设计成绩
float _media;//多媒体技术成绩
float _eng;//大学英语成绩
float _math;//高等数学成绩
float _sport;//大学体育成绩
float _polity;//马克思主义政治经济学成绩
float _ave;//平均成绩
int _order;//名次
Node *p,*r=NULL;
first=NULL;
ifstream Infile(fileName[k].c_str());
if(!Infile)
{
cout<<"file is not present!"<<endl;
return;
}
Infile>>RecordLength;
cout<<RecordLength;
for(int i=0;i<RecordLength;i++)
{
Infile>>_class_0;//班级
// cout<<_class_0;
Infile>>_number;
Infile>>_name;//姓名
Infile>>_elec;
Infile>>_c_prog;
Infile>>_media;
Infile>>_eng;
Infile>>_math;
Infile>>_sport;
Infile>>_polity;
Infile>>_ave;
Infile>>_order;
_ave=(_elec+_c_prog+_media+_eng+_math+_sport+_polity)/7;//求得平均成绩
//写一个返回排名的程序
_order=GetOrder(first,_ave);
p=new Node(_number,_class_0,_name,_elec,
_c_prog,_media,_eng,_math,_sport,_polity,
_ave,_order,NULL);//建立一个新的结点储存信息
if(first!=NULL)
r->link=p;
else first=p;
r=p;
}
}
void StudentScore::Save()
{
string tempName;
cout<<"请输入将要保存的文件名:"<<endl;
//要判断是否跟现有文件重名
cin>>tempName;
ofstream savefile(tempName.c_str());//要做一个转换
Node* temp=first;
savefile<<RecordLength<<endl;
for(;temp;temp=temp->link)
{
savefile<<temp->class_0<<" "<<temp->number<<" "<<temp->name<<" "<<temp->elec<<" "
<<temp->c_prog<<" "<<temp->media<<" "<<temp->eng<<" "<<temp->math<<" "
<<temp->sport<<" "<<temp->polity<<" "<<temp->ave<<" "<<temp->order<<endl;
}
savefile.close();
//读取文件表信息
ifstream Readfileinfo("FileRecord.txt");
Readfileinfo>>fileNum;
for(int i=0;i<fileNum;i++)
Readfileinfo>>fileName[i];
Readfileinfo.close();
fileNum++;
fileName[i]=tempName;
//修改文件表信息
ofstream changefile("FileRecord.txt");
changefile<<fileNum<<endl;
for(i=0;i<fileNum;i++)
changefile<<fileName[i]<<endl;
changefile.close();
}
void StudentScore::Menu()
{
cout<<"请您选择数据的读入方式:"<<endl;
cout<<"(1) 重新手动建立一份新的数据表"<<endl;
cout<<"(2) 从文件中读入数据"<<endl;
cout<<"请选择:";
cin>>choice;
if(choice==1)
{
BuildList();
}
if(choice==2)
{
cout<<"当前有如下文件,请选择读入文件:"<<endl;
ifstream fileRecord("fileRecord.txt");
if(!fileRecord)
{
cout<<"fileRecord is not present!"<<endl;
return;
}
fileRecord>>fileNum;
cout<<"当前有"<<fileNum<<"个文件:"<<endl;
for(int i=0;i<fileNum;i++)
{
fileRecord>>fileName[i];
cout<<fileName[i]<<" ";
}
cout<<"请您选择一个文件:";
cin>>fileLoc;
ReadInfo(fileLoc-1);
PrintList();
}
cout<<"请选择您需要的操作:"<<endl;
cout<<"(1) 统计学生各科成绩"<<endl;
cout<<"(2) 删除某个学生成绩记录"<<endl;
cout<<"(3) 增加某个学生成绩记录"<<endl;
cout<<"(4) 在链表中为所有学生成绩记录排序"<<endl;
cin>>operChoice;
if(operChoice==1)
Statistic();
if(operChoice==2)
Delete();
if(operChoice==3)
Add();
if(operChoice==4)
Sort();
Save();
ClearList();
}
int main()
{
cout<<"//////////////////////////////////"<<endl;
cout<<"欢迎使用学生成绩管理系统!"<<endl;
cout<<"//////////////////////////////////"<<endl;
cout<<endl;
cout<<endl;
StudentScore s;
s.Menu();
return 0;
}
❷ 学了一学期的C语言,要做大作业。 求一个500行C语言程序代码。 可以在VC++6.0上运行的。
//户籍管理系统, 应该能满足你的要求。
//多给点财富吧
#include<stdio.h>
#include<stdlib.h>
typedef struct tagHuJiXinXi
{
char shfzhh[64]; //身份证号
char xm[16]; //姓名
char xb[8]; //性别
int nl; //年龄
char xl[64]; //学历
char zhzh[64]; //住址
char dh[32]; //电话
}HuJiXinXi,*PtHuJiXinXi;
void readfromfile();
void writetofile();
void tuichu();
void add();
void outputone();
void outputall();
void sortbyage();
void myrealloc();
void findbyagerange();
void del();
void alter();
void find();
void showmenu();
void processmenu(int m);
PtHuJiXinXi pt;
int count=0,capacity=16;
int main()
{
int m;
pt=(PtHuJiXinXi)calloc(capacity,sizeof(HuJiXinXi));
readfromfile();
while(1)
{
showmenu();
scanf("%d",&m);
processmenu(m);
}
system("PAUSE");
return EXIT_SUCCESS;
}
void processmenu(int m)
{
switch(m)
{
case 0:
tuichu();
break;
case 1:
add();
break;
case 2:
del();
break;
case 3:
alter();
break;
case 4:
outputall();
break;
case 5:
sortbyage();
break;
case 6:
findbyagerange();
break;
case 7:
writetofile();
break;
case 8:
find();
break;
default:
printf("不可识别的命令。\n");
}
}
//实现存储空间的自动扩充
void myrealloc()
{
if(count+1>=capacity)
{
int i;
capacity*=2;
PtHuJiXinXi temppt=(PtHuJiXinXi)calloc(capacity,sizeof(HuJiXinXi));
for(i=0;i<count;i++)
{
temppt[i]=pt[i];
}
free(pt);
pt=temppt;
}
}
void readfromfile()
{
char f[128];
FILE *inf;
HuJiXinXi hjxx;
printf("请输入包含户籍信息的文件的文件名,如果还没有文件,请输入omit(文件中每行一条户籍信息,");
printf("格式:身份证号 姓名 性别 年龄 学历 住址 电话)...\n");
gets(f);
if(!strcmp(f,"omit"))
{
return;
}
inf=fopen(f,"r");
if(NULL!=inf)
{
do
{
fscanf(inf,"%s %s %s %d %s %s %s",hjxx.shfzhh,hjxx.xm,hjxx.xb,&hjxx.nl,hjxx.xl,hjxx.zhzh,hjxx.dh);
myrealloc();
pt[count++]=hjxx;
}while(!feof(inf));
fclose(inf);
printf("信息已成功加载。\n");
}
else
{
printf("文件名无效或文件无数据。\n");
}
}
void writetofile()
{
char f[128]={'\0'};
FILE *outf;
int i;
printf("请输入保存户籍信息的文件的文件名:\n");
scanf("%s",f);
outf=fopen(f,"w");
if(NULL!=outf)
{
for(i=0;i<count;i++)
{
fprintf(outf,"%s %s %s %d %s %s %s",pt[i].shfzhh,pt[i].xm,pt[i].xb,pt[i].nl,pt[i].xl,pt[i].zhzh,pt[i].dh);
if(count-1!=i)
{
fprintf(outf,"%s","\n");
}
}
fclose(outf);
printf("文件保存成功。\n");
}
else
{
printf("文件名无效。\n");
}
}
void showmenu()
{
char menu[]="菜单:\n0、退出\n1、添加一条信息\n2、删除一条信息\n3、批量修改\n4、浏览全部信息\n5、按年龄排序 \n6、按年龄区间查询\n7、保存到文件\n8、随意查询\n请选择一个菜单:";
puts(menu);
}
void tuichu()
{
if(NULL==pt)
{
free(pt);
}
exit(0);
}
//判断身份证号是否重复
int isshfzhhchf(char s[64])
{
int i,r=0;
for(i=0;i<count;i++)
{
if(!strcmp(pt[i].shfzhh,s))
{
r=1;
break;
}
}
return r;
}
void add()
{
myrealloc();
printf("添加一条户籍信息。\n");
printf("请输入身份证号 姓名 性别 年龄 学历 住址 电话:\n");
scanf("%s %s %s %d %s %s %s",pt[count].shfzhh,pt[count].xm,pt[count].xb,&pt[count].nl,
pt[count].xl,pt[count].zhzh,pt[count].dh);
if(!isshfzhhchf(pt[count].shfzhh))
{
count++;
printf("添加成功。\n");
}
else
{
printf("身份证号重复,添加失败。\n");
}
}
//输出下标为n的一条户籍信息
void outputone(int n)
{
if(n>=0 && n<count)
{
printf("第%d条户籍信息:\n",n+1);
printf("%s %s %s %d %s %s %s。\n",pt[n].shfzhh,pt[n].xm,pt[n].xb,pt[n].nl,pt[n].xl,pt[n].zhzh,pt[n].dh);
}
else
{
printf("没有第%d条户籍信息存在。\n",n+1);
}
}
void outputall()
{
if(0==count)
{
printf("系统已空。\n");
}
else
{
int i;
for(i=0;i<count;i++)
{
outputone(i);
}
}
}
void sortbyage()
{
int i,j,px;
HuJiXinXi hjxx;
printf("子菜单:\n1、升序\n2、降序\n请选择:");
scanf("%d",&px);
if(1==px || 2==px)
{
for(i=0;i<count-1;i++)
{
for(j=0;j<count-i-1;j++)
{
if(1==px)
{
if(pt[j].nl>pt[j+1].nl)
{
hjxx=pt[j+1];
pt[j+1]=pt[j];
pt[j]=hjxx;
}
}
else
{
if(pt[j].nl<pt[j+1].nl)
{
hjxx=pt[j+1];
pt[j+1]=pt[j];
pt[j]=hjxx;
}
}
}
}
printf("排序完成。\n");
}
else
{
printf("无法处理的子菜单命令。\n");
}
}
void findbyagerange()
{
int i,min,max,c=0;
printf("请输入要查找的户籍信息的最小年龄和最大年龄:");
scanf("%d %d",&min,&max);
printf("查询结果如下:\n");
for(i=0;i<count;i++)
{
if(pt[i].nl>=min && pt[i].nl<=max)
{
outputone(i);
printf("符合你的要求。\n");
c++;
}
}
if(0==c)
{
printf("没有符合你的要求的户籍信息。\n");
}
}
//删除一条户籍信息
void del()
{
int i,n;
HuJiXinXi hjxx;
printf("请输入要删除的是第几条户籍信息:");
scanf("%d",&n);
if(n-1>=0 && n-1<count)
{
hjxx=pt[n-1];
for(i=n;i<count;i++)
{
pt[i-1]=pt[i];
}
printf("删除成功。\n第%d条户籍信息:\n",n);
printf("%s %s %s %d %s %s %s。",hjxx.shfzhh,hjxx.xm,hjxx.xb,hjxx.nl,hjxx.xl,hjxx.zhzh,hjxx.dh);
printf(",已删除。\n");
count--;
}
else
{
printf("删除失败。\n不存在第%d条户籍信息。\n",n);
}
}
//根据hjxx的值修改下标为n的户籍信息
//对于pt[n]的对应字段,如果在hjxx中是用*表示的,则不修改
void change(HuJiXinXi hjxx,int n)
{
//返回非0值,意味着hjxx.shfzhh(身份证号)不等于*,即需要修改pt[n].shfzhh字段,以下都类似
if(strcmp(hjxx.shfzhh,"*"))
{
strcpy(pt[n].shfzhh,hjxx.shfzhh);
}
if(strcmp(hjxx.xm,"*"))
{
strcpy(pt[n].xm,hjxx.xm);
}
if(strcmp(hjxx.xb,"*"))
{
strcpy(pt[n].xb,hjxx.xb);
}
//不等于-1表示需要修改pt[n].nl(年龄)
if(-1!=hjxx.nl)
{
pt[n].nl=hjxx.nl;
}
if(strcmp(hjxx.xl,"*"))
{
strcpy(pt[n].xl,hjxx.xl);
}
if(strcmp(hjxx.zhzh,"*"))
{
strcpy(pt[n].zhzh,hjxx.zhzh);
}
if(strcmp(hjxx.dh,"*"))
{
strcpy(pt[n].dh,hjxx.dh);
}
}
//对户籍信息进行批量修改
void alter()
{
int n;
HuJiXinXi hjxx;
char nl[16];
while(1)
{
printf("请输入要修改第几条户籍信息(-1退出循环):");
scanf("%d",&n);
if(-1==n)
{
break;
}
else if(n-1>=0 && n-1<count)
{
printf("修改...\n");
outputone(n-1);
printf("请输入将此户籍信息修改后的新的姓名 性别 年龄 学历 住址 电话(保持原值的用*代替):\n");
scanf("%s %s %s %s %s %s",hjxx.xm,hjxx.xb,nl,hjxx.xl,hjxx.zhzh,hjxx.dh);
//因为只有nl(年龄)是int型,故对nl作特殊处理,-1表示修改时年龄保持原值不变(不修改)
hjxx.nl=(strcmp(nl,"*") ? atoi(nl) : -1);
strcpy(hjxx.shfzhh,"*");
change(hjxx,n-1);
printf("修改完成。\n");
}
else
{
printf("无法修改,不存在第%d条户籍信息。\n",n);
}
}
}
//用于判断pt[n]是否匹配hjxx的模式
int ismatch(HuJiXinXi hjxx,int n)
{
int r=1;
if(strcmp(hjxx.shfzhh,"*") && strcmp(hjxx.shfzhh,pt[n].shfzhh))
{
r=0;
}
if(r && strcmp(hjxx.xm,"*") && strcmp(hjxx.xm,pt[n].xm))
{
r=0;
}
if(r && strcmp(hjxx.xb,"*") && strcmp(hjxx.xb,pt[n].xb))
{
r=0;
}
if(r && -1!=hjxx.nl && hjxx.nl!=pt[n].nl)
{
r=0;
}
if(r && strcmp(hjxx.xl,"*") && strcmp(hjxx.xl,pt[n].xl))
{
r=0;
}
if(r && strcmp(hjxx.zhzh,"*") && strcmp(hjxx.zhzh,pt[n].zhzh))
{
r=0;
}
if(r && strcmp(hjxx.dh,"*") && strcmp(hjxx.dh,pt[n].dh))
{
r=0;
}
return r;
}
//按模式查询户籍信息
void find()
{
int i,c=0;
char nl[16];
HuJiXinXi hjxx;
printf("请输入要查询的户籍信息的身份证号 姓名 性别 年龄 学历 住址 电话(只需提供关键信息以用于查询,不提供的信息请用*代替):\n");
scanf("%s %s %s %s %s %s %s",hjxx.shfzhh,hjxx.xm,hjxx.xb,nl,hjxx.xl,hjxx.zhzh,hjxx.dh);
//因为只有nl(年龄)是int型,故对nl作特殊处理,-1表示查询时不需比较年龄
hjxx.nl=(strcmp(nl,"*") ? atoi(nl) : -1);
for(i=0;i<count;i++)
{
if(ismatch(hjxx,i))
{
printf("找到第%d条满足你的模式要求的户籍信息如下:\n",c+1);
printf("%s %s %s %d %s %s %s。\n",pt[i].shfzhh,pt[i].xm,pt[i].xb,pt[i].nl,pt[i].xl,pt[i].zhzh,pt[i].dh);
c++;
}
}
if(!c)
{
printf("系统中没有满足你的模式要求的户籍信息。\n");
}
}
❸ 电脑中常用的快捷键有那些
电脑快捷键有但不仅有以下这些:
❹ c语言,用vc6.0++写一个程序,为什么编译和组建产生的文件名不同
VisualC++6.0简称VC或者VC6.0,是微软1998年推出的一款C/C++ IDE,界面友好,调试功能强大。VC6.0是一款革命性的产品,非常经典,至今仍然有很多企业和个人在使用,很多高校也将VC6.0作为C语言的教学基础,作为上机实验的工具。本教程中的代码,也都是在VC6.0下运行通过。
VC6.0 确实有点老了,如果不是学校要求或者项目需要,建议使用 Visual Studio 代替,这里之所以讲解 VC6.0,是为了照顾在校生或者有特殊需求的读者。
安装VC6.0
微软原版的 VC6.0 已经不容易找到,网上提供的都是经过第三方修改的版本,删除了一些使用不到的功能,增强了兼容性。这里我们使用 VC6.0 完整绿色版,它能够支持一般的 C/C++ 应用程序开发以及计算机二级考试。
下载地址:VC 6.0中文版下载
在VC6.0下运行C语言程序
C-Free 支持单个源文件的编译和链接,但是在VC6.0下,必须先创建工程(Project),然后再添加源文件。一个真正的软件,往往需要多个源文件和多种资源,例如图片、视频、控件等,通常是把它们放到一个文件夹下,进行有效的管理。你可以把工程理解为这样的一个文件夹,IDE通过工程来管理这些文件。工程有不同的类型,例如开发“黑窗口”的控制台程序,需要创建Win32 Console Application工程;开发带界面的GUI程序,需要创建Win32 Application工程。
1) 新建Win32 Console Application工程
打开VC6.0,在菜单栏中选择“文件 -> 新建”,或者 Ctrl+N,弹出下面的对话框:
注意:编译生成的 .exe 文件在工程目录下的Debug文件夹内。以上面的工程为例,路径为E:cDemo,打开看到有一个Debug文件夹,进入可以看到 cDemo.exe。
在Debug目录中还会看到一个名为 hello.obj 的文件。.obj是VC/VS生成的目标文件,类似于C-Free下的.o文件。
工程文件说明
进入工程目录 E:cDemo,除了 hello.c,还会看到很多其他文件,它们是VC6.0创建的,用来支持当前工程,不属于C语言的范围,你可以忽略它们。
如果读者感兴趣,我们也提供了简单的说明:
1) .dsp文件:DeveloperStudio Project,工程文件(文本格式),用来保存当前工程的信息,例如编译参数、包含的源文件等,不建议手动编辑。当需要打开一个工程时,打开该文件即可。
2).dsw文件:DeveloperStudio Workspace,工作区文件,和DSP类似。
3) .opt文件:IDE的Option文件,保存了与当前工程有关的开发环境的配置,例如工具条位置、打开的文件、光标位置等。
4) .plg文件:日志文件(HTML文件),保存了程序的编译信息,例如错误和警告等。
一个工程可以包含多个源文件和资源文件(图片、视频等),但只能生成一个二进制文件,例如可执行程序.exe、动态链接库.dll、静态链接库.lib等。工程类型决定了不同的配置信息,也决定了生成不同的二进制文件。
一个工作区可以包含多个工程,能够批量生成多个二进制文件。
我们安装的较大的程序,安装目录中一般包含多个 EXE 和 DLL。对于这样的程序,可以先创建一个工作区,再创建多个工程,这样就能一次性生成所需的多个二进制文件。
❺ c语言中的“宏”是指什么
是一种批量处理的称谓。计算机科学里的宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定的文本模式。
“宏”这个词的使用暗示着将小命令或动作转化为一系列指令。
计算机语言如C语言或 汇编语言有简单的宏系统,由编译器或汇编器的预处理器实现。C语言的宏预处理器的工作只是简单的文本搜索和替换,使用附加的文本处理语言如M4,C程序员可以获得更精巧的宏。
在Objective-C语言源程序中,允许用一个标识符来表示一个字符串,称为宏,被定义为宏的标识符称为宏名。在编译预处理时,对程序中所有出现的宏名,都用宏定义中的字符串去替换,这称为宏替换或宏展开。
宏定义是由源程序中的宏定义命令完成的,宏替换是由预处理程序自动完成的。在Objective-C语言中,宏分为有参数和无参数两种。
(5)c语言批量删除软件扩展阅读
A类宏是用G65 Hxx P#xx Q#xx R#xx或G65
Hxx P#xx Qxx
Rxx格式输入的,xx的意思就是数值,是以um级的量输入的,比如你输入100那就是0.1MM #xx就是变量号,变量号就是把数值代入到一个固定的地址中,固定的地址就是变量。
一般OTD系有#0~#100~#149~#500~#531.关闭电源时变量#100~#149被初始化成“空”,而变量#500~#531保持数据。我们如果说#100=30那么现在#100地址内的数据就是30了。
B类宏能完成某一功能的一系列指令像子程序那样存入存储器,用户可以设定M、S、T、G代码调用它们,使用时只需给出这个指令代码就能执行其功能,也可以像调用子程序一样使用。
❻ C语言实现 批量删除文件
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
intmain(){
inti;
charstr[10];
charfn[255];
for(i=0;i<20;i++){
fn[0]=0;
strcat(fn,"d:\temp\");
if(i<10)strcat(fn,"0");
strcat(fn,itoa(i,str,10));
strcat(fn,".txt");
printf("删除%s ",fn);//这一句显示要删除的文件,如果真的要删除文件,把下一的注释删除
//remove(fn); //真的要删除文件了
}
}