關於if..else..及for迴圈的簡單小練習(一)
阿新 • • 發佈:2019-01-28
作為程式化結構設計語言,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迴圈學習過後的簡單的練習,歡迎大佬指導。