标题:错在哪里了呢?一运行就死
只看楼主
董世
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2012-11-26
结帖率:33.33%
已结贴  问题点数:20 回复次数:14 
错在哪里了呢?一运行就死
要求Define a structure type element_t to represent one element from the periodic table of elements.

以下是代码
程序代码:
#include<stdio.h>
struct element_t
{int number;

 char name[20];

 char symbol[2];

 float weight;

 int array[7];
};
void main()
{void scan_element(struct element_t *p);

 void printf_element(struct element_t *p);

 struct element_t ele;

 struct element_t *p;

 p=&ele;

 scan_element(p);

 printf_element(p);
}
void scan_element(struct element_t *p)
{int i;

 printf("\nPlease input some informations of one element:\n\nThe atomic number\nThe name\nChemical symbol\nA numeric field for the atomic weight\nA seven-element array of the integers for the number of electrons in each shell\n\n");

 scanf("%d%s%s%f",&(*p).number,&(*p).name,&(*p).symbol,&(*p).weight);

 for(i=0;i<7;i++)

 scanf("%d",&(*p).array[i]);
}
void printf_element(struct element_t *p)
{int i;

 printf("\nAtomic number: %d\nName: %s\nChemical symbol: %s\nAtomic weight: %f\n",(*p).number,(*p).name,(*p).symbol,(*p).weight);

 printf("Number of electrons in each shell is: ");

 for(i=0;i<7;i++)

 printf("%d ",(*p).array[i]);
}
搜索更多相关主题的帖子: one represent structure elements 
2012-12-03 12:54
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:2 
scanf("%d%s%s%f",&(*p).number,&(*p).name,&(*p).symbol,&(*p).weight);
估计你输入方式有问题,我运行就OK


[fly]存在即是合理[/fly]
2012-12-03 13:17
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:2 
楼主代码风格可不咋好呢

DO IT YOURSELF !
2012-12-03 13:19
董世
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2012-11-26
得分:0 
回复 3楼 wp231957
初学  还请老师们指点
2012-12-03 13:27
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
用VC的话,把所有‘{’‘}’单独放一行,全选,然后ALT + F8,其他软件不太熟悉


[fly]存在即是合理[/fly]
2012-12-03 13:29
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
以下是引用azzbcc在2012-12-3 13:29:55的发言:

用VC的话,把所有‘{’‘}’单独放一行,全选,然后ALT + F8,其他软件不太熟悉
学习了,还真不知道这个

DO IT YOURSELF !
2012-12-03 13:31
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
得分:2 
运行了下 没有问题 之所以死 我想你应该输入的时候出现了问题,你的输入代码是:scanf("%d%s%s%f",&(*p).number,&(*p).name,&(*p).symbol,&(*p).weight);
你可能在输入的时候输入了空格,倒置崩溃。你应该在输入函数里边加入空格 就可以了。
如下:
scanf("%d %s %s %f",&(*p).number,&(*p).name,&(*p).symbol,&(*p).weight);
另外还要注意你输入时候不要超过你数组大小的范围

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-12-03 17:43
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
得分:0 
写错字了 倒置  -------导致    不要见怪

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-12-03 17:44
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
得分:2 
scanf("%d%s%s%f",&(*p).number,&(*p).name,&(*p).symbol,&(*p).weight);  //在最后一个%s的时候,你输入数字一样会被当作字符读入&(*p).symbol,所以%f就没有机会读入了,还有scanf函数读入字符串不是按终止符结束,而是按空格结束,所以最好在格式符之间打上空格或特定的符号,其他地方有没有错误就不知道了,我记得应该在使用函数的时候先在main函数前面申明它...

I have not failed completely
2012-12-03 19:03
wtw199186
Rank: 2
等 级:论坛游民
帖 子:55
专家分:78
注 册:2012-9-22
得分:2 
scanf("%d%s%s%f",&(*p).number,(*p).name,(*p).symbol,&(*p).weight);//是不是那两个&也要去掉啊

2012-12-03 21:33



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




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

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