您的位置:首页 > 其它

20150605字符串及内存管理_练习

2015-06-09 19:44 375 查看
//
// main.c
// IOS150605_Exercise
//
// Created by
Peng Junlong on 15/6/5.
// Copyright (c) 2015年 Peng Junlong. All rights reserved.
//

//*********************
//* *
//* 字符串练习 *
//* *
//*********************
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>

//字符串排序。比较三个字符串的大小,然后按从小到大的顺序将字符串输出。

//比如:
//输入
//asdfwd
//ddrwf
//ffweff

//输出为
//asdfwd
//ddrwf
//ffweff

//int main(int argc, const char * argv[]) {
// char str1[100] = {};
// char str2[100] = {};
// char str3[100] = {};
// char *p1 = NULL;
// char *p2 = NULL;
// char *p3 = NULL;
// printf("Enter three String:");
// gets(str1);
// gets(str2);
// gets(str3);
// if (strcmp(str1, str2) < 0) {
// if (strcmp(str1, str3) < 0) {
// p1 = str1;
// if (strcmp(str2, str3) < 0) {
// p2 = str2;
// p3 = str3;
// }
// else
// {
// p2 = str3;
// p3 = str2;
// }
// }
// else
// {
// p1 = str3;
// p2 = str1;
// p3 = str2;
// }
// }
// else{
// if (strcmp(str2, str3) < 0) {
// p1 = str2;
// if (strcmp(str1, str3) < 0) {
// p2 = str1;
// p3 = str3;
// }
// else
// {
// p2 = str3;
// p3 = str1;
// }
// }
// else
// {
// p1 = str3;
// p2 = str2;
// p3 = str1;
// }
// }
// printf("%s\n",p1);
// printf("%s\n",p2);
// printf("%s\n",p3);
// return 0;
//}

//定义一个比较大的字符数组,然后从键盘进行初始化数组值,输出输入字符串的长度

//比如:
//输入
//asdfwd

//输出为
//6
//int main(int arg, const char *argv[])
//{
// char aString[100] = {};
// //scanf("%s",aString);
// gets(aString);
// printf("String length:%lu\n",strlen(aString));
//
// return 0;
//}

//定义两个元素个数相同的字符数组,然后对其中一个字符数组进行初始化,

//利用字符串处理函数将第一个数组中的内容复制到第二个数组中,并将两个数组中的内容分别输出。

//比如:
//输入
//asdfwd

//输出为
//asdfwd
//asdfwd

//int main(int argc, const char *argv[])
//{
// char srcString[100];
// char desString[100];
// gets(srcString);
// strcpy(desString, srcString);
// printf("%s\n",desString);
//
// return 0;
//}

//定义一个字符数组,初始化数组,将内容输出利用memset函数将数组中的内容全部初始化为a,并将数组内容输出
//输入
//sgfgeasdfw

//输出为
//sgfgeasdfw
//aaaaaaaaaa

//int main(int arg, const char *argv[])
//{
// char srcString[100];
// gets(srcString);
//
// memset(srcString, 'a', strlen(srcString));
// printf("%s\n",srcString);
//
// return 0;
//}

//定义两个元素个数相同的数组,然后对其中一个数组进行随机初始化,

//利用memcpy函数将第一个数组中的内容复制到第二个数组中,并将两个数组中的内容分别输出。

//比如:
//输入
//asdfwd

//输出为
//asdfwd
//asdfwd

//int main(int arg, const char *argv[])
//{
// int src[10];
// int des[10];
// //srand(time(NULL));
// int i=0;
// for (i=0; i<10; i++) {
// src[i] = rand()%100;
// }
//
// memcpy(des, src, 4*i);
//
// for (i=0; i<10; i++) {
// printf("%d ",src[i]);
// }
// printf("\n");
// for (i=0; i<10; i++) {
// printf("%d ",des[i]);
// }
//
// return 0;
//}

//比较一个字符串2在字符串1中是否存在,如果存在输出Y,否则输出N

//比如:
//输入
//asdfwd
//dfw

//输出为
//Y

//int main(int arg, const char *argv[])
//{
// char faString[100];
// char subString[20];
// scanf("%s%s",faString,subString);
// if(strstr(faString, subString))
// {
// printf("Y\n");
// }
// else
// printf("N\n");
//
// return 0;
//}

