24小时热门版块排行榜    

查看: 1204  |  回复: 8

earth洛溪

铜虫 (小有名气)

[求助] 我自己写的程序,求高手改错

我自己写的程序,求高手改错
题目:计算并输出n个学生某学期m们课程的平均成绩
CODE:
#include <stdio.h>
#include <stdlib.h>
void main()
{ int n,c,i,sum,average;
printrf("\nenter n number students");
scanf("%d",&n);
c=(int*)malloc(n*sizeof(int));
printf("\nenter %d number students",n);
c=0;
for(i=0;i<n;i++)

scanf("%d",c+i);
for(i=0;i<n;i++)

sum=*c+*(c+i);


average=sum/n;
printf("%d",average);



   
}

[ Last edited by jjdg on 2013-6-7 at 00:42 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

大鹏一日随风起,扶摇直上就九万里。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ausir

木虫 (正式写手)

【答案】应助回帖


感谢参与,应助指数 +1
xzhdty: 金币+1, 谢谢参与 2013-06-11 23:24:18
现在的编译器对数据类型的定义要求比较严格。把 int *c 定义为 int c 编译无法通过。
另外 c=0; 会导致原来分配的数组空间丢失,不知道指到那里,因此不能用。
在后面求和是,正确的加法是 sum=sum+*(c+i) 而不是*c+*(c+i),计算从i=1起,到i<n,并且 sum 的初值要是 *c的值。
最后没有做内存释放,每次分配内存,会造成内存泄露。
做了以上修改后,就可以正确运算了。

在VS2012中,需要添加<stdlib.h>头文件,并且把scanf函数用scanf_s这个安全函数替代才可以正确运行。
2楼2013-05-24 13:07:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

limmettle

金虫 (正式写手)

【答案】应助回帖


感谢参与,应助指数 +1
xzhdty: 金币+1, 谢谢参与 2013-06-11 23:24:03
根据楼主的这一句
c=(int*)malloc(n*sizeof(int));
就可以知道c是一个整型指针,因此必须定义为
int *c;


c=(int*)malloc(n*sizeof(int));
这一句执行过后,c的值是这个连续的n*sizeof(int)这一段内存的首地址,这时c指向该连续空间的第一个整数;c的值每加1,将会指向下一个整数。

因此,楼主的
c=0;
这一句实际上已经给c重新赋值,c已经不指向刚才开辟的内存空间,而指向内存中地址为0的空间,该空间是加载系统的空间,受系统保护,不允许入侵;

*(c+i)取出楼主开辟的连续空间的第i+1个整数的值,因此求和应该写成
sum=0;
for(i=0;i<n;i++) sum+=*(c+i);

开辟的空间使用完后应该及时释放,在本例中使用
free(c);
语句。既然使用了内存管理的函数,就应该管理好内存(有开辟就应该有释放),否则还不如直接使用数组呢,是吧?

另外,再给楼主一点建议吧
1.main函数的标准形式是不存在void main()这种的,规范的写法是
int main(){
    ...;
    return 0;
}
谭浩强老师的书看看就行,当不得真,不利于培养良好的编程习惯;我猜楼主c编程可能还不很熟练,建议空了翻翻《C Primer Plus》(中英文版都有的),很不错;
2.不建议二楼的朋友所说的使用scanf_s()函数,该函数不是ANSI C标准里的,在今后实际应用中可能存在移植性的问题。
3楼2013-05-25 11:41:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

earth洛溪

铜虫 (小有名气)

引用回帖:
3楼: Originally posted by limmettle at 2013-05-25 11:41:30
根据楼主的这一句
c=(int*)malloc(n*sizeof(int));
就可以知道c是一个整型指针,因此必须定义为
int *c;


c=(int*)malloc(n*sizeof(int));
这一句执行过后,c的值是这个连续的n*sizeof(int)这一段内存的 ...

谢谢啦,我是大一的,刚开始学c++,不怎么会用,感谢你哦
大鹏一日随风起,扶摇直上就九万里。
4楼2013-05-28 19:29:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiaoyaozgc

新虫 (初入文坛)

刚开始学c++
5楼2013-05-29 19:37:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

黑色风信子

荣誉版主 (文坛精英)

皇家神龍教KOKO或KOKO猪

【答案】应助回帖

★ ★ ★ ★
earth洛溪: 金币+3, 有帮助 2013-06-11 16:10:43
xzhdty: 金币+1, 谢谢参与 2013-06-11 23:23:42
要不要这么复杂啊,不喜欢改你的,给你写一个吧
题目:计算并输出n个学生某学期某们课程的平均成绩
#include <stdio.h>
#include <stdlib.h>
void main()
{
  int n,i;
  float sum=0,temp,average;//总和和平均分可能带小数,定义为浮点型比较妥
  printf(“Please input the number of students:”);
  scanf(“%d”,&n);
  printf("\n";
  for(i=0;i<n;i++)
{
   printf("Please input the %d student's score",i);
   scanf("%f",&temp);
   sum=sum+temp;
   printf("\n";
}
  average=sum/n;
printf("The average of this course is %2.f\n",average);//精确到小数点后2位
}
如果你哭,你的对手就会笑。如果你笑,你的对手就会哭。人生就像愤怒的小鸟,每次你失败的时候,总有几只猪在笑。你要做的就是无视嘲笑的声音,给自己打气。自.
6楼2013-06-06 19:08:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

earth洛溪

铜虫 (小有名气)

引用回帖:
6楼: Originally posted by 黑色风信子 at 2013-06-06 19:08:57
要不要这么复杂啊,不喜欢改你的,给你写一个吧
题目:计算并输出n个学生某学期某们课程的平均成绩
#include <stdio.h>
#include <stdlib.h>
void main()
{
  int n,i;
  float sum=0,te ...

哼哼!!!!怎么能不喜欢我写的那?1!!真没眼光说不定以后我就是c语言中的新秀呢
大鹏一日随风起,扶摇直上就九万里。
7楼2013-06-09 18:51:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

黑色风信子

荣誉版主 (文坛精英)

皇家神龍教KOKO或KOKO猪

引用回帖:
7楼: Originally posted by earth洛溪 at 2013-06-09 18:51:03
哼哼!!!!怎么能不喜欢我写的那?1!!真没眼光说不定以后我就是c语言中的新秀呢...

我不喜欢帮改程序,个人习惯而已,没有其他意思,楼主想太多了
如果你哭,你的对手就会笑。如果你笑,你的对手就会哭。人生就像愤怒的小鸟,每次你失败的时候,总有几只猪在笑。你要做的就是无视嘲笑的声音,给自己打气。自.
8楼2013-06-09 18:59:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

earth洛溪

铜虫 (小有名气)

引用回帖:
8楼: Originally posted by 黑色风信子 at 2013-06-09 18:59:05
我不喜欢帮改程序,个人习惯而已,没有其他意思,楼主想太多了...

那是,
大鹏一日随风起,扶摇直上就九万里。
9楼2013-06-11 16:10:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 earth洛溪 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[论文投稿] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 ANUsWpSnuWQD 2026-08-06 4/200 2026-08-07 04:46 by nSM3ys5fefM3
[基金申请] 听说今天filecode变了 +19 布布和一二 2026-08-06 34/1700 2026-08-07 03:13 by 虫友是什么虫
[基金申请] 基金中了 +6 laoda193707 2026-08-06 6/300 2026-08-06 23:34 by dragonxp
[基金申请] filecode +10 等待解的谜 2026-08-06 14/700 2026-08-06 21:16 by zhanghaozhu
[基金申请] 固定端突然变了,今天 +3 archvillain 2026-08-06 7/350 2026-08-06 21:05 by archvillain
[基金申请] filecode +8 布布和一二 2026-08-06 11/550 2026-08-06 20:41 by tangpu318
[基金申请] 大家散了吧,后缀研究没有意义,别浪费时间了,过好目前的每一天,不要焦虑 +5 Tide man 2026-08-06 6/300 2026-08-06 20:19 by 苏知砚
[有机交流] 一个有机合成实验室都需要哪些设备? 50+3 kf2781974 2026-07-31 12/600 2026-08-06 15:11 by eddyin
[基金申请] 求各位大神看下 100+6 hpkpkpkp 2026-08-05 33/1650 2026-08-06 14:49 by zhiyanjiang
[教师之家] 咨询面上基金 +4 李长云 2026-07-31 7/350 2026-08-06 11:20 by 李长云
[基金申请] 影响面上的因素 +8 布布和一二 2026-08-05 11/550 2026-08-06 10:41 by 宝贝虫子
[基金申请] 8月时间戳变的,举个手。玩一下,释放压力 +9 archvillain 2026-08-04 11/550 2026-08-05 20:06 by wlwhappy
[基金申请] 面上再次挂了,太难了,躺也躺不了,倦也卷不过,小学校之殇! +22 低垂的野花 2026-07-31 30/1500 2026-08-05 18:03 by 低垂的野花
[考博] 【2027博士申请】纳米药物递送方向 20+3 13586093586 2026-08-03 4/200 2026-08-05 09:59 by lfy8008
[基金申请] 有没有H口的?有收到消息的吗? +3 超级海虾 2026-08-04 3/150 2026-08-04 17:26 by 学教育滴
[论文投稿] 十年后又回来了,论文投稿求助 +3 哈哈114477 2026-08-01 3/150 2026-08-04 15:40 by tegsgjy20
[基金申请] 纯娱乐,不喜欢勿喷 +7 Tide man 2026-08-04 10/500 2026-08-04 15:10 by loufangrui
[基金申请] 面上提前没消息,有中的吗 +14 archvillain 2026-08-02 18/900 2026-08-04 14:42 by archvillain
[基金申请] 娱乐 +4 Tide man 2026-08-03 4/200 2026-08-04 11:51 by wgch518
[基金申请] 什么时候能放榜呀? +3 Jacob678 2026-08-03 3/150 2026-08-03 16:14 by gltch
信息提示
请填处理意见