深入攻克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老师,即将步入不惑之年,早年获得名校数学与应用数学专业学士和统计学专业硕士,有海外学习和工作的经历,近二十年来一直进行着数据分析的理论和实践,数学.统计和计算机功底强悍. 曾在某一 ...
随机推荐
- npm升级所有可更新包
使用npm管理node的包,可以使用npm update <name>对单个包升级,对于npm的版本大于 2.6.1,可以使用命令: npm install -g 升级全局的本地包. 对于 ...
- Why is chkconfig no longer available in Ubuntu?
Question: I can not use chkconfig tools in Ubuntu 12.10 It's a very useful tools to configure the se ...
- c语言函数---I
函数名: imagesize 功 能: 返回保存位图像所需的字节数 用 法: unsigned far imagesize(int left, int top, int right, int bott ...
- CentOS6.5_64bit下编译安装MySQL-5.6.23
转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/44785511 ************************************** ...
- 怎样制作gif图片?怎样制作你项目的动态效果图到你的csdn?
怎样制作gif图?怎样上传你项目的动态效果图到你的csdn? 这仅仅是笔者用的方法.有其它方法的欢迎分享. 一张或几张展示了你的项目的功能及效果的动态图放在博客文章开头会为你的文章润色不少. 相信非常 ...
- POJ 3978(求素数)
知识点: 1.求素数的test,从2~sqrt(n): 2.假设数据非常多,能够用素数表记录,然后sum=prime[m]-prime[n]求得! ! !! !!! !! ...
- ElasticSearchserver操作命令
在win7环境,进入elasticsearch安装文件夹的bin文件夹: 1. elasticsearch.bat 就能够启动elasticsearch了.执行这个插件的优点是:elasticsear ...
- Cocos2d-X中提高性能的方法
1)内存使用效率: 使用大纹理 场景切换时,要尽量使用replaceScene 2)用好缓存: CCTextureCache(纹理缓存) CCSpriteFrameCache(精灵帧缓存) CC ...
- 关于angular JS 中$timeOut 的一些不正常情况下的$destory
最近项目中存在的问题头疼脑热了好一会. 我先简单说明下问题是由,使用$timeOut循环调用的时候由于页面存在异步加载会出现反复执行循环反复调用$timeOut,怎么清除跳出循环都不管用.于是查到了如 ...
- 利用CH341A编程器刷新BIOS,恢复BIOS,妈妈再也不用担心BIOS刷坏了
前几天,修电脑主析就捣鼓刷BIOS,结果刷完黑屏开不了机,立刻意识到完了,BIOS刷错了.就从网上查资料,各种方法试了个遍,什么用处都没有.终于功夫不负有心人,找到了编码器,知道了怎么用.下面看看具体 ...