鱼C论坛

 找回密码
 立即注册
查看: 2691|回复: 4

大问题啊!!

[复制链接]
发表于 2016-4-20 18:51:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
c语言中,scanf语句里面什么时候要加&,什么时候不要加&?是不是前面要是定义是一个数组,里面就不要加&?
#include<stdio.h>
#define STUDENTS 100
#define ITEMS 10
int inputs(int n,int k);
int show(int n,int k);
char name[STUDENTS][100];//学生姓名;
char itemsname[ITEMS][100];//科目名称;
int score[STUDENTS][ITEMS];

int main()
{
        int n;//总人数;
        int k;//科目总数;
        printf("请输入班级总人数:");
        scanf("%d",&n);
        printf("请输入科目总数:");
        scanf("%d",&k);
        inputs(n,k);
        show(n,k);
}
int inputs(int n,int k)
{
        int i,j;
        for(i=0;i<k;i++)
        {
                printf("请输入第 %d 科科目名称:",i+1);
                scanf("%s",itemsname[i]);
        }       
        for(j=0;j<n;j++)
        {                       
                printf("请输入第 %d 个学生姓名:",j+1);
                scanf("%s",name[j]);
                for(i=0;i<k;i++)
                {
                        printf("请输入 %s 同学 %s 科目的成绩:",name[j],itemsname[i]);
                        scanf("%d",&score[j][i]);
                }
        }       
}

学生成绩管理系统中,为什么最后一行scanf("%d",&score[j][i]); 是这样?起初我是int score[STUDENTS]。。。。scanf(“%d",score[i]);
然后运行出错了。为什么分数要这么定义?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-4-20 21:00:21 | 显示全部楼层
数据类型不同  楼主   score[j][i] 是代表一个int   而score[i]  是代表整个数组  
例如说  a[1][2]    a[0] 数据类型是   a[0][0] a[0][1]   他是数组类型  
而a[0][0] 代表的就是一个int    他两的数据类型不一样
这样说不知道会不会太笼统呢  虽说地址是一样的  但是C语言是 有数据类型的

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-4-21 09:02:58 | 显示全部楼层
scanf中&为取地址符,数组名可以表示数组的首地址,所以不需要再取地址。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-4-21 09:54:25 | 显示全部楼层
& 变量 是取变量的地址          起初是int score[STUDENTS][ITEMS];    是定义了一个数组,   你这scanf("%d",&score[j][i]); & score[j][i]是取score[j][i]的地址.                      那最后一行的scanf(“%d",score[j][i]);是对二维数组赋值,你已经用了两个for 循环了而且用的是下标法赋值的.    scanf(“%d",score[i]);你这样我也不知道怎么解释了.scanf("%d",*(score + j)+ i);这样才是用地址的方法赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-25 19:49:22 | 显示全部楼层
桃花飞舞 发表于 2016-4-21 09:54
& 变量 是取变量的地址          起初是int score[STUDENTS];    是定义了一个数组,   你这scanf("%d",&sco ...

学了指针,大侠的最后一句看懂了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-1 02:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表