C語言 -- c語言練習題——基礎1
《c語言練習題——基礎1》
http://blog.csdn.net/ivan804638781/article/details/52387884
《c語言練習題——基礎2》
http://blog.csdn.net/ivan804638781/article/details/52388233
《c語言練習題——基礎3》
http://blog.csdn.net/ivan804638781/article/details/52388242
《c語言練習題——基礎4》
http://blog.csdn.net/ivan804638781/article/details/52388249
《c語言練習題——整數演算法訓練》
http://blog.csdn.net/ivan804638781/article/details/52388254
《c語言練習題——遞迴和棧程式設計訓練》
http://blog.csdn.net/ivan804638781/article/details/52388259
《c語言練習題——字串訓練》
http://blog.csdn.net/ivan804638781/article/details/52388267
《c語言練習題——指標和連結串列訓練》
http://blog.csdn.net/ivan804638781/article/details/52388279
《c語言練習題——基礎1》
1.求a和b的最大公約數
gcd(a ,b)= gcd(b, a%b)
例:gcd(36,24) =gcd(24, 12 ) =gcd(12, 0 )
2.求100~200間的所有素數,每行列印5個素數
3.將整數轉換為10進位制、2進位制、16進位制的數字串
4.整數陣列的氣泡排序(從小到大)
5.計算字串中的單詞數。
單詞:由空格分開的連續字母數字串。
/***************************************************** copyright (C), 2014-2015, Lighting Studio. Co., Ltd. File name: Author:Ivan Version:0.1 Date: Description:求a和b的最大公約數 gcd(a ,b)= gcd(b, a%b) 例:gcd(36,24) =gcd(24, 12 ) =gcd(12, 0 )(9) Funcion List: *****************************************************/ #include <stdio.h> int gcd(int a, int b) //跳過,一般從主函式看起 { int x, y, i; if (a > b) //先找到兩個數中較大的那個,作為除數 { y = b; x = a; } else { y = a; x = b; } while (1) { if (x % y == 0) //若餘數不為0,則y還不是最大公約數 { break; } i = x % y; //餘數賦值給y x = y; //兩個數中較小的值y賦值給x y = i; //迴圈,直到餘數為0,則y就是最大公約數 } return y; } int main() { int a, b; int i; scanf("%d%d", &a, &b); i = gcd(a,b); //得到最大公約數 printf("最大公約數 = %d\n", i); return 0; }
/***************************************************** copyright (C), 2014-2015, Lighting Studio. Co., Ltd. File name: Author:Ivan Version:0.1 Date: Description:求100~200間的所有素數,每行列印5個素數(11) Funcion List: *****************************************************/ #include <stdio.h> int main() { int i, j, k = 0; int s1[100]; for (i = 100; i <= 200; i++) { for (j = 2; j <= i; j++) //兩個for迴圈,第一個迴圈是100-200每一個數,第二個迴圈是判斷該數是否是素數 { if (i == j) { s1[k++] = i; //若是就放入陣列 } if (i % j == 0) { break; //若不是就退出,換下一個數 } } } i = 0, j = 1; while (k != 0) { printf("%d ",s1[i]); //輸出素數 if (j % 5 == 0) { printf("\n"); //每五個一行 } i++; j++; k--; //k:總共有k個素數 } printf("\n"); return 0; }
/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Ivan Version:0.1 Date:
Description:將整數轉換為10進位制、2進位制、16進位制的數字串(12)
Funcion List:
*****************************************************/
#include <stdio.h>
void two(int n);
void ten(int n);
void sixteen(int n);
int main()
{
int n;
scanf("%d", &n);
two(n);
ten(n);
sixteen(n);
return 0;
}
void two(int n)
{
int i = 0;
int s1[100];
while(n != 0)
{
s1[i] = n % 2;
n = n / 2;
i++;
}
for(i = i - 1; i >= 0; i--)
{
printf("%d", s1[i]);
if(i % 4 == 0)
{
printf(" ");
}
}
printf("\n");
}
void ten(int n)
{
int i = 0;
int s1[100];
while(n != 0)
{
s1[i] = n % 10;
n = n / 10;
i++;
}
for(i = i -1; i >= 0; i--)
{
printf("%d",s1[i]);
}
printf("\n");
}
void sixteen(int n)
{
int i = 0, j;
char s1[100];
while(n != 0)
{
switch(n % 16)
//十六進位制的餘數,在>=10時,變為A-F可以用switch,其餘相似
{
case 0:s1[i] = '0';break;
case 1:s1[i] = '1';break;
case 2:s1[i] = '2';break;
case 3:s1[i] = '3';break;
case 4:s1[i] = '4';break;
case 5:s1[i] = '5';break;
case 6:s1[i] = '6';break;
case 7:s1[i] = '7';break;
case 8:s1[i] = '8';break;
case 9:s1[i] = '9';break;
case 10:s1[i] = 'A';break;
case 11:s1[i] = 'B';break;
case 12:s1[i] = 'C';break;
case 13:s1[i] = 'D';break;
case 14:s1[i] = 'E';break;
case 15:s1[i] = 'F';break;
}
n = n / 16;
i++;
}
/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Ivan Version:0.1 Date:
Description:整數陣列的氣泡排序(從小到大)(13)
Funcion List:
*****************************************************/
#include <stdio.h>
#define N 5
int main()
{
int i, j, t;
int a[10];
for (i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}
for (i = 0; i < N - 1 ; i++)
{
for (j = 0; j < N - 1 - i; j++)
//氣泡排序,兩個迴圈,每一次都把最大的數移到最上面,重複移N-1次,完成N個數排序
{
if (a[j + 1] < a[j])
{
t = a[j + 1];
a[j + 1] = a[j];
a[j] = t;
}
}
}
for (i = 0; i < 5; i++)
{
printf("%d\n", a[i]);
}
return 0;
}
/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Ivan Version:0.1 Date:
Description:計算字串中的單詞數。
單詞:由空格分開的連續字母數字串。
Funcion List:
*****************************************************/
#include <stdio.h>
int count_string(char *string)
{
int sum = 0;
char *p = NULL;
p = string;
while(*p != '\n')
{
if((*p >= '0' && *p <= '9') || (*p >= 'a' && *p <= 'z'))
{
sum++;
while((*p >= '0' && *p <= '9') || (*p >= 'a' && *p <= 'z'))
{
p++;
}
}
p++;
}
return sum;
}
int main()
{
char string[1024] = "0010 hello world hello c 10086 ! \n";
int sum = 0;
sum = count_string(string);
printf("count = %d\n",sum);
return 0;
}