(一)冒泡排序法

 #include <iostream>
using namespace std;
void bubblesort(int a[], int m);
int main(void)
{
int i;
int array[]={,,,,,,,};
bubblesort(array,sizeof(array)/);/*sizeof(array)/4,取长度,int类型是4字节*/
/*打印已经排序的数组*/
for(i = ; i < sizeof(array)/; i++)
printf("array[%d] = %d \n",i,array[i]);
return ;
}
void bubblesort(int a[], int m)
{
int i,j,z;
int tmp;
for(i = ; i < m; i++) //外层循环控制循环次数
{
for(j = ; j < m--i; j++) //内层循环控制每次循环里比较的次数。
{
if(a[j] > a[j+])
{
tmp = a[j];
a[j] = a[j+];
a[j+] = tmp;
}
}
/*打印未排序*/
for(z = ; z < m--i;z++)
printf(" %d \t",a[z]);
printf("\n");
}
}

运行结果

冒泡排序法的具体实现方法是这样的,从数组的第一个元素`arr[0]`开始,两两比较**(`arr[n],arr[n+1]`),如果前面的数大于后面的数(`arr[n] > arr[n+1]`),那么交换两个元素的位置,把大的数往后移动。这样依次经过一轮比较以后,最大的数将会被交换到最后的位置(arr[n-1])。

(二)选择排序法

 #include <iostream>
using namespace std;
void selectionsort(int a[],int m);
int main(void)
{
int i;
int array[]={,,,,,,,};
selectionsort(array,sizeof(array)/);/*sizeof(array)/4,取长度,int类型是4字节*/
/*打印已经排序的数组*/
for(i = ; i < sizeof(array)/; i++)
printf("array[%d] = %d \n",i,array[i]);
return ;
}
void selectionsort(int a[],int m)
{
int i,j;
int k;
int z;
int tmp; for(i = ; i < m-; i++)//控制循环次数,n个数需要n-1次循环
{
k = i;
for(j = i+; j < m ; j++)
{
if(a[j] < a[k])
k = j;
}
//i不等于k是就证明a[i]不是最小的,
//i等于k时证明a[i]就是本轮比较过程中最小的值
if(i != k)
{
tmp = a[i];
a[i] = a[k];
a[k] = tmp;
}
/*打印未排序*/
for(z = i; z < m;z++)
printf(" %d \t",a[z]);
printf("\n");
}
}

运行结果

选择排序法就是通过每一次循环查找出最大(小)的元素,通过下标记录最大(小)的元素,找完一轮之后将最大(小)的元素

放到前面,然后不再考虑这个元素。

(三)编写my_strcpy函数

strcpy函数:是一种C语言的标准库函数,strcpy把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间,返回值的类型为char*。

 #include <iostream>
using namespace std;
char* my_strcpy(char *strDest,char *strSrc);
int main(void)
{
char arr1[] = { };
char arr2[] = "abcdefghij";
char *ret=my_strcpy(arr1,arr2);
printf("%s\n", ret);//打印复制之后的字符串
return ;
}
char* my_strcpy(char *strDest,char *strSrc)
{
if(strSrc == NULL)
return NULL;
if(strDest == strSrc)
return strDest;
char *temp = strDest;
while((*strDest++ = *strSrc++) != '\0');
return temp;
}

运行结果

(四)编写my_strcmp函数

strcmp函数:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止

 #include <iostream>

 using namespace std;

 #define MAX 10

 int mystrcmp(const char *str1,const char *str2);
int main(int argc,char *argv[])
{
char value;
char str1[MAX],str2[MAX]; printf("Please input str1 and str2 :\n");
gets(str1); //gets 和 printf的区别,gets可接收含空格的字符串,而scanf遇TAB,空格,回车即结束
gets(str2); value = mystrcmp(str1,str2);
printf("value :%d\n",value); return ;
} int mystrcmp(const char *str1,const char *str2)
{
char i = ;
for(; i < MAX, *(str1+i) != '\0',*(str2+i) != '\0'; i++)
{
if(*(str1+i) == *(str2+i))
continue; //相等时继续比较下一位
return (*(str1+i) > *(str2+i))?:(-);
}
return ;
}

运行结果

(五)编写my_strcat函数

strcat函数:是用来连接两个字符串的,原型是char *strcat(char *dest,char *src),作用是把src所指字符串添加到dest结尾处

 #include <iostream>
using namespace std;
char* MyStrcat(char *dst, const char *src);
int main(void)
{
char str1[] = "abc";
char str2[] = "bcd";
char* str3 = MyStrcat(str1, str2); printf("str1=%s\n", str1);
printf("str2=%s\n", str2);
printf("str3=%s\n", str3);
return ;
} char* MyStrcat(char *dst, const char *src)
{
char *temp = dst;
while (*temp != '\0')
temp++;
while ((*temp++ = *src++) != '\0');
return dst;
}

运行结果

(六)编写my_strlen函数

strlen函数:所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。

 #include <iostream>
using namespace std;
int my_strlen(const char *str);
int main(void)
{
printf("长度为:%d\n",my_strlen("abcd"));
return ;
} int my_strlen(const char *str)
{
int count = ;
while(*str++)
count++;
return count;
}

运行结果

(七)求高于平均分的学生学号及成绩(学号和成绩人工输入)

 #include <iostream>
using namespace std;
#define NUM 2
struct student
{
int data;
int score;
};
int main(int argc, char* argv[])
{
student student1[NUM];
int i,average = ;
for(i = ;i < NUM; i++)
{
scanf("%d %d",&student1[i].data,&student1[i].score);
average += student1[i].score/NUM;
}
printf("平均分是:%d",average);
for(i = ;i < NUM; i++)
{
if(student1[i].score > average)
printf("大于平均的学生学号及成绩:%d,%d",student1[i].data,student1[i].score);
}
return ;
}

