| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 120 人关注过本帖
标题:請問一下,別人寫的程式語言的ˊ疑惑
只看楼主 加入收藏
adssc
Rank: 1
等 级:新手上路
帖 子:29
专家分:4
注 册:2018-4-20
结帖率:100%
  已结贴   问题点数:20  回复次数:1   
請問一下,別人寫的程式語言的ˊ疑惑
題目是:查詢最接近數字的練習 (使用陣列)

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int i,q,n[10];
    for(i=1;i<=10;i++)
    {
        scanf("%d",&n[i-1]);
    }
    printf("Q: ");
    scanf("%d",&q);
    int nearest_n = n[0];
    for(i=1;i<10;i++);
    {
        if(abs(q - n[i]) < abs(q-nearest_n) || (abs(q - n[i]) == abs(q - nearest_n) && n[i] < nearest_n)) //這句意思是甚麼?不太懂
           nearest_n = n[i];
    }
    printf("%d\n",nearest_n);
    system("pause");
}

[此贴子已经被作者于2018-9-12 21:27编辑过]

7 天前 21:26
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:260
帖 子:5788
专家分:32992
注 册:2011-1-18
  得分:20 
if(abs(q - n[i]) < abs(q-nearest_n) || (abs(q - n[i]) == abs(q - nearest_n) && n[i] < nearest_n)) //這句意思是甚麼?不太懂
    nearest_n = n[i];
abs是取绝对值的函数。
整句话就是 如果 n[i]比nearest_n更接近qn[i]和nearest_n与q距离相等但n[i]小于nearest_n
即 在n中取与q最接近的一个数,如果有多个数与q同样接近,取其中值最小的一个

整个代码中最不能容忍的就是 for(i=1;i<=10;i++) 这一句了,索引竟然从1开始
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main( void )
{
    int n[10];
    for( size_t i=0; i!=sizeof(n)/sizeof(*n); ++i )
        scanf( "%d", &n[i] );

    int q;
    printf( "Q: " );
    scanf( "%d", &q );

    int nearest_n = n[0];
    for( size_t i=1; i!=sizeof(n)/sizeof(*n); ++i )
    {
        int a = abs( q - n[i] ); // 这其中有两个未定义行为,暂不多言
        int b = abs( q - nearest_n );
        if( a<b || (a==b && n[i]<nearest_n) )
            nearest_n = n[i];
    }

    printf( "%d\n", nearest_n );
}

6 天前 08:47







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

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