‘壹’ 学了一学期的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语言大作业的问题
#include<stdio.h>
#definecourse2
#definestud40
intinput(intscore[][course],longnum[]);
voidtotal(intscore[][course],intsum[],intn);
voidprint(intscore[][course],longnum[],intsum[],intn);
voidsort(intscore[][course],longnum[],intsum[],intn);
main()
{
intn;
longnum[stud];
intscore[stud][course],sum[stud];
n=input(score,num);
total(score,sum,n);
sort(score,num,sum,n);
print(score,num,sum,n);
}
intinput(intscore[][course],longnum[])
{
inti,j,n;
printf("输入学生的人数:");
scanf("%d",&n);
printf("Enter学号.andscoreas:高等数学大学物理 ");
for(i=0;i<n;i++)
{
scanf("%ld",&num[i]);
for(j=0;j<course;j++)
{
scanf("%d",&score[i][j]);
}
}
returnn;
}
voidtotal(intscore[][course],intsum[],intn)
{
inti,j;
for(i=0;i<n;i++)
{
sum[i]=0;
for(j=0;j<course;j++)
{
sum[i]=sum[i]+score[i][j];
}
}
}
voidsort(intscore[][course],longnum[],intsum[],intn)
{
inttemp,temp1,temp2;
inti,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(sum[j]>sum[i])
{
temp=sum[j];
sum[j]=sum[i];
sum[i]=temp;
temp1=num[j];
num[j]=num[i];
num[i]=temp1;
}
}
voidprint(intscore[][course],longnum[],intsum[],intn)
{
inti,j;
printf("Result: ");
printf("No 高等数学 大学物理 总分 ");
for(i=0;i<n;i++)
{
printf("%4ld ",num[i]);
for(j=0;j<course;j++)
{
printf("%4d ",score[i][j]);
}
printf("%5d ",sum[i]);
}
}
‘叁’ 北邮同学C语言题啊~我哭啊~在线等答案啊
#include <stdio.h>
int CheckLeap(int year)
{
return ((year%4==0)&&(year%100)||(year%400==0));
}
int GetWeekDay(int year,int month,int day)
{
if (month<3) {
month+=12;
year--;
}
return (day+2*month+3*(month+1)/5+year+year/4-year/100+year/400+1) % 7 ;
}
int GetMonthDays(int year,int month)
{
switch (month) { default:
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:return 31;break;
case 4:
case 6:
case 9:
case 11:return 30;break;
case 2:return CheckLeap(year)?29:28;break;
}
}
void PrintMonthCalender(int startDay,int days)
{
int i,j=0;printf("Sun.\tMon.\tTue.\tWed.\tThu.\tFri.\tSat.\n");
for (i = 0; i<startDay; i++) {
putchar('\t');
j++;
}
for (i=1; i<=days; j++,i++) {
if (j&&j%7==0) {
putchar('\n');
}
printf("%d\t",i);
}
}
int main(int argc, char* argv[])
{
int year,month;
printf("Input the year and month<yyyy-mm>:");
scanf("%d-%d",&year,&month);
printf("\t\t%d-%02d\n",year,month);
PrintMonthCalender(GetWeekDay(year,month,1),GetMonthDays(year,month));
return 0;
}
‘肆’ 大家好。我是北京邮电大学大一的,初学计算机C语言有点懵。星期六有上机考试,用的是北邮OJ系统答上机题。
OJ 上面可以选编译器的 用VC 和DEV 在有些地方有点不同,但大体上没什么区别的,只要注意不要输出不必要的内容,输出格式什么的注意下就是 了
‘伍’ C语言大作业怎么做
给你个大概思路~~~~~
1。把每个学生的的信息先组合成一个结构体
struct
Student
{
……},
然后就用它来定义学生,
struct
Student
stu[100];(有能力的话建义用动态内存的链表结构,不明白当我没说)
2。“自顶向下,逐步求精”,把各个功能写成各个函数,如添加,删除,查询,退出……(看你自己了,这正是C语言的模块化思想
3。主函数就是打出这些选择,让USER
去选,然后调用相应的函数去执行,完了又回到主菜单,以此循环
如果能使用图形的界面,增加动画之类的会更好的(呵呵,不会当我没说~~~~)
‘陆’ c语言的大作业
以下程序做讨论3个科目的,具体为数学,中文,英语。如果增加科目,具体改变相应的数字。
#include "stdio.h"
#include<conio.h>
#include<string.h>
#include<stdlib.h>
struct {
char num[10];/*the number of the student*/
int score_math;/*the score of the mathematic*/
int score_chinese;
int score_enlish;
}Student; /*the information of student*/
int Avg_student(Student[],int index)
{
int avg=0;
avg=(Student[i].chinese+Student[i].math+Student[i].english)/3 ;/*the average of a student in three courses.*/
}
....给我加分吧。剩下的我通过QQ: 346994177 回复给你吧。还有期中具体的一些细节要交流下;
‘柒’ c语言大作业,输入五个学生的学号,姓名,性别,然后可以用年份输出,班级输出,性别输出,求改错
do{
printf(" 请输入数字0-4:");
c=getchar();
n=c-48;}
while((n<0)||(n>4));
由于输入的时候会带入回车,真正执行的时候你打0回车其实是输入了0 ,此循环会被执行3次
printf("%s%s%c");
这句没带参数
‘捌’ C语言大作业,这题该怎么写
图片看不清,只看到学生信息录入。
学生信息包含多个类型数据,比如学生学号、成绩、班级、年级、学科、成绩等等。
所以学生应该定义为结构体。
学生数量可以用常量表示。之后定义结构数组用于循环接收学生信息的录入。
之后学生信息的输出,成绩分析,求平均之类,都只是对结构数组的循环遍历。
‘玖’ C语言大作业
上接另一个账号<梅园寨主>
list.h
#ifndeflist_h
#definelist_h
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
typedefstructnNodeNode;
structnNode
{
//向上指针
Node*nUp;
//向下指针
Node*nDown;
//学号
intiId;
//班级
char*pcClass;
//姓名
char*pcName;
//数学
floatfMath;
//英语
floatfEng;
//计算机
floatfCmp;
//平均分
floatfAver;
};
typedefstruct
{
Node*nTop;
Node*nBottom;
intiSize;
}List;
//新建节点
Node*Node_new(intiId,char*pcClass,char*pcName,floatfMath,floatacEng,floatacCmp);
//删除节点
voidNode_delete(Node*nNode);
//输出节点的值
voidNode_print(Node*nNode);
//新建链表
List*List_new(void);
//删除链表
voidList_delete(List*lList);
//节点从链表顶部加入
voidList_pushTop(List*lList,Node*nNewNode);
//节点从链表顶部取出
Node*List_popTop(List*lList);
//节点从链表底部加入
voidList_pushBottom(List*lList,Node*nNewNode);
//节点从链表底部取出
Node*List_popBottom(List*lList);
//节点从链表指定位置插入
voidList_insert(List*lList,Node*nNewNode,intiIndex);
//从链表中移除指定节点
voidList_remove(List*lList,Node*nOldNode);
//遍历链表void(*visit)(Node*)是指向函数的指针
voidList_traverse(List*lList,void(*visit)(Node*));
//这个节点在链表是第几个节点
intgetIndex(List*lList,Node*nOldNode);
//按平均分排序
voidList_sortByAver(List*lList);
//按计算机成绩排序
voidList_sortByCmp(List*lList);
//按学号输出
voidList_printById(List*lList);
//按姓名输出
voidList_printByName(List*lList);
#endif//list_h
list.c
#include"list.h"
//新建节点
Node*Node_new(intiId,char*pcClass,char*pcName,floatfMath,floatfEng,floatfCmp)
{
intiSize;
Node*nNode=(Node*)malloc(sizeof(Node));
//设置向上指针
nNode->nUp=NULL;
//设置向下指针
nNode->nDown=NULL;
//设置学号
nNode->iId=iId;
//设置班级
if(pcClass!=NULL)
iSize=strlen(pcClass);
else
iSize=0;
if(iSize!=0)
{
nNode->pcClass=(char*)malloc(sizeof(char)*(iSize)+1);
strcpy(nNode->pcClass,pcClass);
nNode->pcClass[iSize]='