(一)冒泡排序法

 #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. Django之ORM表操作

    ORM表操作 1.ORM单表操作 首先想操作表的增删改查,需要先导入这个表,以之前创建的UserInfo表为例,在app下的views.py中导入 from app import models def ...

  2. S03_CH07_AXI_VDMA_OV5640摄像头采集系统

    S03_CH07_AXI_VDMA_OV5640摄像头采集系统 7.1概述 本章内容和<S03_CH06_AXI_VDMA_OV7725摄像头采集系统>只是摄像头采用的分辨率不同,其他原理 ...

  3. Docker系列5--一些问题及解决

    1. 存储问题 1.1 挂载目录权限问题 在使用swarm创建服务的时候要挂载存储来获取运行文件,及写日志出去. 可运行文件相当于在集群中所有地方应该都能访问到,所以使用了NFS文件系统,在集群中所有 ...

  4. poj 1837 天平问题(01背包变种)

    题意:给你n个挂钩,m个砝码,要求砝码都用上,问有多少中方案数 题解:对于这道题目的状态,我们定义一个变量j为平衡度,当j=0的时候,表明天平平衡.定义dp[i][j]表达的含义为使用前n个砝码的时候 ...

  5. 在论坛中出现的比较难的sql问题:1(字符串分拆+行转列问题 SQL遍历截取字符串)

    原文:在论坛中出现的比较难的sql问题:1(字符串分拆+行转列问题 SQL遍历截取字符串) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方 ...

  6. opencv-03--图像的算术运算

    图像的算术运算 Mat类把很多算数操作符都进行了重载,让它们来符合矩阵的一些运算,如果+.-.点乘等. 下面我们来看看用位操作和基本算术运算来完成colorReduce程序,它更简单,更高效. 将25 ...

  7. row_number() over()函数基本用法

    简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后的没条xlh记 ...

  8. 微信支付之二维码支付(native)

    HoJe男孩子你要加油阿 准备材料微信支付需要的参数统一下单二维码回调接口用到的工具类 . 准备材料 首先肯定是要有微信的开发文档开发文档地址再然后就是一些必的参数 注意:回调地址异步接收微信支付结果 ...

  9. python打印表格式数据-星号或注释

    python打印表格式数据,留出正确的空格,格式化打出 代码如下: def printPicnic(itemsDict,leftWidth,rightWidth): print('PICNIC ITE ...

  10. VUE CLI3 less 全局变量引用

    方法一 1.添加依赖 style-resources-loader 2.vue.config.js中添加 module.exports = { pluginOptions: { 'style-reso ...