运行结果

(八)递归实现回文判断(如:abcdedcba就是回文)

 #include <iostream>
using namespace std;
int find(char *str, int n); /*字符判断回文*/
int IsPalindrome(long m); /*数据判断回文*/
int main(int argc, char* argv[])
{
char *str = "abcdedcba";
int m=;
printf("%s: %s\n", str, find(str,strlen(str)) ? "Yes" : "No");
printf("数据m:%d,%s\n",m,IsPalindrome(m)? "Yes" : "No");
return getchar();
}
int find(char *str, int n)
{
if(n<=) return ;
else if(str[]==str[n-])
return find(str+, n-);
else
return ;
}
int IsPalindrome(long m)
{
long i, n;
i=m;
n=;
while(i)
{
n=n*+i%;
i/=;
}
return m==n; //返回1说明就是回文数了.
}

运行结果

002_C/C++笔试题_简单算法程序的更多相关文章

  1. 001_C/C++笔试题_考察C/C++语言基础概念

    (一)文章来自:C/C++笔试题-主要考察C/C++语言基础概念.算法及编程,附参考答案 (二)基础概念 2. 头文件中的ifndef/define/endif的作用? 答:防止该头文件被重复引用. ...

  2. 2015小米暑期实习笔试题_风口的猪-中国牛市(dp)

    风口之下.猪都能飞.当今中国股市牛市,真可谓"错过等七年". 给你一个回想历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i] ...

  3. 003_C/C++笔试题_分享大汇总

    (一)感谢:lhzstudio 01_C++经典面试题全集 50~100道 都附带有参考答案 02_C++开发工程师面试题库 100~150道 03_C++笔试题库之编程.问答题 150~200道 0 ...

  4. Java工程师笔试题整理[校招篇]

    Java工程师笔试题整理[校招篇]     隔着两个月即将开始校招了.你是不是也想借着这个机会崭露头角,拿到某些大厂的offer,赢取白富美.走上人生巅峰?当然如果你还没能打下Java基础,一定要先打 ...

  5. js+html+css简单的互动功能页面(2015知道几乎尖笔试题)http://v.youku.com/v_show/id_XMTI0ODQ5NTAyOA==.html?from=y1.7-1.2

    js+html+css实现简单页面交互功能(2015知乎前端笔试题) http://v.youku.com/v_show/id_XMTI0ODQ5NTAyOA==.html? from=y1.7-1. ...

  6. 一道简单的 Java 笔试题,但值得很多人反思!

    前言 面试别人,对我来说是一件新奇事,以前都是别人面试我.我清楚地知道,我在的地域与公司,难以吸引到中国的一流软件人才.所以,我特地调低了期望,很少问什么深入的技术问题,只问一些广泛的.基础的.我只要 ...

  7. 也许你需要点实用的-Web前端笔试题

    之前发的一篇博客里没有附上答案,现在有空整理了下发出来,希望能帮助到正在找工作的你,还是那句话:技术只有自己真正理解了才是自己的东西,共勉. Web前端笔试题 Html+css 1.对WEB标准以及w ...

  8. C/C++ 笔试题

    /////转自http://blog.csdn.net/suxinpingtao51/article/details/8015147#userconsent# 微软亚洲技术中心的面试题!!! 1.进程 ...

  9. C/C++笔试题(很多)

    微软亚洲技术中心的面试题!!! .进程和线程的差别. 线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 (2 ...

随机推荐

  1. 使用 jsvc 启动tomcat(使用普通用户运行)

    使用 jsvc 启动tomcat(使用普通用户运行) jsvc简介 在生产中,tomcat应该以daemon的模式运行,而且如果需要以普通用户的身份启动tomcat,那么就不能使用1024以下的端口, ...

  2. (八)mybatis之多对多

    一.需求分析 需求:查询所有用户的信息以及每个用户所属的组的信息 分析:一个用户可以有多个组,一个组也可以由多个用户. 多对多,可以设置一张中间表,该表存放的是用户表和组表的对应关系. 二.创建数据库 ...

  3. (一)SpringBoot之简介和安装插件以及HelloWorld第一个程序

    一.简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的 ...

  4. Java CountingSort

    Java CountingSort /** * <html> * <body> * <P> Copyright 1994-2018 JasonInternation ...

  5. R语言错误的提示(中英文翻译)

    # Chinese translations for R package # Copyright (C) 2005 The R Foundation # This file is distribute ...

  6. HelenOS

    HelenOS 来源 http://www.helenos.org/ 关于HELENOS HelenOS是一种基于便携式微内核的多服务器操作系统,从头开始设计和实现.它将关键操作系统功能(如文件系统, ...

  7. dll安装到GAC以及引用的方法【转】

    一 首先    程序集(dll) 安装到 GAC 中的方法 所谓的GAC,就是全局程序集缓存(Global Assembly Cache). 针对一些类库项目或用户控件项目在程序开发完成后,有时需要将 ...

  8. MiniUI学习笔记一【转】

    MiniUI Api文档:http://miniui.com/docs/api/index.html 1.取组件值 传递form data,load发送 请求加载数据 <script type= ...

  9. mac安装composer

    推荐阅读:https://www.jianshu.com/p/edde14a67b1a 自己实际操作: 下载 composer https://getcomposer.org/download/ 下载 ...

  10. cli中webpack的配置详解

    一.前言 vue-cli是构建vue单页应用的脚手架,输入一串指定的命令行从而自动生成vue.js+wepack的项目模板.这其中webpack发挥了很大的作用,它使得我们的代码模块化,引入一些插件帮 ...