程序不能运行下去了

a65758872 2009-07-01 11:53:48
#include<stdio.h> /*引用库函数*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定义结构体数组*/
{
char num[10]; /*编号*/
char name[20]; /*书名*/
int how; /*订购册数*/
}Jiaocai;
Jiaocai jc[80];/*结构体数组变量*/

int caidan()/*菜单函数*/
{
char c;
do{
system("cls"); /*运行前清屏*/
printf("教材管理系统\n"); /*菜单选择*/
printf("1--教材信息录入\n");
printf("2--教材信息查询\n");
printf("3--补订教材\n");
printf("4--退订教材\n");
printf("5--教材信息更新\n");
printf("6--结束程序\n");
printf("你要做什么(1-6):");
c=getchar(); /*读入选择*/
}while(c<'0'||c>'6');
return(c-'6'); /*返回选择*/
}


int Input(Jiaocai a[],int n) /*输入若干条记录*/
{int i=0;
char sign,x[10]; /*x[10]为清除多余的数据所用*/
while(sign!='n'&&sign!='N') /*判断*/
{ printf("student's num:"); /*交互输入*/
scanf("%s",a[n+i].num);
printf("student's name:");
scanf("%s",a[n+i].name);
printf("student's how:");
scanf("%d",&a[n+i].how);
gets(x); /*清除多余的输入*/
printf("tany more records?(Y/N)");
scanf("%c",&sign); /*输入判断*/
i++;
}
return(n+i);
}





void Display(Jiaocai a[],int n) /*显示所有记录*/
{
int i;
printf("-----------------------------------\n"); /*格式头*/
printf("教材编号 书名 订购\n");
printf("-----------------------------------\n");
for(i=1;i<n+1;i++) /*循环输入*/
{
printf("%-16s%-15s%d\n",a[i-1].num,a[i-1].name,a[i-1].how);
}

system("pause");
}




int Delete_a_record(Jiaocai a[],int n) /*按姓名查找,退订的教材*/
{ char s[20];
int i=0,j;
printf("退订的教材名:"); /*交互式问寻*/
scanf("%s",s);
while(strcmp(a[i].name,s)!=0&&i<n) i++; /*查找判断*/
if(i==n)
{ printf("操作失败,原因:教材名不对\n"); /*返回失败信息*/
return(n);
}
for(j=i;j<n-1;j++) /*删除操作*/
{
strcpy(a[j].num,a[j+1].num);
strcpy(a[j].name,a[j+1].name);
a[j].how=a[j+1].how;
}
printf("退订成功\n"); /*返回成功信息*/
return(n-1);
}



int Insert_a_record(Jiaocai a[],int n) /*插入一条记录*/
{char x[10]; /*清除多余输入所用*/
printf("student's num:"); /*交互输入*/
scanf("%s",a[n].num);
printf("student's name:");
scanf("%s",a[n].name);
printf("student's how:");
scanf("%d",&a[n].how);
gets(x); /*清除多余的输入*/
n++;
printf("添加成功\n"); /*返回成功信息*/
return(n);
}




void WritetoText(Jiaocai a[],int n) /*将所有记录写入文件*/
{
int i=0;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf("保存的文件名\n"); /*输入文件名*/
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打开文件*/
{
printf("无法打开文件\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循环写入数据*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",a[i].num,a[i].name,a[i].how);
i++;
}
fclose(fp); /*关闭文件*/
printf("保存完毕\n"); /*返回成功信息*/
}





void main() /*主函数*/
{
int n=0;
for(;;) /*最大循环*/
{
switch(caidan()) /*选择判断*/
{
case 1:
printf("教材信息录入\n"); /*输入若干条记录*/
n=Input(jc,n);
break;
case 2:
printf("查看所有订购记录\n"); /*显示所有记录*/
Display(jc,n);
break;
case 3:
printf("教材补丁\n");
n=Insert_a_record(jc,n); /*插入一条记录*/
system("pause");
break;
case 4:
printf("退订\n");
n=Delete_a_record(jc,n); /*按姓名查找,删除一条记录*/
system("pause");
break;
case 5:
printf("写入数据到硬盘\n");
WritetoText(jc,n); /*循环写入数据*/
system("pause");
break;
case 6:
printf("结束\n"); /*结束程序*/
system("pause");
exit(6);
}
}
}

运行后可以出
printf("1--教材信息录入\n");
printf("2--教材信息查询\n");
printf("3--补订教材\n");
printf("4--退订教材\n");
printf("5--教材信息更新\n");
printf("6--结束程序\n");
printf("你要做什么(1-6):");
可之后貌似不能读入选项,一直卡在printf("你要做什么(1-6):"); 这一项,选什么都出这个,不能进开关句中,为什么呢?
...全文
18 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lingyin55 2009-07-01
  • 打赏
  • 举报
回复
int caidan()返回类型是int,数字字符'6'转为数字6就是'6'-'0',
其余字符类似。

[Quote=引用 4 楼 a65758872 的回复:]
恩,谢谢,能小讲一下么?许多带有RETURN的语句我都不敢用,总会出错
[/Quote]
a65758872 2009-07-01
  • 打赏
  • 举报
回复
恩,谢谢,能小讲一下么?许多带有RETURN的语句我都不敢用,总会出错
mengjfu 2009-07-01
  • 打赏
  • 举报
回复
return(c-'6'); /*返回选择*/
return(c-'0'); //错了吧
nadoo 2009-07-01
  • 打赏
  • 举报
回复

#include <stdio.h> /*引用库函数*/
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

typedef struct /*定义结构体数组*/
{
char num[10]; /*编号*/
char name[20]; /*书名*/
int how; /*订购册数*/
}Jiaocai;

