函数里的数组

人海迷航 2008-09-15 12:17:43
请问下面这个简单的程序,错在哪里?
输入N个学生的四门功课的成绩,然后打印出来。


//随意输入N个学生的成绩,每个学生有四门课程
//如果输入0,0,0,0则表示输入结束
void read(int score[][4],int n){
//int score[][4];
int number = 0;
for(;;){
if(number > 0){
if(score[number-1][0] == 0 || number >= n)
break;
}
scanf("%f,%f,%f,%f",&score[number][0],&score[number][1],&score[number][2],&score[number][3]);
number++;
}
printf("you've input %d student's scores!\n",number);
int i = 0;
for(i = 0; i < number; i++)
{
printf("row[%d]:%f,%f,%f,%f\n",i+1,score[i][0],score[i][1],score[i][2],score[i][3]);
}
}
main(){
int num = 0;
int s[1000][4];
printf("input the total students you need to input:");
scanf("%d",&num);
printf("input scores:\n");
read(s,num);
}

...全文
136 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
帅得不敢出门 2008-09-15
  • 打赏
  • 举报
回复
//如果输入0,0,0,0则表示输入结束
if(score[number-1][0] == 0 || number >= n)
break;
这里,如果第一个为0其实就退出了.
xkyx_cn 2008-09-15
  • 打赏
  • 举报
回复

#include <stdio.h>

//随意输入N个学生的成绩,每个学生有四门课程
//如果输入0,0,0,0则表示输入结束
void read(int score[][4],int n){
//int score[][4];
int number = 0;
for(;;){
if(number > 0){
if(score[number-1][0] == 0 || number >= n)
break;
}
fflush(stdin);
scanf("%d,%d,%d,%d",&score[number][0],&score[number][1],&score[number][2],&score[number][3]);
number++;
}
printf("you've input %d student's scores!\n",number);
int i = 0;
for(i = 0; i < number; i++)
{
printf("row[%d]:%d,%d,%d,%d\n",i+1,score[i][0],score[i][1],score[i][2],score[i][3]);
}
}
int main(){
int num = 0;
int s[1000][4];
printf("input the total students you need to input:");
scanf("%d",&num);
printf("input scores:\n");
read(s,num);

return 0;
}
人海迷航 2008-09-15
  • 打赏
  • 举报
回复
double跟float搞混了,对不起各位。
yangkunhenry 2008-09-15
  • 打赏
  • 举报
回复

#include<stdio.h>
void read(float score[][4],int n)//改为float型的了
{
//int score[][4];
int number = 0;
for(;;)
{
if(number > 0)
{
if((score[number-1][0]-0)<0.00001 || number >= n)//float型的数与0比较要注意
break;
}
scanf("%f,%f,%f,%f",&score[number][0],&score[number][1],&score[number][2],&score[number][3]);
number++;
}
printf("you've input %d student's scores!\n",number);
int i = 0;
for(i=0;i<number;i++)
{
printf("row[%d]:%f,%f,%f,%f\n",i+1,score[i][0],score[i][1],score[i][2],score[i][3]);
}
}
void main()
{
int num = 0;
float s[1000][4];
printf("input the total students you need to input:");
scanf("%d",&num);
printf("input scores:\n");
read(s,num);
}

VC6.0
人海迷航 2008-09-15
  • 打赏
  • 举报
回复
%.2f这样的格式是表示保留2位小数,没有问题吧?

[Quote=引用 6 楼 zmlovelx 的回复:]
scanf("%f,%f,%f,%f",&...........)
是你输出数据的时候错了吧.
看到上面的%f旁边的,号没有.
输出的时候数据间隔要加,号
比如
12,56.88,56,78
[/Quote]
帅得不敢出门 2008-09-15
  • 打赏
  • 举报
回复
scanf("%f,%f,%f,%f",&...........)
是你输出数据的时候错了吧.
看到上面的%f旁边的,号没有.
输出的时候数据间隔要加,号
比如
12,56.88,56,78
人海迷航 2008-09-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lunarfan 的回复:]
scanf("%d%d%d%d",&score[number][0],&score[number][1],&score[number][2],&score[number][3]);
printf("row[%d]:%d %d %d %d\n",i+1,score[i][0],score[i][1],score[i][2],score[i][3]);

你的数组是int型
[/Quote]

综合上面各位的意见,把数组改成double型,加上fflush函数,问题依然存在。

#include <stdio.h>
//随意输入N个学生的成绩,每个学生有四门课程
//如果输入0,0,0,0则表示输入结束
void read(double score[][4],int n){
//int score[][4];
int number = 0;
for(;;){
if(number > 0){
if(score[number-1][0] == 0 || number >= n)
break;
}
scanf("%f,%f,%f,%f",&score[number][0],&score[number][1],&score[number][2],&score[number][3]);
fflush(stdin);
number++;
}
printf("you've input %d student's scores!\n",number);
int i = 0;
for(i = 0; i < number; i++)
{
printf("row[%d]:%.2f,%.2f,%.2f,%.2f\n",i+1,score[i][0],score[i][1],score[i][2],score[i][3]);
}
}
main(){
int num = 0;
double s[1000][4];
printf("input the total students you need to input:");
scanf("%d",&num);
printf("input scores:\n");
read(s,num);
system("pause");
return 0;
}

lunarfan 2008-09-15
  • 打赏
  • 举报
回复

//随意输入N个学生的成绩,每个学生有四门课程
//如果输入0,0,0,0则表示输入结束
void read(int score[][4],int n){
//int score[][4];
int number = 0;
for(;;){
if(number > 0){
if(score[number-1][0] == 0 || number >= n)
break;
}
scanf("%d%d%d%d",&score[number][0],&score[number][1],&score[number][2],&score[number][3]);

number++;
}
printf("you've input %d student's scores!\n",number);
int i = 0;
for(i = 0; i < number; i++)
{
printf("row[%d]:%d,%d,%d,%d\n",i+1,score[i][0],score[i][1],score[i][2],score[i][3]);
}
}
int main(){
int num = 0;
int s[1000][4];
printf("input the total students you need to input:");
scanf("%d",&num);
printf("input scores:\n");
read(s,num);

system("pause");
return 0;
}

lunarfan 2008-09-15
  • 打赏
  • 举报
回复
scanf("%d%d%d%d",&score[number][0],&score[number][1],&score[number][2],&score[number][3]);
printf("row[%d]:%d %d %d %d\n",i+1,score[i][0],score[i][1],score[i][2],score[i][3]);

你的数组是int型

69,371

社区成员

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

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