| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 833 人关注过本帖
标题:一个计算平均数的运算出错。。。请前辈解答。。。
只看楼主 加入收藏
Areik
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2009-9-28
结帖率:87.5%
收藏
已结贴  问题点数:15 回复次数:6 
一个计算平均数的运算出错。。。请前辈解答。。。
这是个输入姓名,学生号和3科成绩,然后输出姓名,学生号和平均成绩的程序。但是在输入姓名之后该程序就会出现程序遇到问题需要关闭。。。是哪一部分出现了问题?


#include <stdio.h>

void main()
{
   char name;
   int student_number;
   float English,Math,Computer,average;

   printf("Put in your name:");
   scanf("%s",&name);
   printf("Put in your student_number:");
   scanf("%d",&student_number);
   printf("Put in your English, Math and Computer marks:");
   scanf("%f%f%f",&English,&Math,&Computer);
 
   average = (English + Math + Computer)/3;
   printf("%s %d %f",name,student_number,average);
}
搜索更多相关主题的帖子: 解答 运算 前辈 平均数 
2009-10-24 00:25
xdyuan33
Rank: 3Rank: 3
来 自:广西大学化工学院
等 级:论坛游侠
帖 子:146
专家分:145
注 册:2009-7-24
收藏
得分:1 
char *name 这样没问题
 

参与切磋是美德,每天回帖即可获得10分可用分!
2009-10-24 00:43
dengjun000
Rank: 2
等 级:论坛游民
帖 子:66
专家分:77
注 册:2009-10-14
收藏
得分:1 
name应该是字符串,而不是字符,,况且你后面输出的也是%s 按字符串输出的。。可以改为name[100]
2009-10-24 00:44
apwh7550
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:106
注 册:2009-10-17
收藏
得分:1 
printf("%s %d %f",name,student_number,average);
改为:
printf("%s %d %f",&name,student_number,average);

还有一个建议,既然名字应该为字符串,建议用string类型的name.不过您现在的char类型的name也可以执行。
2009-10-24 01:00
xiaowenhuman
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:101
专家分:104
注 册:2009-5-10
收藏
得分:1 

#include <stdio.h>
 
void main()
{
   char name[80];
   int student_number;
   float English,Math,Computer,average;
 
   printf("Put in your name:");
   scanf("%s",&name);
   printf("Put in your student_number:");
   scanf("%d",&student_number);
   printf("Put in your English, Math and Computer marks:");
   scanf("%f%f%f",&English,&Math,&Computer);
 
   average = (English + Math + Computer)/3;
   printf("%s %d %f",name,student_number,average);
   getch();
}
name定义为char
2009-10-24 08:39
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:1 
当name改为字符串时,相应的
printf("Put in your name:");  
   scanf("%s",&name);  
改为:
printf("Put in your name:");  
   scanf("%s",name);  
2009-10-24 10:25
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:10 

 
#include <stdio.h>
 
void main()
{
   char name;
   int student_number;
   float English,Math,Computer,average;
 
   printf("Put in your name:");
   scanf("%s",&name);
   printf("Put in your student_number:");
   scanf("%d",&student_number);
   printf("Put in your English, Math and Computer marks:");
   scanf("%f%f%f",&English,&Math,&Computer);
 
   average = (English + Math + Computer)/3;
   printf("%s %d %f",name,student_number,average);
}
在你的这个程序里面的问题是你把字符变量当做了字符串变量来处理,导致了错误,

char name;
scanf("%s",&name);
这句话是不对的!
这句话可以这样去修改:一种是把name改成一个字符数组,name[10];
                      另一种该法是将name改成一个字符指针来处理,
                      char *name;但是这样改的话需要我们用动态
                      为name分配内存空间,name=(char *)maloc(10);
                      这样就可以了!
这是我修改之后的程序:
#include <stdio.h>
#include<stdlib.h> //头文件//
void main()
{
   char *name;             //我们定义的字符指针//
   name=(char*)malloc(10); //为我们定义的字符指针分配空间,
                             malloc()函数包含在头文件#include<stdlib.h>//
   
int student_number;
   float English,Math,Computer,average;
 
   printf("Put in your name:");
   scanf("%s",name);       //输入一个字符串,注意不用“&”符号,因为name就是一个地址变量//
   printf("Put in your student_number:");
   scanf("%d",&student_number);
   printf("Put in your English, Math and Computer marks:");
   scanf("%f%f%f",&English,&Math,&Computer);
 
   average = (English + Math + Computer)/3;
   printf("%s %d %f",name,student_number,average);
}

愿用余生致力编程
2009-10-24 11:10
快速回复:一个计算平均数的运算出错。。。请前辈解答。。。
数据加载中...
 
   



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

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