重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#includestdio.h
创新互联建站长期为1000多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为沈北新企业提供专业的网站设计、成都网站制作,沈北新网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。
#define MAXLINE 1000
int getline(char s[],int lim)
{
int c,i;
for(i=0;ilim-1 (c=getchar())!=EOF c!='\n';++i);
s[i] = c;
if(c == '\n'){
s[i] = c;
++i;
}
s[i] = '\0';
return i;
}
void copy(char to[],char from[])
{
int i;
i = 0;
while ((to[i] = from[i]) != '\0')
++i;
}
int main()
{
int len;
int max;
char line[MAXLINE];
char longest[MAXLINE];
max = 0;
while((len = getline(line,MAXLINE)) 0);
if(len max){
max = len;
copy(longest,line);
}
if(max 0)
printf("%s",longest);
return 0;
}
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "conio.h"
struct subject{ //科目信息结构体
float Chinese; //语文
float Math; //数学
float English; //英语
};
struct student{
int no; //学号
char name[20]; //姓名
char sex; //性别
char address[20]; //地址
char telephone[20];//电话
subject score; //3门科目的成绩
float avg; //3门平均成绩
}stud[50]; //结构体数组
int count=0; //计数变量,记录学生人数
void add(){ //增加学生信息函数
student a; //临时结构体变量a
char x,j; //Yes or No输入字符变量
//循环输入学生信息
for(int i=0;i50;i++){
system("cls"); //清屏函数
int t=0;
printf("请输入学生的学号:");
scanf("%d",a.no);
//寻找学号是否已存在
for(int k=0;kcount;k++){
if(stud[k].no==a.no){
t=1;
}
}
//存在与否,分别输出
if(t==1)
printf("输入的学号已存在,请重新输入\n");
else{
printf("请输入学生的姓名:");
scanf("%s",a.name);
printf("请输入学生的性别(m代表男,f代表女):");
scanf("%c",a.sex);
scanf("%c",a.sex);
printf("请输入学生的地址:");
scanf("%s",a.address);
printf("请输入学生的电话:");
scanf("%s",a.telephone);
printf("请输入学生的语文成绩:");
scanf("%f",a.score.Chinese);
printf("请输入学生的数学成绩:");
scanf("%f",a.score.Math);
printf("请输入学生的英语成绩:");
scanf("%f",a.score.English);
a.avg=(a.score.Chinese+a.score.English+a.score.Math)/3;
//判定是否要增加该记录
printf("确定要增加该记录吗?(y/n)");
scanf("%c",x);
scanf("%c",x);
if(x=='y'){
stud[count]=a;
count++;
}
}
//判定是否要继续增加记录
printf("要继续增加记录吗?(y/n)");
scanf("%c",j);
scanf("%c",j);
if(j=='n')
break;
}
printf("\n按任意键返回主菜单:");
getch(); //从键盘接收任意一个字符就返回
}
void show(){ //显示所有学生信息函数
system("cls");
//循环显示
for(int i=0;icount;i++){
printf("学号:%-8d姓名:%-16s性别:%c\n",stud[i].no,stud[i].name,stud[i].sex);
printf("地址:%s\n电话:%s\n",stud[i].address,stud[i].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[i].score.Chinese,
stud[i].score.Math,stud[i].score.English,stud[i].avg);
printf("---------------------------------------------------------------------\n");
}
printf("\n按任意键返回主菜单:");
getch();
}
void sort(){ //根据学生的学号由小到大进行排序
system("cls");
//冒泡排序法
for(int i=0;icount-1;i++){
for(int j=0;jcount-1-i;j++){
if(stud[j].nostud[j+1].no){
student t=stud[j];
stud[j]=stud[j+1];
stud[j+1]=t;
}
}
}
printf("排序已完成,按任意键返回主菜单:");
getch();
}
void query1(){ //根据学号查询并显示单个学生信息
int x; //输入学生学号整型变量
char k; //Yes or No输入字符变量
while(true){
system("cls");
int t=-1; //要查询的学生学号所对应的数组下标,-1代表在数组中没对应下标
printf("请输入要查询的学生学号:");
scanf("%d",x);
//循环寻找结构体数组中符合变量x的数据,并把该数据所在的下标值赋给变量t
for(int i=0;icount;i++){
if(stud[i].no==x)
t=i;
}
//判定信息是否存在,分别输出
if(t==-1)
printf("您所查询的学生信息不存在,");
else{
printf("学号:%-8d姓名:%-16s性别:%c\n",stud[t].no,stud[t].name,stud[t].sex);
printf("地址:%s\n电话:%s\n",stud[t].address,stud[t].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[t].score.Chinese,
stud[t].score.Math,stud[t].score.English,stud[t].avg);
printf("---------------------------------------------------------------------\n");
}
//判定是否要继续查询
printf("是否继续查询?(y/n)");
scanf("%c",k);
scanf("%c",k);
if(k=='n')
break;
}
printf("\n按任意键返回主菜单:");
getch();
}
void query2(){ //根据姓名查询并显示单个学生信息
char x[20]; //输入学生姓名字符串变量
char k; //Yes or No输入字符变量
while(true){
system("cls");
student a[50]; //要查询的学生姓名所对应的数组下标,-1代表在数组中没对应下标
int t=0;
printf("请输入要查询的学生姓名:");
scanf("%s",x);
//循环寻找结构体数组中符合变量x的数据,并把该数据所在的下标值赋给变量t
for(int i=0;icount;i++){
if(strcmp(stud[i].name,x)==0){
a[t]=stud[i];
t++;
}
}
//判定信息是否存在,分别输出
if(t==0)
printf("您所查询的学生信息不存在,");
else{
for(int i=0;it;i++){
printf("学号:%-8d姓名:%-16s性别:%c\n",a[i].no,a[i].name,a[i].sex);
printf("地址:%s\n电话:%s\n",a[i].address,a[i].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",a[i].score.Chinese,
a[i].score.Math,a[i].score.English,a[i].avg);
printf("---------------------------------------------------------------------\n");
}
}
//判定是否要继续查询
printf("是否继续查询?(y/n)");
scanf("%c",k);
scanf("%c",k);
if(k=='n')
break;
}
printf("\n按任意键返回主菜单:");
getch();
}
void good(){ //显示平均成绩和单科成绩最高的学生资料
system("cls");
//寻找平均成绩中的最高值
float max1=stud[0].avg;
for(int i=1;icount;i++)
if(stud[i].avgmax1)
max1=stud[i].avg;
//输出平均成绩中最高值的学生信息
for(int i=0;icount;i++){
if(max1==stud[i].avg){
printf("平均成绩最高的学生信息:\n\n");
printf("学号:%-8d姓名:%-16s性别:%c\n",stud[i].no,stud[i].name,stud[i].sex);
printf("地址:%s\n电话:%s\n",stud[i].address,stud[i].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[i].score.Chinese,
stud[i].score.Math,stud[i].score.English,stud[i].avg);
printf("---------------------------------------------------------------------\n");
}
}
//寻找语文成绩中的最高值
float max2=stud[0].score.Chinese;
for(int i=1;icount;i++)
if(stud[i].score.Chinesemax2)
max2=stud[i].score.Chinese;
//输出语文成绩中最高值的学生信息
for(int i=0;icount;i++){
if(max2==stud[i].score.Chinese){
printf("语文成绩最高的学生信息:\n\n");
printf("学号:%-8d姓名:%-16s性别:%c\n",stud[i].no,stud[i].name,stud[i].sex);
printf("地址:%s\n电话:%s\n",stud[i].address,stud[i].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[i].score.Chinese,
stud[i].score.Math,stud[i].score.English,stud[i].avg);
printf("---------------------------------------------------------------------\n");
}
}
//寻找数学成绩中的最高值
float max3=stud[0].score.Math;
for(int i=1;icount;i++)
if(stud[i].score.Mathmax3)
max3=stud[i].score.Math;
//输出数学成绩中最高值的学生信息
for(int i=0;icount;i++){
if(max3==stud[i].score.Math){
printf("数学成绩最高的学生信息:\n\n");
printf("学号:%-8d姓名:%-16s性别:%c\n",stud[i].no,stud[i].name,stud[i].sex);
printf("地址:%s\n电话:%s\n",stud[i].address,stud[i].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[i].score.Chinese,
stud[i].score.Math,stud[i].score.English,stud[i].avg);
printf("---------------------------------------------------------------------\n");
}
}
//寻找英语成绩中的最高值
float max4=stud[0].score.English;
for(int i=1;icount;i++)
if(stud[i].score.Englishmax4)
max4=stud[i].score.English;
//输出英语成绩中最高值的学生信息
for(int i=0;icount;i++){
if(max4==stud[i].score.English){
printf("英语成绩最高的学生信息:\n\n");
printf("学号:%-8d姓名:%-16s性别:%c\n",stud[i].no,stud[i].name,stud[i].sex);
printf("地址:%s\n电话:%s\n",stud[i].address,stud[i].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[i].score.Chinese,
stud[i].score.Math,stud[i].score.English,stud[i].avg);
printf("---------------------------------------------------------------------\n");
}
}
printf("\n按任意键返回主菜单:");
getch();
}
void update(){
int x; //输入学生学号整型变量
student a; //临时结构体变量a
char k,j; //Yes or No输入字符变量
while(true){
system("cls");
int t=-1; //要查询的学生学号所对应的数组下标,-1代表在数组中没对应下标
printf("请输入要修改的学生学号:");
scanf("%d",x);
//循环寻找结构体数组中符合变量x的数据,并把该数据所在的下标值赋给变量t
for(int i=0;icount;i++){
if(stud[i].no==x)
t=i;
}
//判定信息是否存在,分别输出
if(t==-1)
printf("您所要修改的学生信息不存在,");
else{
//输出要修改学生的原信息
printf("学号:%-8d姓名:%-16s性别:%c\n",stud[t].no,stud[t].name,stud[t].sex);
printf("地址:%s\n电话:%s\n",stud[t].address,stud[t].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[t].score.Chinese,
stud[t].score.Math,stud[t].score.English,stud[t].avg);
printf("---------------------------------------------------------------------\n");
//判定是否要修改
printf("确定要修改该记录吗?(y/n)");
scanf("%c",k);
scanf("%c",k);
//确定要修改后,输入新信息
if(k=='y'){
printf("请输入新的学生的学号:");
scanf("%d",a.no);
printf("请输入新的学生的姓名:");
scanf("%s",a.name);
printf("请输入新的学生的性别:");
scanf("%c",a.sex);
scanf("%c",a.sex);
printf("请输入新的学生的地址:");
scanf("%s",a.address);
printf("请输入新的学生的电话:");
scanf("%s",a.telephone);
printf("请输入新的学生的语文成绩:");
scanf("%f",a.score.Chinese);
printf("请输入新的学生的数学成绩:");
scanf("%f",a.score.Math);
printf("请输入新的学生的英语成绩:");
scanf("%f",a.score.English);
a.avg=(a.score.Chinese+a.score.English+a.score.Math)/3;
stud[t]=a;
printf("修改成功,");
}
}
//判定是否继续
printf("是否继续修改?(y/n)");
scanf("%c",j);
scanf("%c",j);
if(j=='n')
break;
}
printf("\n按任意键返回主菜单:");
getch();
}
void del(){
int x; //输入学生学号整型变量
char k,j; //Yes or No输入字符变量
while(true){
system("cls");
int t=-1; //要查询的学生学号所对应的数组下标,-1代表在数组中没对应下标
printf("请输入要删除的学生学号:");
scanf("%d",x);
//循环寻找结构体数组中符合变量x的数据,并把该数据所在的下标值赋给变量t
for(int i=0;icount;i++){
if(stud[i].no==x)
t=i;
}
//判定信息是否存在,分别输出
if(t==-1)
printf("您所要删除的学生信息不存在,");
else{
//输出要删除学生的原信息
printf("学号:%-8d姓名:%-16s性别:%c\n",stud[t].no,stud[t].name,stud[t].sex);
printf("地址:%s\n电话:%s\n",stud[t].address,stud[t].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[t].score.Chinese,
stud[t].score.Math,stud[t].score.English,stud[t].avg);
printf("---------------------------------------------------------------------\n");
//判定是否删除
printf("确认要删除吗?(y/n)");
scanf("%c",k);
scanf("%c",k);
//确定要删除后,删除该信息
if(k=='y'){
for(int i=t;icount-1;i++)
stud[i]=stud[i+1];
printf("删除成功,");
count--;
}
}
//判定是否继续
printf("是否继续删除?(y/n)");
scanf("%c",j);
scanf("%c",j);
if(j=='n')
break;
}
printf("\n按任意键返回主菜单:");
getch();
}
void grt(){
system("cls");
printf("\t\t\t顾韧霆制作\n\t\t\t2008年12月13日\n");
printf("\n按任意键返回主菜单:");
getch();
}
void grt1()
{
int choice=0; //保存用户输入的选择项
do{
system("cls"); //清屏函数
printf("\t----------------学生信息管理系统----------------\n\n");
printf("\t\t在菜单中选择以下的操作类型\n");
printf("\t\t1.增加记录\n\t\t2.显示所有学生信息\n\t\t3.信息排序\n\t\t4.根据学号查询单个学生信息\n\t\t5.根据姓名查询单个学生信息\n");
printf("\t\t6.平均成绩和单科成绩最高的学生资料\n\t\t7.修改记录\n\t\t8.删除记录\n\t\t9.退出程序\n\t\t0.制作人\n");
printf("\t\t请输入你的选择:");
scanf("%d",choice);
switch(choice)
{
case 1:
add();
break;
case 2:
show();
break;
case 3:
sort();
break;
case 4:
query1();
break;
case 5:
query2();
break;
case 6:
good();
break;
case 7:
update();
break;
case 8:
del();
break;
case 0:
grt();
break;
}
}while(choice!=9);
}
void main()
{
char x[10];
printf("\t----------------学生信息管理系统----------------\n\n");
for(int i=3;i0;i--){
printf("\t\t\t请输入密码:");
scanf("%s",x);
if(strcmp(x,"123456")==0){
grt1();
break;
}
else
printf("\t\t\t输入错误,你还有%d次机会\n",i-1);
}
}
#include stdio.h
#includestdlib.h
main ()
{
int a,b,c;
scanf ("%d,%d,%d",a,b,c);
printf("%4d%4d%4d\n",a,b,c);
if (b1||b12||c1||c31)
printf("error input\n");
else
{
if (b==1||b==3||b==5||b==7||b==8||b==10|| b==12)
{
if(b==12c==31) {c=1;b=1;a++;}
else if(b!=12c==31) {b++;c=1;}
else if(c31) c++;
else printf("error inpu\n");
}
else if ((b==1||b==3||b==5||b==7||b==8||b==10))
{
if(c==30) {b++;c=1;}
else if(c31) c++;
else printf("error input\n");
}
else if (b==2)
{if (((int)a%4==0(int)a%100!=0)||(int)a%400==0) //判断的是闰年
{
if(c=28) c++;
else if(c==29)
{c=1;b++;}
else {printf("error input\n");exit;}
}
else {
if(c==28) {b++;c=1;}
else if(c28) c++;
else {printf("error input\n");exit;}
}
}
}
printf("%4d%4d%4d",a,b,c);
system("pause");
}
结构太乱,重新整理了一下
您的程序有比较多的地方有问题,例举几个:
1)case '@': ClearStack(S); break; 清空栈后,想再不初始化就再使用?top指针其实编程空指针了。
2)什么情况下用变量的使用问题,typedef struct{。。。}SqStack,*S;中的*S,InitStack(S);把S当做全局指针?基础要加强。
3)代码修正如下,可以正确运行。
#includestdlib.h
#includestdio.h
#includestring.h
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef char Status;
typedef char SElemType;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
SqStack S;
Status InitStack()
{
S.base = (SElemType * )malloc(STACK_INIT_SIZE * sizeof(SElemType));
if(!S.base)
exit(OVERFLOW);
S.top = S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}//InintStack
Status GetTop(SElemType *e)
{
if(S.top==S.base) return ERROR;
*e=*(S.top-1);
return OK;
}//GrtTop
Status Push(SElemType e)
{
if(S.top-S.base=S.stacksize)
{
S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!S.base)
{
exit(OVERFLOW);
}
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}//Push
SElemType Pop()
{
SElemType ch;
if(S.top==S.base)
{
return ERROR;
}
ch=*(--S.top);
return ch;
}//Pop
Status ClearStack()
{
S.top=0;
return OK;
}//ClearStack
Status DestroyStack()
{
S.top=0;
return OK;
}
void LineEdit()
{
InitStack();
char ch;
ch=getchar();
while(ch!='\n')
{
while(ch!='\n')
{
switch(ch)
{
case '#': printf("\n出栈%c",Pop());
break;
//case '@': ClearStack();
// break;
default : Push(ch);
break;
}
ch=getchar();
}
}
DestroyStack();
}
int main()
{
LineEdit();
return 0;
}