标题:新手求大神指教!为什么录入信息后再去显示信息的时候后面会多了一些数字啊 ...
只看楼主
JsyYuww
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-12-22
 问题点数:0 回复次数:6 
新手求大神指教!为什么录入信息后再去显示信息的时候后面会多了一些数字啊逗号啊什么的。
#include<stdio.h>
struct student
{
int bianhao;
char name[20];
char zhonglei;
int shuliang;
char time[20];
char add[20];
}a[2];
int main()
{
void luru();
void chaxun();
void xiugai();
void xianshi();
int tongji();
int i;
do
{
printf("1.录入信息\n");
printf("2.信息修改\n");
printf("3.信息查询\n");
printf("4.信息显示\n");
printf("5.信息统计\n");
printf("6.退出\n");
scanf("%d",&i);
switch(i)
{
case 1:luru();break;
case 2:xiugai();break;
case 3:chaxun();break;
case 4:xianshi();break;
case 5:tongji();break;
case 6:printf("退出\n");break;
default:printf("enter data error!\n");
}
}
while(i!=6);
}
void luru()
{
int i;
printf("编号:客户姓名:订餐种类:订餐数量:送餐时间:送餐地址:\n");
for (i=0;i<2;i++)
scanf("%d,%s,%c,%d,%s,%s",&a[i].bianhao,&a[i].name,&a[i].zhonglei,&a[i].shuliang,&a[i].time,&a[i].add);
}
void chaxun()
{
int i,bianhao;
printf("请输入编号:");
scanf("%d",&bianhao);
printf("编号:客户姓名:订餐种类:订餐数量:送餐时间:送餐地址:\n");
for (i=0;i<2;i++)
if (bianhao==a[i].bianhao)
printf("%d,%s,%c,%d,%s,%s\n",a[i].bianhao,a[i].name,a[i].zhonglei,a[i].shuliang,a[i].time,a[i].add);
}
void xiugai()
{
int i,bianhao;
printf("请输入编号:");
scanf("%d",&bianhao);
printf("编号:客户姓名:订餐种类:订餐数量:送餐时间:送餐地址:\n");
for (i=0;i<2;i++){
if (bianhao==a[i].bianhao){
printf("%d,%s,%c,%d,%s,%s\n",a[i].bianhao,a[i].name,a[i].zhonglei,a[i].shuliang,a[i].time,a[i].add);
printf("编号修改为:客户姓名修改为:订餐种类修改为:订餐数量修改为:送餐时间修改为:送餐地址修改为:\n");
scanf("%d,%s,%c,%d,%s,%s",&a[i].bianhao,&a[i].name,&a[i].zhonglei,&a[i].shuliang,&a[i].time,&a[i].add);
}}}
void xianshi()
{
int i;
for(i=0;i<2;i++){
printf("编号:客户姓名:订餐种类:订餐数量:送餐时间:送餐地址:\n");
printf("%d,%s,%c,%d,%s,%s\n",a[i].bianhao,a[i].name,a[i].zhonglei,a[i].shuliang,a[i].time,a[i].add);}}
int tongji()
{
int i,zh,t,A,B,C,shuliang;
char zhonglei;
zh=0,A=0,B=0,C=0;
for(i=0;i<2;i++){
if(a[i].zhonglei=='a')
{A++;t=a[i].shuliang;zh=zh+t*15;}
if(a[i].zhonglei=='b')
{B++;t=a[i].shuliang;zh=zh+t*18;}
if(a[i].zhonglei=='c')
{C++;t=a[i].shuliang;zh=zh+t*23;}}
printf("订a套餐的数量为:%d\n订b套餐的数量为:%d\n订c套餐的数量为:%d\n",A,B,C);
printf("总金额为:%d\n",zh);}
搜索更多相关主题的帖子: 信息 int void printf 订餐 
2018-12-22 16:41
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
试试改:
//scanf("%d,%s,%c,%d,%s,%s",&a[i].bianhao,&a[i].name,&a[i].zhonglei,&a[i].shuliang,&a[i].time,&a[i].add);
scanf("%d,%s, %c,%d,%s,%s",&a[i].bianhao,a[i].name,&a[i].zhonglei,&a[i].shuliang,a[i].time,a[i].add);
2018-12-22 19:39
JsyYuww
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-12-22
得分:0 
回复 2楼 吹水佬
还是会有呀
2018-12-22 22:46
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 3楼 JsyYuww
再试试:用空格分隔
scanf("%d %s %c %d %s %s",&a[i].bianhao,a[i].name,&a[i].zhonglei,&a[i].shuliang,a[i].time,a[i].add);
2018-12-23 05:24
cwhEd
Rank: 2
等 级:论坛游民
威 望:1
帖 子:16
专家分:17
注 册:2018-8-14
得分:0 
scanf匹配的问题,看样子你应该没有深入了解过scanf这个函数,scanf函数的工作原理是先从缓冲区读取数据与""中的东西进行匹配,而你scanf("%d,%d"),读取第数据以后,会再从缓冲区读取数据对,进行匹配,如果你输入的时候没有逗号,scanf会再读取缓冲区的下一个数据对','进行匹配,直到读取到','为止,如果没有,就会出现匹配失败的情况,所以可以用scanf("%d%d%d"),实际上%d与%d之间是不能存在空格的,不过因为scanf的设定是在一般情况下对空格进行忽略,所有没有空格时输入空格代表结束对%d的输入,有加空格的scanf结束对%d的匹配过会,scanf会读取空格给scanf中的空格,两者的差别就是一个有读入空格,一个忽略了空格
2018-12-23 12:26
JsyYuww
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-12-22
得分:0 
回复 4楼 吹水佬
谢谢大佬谢谢大佬,这下对了。但我用逗号隔开的时候,输入信息时也有用逗号隔开为什么不行呢?
2018-12-23 13:49
JsyYuww
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-12-22
得分:0 
回复 5楼 cwhEd
嗯嗯
2018-12-23 13:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-492217-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.156806 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved