1.将包含字符数字的字符串分开,使得分开后的字符串前一部分是数字后一部分是字母。例

如“h1ell2o3” ->”123hello”

#include<stdio.h>
#include<stdlib.h> void fun(char *c)
{
char p[], *loc;
loc = c;
int i = ;
while (*c != '\0')
{
if (*loc >= && *loc <= )
{
printf("%c", *loc);
}
else if (*loc >= 'a'&&*loc <= 'z' || *loc >= 'A'&&*loc <= 'Z')
{
p[i++] = *loc;
}
else printf("字符串格式不对\n");
loc++;
c++;
}
p[i] = '\0';
i = ;
while (p[i] != '\0')
{
printf("%c", p[i++]);
}
} int main()
{
char c[] = "h1ell2o3";
fun(c);
system("pause");
return ;
}

2.将 字 符 串 中 的 空 格 替 换 成 “%020” , 例 如 “hello world how ”
->”hello%020%020%020world%020%020%020how%020%020%020%020”

#include<stdio.h>
#include<stdlib.h> void fun(char *c)
{
char *loc = (char*)malloc(strlen(c));
strcpy(loc, c);
int i = ;
while (*loc != '\0')
{
if (*loc == ' ')
{
c[i++] = '%';
c[i++] = '';
c[i++] = '';
c[i++] = '';
}
else
{
c[i++] = *loc;
}
loc++;
}
c[i] = '\0';
printf("%s\n", c);
}
int main()
{
char c[] = "hello world how ";
fun(c);
system("pause");
return ;
}

3.删除字符串中指定的字符。例如 “abcdaefaghiagkl“ 删除‘a’,以后: “bcdefghigkl”

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void fun(char c[])
{
char *s=(char*)malloc(strlen(c));
strcpy(s,c);
int i = ;
while (*s != '\0')
{
if (*s != 'a') {
c[i++] = *s;
}
s++;
}
c[i] = '\0';
printf("%s", c); }
int main()
{
char c[] = "abcdaefaghiagkl";
fun(c);
system("pause");
return ;
}

4.删除一个数组中重复的元素。例如 1 ,2, 2,2,3,3,3,4,4,5,5,5,6,6,6 -> 1,2,3,4,5,6

#include<stdio.h>
#include<stdlib.h>
#define N 100 int delete_elem(int arr[], int new_arr[])
{
int i = , new_arr_len = ;
int flag[N] = { };//对每个元素做一个初始标记
for (i = ; i < ; i++)
{
if (flag[arr[i]] == )
{
new_arr[new_arr_len++] = arr[i];
flag[arr[i]] = ;//出现过则标记属性设为1
}
}
return new_arr_len;
} void main()
{
int i, arr[N] = {,,,,,,,,,,,,,,};
int new_arr[N];
int arr_len = ;//输入number的个数
int new_arr_len; new_arr_len = delete_elem(arr, new_arr); printf("\n");
printf("new array is :\n");
for (i = ; i < new_arr_len; i++)
{
printf("%d ", new_arr[i]);
}
printf("\n"); system("pause");
}

5.将 字 符 串 中 的 相 邻 的 多 余 空 格 去 掉 , 例 如 (空 格 用 下 划 线 表

示): ”___hello____world___how_are_you__” ->”hello_world_how_are_you”

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void fun(char c[])
{
int cnt = ;
char *s = (char*)malloc(strlen(c));
strcpy(s, c);
int i = ;
while (*s != '\0')
{
if (*s != ' ') {
c[i++] = *s;
cnt = ;
}else {
cnt++;
if(cnt==)c[i++]=' ';
}
s++;
}
c[i] = '\0';
printf("%s", c);
} int main()
{
char a[] = { " hello world how are you " }; fun(a);
system("pause");
return ;
}

6.附加题:大整数加法。 实现任意范围的两个整数的加法( 整数的范围用 int 型的变量无法表示,50位)

#include<stdio.h>
#include<string.h>
#define MAX 100
int main()
{ int num1[], num2[];
memset(num1, , sizeof(num1));
memset(num2, , sizeof(num2));//将这些数组清零
char *str1 = "";//用于保存键盘输入的两个待加大整数
char *str2 = "";
int len1, len2, i, j;
len1 = strlen(str1);
len2 = strlen(str2);
j = ;
int max = len1 > len2 ? len1 : len2;
for (i = len1 - ; i >= ; i--)
num1[j++] = str1[i] - ''; /*字符串反转并且转换为数字保存到数组里面*/
j = ;
for (i = len2 - ; i >= ; i--)
num2[j++] = str2[i] - '';
for (i = ; i < max; i++)
{
num2[i] += num1[i];//相加
if (num2[i] >= )
{
num2[i] -= ;
num2[i + ] += ;//产生进位
}
}
if (num2[max]) printf("%d", num2[max]);//如果最高位产生进位
for (i = max - ; i >= ; i--)
printf("%d", num2[i]);
printf("\n"); system("pause");
return ;
}

