C语言程序实例(编译通过含注释)_第1页
C语言程序实例(编译通过含注释)_第2页
C语言程序实例(编译通过含注释)_第3页
C语言程序实例(编译通过含注释)_第4页
C语言程序实例(编译通过含注释)_第5页
已阅读5页,还剩24页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序实例-・C语言存储汉字程序#include<stdio.h>voidmain(){chara[2];printf("请先用ctrl+空格键切换成汉字输入法\n");printf("请输入汉字\n");scanf("%s",&a);printf("%s",a);getchar();getchar();}(orgetsputsC中)二・C语言延时程序#include<stdio.h>#include<time.h>#include<windows.h>voidmain(){Sleep(3000);//延时3秒printf("start!");getch();}三・动态链表的建立与输出假设链表不超过30个结点#include<stdio.h>#include<stdlib.h〉//包含system和malloc函数#defineLENsizeof(structLnode)typedefstructLnode{intkey;structLnode*next;}Lnode[31];//链表最后一个结点存放空指针;以防30个结点时,所以多定义一个结点使最大允许结点数为31voidmain(){structLnode*p,*q,*head;inti,length,limit=1;while(limit==l)//当输入的链表长度即结点数超出30时,不执行建立链表的程序{printf("请输入链表长度:(〈=30)");scanf("%d",&length);system("cls");if(length〈=30)limit=0;}//建立链表for(i=0;i〈length;i++){p=(structLnode*)malloc(LEN);//由于p为指向结构体类型数据的指针,而malloc带回的是不指向任何类型数据的指针(void*),所以加了structLnode*将malloc返回的指针强制转换为指向结构体类型数据的指针,malloc用于开辟一个长度为LEN的连续内存区,每次循环开辟一个新结点使p指向它if(i==0)head=q=p;elseq->next=p;q=p; //p,q后移一位printf("请输入key%d:",i+l);scanf("%d",&p->key);}p-〉next=NULL;//最后这个结点为空p=head;//把链表的头指针赋给pwhile(p!=NULL){printf("%d\n",p-〉key);p=p-〉next;//p后移一位}}链表、含4个数的单向静态链表的建立和输出#include〈stdio.h>//含4个数3,5,8,11的简单单向静态链表的建立和输出structshu{longnum;structshu*next;//next指向结构体shu的指针};voidmain(){structshua,b,c,d,*head,*p;//把链表中的所有整数都一一定义为结构体,以便使用-〉or.num=3;num=5;num=8;num=11;head=&a;next=&b;next=&c;next=&d;next=NULL;p=head;printf("该链表={");while(p!=NULL){printf("%d",p-〉num);p=p-〉next;if(p!=NULL)//为了最后一个数后面没逗号printf(",");}printf("}");}链队列程序#include<stdio.h〉#include<stdlib.h〉//包含system和malloc函数#defineLENsizeof(structLq)typedefstructLq{charelem;structLq*next;}Lq;voidmain(){intflag=1,j;structLq*Qfront,*Qrear,*p;Qfront=Qrear=(structLq*)malloc(LEN);Qfront-〉next=NULL;//队列初始化,头指针尾指针均指向头结点(头结点中无元素)// 程序解说 printf("本程序实现链队列的操作.\n");printf("可以进行进队列,出队列等操作.\n");// while(flag){printf(〃请选择:\n〃);printf(" 1.显示队列中所有元素\n");TOC\o"1-5"\h\zprintf(" 2.进队列 \n");printf(" 3.出队列 \n");printf(" 4.退出程序 \n");scanf("%d",&j);system("cls");switch(j){case1://*********显示所有元素**********if(Qfront==Qrear){printf("error!队列为空列.");}else{printf("队列元素为:\n");p=Qfront->next;while(p!=NULL){printf(" %c\n",p->elem);p=p->next;}}// *1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1*//break;case2://**********进队列************printf("请输入要进入的元素:");p=(structLq*)malloc(LEN);getchar();scanf("%c",&p->elem);system("cls");p->next=NULL;Qrear->next=p;Qrear=p;printf("进队列成功!");//*1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1*//break;case3://*******出队列******if(Qfront==Qrear)printf("error!队列为空!");p=Qfront->next;Qfront->next=p->next;if(Qrear==p)Qrear=Qfront;printf("出队列成功!");//*1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1*//break;case4:flag=0;break;default:printf("error!\n");}printf("\n");}}栈和队列1、 试编写算法,在顺序存储结构下实现堆栈的下列运算:initstk(s)。初始化操作,建立一个空栈s;emptystk(s)。判定栈是否为空;pushstk(s)。如果栈s不满,在栈顶插入x;popstk(s)。如果栈s不空,删除栈顶元素,并返回该元素的值;getstk(s)。如果栈s不空,返回栈顶元素。2、 试编写算法,实现链队列的下列操作算法:initlq(q)。初始化操作,建立一个空队列q;emptylq(q)。判定队列q是否为空;enterlq(q)。进队列;deletelq(q)。出队列。#include<stdio.h>#include<stdlib.h>#defineMAX5//定义堆栈最大容量voidmain(){charelem[MAX];//栈区inttop=-1;//初始化栈顶指针为-1intflag=1;charch;inti,j;// 程序解说 printf("本程序实现顺序结构的堆栈的操作.\n");printf("可以进行入栈,出栈,取栈顶元素等操作.\n");// while(flag){printf(〃请选择:\n〃);printf("1.显示栈中所有元素\n")printf("2.入栈\n")printf("3.出栈\n");printf("4.取栈顶元素\n");printf("5.退出程序\n");scanf("%d",&j);system("cls");switch(j){case1://*********显示所有元素**********if(top==-1)printf("堆栈为空栈!\n");else{printf("堆栈所有元素:\n");for(i=0;i<=top;i++){printf(" %c",elem[i]);printf("\n");}}// *1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1*//break;case2:if(top==MAX-l)//判断是否栈满printf("error!栈已满!");//**********入栈************else{printf("请输入要入栈的元素:");scanf("%c",&ch);//输入要入栈的元素system("cls");top++; //栈顶指针top加一elem[top]=ch; //入栈printf("入栈成功!");}//*1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1*//break;case3://*******出栈********if(top==-1)printf("error!栈已空!");else{top--; //栈顶指针减一printf("出栈成功!");}////break;case4://*********取得栈顶元素*********if(top==-1)printf("error!栈为空栈!");else{printf("栈顶元素为:%c",elem[top]);//显示栈顶元素}//*X**X**X**X**X**X**X**X**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1*//break;case5:flag=0;default:printf("error!\n");}printf("\n");}}#include<stdio.h>#include<stdlib.h〉//包含system和malloc函数#defineLENsizeof(structLq)typedefstructLq{charelem;structLq*next;}Lq;voidmain(){intflag=1,j;structLq*Qfront,*Qrear,*p;Qfront=Qrear=(structLq*)malloc(LEN);Qfront-〉next=NULL;//队列初始化,头指针尾指针均指向头结点(头结点中无元素)// 程序解说 printf("本程序实现链队列的操作.\n");printf("可以进行进队列,出队列等操作.\n");// while(flag)printf(〃请选择:\n〃);printf(" 1.显示队列中所有元素\n");TOC\o"1-5"\h\zprintf(" 2.进队列 \n");printf(" 3.出队列 \n");printf(" 4.退出程序 \n");scanf("%d",&j);system("cls");switch(j){case1://*********显示所有元素**********if(Qfront=二Qrear)//队列为空时{printf("error!队列为空列.");}else{printf("队列元素为:\n");p=Qfront->next;while(p!二NULL)//显示队列中所有元素{printf(" %c\n",p->elem);p=p->next;}}// *1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1*//break;case2://**********进队列************printf("请输入要进入的元素:");p=(structLq*)malloc(LEN);//生成一个新结点getchar();scanf("%c",&p-〉elem);//赋值system("cls");p-〉next=NULL;Qrear-〉next=p;//插入至队列尾Qrear=p;//修改队尾指针printf("进队列成功!");//*1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1*//break;case3://*******出队列******if(Qfront==Qrear)//判断队列是否已空printf("error!队列为空!");p=Qfront-〉next;//p指向队列中第一个元素Qfront-〉next=p-〉next;//修改队首指针if(Qrear==p)//若队列已空,把队尾指针指向头结点Qrear=Qfront;printf("出队列成功!");//*1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1*//break;case4:flag=0;break;default:printf("error!\n");}printf("\n");}}题目:假设以顺序存储结构存放字符串,实现下列基本操作CreatString(&S)。输入并建立顺序存储的字符串S;SubString(&T,S,pos,len)。求S串从pos开始长度为len的子串放入T串;Strlnsert(&S,i,T)。在串S的第i个字符前插入T;StrDelele(&T,S,i,len)。从串S中删除第i个字符起长度为len的子串送到T中。#include<stdio.h>voidmain(){inti;intT[3];//定义串T长度为3intSl[14];//定义串SI长度为14intS2[8];//定义串S2长度为8intS[n]={'s','h','u','j','u','j','i','e','g','o','u'};//设字符串S为shujujiegou长度为11printf("字符串S为shujujiegou\n");for(i=0;i〈3;i++)//求该字符串从第六个元素开始长度为3的子串并赋给字符串TT[i]=S[i+5];printf(〃该字符串从第六个元素开始长度为3的子串T为:〃);for(i=0;i〈3;i++)printf("%c",T[i]);printf("\n");for(i=0;i<3;i++)//在串S的第1个字符前插入串T形成串S1S1[i]=T[i];for(i=0;i〈11;i++)S1[i+3]=S[i];printf("在串S的第1个字符前插入串T后形成的新串S为:");for(i=0;i〈14;i++)printf("%c",S1[i]);printf("\n");for(i=0;i〈8;i++)//从串S中删除第1个字符起长度为3的子串送到T中S2[i]=S[i+3];for(i=0;i〈3;i++)T[i]=S[i];printf(〃从串S中删除第1个字符起长度为3的子串后串T为:〃);for(i=0;i〈3;i++)printf("%c",T[i]);printf("\n");printf(〃从串S中删除第1个字符起长度为3的子串后串S为:〃);for(i=3;i〈11;i++)printf("%c",S[i]);printf("\n");getch();}——顺序栈程序#include〈stdio.h>#include〈stdlib.h>#defineMAX5//定义堆栈最大容量voidmain(){charelem[MAX];//栈区inttop=-1;//初始化栈顶指针为-1intflag=1;charch;inti,j;// 程序解说 printf("本程序实现顺序结构的堆栈的操作.\n");printf("可以进行入栈,出栈,取栈顶元素等操作.\n");// while(flag){printf(〃请选择:\n〃);TOC\o"1-5"\h\zprintf(" 1•显示栈中所有元素 \n");printf(" 2.入栈 \n");printf(" 3.出栈 \n");printf(" 4.取栈顶元素 \n");printf(" 5.退出程序 \n");scanf("%d",&j);system("cls");switch(j){case1://*********显示所有元素**********if(top==-1)printf("堆栈为空栈!\n");else{printf("堆栈所有元素:\n");for(i=0;i<=top;i++){printf(" %c",elem[i]);printf("\n");}}// *1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1*//break;case2:if(top==MAX-l)//判断是否栈满printf("error!栈已满!");//**********入栈************else{printf("请输入要入栈的元素:");scanf("%c",&ch);//输入要入栈的元素system("cls");top++; //栈顶指针top加一elem[top]=ch; //入栈printf("入栈成功!");}//*1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1**1*//break;case3://*******出栈********if(top==-1)printf("error!栈已空!");else{top--; //栈顶指针减一printf("出栈成功!");}//*i**i**i**i**i**i**i**i**i**i**i**i**i**i**i**i**i**i**i*//break;case4://*********取得栈顶元素*********if(top==-1)printf("error!栈为空栈!");else{printf("栈顶元素为:%c",elem[top]);//显示栈顶元素}//*X**X**X**X**X**X**X**X**i**i**i**i**i**i**i**i**i**i**i**i**i**i**i**i**i**i**i**i**i**i*//break;case5:flag=0;default:printf("error!\n");}printf("\n");}}C语言颜色程序voidmain(){system("color7E");printf("Q");}C语言字体颜色背景九.题目:有若干学生(设有3个学生)的成绩(设每个学生有4门课程),编程找出其中有不及格课程的学生,输出他们的全部课程的成绩#include<stdio.h>#defineN3structstudent{charname[10];intscore[4];}stu[N];voidmain(){inti,j,fail,read;/*fail:用来记录有不及格课程的学生的序号,read:将所有学生的所有分数一一赋给read*/for(i=0;i<N;i++){printf("请输入第%d个学生的姓名拼音:\n",i+l);scanf("%s",&stu[i].name);system("cls");/*清屏*/printf("请输入第%d个学生的语文成绩:\n",i+l);scanf("%d",&stu[i].score[0]);system("cls");printf("请输入第%d个学生的数学成绩:\n",i+l);scanf("%d",&stu[i].score[1]);system("cls");printf("请输入第%d个学生的英语成绩:\n",i+l);scanf("%d",&stu[i].score[2]);system("cls");printf("请输入第%d个学生的物理成绩:\n",i+l);scanf("%d",&stu[i].score[3]);system("cls");}for(i=0;i<N;i++){for(j=0;j<4;j++){read=stu[i].score[j];if(read<60){fail二i;/*记录有不及格课程的学生的序号并赋给fail*/printf("%s:语文:%d 数学:%d 英语:%d 物理:%d\n",stu[fail].name,stu[fail].score[0],stu[fail].score[l],stu[fail].score[2],stu[fail].score[3]);break;/*对于不止一科不及格的同学,上述程序会重复显示他的所有信息,所以只要有一门小于60的课程出现时,就打破该循环,直接跳到下一循环*/}}}getch();/*为看到结果,待关闭*/}十.约瑟夫出圈程序#include<stdio.h>#include<stdlib.h〉//包含system和malloc函数#defineLENsizeof(structLnode)typedefstructLnode{intkey;intnum;//每个结点的序号structLnode*next;}Lnode[30];voidmain(){inta[30],m,j=0;//a[30]用于最后依次输出出圈的人的序号,m为每次出圈的密码,j为计数器structLnode*p,*q,*head,*c;//c用于删除结点inti,length,limit=l;//limit用于判断输入的人数是否超出30,length为输入人数,i用于计数循环printf("请输入人数(〈=30):");while(limit==1)//当输入人数超出30时,不执行下面的程序{scanf("%d",&length);system("cls");if(length〈=30){printf("请输入初始密码:");scanf("%d",&m);system("cls");limit=0;//以下开始建立链表for(i=0;i〈length;i++){p=(structLnode*)malloc(LEN);//由于p为指向结构体类型数据的指针,而malloc带回的是不指向任何类型数据的指针(void*),所以加了structLnode*将malloc返回的指针强制转换为指向结构体类型数据的指针,malloc用于开辟一个长度为LEN的连续内存区,每次循环开辟一个新结点使p指向它if(i==0)head=q=p;elseq->next=p;q=p; //p,q后移一位printf("请输入key%d(〉0):",i+l);scanf("%d",&p->key);p-〉num=i+1;}q-〉next=head;//表尾连到表头,形成循环单链表p=head;//把链表的头指针赋给p//链表建立完毕while((length-j)!=2)//当剩下的结点数大于2时{for(i=0;i〈m-2;i++)p=p-〉next;//p后移m-1个位置c=p-〉next;p-〉next=c-〉next;//删除结点a[j]=c-〉num;//把删除的结点的序号记录在数组a内j++;m=c-〉key;p=p-〉next;//p后移一位if(m%2==0)//出圈密码为偶数时p=p->next;else;a[j]=p->num;p=p->next;a[j+1]=p->num;for(j=0;j<length;j++)printf("%d\n",a[j]);}elseprintf("输入人数超过最大允许人数,请重新输入:");}}十一.运动会分数统计程序#include<stdio.h>#definen10//学校总数#definem2//男子项目个数#definew2//女子项目个数//1为男子跳高项目编号,2为男子跳远项目编号,3为女子跳高项目编号,4为女子跳远编号,//学校编号取1~10,跳高项目取前5名的成绩,跳远项目取前3名的成绩voidmain(){inta,i,j,k,t,b=l,h[10];//h[10]排序输出时用于作辅助空间intmatg[10];//依次存储男子跳高项目依次存储的第1~5名的成绩和1~5名的学校编号intmaty[6];//依次存储男子跳远项目的第1~3名的成绩和1~3名的学校编号intwomtg[10];//依次存储女子跳高项目的第1~5名的成绩和广5名的学校编号intwomty[6];//依次存储女子跳远项目的第1~3名的成绩和1~3名的学校编号staticintalsco[10]={0,0,0,0,0,0,0,0,0,0};//数据初始化,依次存十个学校的总分staticintalwomsco[10]={0,0,0,0,0,0,0,0,0,0};//数据初始化,依次存十个学校的女子团体总分staticintalmasco[10]={0,0,0,0,0,0,0,0,0,0};//数据初始化,依次存十个学校的男子团体总分staticintsmatg[lO]={O,O,O,O,O,O,O,O,O,O};//数据初始化,依次存十个学校的男子跳高项目总分staticintsmaty[lO]={O,O,O,O,O,O,O,O,O,O};//数据初始化,依次存十个学校的男子跳远项目总分staticintswomtg[lO]={O,O,O,O,O,O,O,O,O,O};//数据初始化,依次存十个学校的女子跳高项目总分staticintswomty[lO]={O,O,O,O,O,O,O,O,O,O};//数据初始化,依次存十个学校的女子跳远项目总分printf(〃 欢迎进入运动会分数统计系统, \n");do//实现循环{printf("请选择下一步:\n");printf(" 1•输入各个项目的前三名或前五名的成绩\n 2•查询各学校总分\n 3.查询学校某个项目的情况\n 4.查询取得前三或前五名的学校\n5•排序输出\n〃);scanf("%d",&a);switch(a){// 输入各个项目的前三名或前五名的成绩 //case1: for(j=0;j<4;j++){printf("请输入项目的编号:\n");getchar();//待输入(隔断下面的清屏)scanf("%d",&a);system("cls");//清屏if(a==1)//男子跳高项目for(i=0;i<5;i++){printf(〃请输入获得男子跳高项目第%d名所在的学校编号:\n〃,i+1);getchar();scanf("%d",&matg[i+5]);system("cls");printf("请输入男子跳高项目第%d名的成绩:\n",i+1);getchar();scanf("%d",&matg[i]);system("cls");}elseif(a==2)//男子跳远项目for(i=0;i<3;i++){printf(〃请输入获得男子跳远项目第%d名所在的学校编号:\n〃,i+1);getchar();scanf("%d",&maty[i+3]);system("cls");printf("请输入男子跳远项目第%d名的成绩:\n",i+1);getchar();scanf("%d",&maty[i]);system("cls");}elseif(a==3)//女子跳高项目for(i=0;i<5;i++){printf(〃请输入获得女子跳高项目第%d名所在的学校编号:\n〃,i+l);getchar();scanf("%d",&womtg[i+5]);system("cls");printf("请输入女子跳高项目第%d名的成绩:\n",i+l);getchar();scanf("%d",&womtg[i]);system("cls");}elseif(a==4)//女子跳远项目for(i=0;i<3;i++){printf(〃请输入获得女子跳远项目第%d名所在的学校编号:\n〃,i+l);getchar();scanf("%d",&womty[i+3]);system("cls");printf("请输入女子跳远项目第%d名的成绩:\n",i+l);getchar();scanf("%d",&womty[i]);system("cls");}}// 统计学校总分和男子团体总分和女子团体总分和各学校各项目总分 //for(i=0;i<10;i++)if((i+1)==matg[5])//统计男子跳高项目第一名{k=i;alsco[k]+=7;//该学校总分加7almasco[k]+=7;//该学校男子团体总分加7smatg[k]+=7;//该学校男子跳高项目总分加7}for(i=0;i<10;i++)if((i+1)==matg[6])//统计男子跳高项目第二名{k=i;alsco[k]+=5;//该学校总分加5almasco[k]+=5;smatg[k]+=5;}for(i=0;i<10;i++)if((i+l)==matg[7])//统计男子跳高项目第三名{k=i;alsco[k]+=3;almasco[k]+=3;smatg[k]+=3;}for(i=0;i<10;i++)if((i+1)==matg[8])//统计男子跳高项目第四名{k=i;alsco[k]+=2;almasco[k]+=2;smatg[k]+=2;}for(i=0;i<10;i++)if((i+1)==matg[9])//统计男子跳高项目第五名{k=i;alsco[k]+=1;almasco[k]+=1;smatg[k]+=1;}for(i=0;i<10;i++)if((i+1)==maty[3])//统计男子跳远项目第一名{k=i;alsco[k]+=5;almasco[k]+=5;smaty[k]+=5;}for(i=0;i<10;i++)if((i+1)==maty[4])//统计男子跳远项目第二名{k=i;alsco[k]+=3;almasco[k]+=3;smaty[k]+=3;}for(i=0;i<10;i++)if((i+1)==maty[5])//统计男子跳远项目第三名{k=i;alsco[k]+=2;almasco[k]+=2;smaty[k]+=2;}for(i=0;i<10;i++)if((i+l)==womtg[5])//统计女子跳高项目第一名{k=i;alsco[k]+=7;alwomsco[k]+=7;swomtg[k]+=7;}for(i=0;i<10;i++)if((i+1)==womtg[6])//统计女子跳高项目第二名{k=i;alsco[k]+=5;alwomsco[k]+=5;swomtg[k]+=5;}for(i=0;i<10;i++)if((i+1)==womtg[7])//统计女子跳高项目第三名{k=i;alsco[k]+=3;alwomsco[k]+=3;swomtg[k]+=3;}for(i=0;i<10;i++)if((i+1)==womtg[8])//统计女子跳高项目第四名{k=i;alsco[k]+=2;alwomsco[k]+=2;swomtg[k]+=2;}for(i=0;i<10;i++)if((i+1)==womtg[9])//统计女子跳高项目第五名{k=i;alsco[k]+=1;alwomsco[k]+=1;swomtg[k]+=1;}for(i=0;i<10;i++)if((i+l)==womty[3])//统计女子跳远项目第一名{k=i;alsco[k]+=5;alwomsco[k]+=5;swomty[k]+=5;}for(i=0;i<10;i++)if((i+1)==womty[4])//统计女子跳远项目第二名{k=i;alsco[k]+=3;alwomsco[k]+=3;swomty[k]+=3;}for(i=0;i<10;i++)if((i+1)==womty[5])//统计女子跳远项目第三名{k=i;alsco[k]+=2;alwomsco[k]+=2;swomty[k]+=2;}break;case2:// 查询各学校总分 //printf("请输入学校编号:\n");getchar();scanf("%d",&k);system("cls");for(i=0;i<10;i++)if(i==(k-1)){k=i;printf("该学校已获总分%%d\n\n",alsco[k]);}break;case3: // 按学校编号查询学校某个项目的情况 //printf("请输入学校编号:\n");getchar();scanf("%d",&k);printf("请输入项目编号:\n");getchar();scanf("%d",&j);system("cls");if(j==1)printf("该学校男子跳高项目已获分数为:%d\n\n",smatg[kT]);elseif(j==2)printf("该学校男子跳远项目已获分数为:%d\n\n",smaty[kT]);elseif(j==3)printf("该学校女子跳高项目已获分数为:%d\n\n",swomtg[kT]);elseif(j==4)printf("该学校女子跳远项目已获分数为:%d\n\n",swomty[kT]);break;case4:// 按项目查询取得前三或前五名的学校 //printf("请输入项目编号:\n");getchar();scanf("%d",&k);system("cls");if(k==1)printf("男子跳高项目获得前五名的学校依次为:%d,%d,%d,%d,%d\n\n",matg[5],matg[6],matg[7],matg[8],matg[9]);elseif(k==2)printf("男子跳远项目获得前三名的学校依次为:%d,%d,%d\n\n",maty[3],maty[4],maty[5]);elseif(k==3)printf("女子跳高项目获得前五名的学校依次为:%d,%d,%d,%d,%d\n\n",womtg[5],womtg[6],womtg[7],womtg[8],womtg[9]);elseif(k==4)printf("男子跳远项目获得前三名的学校依次为:%d,%d,%d\n\n",womty[3],womty[4],womty[5]);break;case5:// 按学校编号、学校总分、男女团体总分排序输出 //printf("请选择:1.按学校总分排序输出\n 2.按男子团体总分排序输出\n3.按女子团体总分排序输出\n");getchar();scanf("%d",&k);system("cls");if(k==1){for(i=0;i<10;i++)h[i]=alsco[i];//为了不打破与学校总分对应的学校编号,借用辅助数组实现排序for(i=0;i〈9;i++)//冒泡排序for(j=0;j<9-i;j++)if(h[j]〈h[j+1]){t=h[j];h[j]=h[j+1];h[j+1]=t;}for(i=0;i<10;i++){for(j=0;j〈10;j++)//寻找与总分对应的学校编号if(alsco[j]==h[i])t=j+1;if(h[i]!=0)printf("学校编号:%d 学校总分:%d\n",t,h[i]);}printf("(若有未显示的学校,其学校总分为O)\n\n");}elseif(k==2){for(i=0;i〈10;i++)h[i]=almasco[i];for(i=0;i〈9;i++)for(j=0;j〈9-i;j++)if(h[j]〈h[j+1]){t=h[j];h[j]=h[j+1];h[j+1]=t;}for(i=0;i〈10;i++){for(j=0;j〈10;j++)if(almasco[j]==h[i])t=j+1;if(h[i]!=0)printf("学校编号:%d 男子团体总分:%d\n",t,h[i]);}printf("(若有未显示的学校,其男子团体总分为O)\n\n");}elseif(k==3){for(i=0;i〈10;i++)h[i]=alwomsco[i];for(i=0;i〈9;i++)for(j=0;j〈9-i;j++)if(h[j]〈h[j+1]){t=h[j];h[j]=h[j+1];h[j+1]=t;}for(i=0;i<10;i++){for(j=0;j<10;j++)if(alwomsco[j]==h[i])t=j+1;if(h[i]!=0)printf("学校编号:%d 女子团体总分:%d\n",t,h[i]);}printf("(若有未显示的学校,其女子团体总分为O)\n\n");}break;}}while(b);}附注:C++二叉树程序分别输入节点数;先序遍历和中序遍历(以空格相隔回车结束)/////////////////输入二叉树两种遍历结果(中序加前序),恢复该二叉树#include<iostream.h>classnode ////////////////定义节点类///////////////////////{private:inta;node*l;node*r;public:node(){l=r=NULL;}node(intx,node*le=NULL,node*ri=NULL){a=x;l=le;r=ri;}int&val(){returna;}node*left(){returnl;}node*right(){returnr;}voidsetright(node*x){r=x;}voidsetleft(node*p){l=p;}voidserval(intx){a=x;}};node*recovery(int*p,int*h,intn)////////////恢复二叉树的函数,用数组p[]记录前序遍历的结果,h[]记录中序遍历的结果,n记录节点数{//////////////////////////////////////////////返回恢复后树根节点的指针node*root=newnode(p[0]);//////////////用前序遍历法得到结果的第一个数为最上层根if(n==l)returnroot;////////////若树只有一个节点,直接返回该指针inti=0;while(i〈n)/////找到中序遍历中的根节点,用i记录其位置,贝V位于i前的数据为左子树的中序遍历,位于其后的为右子树的中序遍历{if(p[0]==h[i])break;i++;}if(i!=0)root-〉setleft(recovery(p+l,h,i));///////////通过递归设置根的左子树if(i!=n-1)root-〉setright(recovery(p+i+l,h+i+l,n-i-l));/////设置右子树returnroot;}voidoutputtree(node*root,inttotalSpaces)/////////输出树{if(root==NULL)return;outputtree(root-〉right(),totalSpaces+3);/////////通过递归输出右子树for(inti=0;i〈totalSpaces;i++)///////////输出缩进量cout〈〈"";cout〈〈root-〉val()〈〈endl; /////////输出根的值outputtree(root-〉left(),totalSpaces+3);////////输出左子树}node*recovery2(int*p,int*h,intn)///////////p[]为后续遍历的结果,h[]为中序遍历的结果,n为结点数{node*root=newnode(p[n-1]);if(n==1)returnroot;inti=0;while(i〈n){if(p[n-1]==h[i])break;i++;}if(i!=0)root-〉setleft(recovery2(p,h,i));///////////通过递归设置根的左子树if(i!=n-1)root-〉setright(recovery2(p+i,h+i+l,n-iT));/////设置右子树returnroot;voidmain(){intm;cout〈〈"Inputsizeofthetree:";//////输入结点数cin>>m;int*pre=newint[m];int*mid=newint[m];cout〈〈"Inputpreoderresultofthetree:";/////////输入前序遍历的结果for(inti=0;i〈m;i++){cin>>pre[i];}cout〈〈"Inputmidoderresultofthetree:";////////输入中序遍历的结果for(intj=0;j〈m;j++){cin>>mid[j];}outputtree(recovery(pre,mid,m),0);cout〈〈endl〈〈endl;//////////////////////////////////////////////////////////////////////////////cout〈〈"Inputsizeofthetree:";cin>>m;pre=newint[m];mid=newint[m];cout〈〈"Inputbackoderresultofthetree:";/////////输入后序遍历的结果for(i=0;i〈m;i++){cin>>pre[i];}cout〈〈"Inputmidoderresultofthetree:";////////输入中序遍历的结果for(j=0;j〈m;j++){cin>>mid[j];}outputtree(recovery2(pre,mid,m),0);}附注2:C语言学生信息管理系统部分源代码、含登录密码程序#defineN4#include<stdio.h>#include<string.h>structstudentlongnumber;charname[20];intenglish;intmaths;}stu[N];voidmain(){voidfanhui1(void);voidinputa(structstudentstu[N]);voidcha(void);voidoutputa(structstudentstu[N]);voidxchaxun(structstudentstu[N]);inti,t,k=0;intp=1;charb[7];printf("请输入6位密码(限三次):");while(k<3){i=0;while((b[i]=getch())!='\r'){printf("*");i++;}b[i]='\0';if(strcmp(b,"aabbcc")==0){system("cls");while(p>0){printf("主菜单***\n请选择:\n 1.首次输入学生信息\n 2.查询学生信息\n3.删除学生信息\n 4.添加学生信息\n 5.修改学生信息\n6.成绩排序\n 7.退出\n");scanf("%d",&t);system("cls");switch(t){case1:inputa(stu);break;case2:cha();break;case3:printf("");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论