深入攻克c语言--day04
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的更多相关文章
- JNI总结(一)
JNI 是 Java平台中的一个强大特性.应用程序能够通过 JNI把 C/C++代码集成进 Java程序中.通过 JNI.开发人员在利用 Java平台强大功能的同一时候,又不必放弃对原有代码的投资.由 ...
- python服务端工程师就业面试指导☝☝☝
python服务端工程师就业面试指导 由Python专业面试官打造的课,少之又少,专业代表着经验,代表着对考察点的通透理解,更代表着对你负责 第1章 Python工程师offer直通车(视频+教辅文档 ...
- day04<Java语言基础+>
Java语言基础(循环结构概述和for语句的格式及其使用) Java语言基础(循环结构for语句的练习之获取数据) Java语言基础(循环结构for语句的练习之求和思想) Java语言基础(循环结构f ...
- 【30天自制操作系统】day04:C语言与目前执行流程图
用 C 语言直接写入内存 原来依靠汇编 void io_hlt(void); void write_mem8(int addr, int data); void HariMain(void){ int ...
- linux 下C语言学习路线
UNIX/Linux下C语言的学习路线.一.工具篇“公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工 ...
- UNIX/Linux下C语言的学习路线
一.工具篇 “公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工具. 1.操作系统 在UNIX或 ...
- 怎样学好C语言,一个成功人士的心得!
今天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了全部的数字化信息,不论是一段程序,一封email,一部电影都是用一连串的 ...
- Unix和Linux下C语言学习指南
转自:http://www.linuxdiyf.com/viewarticle.php?id=174074 Unix和Linux下C语言学习指南 引言 尽管 C 语言问世已近 30 年,但它的魅力仍未 ...
- 大数据时代的精准数据挖掘——使用R语言
老师简介: Gino老师,即将步入不惑之年,早年获得名校数学与应用数学专业学士和统计学专业硕士,有海外学习和工作的经历,近二十年来一直进行着数据分析的理论和实践,数学.统计和计算机功底强悍. 曾在某一 ...
随机推荐
- ann搜索算法(Approximate Nearest Neighbor)
ANN的方法分为三大类:基于树的方法.哈希方法.矢量量化方法.brute-force搜索的方式是在全空间进行搜索,为了加快查找的速度,几乎所有的ANN方法都是通过对全空间分割,将其分割成很多小的子空间 ...
- Free Pascal 的安装
Free Pascal 的安装 https://www.cnblogs.com/cnssc/p/6110492.html https://wenku.baidu.com/view/ee80cc8eed ...
- Java如何Attachment源码
该文章教你如何在Eclipse中Attachment源码,学到了不少东西. http://jingyan.baidu.com/article/1709ad80b107f64635c4f040.html ...
- iOS GCD使用
Grand Central Dispatch(GCD)是异步运行任务的技术之中的一个. 一般将应用程序中记述的线程管理用的代码在系统级中实现.开发人员仅仅须要定义想运行的任务并追加到适当的Dispat ...
- Scala随记
使用Scala首先确保本地Java 8版本,然后按照官网所说,比较流行的方式(1) sbt; (2) IDE "The most popular way to get Scala is ei ...
- Java ClassLoader详解(转载)
Java ClassLoader详解 类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一.它使得 Java 类可以被动态加载到 Java 虚拟机中并执行.类加载器从 JDK ...
- 网络协议之rtp---h264的rtp网络协议实现
完整的C/S架构的基于RTP/RTCP的H.264视频传输方案.此方案中,在服务器端和客户端分别进行了功能模块设计.服务器端:RTP封装模块主要是对H.264码流进行打包封装:RTCP分析模块负责产牛 ...
- Drupal 初次使用感受,兴许补充。
非常久曾经就接触过.下载下来安装,结果界面太丑,太难看,直接删除. 近期又一次想到开源CMS,好奇看到那么多人推崇drupal.也便下载来又一次研究了下. 刚接触了下.只是总体使用感觉非常差.尤其几个 ...
- 【剑指Offer学习】【面试题62:序列化二叉树】
题目:请实现两个函数,分别用来序列化和反序列化二叉树. 解题思路 通过分析解决前面的面试题6.我们知道能够从前序遍历和中序遍历构造出一棵二叉树.受此启示.我们能够先把一棵二叉树序列化成一个前序遍历序列 ...
- Linux中ctrl+z 、ctrl+c、 ctrl+d差别
ctrl+c,ctrl+d,ctrl+z在linux程序中意义和差别 ctrl+c和ctrl+z都是中断命令,可是他们的作用却不一样. ctrl+c是强制中断程序的运行,,进程已经终止. ct ...