C语言问题新手求助

水手怕水 2014-03-07 12:23:29
#include <stdio.h>
#include <malloc.h>
struct stu
{
int age;
char name[20];
float score;
};

int main()
{
int k,len;
struct stu * pArr;
struct stu student;

//动态的构造一维数组
printf("请输入学生的个数:\nlen=");
scanf("%d",&len);
pArr = (struct stu *)malloc(len * sizeof(struct stu));

for(k=0; k<len; k++)
{
printf("请输入学生的基本信息:\n");
printf("age=");
scanf("%d",&pArr[k].age);
printf("name=");
scanf("%s",pArr[k].name);
printf("score=");
scanf("%f",&pArr[k].score);
}
for(k=0; k<len; k++)
{
printf("第%d学生的基本信息:",k+1);
printf("age=",pArr);
scanf("%d",&pArr[k].age);
printf("name=");
scanf("%s",&pArr[k].name);
printf("score=");
scanf("%f",&pArr[k].score);
}


free(pArr);

return 0;

}


一运行就出现这个,找了半天实在找不到哪里错了。求帮忙...
...全文
410 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-03-07
  • 打赏
  • 举报
回复
printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方,而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
iamkconghua 2014-03-07
  • 打赏
  • 举报
回复
建议lz去看看C语言基础方面的视频,推荐一个: www.tudou.com/home/93506222/
creepyOne 2014-03-07
  • 打赏
  • 举报
回复
play.c:34:9: warning: too many arguments for format [-Wformat-extra-args] printf("age=",pArr); ^ play.c:37:9: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[20]’ [-Wformat=] scanf("%s",&pArr[k].name); ^ 你的scanf没有设置读取长度 还有你有个printf后面的量也不对
「已注销」 2014-03-07
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <malloc.h>
struct stu
{
    int age;
    char name[20];
    float score;
};
 
int main()
{
    int k,len;
    struct stu * pArr;
    struct stu student;
 
    //动态的构造一维数组
    printf("请输入学生的个数:\nlen=");
    scanf("%d",&len);
    pArr = (struct stu *)malloc(len*sizeof(struct stu));
     
    for(k=0; k<len; k++)
    {
        printf("请输入学生的基本信息:\n");
        printf("age=");
        scanf("%d",&pArr[k].age);
        printf("name=");
        scanf("%s",pArr[k].name);
        printf("score=");
        scanf("%f",&pArr[k].score);
    }
    for(k=0; k<len; k++)
    {
        printf("\n\n第%d学生的基本信息:",k+1);
        printf("age=");
        printf("%d\n",pArr[k].age);
        printf("name=");
        printf("%s\n",pArr[k].name);
        printf("score=");
        printf("%f\n",pArr[k].score);
    }
 
 
    free(pArr);
     
    return 0;
 
}
水手怕水 2014-03-07
  • 打赏
  • 举报
回复
引用 2 楼 iamkconghua 的回复:
#include <stdio.h>
#include <malloc.h>

struct stu
{
	int age;
	char name[20];
	float score;
};

int main()
{
	int k,len;
	struct stu * pArr;

	//动态的构造一维数组
	printf("请输入学生的个数:\nlen = ");
	scanf("%d", &len);
	pArr = (struct stu *)malloc(len * sizeof(struct stu));
	
	for (k = 0; k < len; k++)
	{
		printf("请输入第%d个学生的基本信息:\n", k + 1);
		printf("age = ");
		scanf("%d", &pArr[k].age);

		printf("name = ");
		scanf("%s", pArr[k].name);

		printf("score = ");
		scanf("%f", &pArr[k].score);
		float fx = pArr[k].score;//使用一下pArr[k].score
	}

	for (k = 0; k < len; k++)
	{
		printf("\n第%d学生的基本信息:\n", k + 1);
		printf("age = %d ", pArr[k].age);
		printf("name = %s ", pArr[k].name);
		printf("score = %f\n", pArr[k].score);
//		float fx = pArr[k].score;
	}

	free(pArr);
	return 0;
}
我刚刚把你加的那个代码注释后程序又可以正常运行了,睡了一觉又好了?这编译器太郁闷了
水手怕水 2014-03-07
  • 打赏
  • 举报
回复
引用 2 楼 iamkconghua 的回复:
#include <stdio.h>
#include <malloc.h>

struct stu
{
	int age;
	char name[20];
	float score;
};

int main()
{
	int k,len;
	struct stu * pArr;

	//动态的构造一维数组
	printf("请输入学生的个数:\nlen = ");
	scanf("%d", &len);
	pArr = (struct stu *)malloc(len * sizeof(struct stu));
	
	for (k = 0; k < len; k++)
	{
		printf("请输入第%d个学生的基本信息:\n", k + 1);
		printf("age = ");
		scanf("%d", &pArr[k].age);

		printf("name = ");
		scanf("%s", pArr[k].name);

		printf("score = ");
		scanf("%f", &pArr[k].score);
		float fx = pArr[k].score;//使用一下pArr[k].score
	}

	for (k = 0; k < len; k++)
	{
		printf("\n第%d学生的基本信息:\n", k + 1);
		printf("age = %d ", pArr[k].age);
		printf("name = %s ", pArr[k].name);
		printf("score = %f\n", pArr[k].score);
//		float fx = pArr[k].score;
	}

	free(pArr);
	return 0;
}
确实没问题了,可是我想知道这是为什么呢?
iamkconghua 2014-03-07
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <malloc.h>

struct stu
{
	int age;
	char name[20];
	float score;
};

int main()
{
	int k,len;
	struct stu * pArr;

	//动态的构造一维数组
	printf("请输入学生的个数:\nlen = ");
	scanf("%d", &len);
	pArr = (struct stu *)malloc(len * sizeof(struct stu));
	
	for (k = 0; k < len; k++)
	{
		printf("请输入第%d个学生的基本信息:\n", k + 1);
		printf("age = ");
		scanf("%d", &pArr[k].age);

		printf("name = ");
		scanf("%s", pArr[k].name);

		printf("score = ");
		scanf("%f", &pArr[k].score);
		float fx = pArr[k].score;//使用一下pArr[k].score
	}

	for (k = 0; k < len; k++)
	{
		printf("\n第%d学生的基本信息:\n", k + 1);
		printf("age = %d ", pArr[k].age);
		printf("name = %s ", pArr[k].name);
		printf("score = %f\n", pArr[k].score);
//		float fx = pArr[k].score;
	}

	free(pArr);
	return 0;
}
iamkconghua 2014-03-07
  • 打赏
  • 举报
回复
在scanf("%f",&pArr[k].score);后加入如下代码试试: scanf("%f",&pArr[k].score); float fTemp = pArr[k].score; //使用一下pArr[k].score

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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