C語言基礎練習(2)

  1. 編寫一個程序,打印1-100中含有數字9的個數
int main()
{
    int i = 0;
    int count = 0;
    for(i = 1; i <= 100; i++)
    {
        if(i % 10 == 9)//打印個位含9的個數
        {
            count++;
        }
        if(i / 10 == 9)//打印十位含9的個數
        {
            count++;
        }
    }
    printf("count = %d\n",count);
    return 0;
}
  1. 打印1/1-1/2+1/3-1/4+…+1/99-1/100的結果
int main()
{
    int i = 0;
    double sum = 0.0;//結果含小數,定義爲浮點數
    int flag = 1;
    for(i = 1; i <= 100; i++)
    {
        sum += flag*(1.0 / i);//"/"左右兩邊有一個浮點數,結果即爲浮點數
        flag = -flag;
    }
    printf("sum = %lf\n",sum);
    return 0;
}
  1. 求一個數列十個元素的最大值
int main()
{
    int i = 0;
    int arr[10] = {0};
    int max = 0;
    for(i = 0; i < 10; i++)
    {
        scanf("%d",&arr[i]);
    }
    max = arr[0];
    for(i = 0; i < 10; i++)
    {
        if(max < arr[i])
        {
            max = arr[i];
        }
    }
    printf("最大數max = %d\n",max);
    return 0;
}
  1. 在一個有序數組中查找具體某個數字n
int main()
{
    int arr[10] = {1,2,3,4,5,6,7,8,9,10};
    int i = 0;
    int k = 7;//k爲要查找的數字
    for(i = 0; i < 10; i++)
    {
        if(arr[i] == k)
        {
            printf("找到了,下標爲:%d\n",i);
        }
    }
    if(i >= 10)
    {
        printf("找不到,該數組沒有需查找的數\n");
    }
    return 0;
}
//我們可以發現上述查找方式,一個一個查找,效率比較低
//下面介紹另一種方式,折半查找法(僅限於有序數列使用)
int main()
{
    int arr[10] = {1,2,3,4,5,6,7,8,9,10};
    int k = 7;
    int left = 0;
    int right = (sizeof(arr) / sizeof(arr[0])) - 1;
    while(left <= right)
    {
        int mid = (left + right) / 2;
        if(arr[mid] <= k)
        {
            left = mid + 1;
        }
        if(arr[mid] >= k)
        {
            right = mid - 1;
        }
        if(arr[mid] == k)
        {
            printf("找到了,下標爲:%d\n",mid);
        }
    }
    printf("找不到\n");
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章