求解答 这个输出哪里写错了

阿贾克斯` 2016-12-17 04:34:13
是因为没有储存数据吗?
为什么输出值只显示最后一个数据?
...全文
134 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿贾克斯` 2016-12-18
  • 打赏
  • 举报
回复
引用 5 楼 paschen 的回复:
你的m应该使用一个数组,否则下一次输入会把上一次输入的覆盖了
就是这个不知道怎么写。总人数是不确定的,所以要一个不确定长度的数组
ck2333 2016-12-18
  • 打赏
  • 举报
回复
哪里不行了???自己尝试着去写一下就知道了
阿贾克斯` 2016-12-18
  • 打赏
  • 举报
回复
引用 7 楼 qq_36409192 的回复:
就是用数组把你所输入的成绩都存了,然后再循环输出就可以了。
您写的这个 我看不懂。初学者
阿贾克斯` 2016-12-18
  • 打赏
  • 举报
回复
引用 7 楼 qq_36409192 的回复:
就是用数组把你所输入的成绩都存了,然后再循环输出就可以了。
对 是这个意思 但是不行啊,
ck2333 2016-12-18
  • 打赏
  • 举报
回复
就是用数组把你所输入的成绩都存了,然后再循环输出就可以了。
阿贾克斯` 2016-12-18
  • 打赏
  • 举报
回复
引用 2 楼 qq_36409192 的回复:
你定义的是一个int型的变量m,系统只会给你分配一个int的空间,那么你最后输出的m其实也就是你最后一个输入的m(其他的值都在你输入的过程中覆盖了)。 如果你想把你的几组值都进行输出,可以用:
int *m;
	scanf("%d",&s);
	m=(int *)malloc(s*sizeof(int));   //头文件#include <stdio.h>
	for(int i=0;i<s;i++)
	{
		printf("请输入第%d号学生的成绩:",i+1);
		scanf("%d",&m[i]);
	}
然后输出用:
printf("%d号的成绩是:%d\n",i+1,m[i]);
能不能写初学者的,这个我看不懂啊 我要做的是一个系统;里面第一个功能是输入班级多少人 然后每个人的分数;最后显示出来
ck2333 2016-12-18
  • 打赏
  • 举报
回复
引用 18 楼 u011046184 的回复:
[quote=引用 17 楼 qq_36409192 的回复:] [quote=引用 16 楼 u011046184 的回复:] [quote=引用 14 楼 qq_36409192 的回复:] 不小心掉了个;
谢谢 搞定,我想过这个 不过我写错了 ^.^[/quote] 不用谢。解决了麻烦结下贴[/quote] 以结,您的名字的数字是您的QQ吗 通过以下 问点后续的问题。[/quote] 并不是,有什么问题私信都可以的。
阿贾克斯` 2016-12-18
  • 打赏
  • 举报
回复
引用 17 楼 qq_36409192 的回复:
[quote=引用 16 楼 u011046184 的回复:] [quote=引用 14 楼 qq_36409192 的回复:] 不小心掉了个;
谢谢 搞定,我想过这个 不过我写错了 ^.^[/quote] 不用谢。解决了麻烦结下贴[/quote] 以结,您的名字的数字是您的QQ吗 通过以下 问点后续的问题。
ck2333 2016-12-18
  • 打赏
  • 举报
回复
引用 16 楼 u011046184 的回复:
[quote=引用 14 楼 qq_36409192 的回复:] 不小心掉了个;
谢谢 搞定,我想过这个 不过我写错了 ^.^[/quote] 不用谢。解决了麻烦结下贴
阿贾克斯` 2016-12-18
  • 打赏
  • 举报
回复
引用 14 楼 qq_36409192 的回复:
不小心掉了个;
谢谢 搞定,我想过这个 不过我写错了 ^.^
阿贾克斯` 2016-12-18
  • 打赏
  • 举报
回复
引用 12 楼 qq_36409192 的回复:
[quote=引用 9 楼 u011046184 的回复:] [quote=引用 7 楼 qq_36409192 的回复:] 就是用数组把你所输入的成绩都存了,然后再循环输出就可以了。
您写的这个 我看不懂。初学者 [/quote] 不需要用我这个

    scanf("%d",&s)
    int m[s];
    for(int i=0;i<s;i++)
    {
        printf("请输入第%d号学生的成绩:",i+1);
        scanf("%d",&m[i]);
    }
[/quote] 啊列 这个我是写过 不过我写的是 m[S] scanf的写成了M[s] - -.... 您这个我试一下
ck2333 2016-12-18
  • 打赏
  • 举报
回复
不小心掉了个;
阿贾克斯` 2016-12-18
  • 打赏
  • 举报
回复
引用 10 楼 qq_36409192 的回复:
哪里不行了???自己尝试着去写一下就知道了
主要是不会定义不确定长度的数组。第一个s 总人数是不确定的数,然后输入的成绩也是随S个数动 (S多少人,就输入多少个成绩 ;但是不知道怎么定义M,
ck2333 2016-12-18
  • 打赏
  • 举报
回复
引用 9 楼 u011046184 的回复:
[quote=引用 7 楼 qq_36409192 的回复:] 就是用数组把你所输入的成绩都存了,然后再循环输出就可以了。
您写的这个 我看不懂。初学者 [/quote] 不需要用我这个

    scanf("%d",&s)
    int m[s];
    for(int i=0;i<s;i++)
    {
        printf("请输入第%d号学生的成绩:",i+1);
        scanf("%d",&m[i]);
    }
paschen 版主 2016-12-17
  • 打赏
  • 举报
回复
你的m应该使用一个数组,否则下一次输入会把上一次输入的覆盖了
  • 打赏
  • 举报
回复
存储分数的变量n要用数组 如果是动态的可以用vector 或者用int *pn 然后用new动态创建,并且记得用完后delete
ck2333 2016-12-17
  • 打赏
  • 举报
回复
头文件打错了,是#include <stdlib.h>
ck2333 2016-12-17
  • 打赏
  • 举报
回复
你定义的是一个int型的变量m,系统只会给你分配一个int的空间,那么你最后输出的m其实也就是你最后一个输入的m(其他的值都在你输入的过程中覆盖了)。 如果你想把你的几组值都进行输出,可以用:
int *m;
	scanf("%d",&s);
	m=(int *)malloc(s*sizeof(int));   //头文件#include <stdio.h>
	for(int i=0;i<s;i++)
	{
		printf("请输入第%d号学生的成绩:",i+1);
		scanf("%d",&m[i]);
	}
然后输出用:
printf("%d号的成绩是:%d\n",i+1,m[i]);
lunat 2016-12-17
  • 打赏
  • 举报
回复

scanf("%d", &n);
while(1) 
{
改成:

while(1) 
{
scanf("%d", &n);

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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