鱼C论坛

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

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

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

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

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

x
那位大佬能纤细讲解一下
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         char name;
  5.         int height;
  6.         double weight,in,lb;
  7.        
  8.         printf("请输入您的姓名:");
  9.         scanf("%s",&name);
  10.         printf("请输入您的身高(cm):");
  11.         scanf("%d",&height);
  12.         printf("请输入您的体重(kg):");
  13.         scanf("%lf",&weight);
  14.        
  15.         printf("======正在为您转换======\n");
  16.         in = height/2.54;
  17.         lb = weight/2.20;
  18.         printf("%s的身高是%.2lf(in),体重是%.2lf(lb)\n",name,in,lb);
  19.        
  20.         return 0;
  21. }
复制代码

划红线的不懂

划红线的不懂

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

请问一下这个咋变成小甲鱼呢,右面是devc++,为啥下面就没内容了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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


上面两行代码是一样的效果,大多数人会选择第1种
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

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

        凡是数组型的变量,其标识符代表的就是数组的起始地址,加了索引后,才成为普通变量,例如:
  1.         char s[] = {"I love fishC"}  ;
复制代码

        s 是字符串的首地址,s[0] 是普通 char 型变量,s[0] = 'I',表达式 & s[0] 与 s 是一个意思,表达的都是字符串 s 的起始地址。
        scanf() 只有在读取字符串时才不需要取址操作,读取其它任何非数组型变量时,都必须使用取址操作。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-7 10:27:04 | 显示全部楼层
  1. for(i=1;i<month_2;i++)
  2.         {
  3.                
  4.                 if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
  5.                 {
  6.                         sum = sum +31;
  7.                 }
  8.                 else if(i==2)
  9.                 {
  10.                         if(flag=1)
  11.                         {
  12.                                 sum = sum + 29;
  13.                         }
  14.                         else if(flag=2)
  15.                         {
  16.                                 sum = sum +28;
  17.                         }
  18.                        
  19.                 }
  20.                 else
  21.                 {
  22.                         sum = sum +30;
  23.                 }
  24.         }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  2. int main()
  3. {
  4.         char a[11];//生日
  5.         char b[11];//现在
  6.         int i;
  7.         int sum=365;
  8.         int day=365;
  9.         int run_month;
  10.         int flag;
  11.        
  12.         printf("请输入你的生日:(如1988-05-20):");
  13.         for(i=0;i<10;i++)
  14.         {
  15.                 scanf("%c",&a[i]);
  16.         }
  17.         a[10]='\0';
  18.         printf("%s\n",a);
  19.        
  20.         printf("请输入现在的时期:(如2009-12-07):");
  21.         getchar();
  22.         for(i=0;i<10;i++)
  23.         {
  24.                 scanf("%c",&b[i]);
  25.         }
  26.         b[10]='\0';
  27.         printf("%s\n",b);
  28.        
  29.         int year_2 = (int)(b[0]-'0')*1000+(int)(b[1]-'0')*100+(int)(b[2]-'0')*10+(int)(b[3]-'0');
  30.         int year_1=(int)(a[0]-'0')*1000+(int)(a[1]-'0')*100+(int)(a[2]-'0')*10+(int)(a[3]-'0');
  31.         int month_2=(int)(b[5]-'0')*10+(int)(b[6]-'0');
  32.         int month_1=(int)(a[5]-'0')*10+(int)(a[6]-'0');
  33.         int day_2=(int)(b[8]-'0')*10+(int)(b[9]-'0');
  34.         int day_1=(int)(a[8]-'0')*10+(int)(a[9]-'0');
  35.        
  36.         while(year_1<year_2)
  37.         {
  38.                 if(year_1%4==0 && year_1%100!=0)
  39.                 {
  40.                         day=366;
  41.                         run_month = 29;
  42.                         flag = 3;
  43.                 }
  44.                 else if(year_1%400==0)
  45.                 {
  46.                         day=366;
  47.                         run_month = 29;
  48.                         flag=3;
  49.                 }
  50.                 else
  51.                 {
  52.                         day=365;
  53.                         run_month = 28;
  54.                         flag=4;
  55.                 }
  56.                
  57.                
  58.                 sum = sum + day;
  59.                 year_1 = year_1+1;
  60.         }
  61.        
  62.         if(year_2%4==0 && year_2%100!=0)
  63.                 {
  64.                         run_month = 29;
  65.                         flag = 1;
  66.                 }
  67.                 else if(year_2%400==0)
  68.                 {
  69.                         run_month = 29;
  70.                         flag=1;
  71.                 }
  72.                 else
  73.                 {
  74.                         run_month = 28;
  75.                         flag=2;
  76.                 }
  77.                
  78.         for(i=1;i<month_2;i++)
  79.         {
  80.                
  81.                 if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
  82.                 {
  83.                         sum = sum +31;
  84.                 }
  85.                 else if(i==2)
  86.                 {
  87.                         if(flag==1)
  88.                         {
  89.                                 sum = sum + 29;
  90.                         }
  91.                         else if(flag==2)
  92.                         {
  93.                                 sum = sum +28;
  94.                         }
  95.                        
  96.                 }
  97.                 else
  98.                 {
  99.                         sum = sum +30;
  100.                 }
  101.         }
  102.        
  103.         for(i=1;i<month_1;i++)
  104.         {
  105.                
  106.                 if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
  107.                 {
  108.                         sum = sum -31;
  109.                 }
  110.                 else if(i==2)
  111.                 {
  112.                         if(flag==3)
  113.                         {
  114.                                 sum = sum - 29;
  115.                         }
  116.                         else if(flag==4)
  117.                         {
  118.                                 sum = sum -28;
  119.                         }
  120.                        
  121.                 }
  122.                 else
  123.                 {
  124.                         sum = sum -30;
  125.                 }
  126.         }
  127.         printf("%d\n",sum);
  128.         printf("%d\n",year_1);
  129.        
  130.         return 0;
  131. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-6 17:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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