| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1530 人关注过本帖
标题:請問一下,別人寫的程式語言的ˊ疑惑
只看楼主 加入收藏
adssc
Rank: 2
等 级:论坛游民
威 望:1
帖 子:61
专家分:32
注 册: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编辑过]

搜索更多相关主题的帖子: include int i++ printf abs 
2018-09-12 21:26
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册: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 );
}

2018-09-13 08:47
快速回复:請問一下,別人寫的程式語言的ˊ疑惑
数据加载中...
 
   



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

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