深入攻克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老师,即将步入不惑之年,早年获得名校数学与应用数学专业学士和统计学专业硕士,有海外学习和工作的经历,近二十年来一直进行着数据分析的理论和实践,数学.统计和计算机功底强悍. 曾在某一 ...
随机推荐
- Opencv 最小外接矩形合并拼接
前一篇画出了最小外接矩形,但是有时候画出来的矩形由于中间像素干扰或者是其他原因矩形框并不是真正想要的 如图1是一个信号的雨图,被矩形框分割成了多个小框: 需要合并矩形框达到的效果: 主要思想: 扫描两 ...
- hadoop常见错误
hadoop常见错误集锦: 1.DataXceiver error processing WRITE_BLOCK operation ERROR org.apache.hadoop.hdfs.serv ...
- sql 表的部分字段查找 的结果集
传统sql从多个对象中获得的list<Object> ,可以这样处理(利用Map) List list = query.getList(sql); //封装成BB类型 List< ...
- MIDI制作的相关软件
Native Instruments Kontakt(音乐采样器) fl studio 12 v12.5.0.59 汉化版水果 http://xiazai.flstudiochina.com/wm ...
- ubuntu boot空间不足
在安装 Ubuntu的时候 , 给/boot文件目录分配空间的时候,是100M,/boot可以单独分成一个区,也可以不单独分,在/(根目录)下也会自动为其创建一个boot目录.顺便提一下,Linux分 ...
- iOS GCD使用
Grand Central Dispatch(GCD)是异步运行任务的技术之中的一个. 一般将应用程序中记述的线程管理用的代码在系统级中实现.开发人员仅仅须要定义想运行的任务并追加到适当的Dispat ...
- 数据结构与算法——AVL树类的C++实现
关于AVL树的简单介绍能够參考:数据结构与算法--AVL树简单介绍 关于二叉搜索树(也称为二叉查找树)能够參考:数据结构与算法--二叉查找树类的C++实现 AVL-tree是一个"加上了额外 ...
- mysql: 关于MySQL InnoDB锁行还是锁表?
baidu zone - 关于MYSQL Innodb 锁行还是锁表,深入讲解
- spl_autoload_register的使用
class Loader{ static function loadClass($class) { $class = $class.'.php'; if(file_exists($class)) { ...
- 用Camshift算法对指定目标进行跟踪
原理 Camshift算法是Continuously Adaptive Mean Shift algorithm的简称. 它是一个基于MeanSift的改进算法.它首次由Gary R.Bradski等 ...