鱼C论坛

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

这个scanf为啥不用取地址符,

[复制链接]
发表于 2019-11-30 18:44:10 | 显示全部楼层 |阅读模式

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

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

x
那位大佬能纤细讲解一下
#include <stdio.h>
int main()
{
        char name;
        int height;
        double weight,in,lb;
        
        printf("请输入您的姓名:");
        scanf("%s",&name);
        printf("请输入您的身高(cm):");
        scanf("%d",&height);
        printf("请输入您的体重(kg):");
        scanf("%lf",&weight);
        
        printf("======正在为您转换======\n");
        in = height/2.54;
        lb = weight/2.20;
        printf("%s的身高是%.2lf(in),体重是%.2lf(lb)\n",name,in,lb);
        
        return 0;
}

划红线的不懂

划红线的不懂

请问一下这个咋变成小甲鱼呢,右面是devc++,为啥下面就没内容了

请问一下这个咋变成小甲鱼呢,右面是devc++,为啥下面就没内容了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-30 18:53:04 | 显示全部楼层
数组的名字相当于数组第0个元素的地址
scanf("%s", name);
scanf("%s", &name[0]);

上面两行代码是一样的效果,大多数人会选择第1种
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2019-11-30 21:05:55 From FishC Mobile | 显示全部楼层
本帖最后由 jackz007 于 2019-11-30 21:12 编辑

        凡是数组型的变量,其标识符代表的就是数组的起始地址,加了索引后,才成为普通变量,例如:
        char s[] = {"I love fishC"}  ;
        s 是字符串的首地址,s[0] 是普通 char 型变量,s[0] = 'I',表达式 & s[0] 与 s 是一个意思,表达的都是字符串 s 的起始地址。
        scanf() 只有在读取字符串时才不需要取址操作,读取其它任何非数组型变量时,都必须使用取址操作。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-7 10:27:04 | 显示全部楼层
for(i=1;i<month_2;i++)
        {
                
                if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
                {
                        sum = sum +31;
                }
                else if(i==2)
                {
                        if(flag=1)
                        {
                                sum = sum + 29;
                        }
                        else if(flag=2)
                        {
                                sum = sum +28;
                        }
                        
                }
                else
                {
                        sum = sum +30;
                }
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-7 10:27:43 | 显示全部楼层
#include <stdio.h>

int main()
{
        char a[11];//生日 
        char b[11];//现在 
        int i;
        int sum=365;
        int day=365;
        int run_month;
        int flag;
        
        printf("请输入你的生日:(如1988-05-20):");
        for(i=0;i<10;i++)
        {
                scanf("%c",&a[i]);
        }
        a[10]='\0';
        printf("%s\n",a);
        
        printf("请输入现在的时期:(如2009-12-07):");
        getchar();
        for(i=0;i<10;i++)
        {
                scanf("%c",&b[i]);
        }
        b[10]='\0';
        printf("%s\n",b);
        
        int year_2 = (int)(b[0]-'0')*1000+(int)(b[1]-'0')*100+(int)(b[2]-'0')*10+(int)(b[3]-'0');
        int year_1=(int)(a[0]-'0')*1000+(int)(a[1]-'0')*100+(int)(a[2]-'0')*10+(int)(a[3]-'0');
        int month_2=(int)(b[5]-'0')*10+(int)(b[6]-'0');
        int month_1=(int)(a[5]-'0')*10+(int)(a[6]-'0');
        int day_2=(int)(b[8]-'0')*10+(int)(b[9]-'0');
        int day_1=(int)(a[8]-'0')*10+(int)(a[9]-'0');
        
        while(year_1<year_2)
        {
                if(year_1%4==0 && year_1%100!=0)
                {
                        day=366;
                        run_month = 29;
                        flag = 3;
                }
                else if(year_1%400==0)
                {
                        day=366;
                        run_month = 29;
                        flag=3;
                }
                else
                {
                        day=365;
                        run_month = 28;
                        flag=4;
                }
                
                
                sum = sum + day;
                year_1 = year_1+1;
        }
        
        if(year_2%4==0 && year_2%100!=0)
                {
                        run_month = 29;
                        flag = 1;
                }
                else if(year_2%400==0)
                {
                        run_month = 29;
                        flag=1;
                }
                else
                {
                        run_month = 28;
                        flag=2;
                }
                
        for(i=1;i<month_2;i++)
        {
                
                if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
                {
                        sum = sum +31;
                }
                else if(i==2)
                {
                        if(flag==1)
                        {
                                sum = sum + 29;
                        }
                        else if(flag==2)
                        {
                                sum = sum +28;
                        }
                        
                }
                else
                {
                        sum = sum +30;
                }
        }
        
        for(i=1;i<month_1;i++)
        {
                
                if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
                {
                        sum = sum -31;
                }
                else if(i==2)
                {
                        if(flag==3)
                        {
                                sum = sum - 29;
                        }
                        else if(flag==4)
                        {
                                sum = sum -28;
                        }
                        
                }
                else
                {
                        sum = sum -30;
                }
        }
        printf("%d\n",sum);
        printf("%d\n",year_1);
        
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-5 01:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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