《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; }