(一)冒泡排序法

 #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. PAT(B) 1013 数素数(Java)

    题目链接:1013 数素数 代码 /** * Score: 20 * Run Time: 124ms * @author wowpH * @version 1.0 */ import java.uti ...

  2. yum报错Loaded plugins: fastestmirror, security

    vim /etc/yum/pluginconf.d/fastestmirror.conf enabled = 0 vim /etc/yum.conf plugins=0 yum clean dbcac ...

  3. SAS学习笔记29 logistic回归

    变量筛选 当对多个自变量建立logistic回归模型时,并不是每一个自变量对模型都有贡献.通常我们希望所建立的模型将具有统计学意义的自变量都包含在内,而将没有统计学意义的自变量排除在外,即进行变量筛选 ...

  4. shell习题第23题:检测网卡流量

    [题目要求] 写一个脚本,检测网卡流量并记录到日志,需要按照如下格式并一分钟统计一次(只需统计外网网卡,网卡名称eth0) 2019-06-07 1:11 eth0 input: 1000bps et ...

  5. CentOS7.5 安装MySql教程

    CentOS7位安装MySql教程 1.先检查系统是否装有mysql rpm -qa | grep mysql 2.下载mysql的repo源 wget http://repo.mysql.com/m ...

  6. (四)Activiti之流程定义部署之ZIP方式和流程定义查询

    一.流程定义部署之ZIP方式 上一章节我们使用classpath的方式加载流程定义文件,这里我们使用ZIP的方式. 1.1 用activiti插件生成bpmn和png图片之后,压缩到一个zip格式的压 ...

  7. (九)shiro之web集成

    Url 匹配方式? 匹配一个字符 /admin? 可以匹配/admin1 或者/admin2 但是不能匹配/admin12 或者/admin* 匹配零个或者一个或者多个字符 /admin* 可以匹配 ...

  8. 三种TCP协议聊天室实现

    一 概述 使用Java的IO实现聊天室 使用Java的NIO实现聊天室 使用Netty实现聊天室 二 IO聊天室 1 服务器 public class IOServer { public static ...

  9. 关于一个mvc架构的cms的后台getshell

    都知道,mvc的话 除了根目录还有public目录可以访问,其他的访问都是不行的,因为会默认都是会解析url 然后我们来看今天的猪脚 大概的图片上传还有远程文件加载我黑盒测过了  就是想捞一个快一点的 ...

  10. stm32位带

    #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bit ...