fanzhihao 发表于 2016-4-20 18:51:25

大问题啊!!

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;//学生姓名;
char itemsname;//科目名称;
int score;

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);
        }       
        for(j=0;j<n;j++)
        {                       
                printf("请输入第 %d 个学生姓名:",j+1);
                scanf("%s",name);
                for(i=0;i<k;i++)
                {
                        printf("请输入 %s 同学 %s 科目的成绩:",name,itemsname);
                        scanf("%d",&score);
                }
        }       
}

学生成绩管理系统中,为什么最后一行scanf("%d",&score); 是这样?起初我是int score。。。。scanf(“%d",score);
然后运行出错了。为什么分数要这么定义?

好多好多鱼 发表于 2016-4-20 21:00:21

数据类型不同楼主   score 是代表一个int   而score是代表整个数组
例如说a    a 数据类型是   a a   他是数组类型
而a 代表的就是一个int    他两的数据类型不一样
这样说不知道会不会太笼统呢虽说地址是一样的但是C语言是 有数据类型的

LeoChou 发表于 2016-4-21 09:02:58

scanf中&为取地址符,数组名可以表示数组的首地址,所以不需要再取地址。

桃花飞舞 发表于 2016-4-21 09:54:25

& 变量 是取变量的地址          起初是int score;    是定义了一个数组,   你这scanf("%d",&score); & score是取score的地址.                      那最后一行的scanf(“%d",score);是对二维数组赋值,你已经用了两个for 循环了而且用的是下标法赋值的.    scanf(“%d",score);你这样我也不知道怎么解释了.scanf("%d",*(score + j)+ i);这样才是用地址的方法赋值

fanzhihao 发表于 2016-4-25 19:49:22

桃花飞舞 发表于 2016-4-21 09:54
& 变量 是取变量的地址          起初是int score;    是定义了一个数组,   你这scanf("%d",&sco ...

学了指针,大侠的最后一句看懂了。
页: [1]
查看完整版本: 大问题啊!!