鱼C论坛

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

[已解决]请大家帮我找一下错误

[复制链接]
发表于 2020-3-30 10:08:22 | 显示全部楼层 |阅读模式

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

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

x
  1. #include <stdio.h>

  2. int main()
  3. {     
  4.          int a,b;
  5.                  float c;
  6.                  printf("请输入您的年龄:");
  7.                  scanf("%d",&a);
  8.                  if( a > 18 )
  9.                  {
  10.                          printf("您好,请输入您想要充值的金额:");
  11.                          scanf("%.2f",&c);
  12.                          if( c > 5 && c < 10000  )
  13.                          {
  14.                printf("充值成功!金额为%.2f",c);                         
  15.                          }
  16.                          else
  17.                          {
  18.                            printf("请您核对您的充值金额!充值金额下限为5元!上限为10000元!");
  19.                          }
  20.                  }
  21.                  else
  22.                  {
  23.                          printf("您未满十八周岁,禁止充值!");
  24.                  }

  25.                  
  26.          
  27. }
复制代码

这是错误的提示:

Compiling...
1.c
D:\c语言练手\s\1.c(6) : error C2018: unknown character '0xa3'
D:\c语言练手\s\1.c(6) : error C2018: unknown character '0xbb'
D:\c语言练手\s\1.c(7) : error C2146: syntax error : missing ';' before identifier 'printf'
执行 cl.exe 时出错.

s.exe - 1 error(s), 0 warning(s)
最佳答案
2020-3-30 10:39:09
Juniorboy 发表于 2020-3-30 10:27
啊啊,看到了,哈哈哈,谢谢啦,请您帮我解释一下什么是位宽呢,我刚才百度没看懂,小数宽度指的是点儿几 ...

直接拿例子说事儿~~
printf("%m.nf",c)
这里面格式化字符 %m.nf  就是float类型打印,其中m是最小位宽度,n是小数点后的位数。解释一下m为什么叫最小位宽度,若m写的过小不足以显示该数据的话,就会全部显示出来,只有当m大于数据的位数,才会起作用,m更多用于数据上下对齐。

在scanf的时候可以带有m,但是不能带n。带m是读取的字符个数最多为m个,而不是最小位宽度了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-30 10:12:10 | 显示全部楼层
两处错误,
1、第6行,float c; 分号写错了,你写成中文分号了
2、第12行,scanf,格式化符号不能设定位宽和小数宽度
  1. #include <stdio.h>

  2. int main()
  3. {     
  4.          int a,b;
  5.                  float c;
  6.                  printf("请输入您的年龄:");
  7.                  scanf("%d",&a);
  8.                  if( a > 18 )
  9.                  {
  10.                          printf("您好,请输入您想要充值的金额:");
  11.                          scanf("%f",&c);
  12.                          if( c > 5 && c < 10000  )
  13.                          {
  14.                printf("充值成功!金额为%.2f",c);                        
  15.                          }
  16.                          else
  17.                          {
  18.                            printf("请您核对您的充值金额!充值金额下限为5元!上限为10000元!");
  19.                          }
  20.                  }
  21.                  else
  22.                  {
  23.                          printf("您未满十八周岁,禁止充值!");
  24.                  }                     
  25. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-30 10:27:39 | 显示全部楼层
sunrise085 发表于 2020-3-30 10:12
两处错误,
1、第6行,float c; 分号写错了,你写成中文分号了
2、第12行,scanf,格式化符号不能设定位 ...

啊啊,看到了,哈哈哈,谢谢啦,请您帮我解释一下什么是位宽呢,我刚才百度没看懂,小数宽度指的是点儿几点儿几吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 10:39:09 | 显示全部楼层    本楼为最佳答案   
Juniorboy 发表于 2020-3-30 10:27
啊啊,看到了,哈哈哈,谢谢啦,请您帮我解释一下什么是位宽呢,我刚才百度没看懂,小数宽度指的是点儿几 ...

直接拿例子说事儿~~
printf("%m.nf",c)
这里面格式化字符 %m.nf  就是float类型打印,其中m是最小位宽度,n是小数点后的位数。解释一下m为什么叫最小位宽度,若m写的过小不足以显示该数据的话,就会全部显示出来,只有当m大于数据的位数,才会起作用,m更多用于数据上下对齐。

在scanf的时候可以带有m,但是不能带n。带m是读取的字符个数最多为m个,而不是最小位宽度了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-3-30 10:55:12 | 显示全部楼层
sunrise085 发表于 2020-3-30 10:39
直接拿例子说事儿~~
printf("%m.nf",c)
这里面格式化字符 %m.nf  就是float类型打印,其中m是最小位宽 ...

真棒!谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-5 17:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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