Jiaocai jc[80];/*结构体数组变量*/

int caidan()/*菜单函数*/
{
char c;

do
{
system("cls"); /*运行前清屏*/
printf("教材管理系统\n"); /*菜单选择*/
printf("1--教材信息录入\n");
printf("2--教材信息查询\n");
printf("3--补订教材\n");
printf("4--退订教材\n");
printf("5--教材信息更新\n");
printf("6--结束程序\n");
printf("你要做什么(1-6):");
c = getchar(); /*读入选择*/
}
while (c < '0' || c > '6');

return(c -'0'); /*返回选择*/
}


int Input(Jiaocai a[], int n) /*输入若干条记录*/
{
int i = 0;
char sign = 0x0, x[10]; /*x[10]为清除多余的数据所用*/

while (sign != 'n' && sign != 'N') /*判断*/
{
printf("student's num:"); /*交互输入*/
scanf("%s", a[n+i].num);
printf("student's name:");
scanf("%s", a[n+i].name);
printf("student's how:");
scanf("%d", &a[n+i].how);
gets(x); /*清除多余的输入*/
printf("tany more records?(Y/N)");
scanf("%c", &sign); /*输入判断*/
i++;
}

return(n + i);
}


void Display(Jiaocai a[], int n) /*显示所有记录*/
{
int i;
printf("-----------------------------------\n"); /*格式头*/
printf("教材编号 书名 订购\n");
printf("-----------------------------------\n");

for (i = 1;i < n + 1;i++) /*循环输入*/
{
printf("%-16s%-15s%d\n", a[i-1].num, a[i-1].name, a[i-1].how);
}

system("pause");
}


int Delete_a_record(Jiaocai a[], int n) /*按姓名查找,退订的教材*/
{
char s[20];
int i = 0, j;
printf("退订的教材名:"); /*交互式问寻*/
scanf("%s", s);

while (strcmp(a[i].name, s) != 0 && i < n) i++; /*查找判断*/

if (i == n)
{
printf("操作失败,原因:教材名不对\n"); /*返回失败信息*/
return(n);
}

for (j = i;j < n - 1;j++) /*删除操作*/
{
strcpy(a[j].num, a[j+1].num);
strcpy(a[j].name, a[j+1].name);
a[j].how = a[j+1].how;
}

printf("退订成功\n"); /*返回成功信息*/

return(n -1);
}


int Insert_a_record(Jiaocai a[], int n) /*插入一条记录*/
{
char x[10]; /*清除多余输入所用*/
printf("student's num:"); /*交互输入*/
scanf("%s", a[n].num);
printf("student's name:");
scanf("%s", a[n].name);
printf("student's how:");
scanf("%d", &a[n].how);
gets(x); /*清除多余的输入*/
n++;
printf("添加成功\n"); /*返回成功信息*/
return(n);
}


void WritetoText(Jiaocai a[], int n) /*将所有记录写入文件*/
{
int i = 0;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf("保存的文件名\n"); /*输入文件名*/
scanf("%s", filename);

if ((fp = fopen(filename, "w")) == NULL) /*打开文件*/
{
printf("无法打开文件\n");
system("pause");
return;
}

fprintf(fp, "%d\n", n); /*循环写入数据*/

while (i < n)
{
fprintf(fp, "%-16s%-15s%d\n", a[i].num, a[i].name, a[i].how);
i++;
}

fclose(fp); /*关闭文件*/

printf("保存完毕\n"); /*返回成功信息*/
}


void main() /*主函数*/
{
int n = 0;

for (;;) /*最大循环*/
{
switch (caidan()) /*选择判断*/
{

case 1:
printf("教材信息录入\n"); /*输入若干条记录*/
n = Input(jc, n);
break;

case 2:
printf("查看所有订购记录\n"); /*显示所有记录*/
Display(jc, n);
break;

case 3:
printf("教材补丁\n");
n = Insert_a_record(jc, n); /*插入一条记录*/
system("pause");
break;

case 4:
printf("退订\n");
n = Delete_a_record(jc, n); /*按姓名查找,删除一条记录*/
system("pause");
break;

case 5:
printf("写入数据到硬盘\n");
WritetoText(jc, n); /*循环写入数据*/
system("pause");
break;

case 6:
printf("结束\n"); /*结束程序*/
system("pause");
exit(6);
}
}
}
pla_007 2009-07-01
  • 打赏
  • 举报
回复
}while(c <'0'||c>'6');
return(c-'6'); /*返回选择*/

改成
return(c - '0');


这样就可以了
微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 微信小程序系统教程共有“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]——核心技术”、“微信小程序系统教程[阶段]客服消息+微信支付+九宝电商系统”。 “微信小程序系统教程[阶段]全套课程”包含: 1.微信小程序系统教程[阶段]_客服消息 2.微信小程序系统教程[阶段]_微信支付 3.微信小程序系统教程[阶段]_九宝电商系统 学习“微信小程序系统教程[阶段]”要求有微信小程序的基础。建议先学习“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]”,后在报名“微信小程序系统教程[阶段]”。 阶段讲解的客服消息,是针对小程序的。后台程序用接近底层的技术,没有使用三方技术。这样降低同学们学习成本。 微信支付,这部分课程很有难度,要求同学们认真听讲,有不会的技术问题可以请教老师。购买课程后请联系老师,提供单号,给你源程序。 九宝电商系统是一套十分适和学习、项目的课程。既可以系统的学习微信小程序相关知识,还可以修改后上线。 “微信小程序系统教程[中级阶段]——核心技术”重点讲解微信小程序事件、组件、API 微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 购买课程的同学,可赠送就九宝老师编写的《微信小程序开发宝典》。 购课请咨询qq2326321088

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