關於if..else..及for循環的簡單小練習(一)

   作爲程序化結構設計語言,C語言的三種語句結構:循環結構,順序結構,選擇結構 就顯得尤其的重要。
   在簡單的學習過循環結構後,我們應該對幾種循環語句有了簡單的瞭解和運用了,接下來,我們就做幾道簡單編程題練習一下。
   1、寫一個函數返回參數二進制中 1 的個數
     比如: 15       0000 1111       4 個 1
     程序原型:
    int  count_one_bits(unsigned int value)
    {
     // 返回 1的位數
    }
    對於這道題,接下來我就用幾種方法簡單的來實現一下:
#include<stdio.h>
int count_one_bits(int a) //方法1
{
    int count = 0;
    int i = 0;
    for (i = 0; i < 32; i++)
    {
        if ((a & 1) == 1)
            count++;
        a = a >> 1;
    }
    return count;
}
int count_one_bits( int a) //方法2
{
    int count = 0;
    while (a)
    {
        count++;
        a = a&(a - 1);
    }
    return count;
}
int count_one_bits(unsigned int a) //方法3
{
    int count = 0;
    int i = 0;
    for (i = 0; i < a; a = a >> 1)
    {
        if (a % 2 == 1)
            count++;
    }
    return count;
}
int count_one_bits(unsigned int a)//方法4
{
    int count = 0;
    while (a != 0)
    {
        if (a % 2 == 1)
            count++;
        a = a / 2;
    }
}
int main()
{
    int a = -1;
    int ret=count_one_bits(a);
    printf("%d \n", ret);
    system("pause");
    return 0;
} 
  **2、把"welcome to shankeda!"與"####################"結合起來,
  讓字符串慢慢以
       "w##################!"
       "we################a!"
                ...
       "welcome to shankeda!"
  的形式輸出**。          
#include<stdio.h>
#include<string.h>
#include<windows.h>
int main()
{    //逐行打印
    char arr1[] = "welcome to shankeda!";
    char arr2[] = "####################";
    int left = 0;
    //int right = sizeof(arr1) / sizeof(arr1[0]) - 2;
    int right = strlen(arr1)-1;
    while (left < right)
    {
        Sleep(1000);
        arr2[left] = arr1[left];
        arr2[right] = arr1[right];
        printf("%s\n", arr2);
        left++;
        right--;
    }
    system("pause");
    return 0;
}  
   **3、 交換兩個大小相等的數組中的所有元素。**
#include<stdio.h>
int main()
{
    int arr1[] = { 0, 1, 3, 4, 5 };
    int arr2[] = { 2, 3, 4, 6, 7 };
    int tmp = 0;
    int sz = sizeof(arr1) / sizeof(arr1[0]);
    int i = 0;
    for (i = 0; i < sz; i++)
    {
        tmp = arr1[i];
        arr1[i] = arr2[i];
        arr2[i] = tmp;
    }
    for (i = 0; i < sz; i++)
    {
        printf("%d ", arr1[i]);
    }
    printf("\n");
    for (i = 0; i < sz; i++)
    {
        printf("%d ", arr2[i]);
    }
    system("pause");
    return 0;
}
   **4、判斷兩個數組有無相同元素,有則返回有,沒有則返回沒有。(若遇到有好幾個相同的數字,只返回一個有即可)**
#include<stdio.h>
int main()
{
    int arr1[] = { 1, 3, 5, 7, 9 };
    int arr2[] = { 3, 4, 5, 6, 7 };
    int i = 0;
    for (i = 0; i < sizeof(arr1) / sizeof(arr1[0]); i++)
    {
        int j = 0;
        for (j = 0; j < sizeof(arr2) / sizeof(arr2[0]); j++)
        {
            if (arr1[i] == arr2[j])
            {
                printf("有\n");
                break;
            }
        }
        if (j < sizeof(arr2) / sizeof(arr2[0]))
            break;
    }
    if (i >= sizeof(arr1) / sizeof(arr1[0]))
        printf("沒有\n");
    system("pause");
    return 0;
} 
 以上就是我對於if..else..語句以及for循環學習過後的簡單的練習,歡迎大佬指導。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章