大一c语言课程设计题目(大一c语言课程设计题目简单的)
大一C语言课程设计
用vs2008跟sql配合就可以做出来了,你学这个专业的应该知道做的吧
大一C语言课程设计题目, 求急! 加100分。
#includestdio.h
#includestring.h
#define N 100
typedef struct AA
{
char name[20];
char phone[12];
char e_mail[30];
char relation[20];
}AA;
/*1。输入新联系人2。删除指定的联系人(输入姓名,若找掉则删除该联系人的信息)
3。根据输入的与本人关系,显示联系信息4。显示所有联系人的信息设计菜单*/
int input__(AA * s)
{
int len = 0,i = 0,n;
printf("请输入要添加的联系人个数,上限为%d个\n",N);
scanf("%d",n);
for(i=0;in;i++)
{
printf("请依次输入第%d联系人的姓名、电话、邮箱以及与本人的关系(中间使用空格隔开即可):\n",i);
scanf("%s%s%s%s",s[i].name,s[i].phone,s[i].e_mail,s[i].relation);
}
return n;
}
void delete__(AA *s,int *n)
{
int i = 0,j = 0,status = 0;
char ca[20] = "";
printf("请输入要删除的联系人的姓名\n");
scanf("%s",ca);
for(i=0;i*n;i++)
{
if(!strcmp(ca,s[i].name))
{
*n = *n-1;
status = 1;
for(j=i;j*n;j++)
{
s[j] = s[j+1];
}
break;
}
}
if(status == 0)
printf("没有找到要删除的人的信息\n");
else
printf("删除成功\n");
}
void show__relation(AA *s,int n)
{
int i = 0,status = 0;
printf("请输入与联系人的关系\n");
char ca[20] = "";
scanf("%s",ca);
for(i=0;in;i++)
{
if(!strcmp(ca,s[i].relation))
{
printf("name:%15s\tphone:%15s\ne-mail:%15s\trelation:%15s\n",s[i].name,s[i].phone,s[i].e_mail,s[i].relation);
status = 1;
}
}
if(!status)
printf("没有找到相应的信息\n");
}
void show__all(AA *s,int n)
{
int i = 0;
for(i = 0 ; i n ; i++)
{
printf("name:%15s\tphone:%15s\ne-mail:%15s\trelation:%15s\n",s[i].name,s[i].phone,s[i].e_mail,s[i].relation);
}
}
int ?main(void)
{
AA ?a[N];
int n = 0;
int i;
while(1)
{
printf("0------退出系统\n1------输入联系人信息\n2------删除指定联系人信息\n");
printf("3------显示与本人关系相通的联系人信息\n4------显示所有联系人的信息\n");
scanf("%d",i);
if(i == 0)
break;
switch(i)
{
case 1:n = input__(a); break;
case 2:
if(n == 0)
{
printf("你还没有添加信息,请先添加信息:\n");
break;
}
else
{
delete__(a,n);
break;
}
case 3:
{
if(n == 0)
{
printf("你还没有添加信息,请先添加信息:\n");
break;
}
else
{
show__relation(a,n);
break;
}
}
case 4:
{
if(n == 0)
{
printf("你还没有添加信息,请先添加信息:\n");
break;
}
else
{
show__all(a,n);
break;
}
}
default:
printf("您的选择有误,请重新选择\n");
break;
}
}
return 0;
}
//看看~~~刚刚写完~
大一C语言编程题?
车票根据题意两两站点连线生成,金额和数量分别用随机数。
数据存储:站点,车票,用户分别为3个结构体,用于对应数据库。
购买流程:检查输入数值有效性-检查车票库存-购买成功同步修改用户购买流水及车票库存。(这里题目需求不明确,没有指明用户购买方式),我的代码允许一个用户同时购买多种票,每种票可分批购买多张。购买流水记录自动增加和更新。
退票流程:检查输入和用户购买记录,同步更新用户及车票信息。
删除流程:选择删除没有被用户购买的票(函数检查所有用户,虽然本题只要一个用户,实际传参用户数组首地址)。
PS: 这个题目涉及到增删改,用链表来写更好,但考虑你学习范围,没有使用链表而是动态数组,动态数组删除,考虑内存占用,不仅要需循环移位还要释放多余地址。
另外整体程序,异常的处理我只是单纯返回0或者1或者-1区分基本的成功与失败。你如想对个别异常进行特殊处理,自行修改返回值,接收判断。
下面是代码:
#include stdio.h
#include stdlib.h
#include string.h
#include time.h
#include windows.h
#include conio.h
#define MS 5//最大站点数
typedef struct station
{
? char sid[10];
? char sName[20];
}STN;
typedef struct ticket
{
? int tid;//票编号
? STN *ssP;//起始站
? STN *tsP;//终点站
? int value;//票价
? int number;//数量
}TKT;
typedef struct userInfo//用户
{
? char uid[20];//身份证号
? int cnt;//购买的票种类数量
? int *btids;//购买的所有票id数组
? int *btNum;//购买的所有票数量数组
}UIFO;
int init(STN stns[MS],TKT **tkts);//初始化车站、票数据
int disAllTickets(TKT *tkts);
int buyTicket(UIFO *uifo,TKT *tkts);//异常返回0
int reTicket(UIFO *uifo,TKT *tkts);//异常返回0
int showMenu(UIFO *uifo,TKT *tkts);
int delIntByIndex(int *nums,int len,int index);//通过下标index删除动态整型数组nums对应元素,并释放多余地址,返回删除后的数组长度,异常返回-1
int delTkts(UIFO *uifos,int len,TKT *tkts);//删除指定票(检查用户组,只要有一个用户购买,无法删除)
int cnt;//票种类数量
int main()
{
? STN stns[MS];
? TKT *tkts=NULL;
? UIFO uifo={"321002199902050614",0,NULL,NULL};
? srand(time(NULL));
? cnt=init(stns,tkts);
? printf("共生成%d组票(每组往返两种票,共%d种票)\n\n",cnt/2,cnt);
? printf("按任意键继续。。。。\n"),getch();
? system("cls");
? showMenu(uifo,tkts);
? return 0;
}
int showMenu(UIFO *uifo,TKT *tkts)
{
? int n=5;
? printf("(1) Buy ticket\n");
? printf("(2) Refund ticket\n");
? printf("(3) Remove ticket\n");
? printf("(4) Display all tickets\n");
? printf("(0) Exit\n");
? while(n0 || n4)
? ? ? scanf("%d",n);
? switch(n)
? {
? ? ? case 0: return 0;
? ? ? case 1: if(!buyTicket(uifo,tkts)) return 0;break;
? ? ? case 2: if(!reTicket(uifo,tkts)) return 0;break;
? ? ? case 3: if(!delTkts(uifo,1,tkts)) return 0;break;
? ? ? //这里删除功能,用户多名,要传数组首地址,由于演示只有一个用户(len=对应用户数),所以只传该用户地址(len=1)
? ? ? case 4: disAllTickets(tkts);break;
? }
? showMenu(uifo,tkts);
? return 1;
}
int disAllTickets(TKT *tkts)
{
? int i;
? for(i=0;icnt;i++)
? ? ? printf("编号:%2d 路程:%s-%s 票价:%3d 剩余票数:%d\n",tkts[i].tid,tkts[i].ssP-sName,tkts[i].tsP-sName,tkts[i].value,tkts[i].number);
? printf("按任意键继续。。。。\n"),getch();
? system("cls");
? return 1;
}
int delIntByIndex(int *nums,int len,int index)
{
? int i,*temp=NULL;
? if(indexlen-1) return -1;
? for(i=index;ilen-1;i++)
? ? ? nums[i]=nums[i+1];
? len--;
? if(len)
? {
? ? ? temp=(int *)realloc(nums,sizeof(int)*len);
? ? ? if(!temp) return -1;
? ? ? nums=temp;
? }
? else
? ? ? free(nums);
? return len;
}
int reTicket(UIFO *uifo,TKT *tkts)
{
? int i,j,tid,n,index,len,flag=0;
? printf("当前用户购买记录:\n");
? for(i=0;iuifo-cnt;i++)
? {
? ? ? for(j=0;jcnt;j++)
? ? ? ? ? if(tkts[j].tid==uifo-btids[i]) index=j;
? ? ? printf("--车票编号:%d,起末站:%s-%s,购买票数:%d\n",uifo-btids[i],tkts[index].ssP-sName,tkts[index].tsP-sName,uifo-btNum[i]);
? }
? printf("请输入要退票的车票id及票数:"),scanf("%d%d",tid,n);
? for(i=0;iuifo-cnt;i++)
? ? ? if(uifo-btids[i]==tid uifo-btNum[i]=n)
? ? ? {
? ? ? ? ? for(j=0;jcnt;j++)
? ? ? ? ? ? ? if(tkts[j].tid==uifo-btids[i]) tkts[j].number+=n;//同步修改对应车票剩余票数
? ? ? ? ? uifo-btNum[i]-=n;//用户购买记录修改
? ? ? ? ? if(uifo-btNum[i]==0)//某种车票全部退完,删除该条记录
? ? ? ? ? {
? ? ? ? ? ? ? len=delIntByIndex(uifo-btNum,uifo-cnt,i);
? ? ? ? ? ? ? if(len==-1) return 0;
? ? ? ? ? ? ? len=delIntByIndex(uifo-btids,uifo-cnt,i);
? ? ? ? ? ? ? if(len==-1) return 0;
? ? ? ? ? ? ? uifo-cnt=len;
? ? ? ? ? }
? ? ? ? ? flag=1;
? ? ? ? ? break;
? ? ? }
? if(flag)
? ? ? printf("退票成功!\n");
? else
? ? ? printf("无此购买记录或输入数量不符合\n");
? printf("按任意键继续。。。。\n"),getch();
? system("cls");
? return 1;
}
int buyTicket(UIFO *uifo,TKT *tkts)
{
? char spn[20],tpn[20];
? int i,n=-1,index=-1,*temp=NULL;
? for(i=0;icnt;i++)
? ? ? printf("编号:%2d 路程:%s-%s 票价:%3d 剩余票数:%d\n",tkts[i].tid,tkts[i].ssP-sName,tkts[i].tsP-sName,tkts[i].value,tkts[i].number);
? printf("请输入始发站站名和终点站站名:"),scanf("%s%s",spn,tpn);
? for(i=0;icnt;i++)
? ? ? if(strcmp(tkts[i].ssP-sName,spn)==0 strcmp(tkts[i].tsP-sName,tpn)==0)
? ? ? {
? ? ? ? ? printf("车票%s-%s 票价:%3d 剩余票数:%d\n",tkts[i].ssP-sName,tkts[i].tsP-sName,tkts[i].value,tkts[i].number);
? ? ? ? ? index=i;
? ? ? ? ? break;
? ? ? }
? if(index==-1)
? ? ? printf("购买失败!无此路程的车票\n");
? else
? {
? ? ? while(n=0)
? ? ? {
? ? ? ? ? printf("请输入要购买的数量(大于0):"),scanf("%d",n);
? ? ? ? ? if(tkts[index].numbern)
? ? ? ? ? ? ? printf("错误:车票数量不足或者输入数值超出范围!请重新输入!\n"),n=-1;
? ? ? }
? ? ? for(i=0;iuifo-cnt;i++)//检查用户购买记录,重复票累加购买数量,不同票新增记录
? ? ? {
? ? ? ? ? if(uifo-btids[i]==tkts[index].tid)
? ? ? ? ? {
? ? ? ? ? ? ? printf("该票已购买了%d张,现再次购买%d张,累计购买了%d张\n",uifo-btNum[i],n,uifo-btNum[i]+n);
? ? ? ? ? ? ? uifo-btNum[i]+=n;
? ? ? ? ? ? ? tkts[index].number-=n;
? ? ? ? ? ? ? break;
? ? ? ? ? }
? ? ? }
? ? ? if(i==uifo-cnt)//未检查到重复记录,新增
? ? ? {
? ? ? ? ? if(!uifo-btids)
? ? ? ? ? {
? ? ? ? ? ? ? uifo-btids=(int *)malloc(sizeof(int));
? ? ? ? ? ? ? if(!uifo-btids) return 0;
? ? ? ? ? ? ? uifo-btNum=(int *)malloc(sizeof(int));
? ? ? ? ? ? ? if(!uifo-btNum) return 0;
? ? ? ? ? }
? ? ? ? ? else
? ? ? ? ? {
? ? ? ? ? ? ? temp=(int *)realloc(uifo-btids,sizeof(int)*(uifo-cnt+1));
? ? ? ? ? ? ? if(!temp) return 0;
? ? ? ? ? ? ? uifo-btids=temp;
? ? ? ? ? ? ? temp=(int *)realloc(uifo-btNum,sizeof(int)*(uifo-cnt+1));
? ? ? ? ? ? ? if(!temp) return 0;
? ? ? ? ? ? ? uifo-btNum=temp;
? ? ? ? ? }
? ? ? ? ? uifo-btids[uifo-cnt]=tkts[index].tid;
? ? ? ? ? printf("该票购买了%d张\n",(uifo-btNum[uifo-cnt]=n));
? ? ? ? ? tkts[index].number-=n;
? ? ? ? ? uifo-cnt++;
? ? ? ? ? printf("用户购买记录:\n");
? ? ? ? ? for(i=0;iuifo-cnt;i++)
? ? ? ? ? ? ? printf("--车票编号:%d,购买票数:%d\n",uifo-btids[i],uifo-btNum[i]);
? ? ? }
? ? ? printf("本次成功购买了%s-%s的票%d张!\n",tkts[index].ssP-sName,tkts[index].tsP-sName,n);
? }
? printf("按任意键继续。。。。\n"),getch();
? system("cls");
? return 1;
}
int delTkts(UIFO *uifos,int len,TKT *tkts)//len:所有购买的用户数量
{
? int i,j,k,tid,flag=0,index;
? for(i=0;icnt;i++)
? ? ? printf("编号:%2d 路程:%s-%s 票价:%3d 剩余票数:%d\n",tkts[i].tid,tkts[i].ssP-sName,tkts[i].tsP-sName,tkts[i].value,tkts[i].number);
? printf("请输入要删除的车票编号:"),scanf("%d",tid);
? for(i=0;icnt;i++)
? ? ? if(tid==tkts[i].tid)
? ? ? {
? ? ? ? ? index=i;
? ? ? ? ? flag=1;
? ? ? ? ? for(j=0;jlen;j++)//检查所有用户购买记录
? ? ? ? ? {
? ? ? ? ? ? ? for(k=0;kuifos[j].cnt;k++)
? ? ? ? ? ? ? ? ? if(uifos[j].btids[k]==tid)
? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? flag=0;
? ? ? ? ? ? ? ? ? ? ? printf("该票已被用户购买,无法删除,需先完成退票!\n");
? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? if(!flag)
? ? ? ? ? ? ? ? ? break;
? ? ? ? ? }
? ? ? ? ? break;
? ? ? }
? if(!flag) printf(" 删除失败,输入数值超出范围或不可删除!\n");
? else
? {
? ? ? cnt--;
? ? ? if(cnt==0)
? ? ? {
? ? ? ? ? free(tkts[index].ssP);
? ? ? ? ? free(tkts[index].tsP);
? ? ? ? ? free(tkts[index]);
? ? ? }
? ? ? else
? ? ? {
? ? ? ? ? free(tkts[index].ssP);
? ? ? ? ? free(tkts[index].tsP);
? ? ? ? ? for(i=index;icnt;i++)
? ? ? ? ? ? ? tkts[i]=tkts[i+1];
? ? ? ? ? tkts[cnt].ssP=NULL;
? ? ? ? ? tkts[cnt].tsP=NULL;
? ? ? ? ? free(tkts[cnt]);
? ? ? }
? ? ? printf(" 删除成功!\n");
? }
? printf("按任意键继续。。。。\n"),getch();
? system("cls");
? return 1;
}
int init(STN stns[MS],TKT **tkts)
{
? TKT *tTemp=NULL;
? int i,j,n,v,cnt=2;
? static int id=1;
? printf("生成站点:\n");
? for(i=0;iMS;i++,id++)
? {
? ? ? sprintf(stns[i].sid,"车站%03d",id);
? ? ? sprintf(stns[i].sName,"SN%03d",id);
? ? ? printf("----站点名:%s。站点ID:%s\n",stns[i].sid,stns[i].sName);
? }
? printf("计算所有站点连线,生成车票(票是往返,所以一次生成往返两组票):\n");
? for(i=0;iMS;i++)
? ? ? for(j=i+1;jMS;j++)
? ? ? {
? ? ? ? ? if(!(*tkts))
? ? ? ? ? {
? ? ? ? ? ? ? *tkts=(TKT *)malloc(sizeof(TKT)*2);
? ? ? ? ? ? ? if(!(*tkts)) return -1;
? ? ? ? ? }
? ? ? ? ? else
? ? ? ? ? {
? ? ? ? ? ? ? tTemp=(TKT *)realloc((*tkts),sizeof(TKT)*cnt);
? ? ? ? ? ? ? if(!tTemp) return -1;
? ? ? ? ? ? ? *tkts=tTemp;
? ? ? ? ? }
? ? ? ? ? n=rand()%4+2;//每种票随机2~5张(保证总数大于20)
? ? ? ? ? v=rand()%201+50;//随机生成票价50~250
? ? ? ? ? (*tkts)[cnt-1].tid=cnt;
? ? ? ? ? (*tkts)[cnt-1].ssP=stns[i];
? ? ? ? ? (*tkts)[cnt-1].tsP=stns[j];
? ? ? ? ? (*tkts)[cnt-1].value=v;
? ? ? ? ? (*tkts)[cnt-1].number=n;
? ? ? ? ? (*tkts)[cnt-2].tid=cnt-1;
? ? ? ? ? (*tkts)[cnt-2].ssP=stns[j];
? ? ? ? ? (*tkts)[cnt-2].tsP=stns[i];
? ? ? ? ? (*tkts)[cnt-2].value=v;
? ? ? ? ? (*tkts)[cnt-2].number=n;
? ? ? ? ? printf("----%s和%s的之间往返票各生成%d张,票价为%d(随机)\n",stns[i].sName,stns[j].sName,n,v);
? ? ? ? ? cnt+=2;
? ? ? }
? return cnt-2;
}
//答题不易,如采纳的,请不要无故删除问题。
C语言课程设计题目 学生成绩管理
#includestdio.h /*引用库函数*/
#includestdlib.h
#includectype.h
#includestring.h
typedef struct /*定义结构体数组*/
{
char num[10]; /*学号*/
char name[20]; /*姓名*/
int score; /*成绩*/
}Student;
Student stu[80]; /*结构体数组变量*/
int menu_select() /*菜单函数*/
{
char c;
do{
system("cls"); /*运行前清屏*/
printf("\t\t****Students' Grade Management System****\n"); /*菜单选择*/
printf("\t\t | 1. Input Records |\n");
printf("\t\t | 2. Display All Records |\n");
printf("\t\t | 3. Sort |\n");
printf("\t\t | 4. Insert a Record |\n");
printf("\t\t | 5. Delete a Record |\n");
printf("\t\t | 6. Query |\n");
printf("\t\t | 7. Statistic |\n");
printf("\t\t | 8. Add Records from a Text File|\n");
printf("\t\t | 9. Write to a Text file |\n");
printf("\t\t | 0. Quit |\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /*读入选择*/
}while(c'0'||c'9');
return(c-'0'); /*返回选择*/
}
int Input(Student stud[],int n) /*输入若干条记录*/
{int i=0;
char sign,x[10]; /*x[10]为清除多余的数据所用*/
while(sign!='n'sign!='N') /*判断*/
{ printf("\t\t\tstudent's num:"); /*交互输入*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",stud[n+i].score);
gets(x); /*清除多余的输入*/
printf("\t\t\tany more records?(Y/N)");
scanf("\t\t\t%c",sign); /*输入判断*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*显示所有记录*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式头*/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;in+1;i++) /*循环输入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i1i%10==0) /*每十个暂停*/
{printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /*按学号排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;in-1;i++) /*冒泡法排序*/
for(j=0;jn-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=stud[j+1].score;
q=stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
int Insert_a_record(Student stud[],int n) /*插入一条记录*/
{char x[10]; /*清除多余输入所用*/
printf("\t\t\tstudent's num:"); /*交互式输入*/
scanf("\t\t\t%s",stud[n].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n); /*调用排序函数*/
printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/
return(n);
}
int Delete_a_record(Student stud[],int n) /*按姓名查找,删除一条记录*/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /*交互式问寻*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0in) i++; /*查找判断*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*返回失败信息*/
return(n);
}
for(j=i;jn-1;j++) /*删除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Student stud[],int n) /*查找并显示一个记录*/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /*交互式输入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0in) i++; /*查找判断*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*输入失败信息*/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i].num); /*输出该学生信息*/
printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,输出统计信息*/
{ int i,j=0,k=0,sum=0;
float aver; /*成绩平均值*/
for(i=0;in;i++) /*循环输入判断*/
{
sum+=stud[i].score;
if(stud[j].scorestud[i].score) j=i;
if(stud[k].scorestud[i].score) k=i;
}
aver=1.0*sum/n;
printf("\t\t\tthere are %d records.\n",n); /*总共记录数*/
printf("\t\t\tthe hignest score:\n"); /*最高分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score);
printf("\t\t\tthe lowest score:\n"); /*最低分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score);
printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/
}
int AddfromText(Student stud[],int n) /*从文件中读入数据*/
{ int i=0,num;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /*输入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/
{ printf("\t\t\tcann't open the file\n"); /*打开失败信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",num); /*读入总记录量*/
while(inum) /*循环读入数据*/
{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,stud[n+i].score);
i++;
}
n+=num;
fclose(fp); /*关闭文件*/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /*将所有记录写入文件*/
{
int i=0;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf("\t\t\tWrite Records to a Text File\n"); /*输入文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打开文件*/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循环写入数据*/
while(in)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*关闭文件*/
printf("Successed!\n"); /*返回成功信息*/
}
void main() /*主函数*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*选择判断*/
{
case 1:
printf("\t\t\tInput Records\n"); /*输入若干条记录*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /*显示所有记录*/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /*按学号排序*/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /*插入一条记录*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /*查找并显示一个记录*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /*新增功能,输出统计信息*/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /*新增功能,输出统计信息*/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /*循环写入数据*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*结束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
大一C语言题目 求C语言高手 急!!
#include "stdio.h"
int n=0;
int isprime(int n)
{
for(int i=2;i=n/2;i++)
if(n%i==0)
return 0;
return 1;
}
void sort(int a[])
{
int i,j;
for(i=0;in-1;i++)
for(j=0;jn-1-i;j++)
if(a[j]a[j+1])
{
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
int swap(int n)
{
int a,b,c;
a=n/100;
b=n/10%10;
c=n%10;
return c*100+10*b+a;
}
void print(int a[])
{
for(int i=0;in;i++)
{
printf("%-5d",a[i]);
if(i%5==4) printf("\n");
}
printf("\n");
}
void deleven(int a[])
{
int i,j,k;
for(i=0;in;i++)
{
if(a[i] % 2==0)
{
for(j=i;a[j]%2==0;j++);
k=j-i;
for(j=i;jn-k-1;j++)
a[j]=a[j+k];
n-=k;
}
}
}
void main()
{
int i;
int a[900];
for(i=100;i1000;i++)
if(isprime(i))
a[n++]=i;
printf("all primes:\n");
print(a);
printf("\n\n");
for(i=0;in;i++)
a[i]=swap(a[i]);
sort(a);
printf("after swap and sort:\n");
print(a);
printf("\n\n");
deleven(a);
printf("after delete evens:\n");
print(a);
printf("\n");
}