7.求一个字符串数组的最大值和次大值  void big(char *arr[],int size ,char** big1,char** big2)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void big(char *arr[], int size, char** big1, char** big2)
{
int i = , j = ;
char* max, *min, (*tmp)[] = arr;
*big1 = tmp[];
printf("%s\n", *big1);
for (i = ; i < size; i++)
{
printf("%s ", tmp[i]);
}
printf("\n");
for (j = ; j < size; j++)
{
//printf("\n%s %s\t", arr[i], arr[i + 1]);
if (strcmp(*big1, tmp[j]) < ) {
strcpy(*big2, *big1);
strcpy(*big1, tmp[j]);
}
} printf("\n---------------------------------\n");
printf("the biggest string is %s\n", *big1);
printf("the bigger string is %s\n", *big2);
}
int main()
{
char arr[][] = { "hdua","dade","heoc","das3" ,"heod" };
char *big1 = (char*)malloc(), *big2 = (char*)malloc(), (*a)[] = (char*)malloc();
a = arr; big(arr, , &big1, &big2);
system("pause");
return ;
}

深入攻克c语言--day04的更多相关文章

  1. JNI总结(一)

    JNI 是 Java平台中的一个强大特性.应用程序能够通过 JNI把 C/C++代码集成进 Java程序中.通过 JNI.开发人员在利用 Java平台强大功能的同一时候,又不必放弃对原有代码的投资.由 ...

  2. python服务端工程师就业面试指导☝☝☝

    python服务端工程师就业面试指导 由Python专业面试官打造的课,少之又少,专业代表着经验,代表着对考察点的通透理解,更代表着对你负责 第1章 Python工程师offer直通车(视频+教辅文档 ...

  3. day04<Java语言基础+>

    Java语言基础(循环结构概述和for语句的格式及其使用) Java语言基础(循环结构for语句的练习之获取数据) Java语言基础(循环结构for语句的练习之求和思想) Java语言基础(循环结构f ...

  4. 【30天自制操作系统】day04:C语言与目前执行流程图

    用 C 语言直接写入内存 原来依靠汇编 void io_hlt(void); void write_mem8(int addr, int data); void HariMain(void){ int ...

  5. linux 下C语言学习路线

    UNIX/Linux下C语言的学习路线.一.工具篇“公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工 ...

  6. UNIX/Linux下C语言的学习路线

    一.工具篇 “公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工具. 1.操作系统    在UNIX或 ...

  7. 怎样学好C语言,一个成功人士的心得!

    今天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了全部的数字化信息,不论是一段程序,一封email,一部电影都是用一连串的 ...

  8. Unix和Linux下C语言学习指南

    转自:http://www.linuxdiyf.com/viewarticle.php?id=174074 Unix和Linux下C语言学习指南 引言 尽管 C 语言问世已近 30 年,但它的魅力仍未 ...

  9. 大数据时代的精准数据挖掘——使用R语言

    老师简介: Gino老师,即将步入不惑之年,早年获得名校数学与应用数学专业学士和统计学专业硕士,有海外学习和工作的经历,近二十年来一直进行着数据分析的理论和实践,数学.统计和计算机功底强悍. 曾在某一 ...

随机推荐

  1. C++中sizeof(struct)怎么计算?(转)

    struct为空时,大小为1. 1. sizeof应用在结构上的情况 请看下面的结构: struct MyStruct { double dda1; char dda; int type; }; 对结 ...

  2. mysql 存储引擎 InnoDB 与 MyISAM 的区别和选择

    http://www.blogjava.net/jiangshachina/archive/2009/05/31/279288.html     酷壳 - MySQL: InnoDB 还是 MyISA ...

  3. HDU 5667 :Sequence

    Sequence  Accepts: 59  Submissions: 650  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536 ...

  4. 【每日Scrum】第五天(4.15) TD学生助手Sprint1站立会议

    TD学生助手Sprint1站立会议(4.15) 任务看板 站立会议内容 组员 昨天 今天 困难 签到 刘铸辉 (组长) 今天和静姐,娇哥把图片3D画廊效果的功能实现了,GPS功能没什么进展,所以只能继 ...

  5. Topcoder SRM625 题解

    给出一个字符串求是palindrome和anagram的比率是多少. 知识点: 1 DBL_MAX 64位double的最长数大概是1.7E308,非常大非常大,比long long大上不知多少倍.故 ...

  6. KVM技术

    今天是周六,看到一片KVM相关的文章,感觉写得很不错,翻译了,原文在这里:KVM Technology 在开放服务器虚拟化的应用方面,KVM虚拟化技术近年来广受关注.自从2006年10月份诞生以来,其 ...

  7. 官方Caffe-windows 配置与示例运行

    http://blog.csdn.net/guoyk1990/article/details/52909864 标签: caffewindows配置训练自己的数据 2016-10-24 13:34 1 ...

  8. RestTemplate请求

    JSONObject json = new JSONObject(sendParam);HttpHeaders headers = new HttpHeaders();MediaType type = ...

  9. RESTful设计模式状态码code说明

    一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. 下面是标准RESTfu ...

  10. POJ 1195 Mobile phones (二维树状数组)

    Description Suppose that the fourth generation mobile phone base stations in the Tampere area operat ...