数组和字符串简单练习
2015-07-21 23:36
253 查看
在c语言中,字符串不是基本的数据类型,而是以空字符(\0)结尾的char数组。
1.倒置一个int数组
int main(void) { int array[] = {23, 53, 53, 23, 231, 97, 234}; int i = 0; int min = 0; int max = sizeof(array) / sizeof(int) - 1; while(min < max) { int tmp = array[min]; array[min] = array[max]; array[max] = tmp; min ++; max --; } for (i = 0; i < (sizeof(array)/sizeof(int)); i++) { printf("%d\n", array[i]); } return 0; }
2.求一个数组中最大和第二大的数
int main(void) { int i = 0; int array[7] = {23, 53, 53, 23, 231, 97, 234}; int max = 0; int smax = 0; if (array[1] > array[0]) { max = array[1]; smax = array[0]; } else { max = array[0]; smax = array[1]; } for (i = 2; i < 7; i++) { if (max < array[i]) { smax = max; max = array[i]; } else if (array[i] < max && array[i] > smax) { smax = array[i]; } } printf("smax = %d\n", smax); printf("max = %d\n", max); return 0; }
3.中文汉字倒置
windows平台上字符集是gbk,一个汉字占两个字节。如果是在Linux平台上,字符集是utf8,一个汉字占三个字节。int main(void) { char a[] = "你好世界"; int length = 0; while(a[length]) { length++; } int min = 0; int max = length - 1; while(min < max) { char tmp = a[min]; a[min] = a[max - 1]; a[max - 1] = tmp; tmp = a[min+1]; a[min+1] = a[max]; a[max] = tmp; max -= 2; min += 2; } printf("%s\n", a); return 0; }
4.求字符串中中文和英文字符的个数
int main(void) { char a[] = "你dsf好知了sdf世界d"; int length = 0; int num = 0; int c_num = 0; while(a[length]) { if (a[length] < 0) { num ++; length += 2; } else { c_num++; length++; } } printf("num = %d, length = %d, c_num = %d\n", num ,length, c_num); return 0; }
5.冒泡排序
#include <stdio.h> int main(void) { int i = 0 , j = 0; int array[10]; for (i = 0; i < 10; i++) { scanf("%d", &array[i]); } for (i = 0; i < 10; i++) { for (j = 1; j < 10 - i; j++) { if (array[j-1] > array[j] ) { int tmp = array[j-1]; array[j-1] = array[j]; array[j] = tmp; } } } printf("------------------------------\n"); for (i = 0; i < 10; i++) { printf("%d\n", array[i]); } return 0; }
6.选择排序
#include <stdio.h> int main(void) { int i = 0 , j = 0; int array[10]; for (i = 0; i < 10; i++) { scanf("%d", &array[i]); } for (i = 0; i < 10; i++) { for (j = i + 1; j < 10; j++) { if (array[i] < array[j]) { int tmp = array[i]; array[i] = array[j]; array[j] = tmp; } } } printf("------------------------------\n"); for (i = 0; i < 10; i++) { printf("%d\n", array[i]); } return 0; }
相关文章推荐
- 设计模式_组合模式
- Refueling
- php开发中代码完好,图像或验证码不显示
- 【80X86汇编语言学习】【DOS功能调用】基本IO功能 (二)
- 初学Zigbee–IO口配置
- 敌兵布阵
- J2EE--日志记录之log4j
- 【安卓基础三】adb命令
- Mycat(4):消息表mysql数据库分表实践
- Matrix Admin 后台模板笔记
- 变量及函数的生存期、作用范围、链接属性
- java基础语法--02
- POJ 2479 Maximum sum & POJ 2573 Max Sequence (DP,最大连续子串和)
- 设计模式_适配器模式
- c++ vector
- Java谣言终结者之Arraylist和Linkedlist到底谁快
- ibatis+springmvc的dao实现+配置文件
- ZOJ 1048 Financial Management
- Hdu 2072 单词数【字符串】
- UITabBar自定义方式三(中间有按钮)