//查找一个字符串2在字符串1中出现的次数,
//int subStringCount( char str[], char substr[] )
//{
// int i, j, check ,count = 0;
// int len = (int)strlen( str ); /*取得字符串长度,不包括'\0'*/
// int sublen = (int)strlen( substr );
// for( i = 0; i < len; i++ )
// {
// check = 1; /*检测标记*/
// for( j = 0; j + i < len && j < sublen; j++ ) /*逐个字符进行检测,在sublen长度内,一旦出现不同字符便将check置为0*/
// {
// if( str[i + j] != substr[j] )
// {
// check = 0;
// break;
// }
// }
// if( check == 1 ) /*在sublen长度内的字符都相等*/
// {
// count++;
// i = i + sublen; /*调整检测起始位置*/
// }
// }
// return count;
//}
//
//int main(int arg,const char *argv[])
//{
// char faString[100];
// char subString[10];
// int count = 0;
// scanf("%s%s",faString,subString);
// count = subStringCount(faString,subString);
//
// printf("count = %d\n",count);
//
// return 0;
//}

//查找一个字符串2在字符串1中所有出现的位置

//比如:
//输入
//asdfwd
//df

//输出为
//3

//int findSubStringLocation(char faString[],char subString[])
//{
// int i;
// int j;
// int location = 0;
// int check = 1;
// int falen = (int)strlen(faString);
// int sulen = (int)strlen(subString);
// for (i=0; i<falen; i++) {
// check = 1;
// for (j = 0; j+i<falen && j<sulen; j++) {
// if (faString[i+j] != subString[j]) {
// check = 0;
// break;
// }
// }
// if (check == 1) {
// location = i+1;
// i = i+sulen;
// break;
// }
// }
//
// return location;
//}
//
//int main(int arg, const char *argv[])
//{
// char faString[100];
// char subString[100];
// int location;
// scanf("%s%s",faString,subString);
// location = findSubStringLocation(faString, subString);
//
// printf("Location = %d\n",location);
//
// return 0;
//}

//字符串原地压缩。题目描述:“eeeeeaaaff" 压缩为 "e5a3f2"。

//字符串压缩算法,把s字符串压缩处理后结果保存在res中
//

//比如:
//输入
//aaaaeefggg

//输出为
//a4e2f1g3

//char *compressedString(char src[])
//{
// char compressedStr[100];
// int i = 0;
// int j = 0;
// int srclen = (int)strlen(src);
// int num = 1;
// int k = 0;
// for (i=0; i<srclen;i+=num) {
// num = 1;
// if (src[i] != '@') {
// for (j=i; j<srclen; j++) {
// if (src[i] == src[j+1]) {
// src[j+1] = '@';
// num++;
// }
// else
// break;
// }
// compressedStr[k] = src[i];
// compressedStr[k+1] = '0'+num;
// k += 2;
// }
//
// }
//
// return compressedStr;
//}
//
//int main(int arg, const char *argv[])
//{
// char sourceString[100] = {};
// //char compressString[100] = {};
// scanf("%s",sourceString);
// //compressString = compressedString(sourceString);
//
// printf("Compressed String = %s\n",compressedString(sourceString));
//
// return 0;
//}

//字符串原地压缩。题目描述:"e5a3f2" 解压缩为 “eeeeeaaaff"。

//字符串压缩算法,把s字符串压缩处理后结果保存在res中
//

//比如:
//输入
//a4e2f1g3

//输出为
//aaaaeefggg

//char *deCompressString(char compreStr[])
//{
// char deCompressedStr[100];
// int i = 0;
// int j = 0;
// int count = 0;
// int k = 0;
// int comprestrLen = (int)strlen(compreStr);
// for (i=0; i<comprestrLen; i+=2) {
// count = compreStr[i+1]-'0';
// for (j=0; j < count; j++) {
// deCompressedStr[k] = compreStr[i];
// k++;
// }
// }
//
// return deCompressedStr;
//}
//
//int main(int argc, const char *argv[])
//{
// char sourceString[100] = {};
// //char compressString[100] = {};
// scanf("%s",sourceString);
// //compressString = compressedString(sourceString);
//
// printf("Compressed String = %s\n",deCompressString(sourceString));
//
// return 0;
//}

//求一个字符串s的最大连续递增数字子串。
//

//比如:
//输入
//f123fffwf3210abcd

//输出为
//123
//
//输入
//abcd765bbw1357f123

//输出为
//123

//char *mostStraightSubString(char srcString[])
//{
// char *msSubString[100];
// int subLen[100];
// int straightLen = 0;
// char *p;
// int i = 0;
// int j = 0;
// int maxLen;
// int index = 0;
// for (p = srcString; ; p++) {
// if (*p >= '0' && *p <= '9') {
// if (straightLen == 0) {
// straightLen = 1;
// }
// else
// {
// if (*(p-1) == *p-1) {
// straightLen++;
// }
// else
// {
// if (straightLen > 0) {
// msSubString[i] = p-straightLen;
// subLen[i] = straightLen;
// i++;
// }
// straightLen = 1;
// }
// }
// }
// else{
// if (straightLen > 0) {
// msSubString[i] = p-straightLen;
// subLen[i] = straightLen;
// i++;
// }
// straightLen = 0;
// if (*p == '\0') {
// break;
// }
// }
// }
//
// maxLen = subLen[0];
// for (j=0; j<i; j++) {
// if (subLen[j] > maxLen) {
// maxLen = subLen[j];
// index = j;
// }
// }
// *(msSubString[index]+maxLen) = '\0';
// return msSubString[index];
//}
//int main(int argc, const char *argv[])
//{
// char sourceString[100] = {};
// //char compressString[100] = {};
// scanf("%s",sourceString);
// //compressString = compressedString(sourceString);
//
// printf("Most Straight SubString = %s\n",mostStraightSubString(sourceString));
//
// return 0;
//}

//统计任意串中大写字母的个数。
//
//

//比如:
//输入
//234ADWDGfwDW

//输出为
//7

//int main(int arg, const char *argv[])
//{
// char sourceString[100] = {};
// scanf("%s",sourceString);
// int capitalcount = 0;
// int smalllettercount = 0;
// int numcount = 0;
// int len = (int)strlen(sourceString);
// for (int i=0; i<len; i++) {
// if (isupper(sourceString[i])) {
// capitalcount++;
// }
// else if(islower(sourceString[i]))
// {
// smalllettercount++;
// }
// else if(isdigit(sourceString[i]))
// {
// numcount++;
// }
// }
//
// printf("Capitals number:%d\n",capitalcount);
// printf("Small Letters number:%d\n",smalllettercount);
// printf("number:%d\n",numcount);
// return 0;
//}

//输入一段字符串将单词升序排列

//比如:
//输入 come good goals bad bed

//输出:
//bad bed come goals good

//void sortWord(char src[])
//{
// char *p = src;
// char *word[100];
// int i=0;
// char *temp = NULL;
// while ((p = strtok(p, " "))) {
// word[i] = p;
// if (i!=0) {
// *(p-1) = '\0';
// }
// p = NULL;
// i++;
// }
//
// for (int j=0; j<i; j++) {
// printf("%s ",word[j]);
// }
// printf("\n");
// for (int j = 0; j<i-1; j++) {
//
// for (int k=0; k<i-j-1; k++) {
// if (strcmp(word[k], word[k+1])>0) {
// temp = word[k];
// word[k] = word[k+1];
// word[k+1] = temp;
// }
// }
// }
//
// for (int j=0; j<i; j++) {
// printf("%s ",word[j]);
// }
//
// printf("\nWorld's count= %d\n",i);
//}
//
//int main(int argc, const char *argv[])
//{
// char sourceString[100] = {};
// gets(sourceString);
// sortWord(sourceString);
// return 0;
//}

//输入一段字符串,把相同的字符按出现顺序,归在一起,并压缩

//比如:
//输入 SamSameCome

//输出:
//SSaammmeeCo
//S2a2m3e2C1o1

//char *mergeString(char src[])
//{
// int srcLen = (int)strlen(src);
// int count = 1;
// char des[100];
// int index = 0;
// for(int i=0;i<srcLen;i++)
// {
// count = 1;
// for (int j=i+1; j<srcLen && src[i] != '\0'; j++) {
// if (src[i] == src[j]) {
// count++;
// src[j] = '\0';
// }
// }
// if (src[i] != '\0') {
// for (int k=0; k<count; k++) {
// des[index] = src[i];
// index++;
// }
// }
// }
// des[index] = '\0';
// printf("%s\n",des);
//
// return des;
//}
//
//int main(int argc, const char *argv[])
//{
// char sourceString[100] = {};
// gets(sourceString);
// char *mstr = mergeString(sourceString);
// printf("%s\n",mstr);
//
// printf("%s\n",compressedString(mstr));
//
// return 0;
//}

//输入一段字符串,统计其中的单词个数

//比如:
//输入 I like iOS

//输出:
//3

//int main(int argc, const char *argv[])
//{
// char sourceString[100] = {};
// gets(sourceString);
// int stringLen = (int)strlen(sourceString);
// int word = 0;
// int wcount = 0;
// for (int i=0; i<stringLen; i++) {
// if (sourceString[i] == ' ') {
// word = 0;
// }
// else if(word == 0)
// {
// word = 1;
// wcount++;
// }
// }
// printf("Count = %d\n",wcount);
// return 0;
//}

//输入一段字符串,进行升序排列

//比如:
//输入 IamOptimusPrime

//输出:
//IOPaeiimmmprstu
//int main(int argc, const char *argv[])
//{
// char sourceString[100] = {};
// gets(sourceString);
// int stringLen = (int)strlen(sourceString);
// char temp;
// for (int i=0; i<stringLen-1; i++) {
// for (int j=0; j<stringLen-i-1; j++) {
// if (sourceString[j] > sourceString[j+1]) {
// temp = sourceString[j];
// sourceString[j] = sourceString[j+1];
// sourceString[j+1] = temp;
// }
// }
// }
//
// printf("%s\n",sourceString);
// return 0;

//}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: