标题:T为样本数,N为每个样本中的元素个数。每个N元素中求不同S(S的值T、R、C表 ...
只看楼主
TIMFannie
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2017-10-15
结帖率:84.21%
已结贴  问题点数:20 回复次数:6 
T为样本数,N为每个样本中的元素个数。每个N元素中求不同S(S的值T、R、C表示形状用来求面积)得出的面积最大值。
#include<stdio.h>
#define PI 3.14159
main()
{
  int T,N,a,b,j;
  float max,q[1000];
  char s;
  scanf("%d",&T);
 
  for(int i=1;i<=T;i++)
  {
      while(scanf("%d\n",&N)&&(N>1000||N<=0));
/*这里不小心加了\n,发现奇怪的问题:N的值不再是我输入的值。结果也出现了问题,这是什么情况。查了百度说是略掉后面的空白字符,直到不是空白字符停止,可是怎么会改变N的值以及我要的结果*/
    getchar();
    for(j=0;j<N;j++)
      {
       scanf("%c",&s);
       if(s=='T')
       {
       scanf("%d%d",&a,&b);
       q[j]=a*b/2.0;
       }
      
       if(s=='R')
       {
           scanf("%d%d",&a,&b);
           q[j]=a*b;
       }
      
         if(s=='C')
       {
         scanf("%d",&a);
           q[j]=PI*a*a;
       }
         
    }
      max=q[0];
      for(int k=1;k<N;k++)
         if(max<q[k])max=q[k];
      printf("%.2f\n",max);   
         
      }

我知道怎么解,就是这个scanf()内加了个\n和百度说的不是很相同。。。好像讲的不是很清楚。。\n在scanf()中到底会产生什么影响。谢谢了,各位师父!   
   
   
   
   
搜索更多相关主题的帖子: 元素 面积 int max scanf 
2017-12-10 01:11
TIMFannie
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2017-10-15
得分:0 
麻烦大家了。有点烦。
2017-12-10 01:12
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
scanf内的\n是“空白字符”
空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符,空白符可以是space,tab,newline等等,直到第一个非空白符出现为止。
2017-12-10 05:20
TIMFannie
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2017-10-15
得分:0 
回复 3楼 吹水佬
那我在这个while(scanf("%d\n",&N)&&(N>1000||N<=0))输入后加上printf(“%d”,N);,N的值好像不是我输入的值。怎么回事?如果他只是略去后面的空白符,对N本身应该不会产生影响吧,好奇怪
2017-12-10 11:07
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
    //while(scanf("%d\n",&N)&&(N>1000||N<=0))
    while(scanf("%d",&N)&&(N>1000||N<=0))

2017-12-10 22:36
TIMFannie
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2017-10-15
得分:0 
好吧,难道是我想太多。scanf()中加\n 出现的影响还是没有搞懂
2017-12-10 23:14
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:20 
回复 6楼 TIMFannie
函数名: scanf
功 能: 执行格式化输入
用 法: int scanf(char *format[,argument,...]);

scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。

其调用格式为:  scanf("<格式化字符串>",<地址表>);

scanf()函数返回成功赋值的数据项数,出错时则返回EOF。

其控制串由三类字符构成:
 
1。格式化说明符;
2。空白符;
3。非空白符 ;

(A)格式化说明符

格式字符           说明
%a                 读入一个浮点值(仅C99有效)
%A                 同上
%c                 读入一个字符
%d                 读入十进制整数
%i                 读入十进制,八进制,十六进制整数
%o                 读入八进制整数
%x                 读入十六进制整数
%X                 同上
%c                 读入一个字符
%s                 读入一个
%f                 读入一个浮点数
%F                 同上
%e                 同上
%E                 同上
%g                 同上
%G                 同上
%p                 读入一个指针
%u                 读入一个无符号十进制整数
%n                 至此已读入值的等价字符数
%[]                扫描字符集合
%%                 读%符号
%*                 指定类型的数据但不保存
比如:
百分号(%)与格式符之间的星号(*)表示读指定类型的数据但不保存。因此,
scanf( "%d %*c %d", &x, &y );
对 10/20 的读入操作中,10 放入变量 x,20 放入 y。      
 
附加格式说明字符表
修饰符                       说明
L/l 长度修饰符               输入"长"数据
h 长度修饰符                 输入"短"数据
W 整型常数                   指定输入数据所占宽度
* 星号                       空读一个数据
hh,ll同上h,l但仅对C99有效。

(B)空白字符
空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符,空白符可以是space(空格),tab(制表符),newline(换行符)等等,直到第一个非空白符出现为止。

(C)非空白字符
一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。但在输入时必须输入这些字符。否则就会出错 。
2017-12-11 05:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-483266-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.372741 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved