//题目40:输入3个数a,b,c,按大小顺序输出。(使用指针完成)  

#include<stdio.h>
#include<stdlib.h> //分析:用指针完成,说明不可以改变a,b,c的值,只是输出的时候数据变化
//简单的办法:比较好a,b,c大小,在赋值给对应指针, void main9(){
int a = , b = , c = ;
int *pa = &a, *pb = &b, *pc = &c;
if (a>b)
{
if (a>c)
{
//说明a最大
pc = &a;
if (b<c)
{
pb = &c;
pa = &b;
}
else{
pa = &c;
}
}//else说明c最大
}
else{
if (b>c)
{
//说明b最大
pc = &b;
if (a>c)
{
pb = &a;
pa = &c;
}
else{
pb = &c;
}
}
}
printf("\n从大到小依次是%d<%d<%d\n",*pa,*pb,*pc); system("pause");
}

//题目41:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

#include<stdio.h>
#include<stdlib.h>
#include<time.h> //分析:这一题并非一个简单的冒泡排序,他的要求是找到最大元素在数组的位置,并且和第一个元素交换,别的元素不改变
//我们根据冒泡排序的思想,定义一个变量,用来存储下标,和数组每个元素比较,发现有元素比初始元素大,就修改下标的值 void main(){
//随机生成一个数组
int a[] = { };
//定义时间变量
time_t ts;
//定义随机数种子
printf("原来的数组\n");
srand((unsigned int)time(&ts));
for (int i = ; i < ; i++)
{
a[i] = rand() % ;
printf("%5d", a[i]);
}
printf("\n");
//方法1(不够简单,定义的变量太多,用指针会更简单)
//int maxindex = 0, minindex = 0;
////temp存储最大值,temp1存储最小值
//int temp = a[0],temp1 = a[0];
//for (int i = 1; i < 10; i++)
//{
// //假设a[0]最大同时假设他最小
// if (a[i]>temp)
// {
// temp = a[i];
// maxindex = i;
// }
// if (a[i]<temp1)
// {
// temp1 = a[i];
// minindex = i;
// }
//}
////交换位置
//int temp3 = 0;
//temp3 = a[0];
//a[0] = a[maxindex];
//a[maxindex] = temp3; //temp3 = a[9];
//a[9] = a[minindex];
//a[minindex] = temp3; //方法2(指针方式)
int *pmax=&a[], *pmin=&a[];
for (int i = ; i < ; i++)
{
if (a[i]>*pmax)
{
pmax = &a[i];
}
if (a[i]<*pmin)
{
pmin = &a[i];
}
}
//交换位置
//临时变量存放最大值
int temp4 = *pmax;
//临时变量存放最小值
int temp5 = *pmin;
//将a[0]的值交给最大的那个元素
*pmax = a[];
a[] = temp4;
//同理
*pmin = a[];
a[] = temp5; printf("新的数组\n");
for (int i = ; i < ; i++)
{
//a[i] = rand() % 100;
printf("%5d", a[i]);
}
system("pause");
}

//题目42:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数(使用指针完成)

#include<stdio.h>
#include<stdlib.h>
#include<time.h> //分析:把最后的5个变量存储起来,再将原来的元素每个向后移动m位 #define N 15 void main(){
//生成随即数组
int a[N] = { };
//定义时间变量
time_t ts;
//定义随机数种子
printf("原来的数组\n");
srand((unsigned int)time(&ts));
for (int i = ; i < N; i++)
{
a[i] = rand() % ;
printf("%5d", a[i]);
}
printf("\n"); int *p = a;
int m=;
//定义一个动态数组,存储m之后的变量
int *p1 =(int *)malloc(sizeof(int)*m);
for (int i =; i < m; i++)
{
*(p1 + i) = a[N - m+i];
}
//移动前面的元素向后
//最后一个元素是a[N-1],a[0]向后移动1为是a[1],a[0]向后移动2位是a[0+2];
//a[N]向前移动5位,就是a[N-5] //错误,不能从前向后赋值,从前向后会将后面有用的一部分数据覆盖了,必须从后往前赋值
/*for (int i = 0; i < N - m - 1; i++)
{
a[m + i] = a[i];
}*/
for (int i = ; i < N; i++)
{
a[N - - i] = a[N - - i - m];
}
for (int i = ; i < m; i++)
{
a[i] = *(p1 + i);
}
free(p1);
printf("新的数组\n");
for (int i = ; i < N; i++)
{
printf("%5d", a[i]);
}
printf("\n");
system("pause"); }

C语言 百炼成钢14的更多相关文章

  1. Java入门 - 语言基础 - 14.String类

    原文地址:http://www.work100.net/training/java-string.html 更多教程:光束云 - 免费课程 String类 序号 文内章节 视频 1 概述 2 创建字符 ...

  2. C语言 百炼成钢19

    /* 题目55: 有一个字符串符合以下特征(”abcdef,acccd,eeee,aaaa,e3eeeee,sssss,";),要求写一个函数(接口),输出以下结果 1) 以逗号分割字符串, ...

  3. C语言 百炼成钢5

    //题目13:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 //本身.例如:153是一个“水仙花数”,因为153 = 1的三次方+5的三次方+3的三次方. #de ...

  4. C程序设计语言练习题1-4

    练习1-4 编写一个程序打印摄氏温度转换为相应华氏温度的转换表. 代码如下: #include <stdio.h> // 包含标准库的信息. int main() // 定义名为main的 ...

  5. C语言 百炼成钢27

    /* 题目63:编写C++程序完成以下功能: (1)声明一个纯虚函数类Shape(形状),其中包含来计算面积.计算周长的方法: (2)从Shape派生两个类矩形和圆形: (3)从矩形派生正方形: (4 ...

  6. C语言 百炼成钢3

    //题目7:用*号输出空心菱形图案 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> # ...

  7. C语言 百炼成钢2

    //题目4:输入某年某月某日,判断这一天是这一年的第几天? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<st ...

  8. C语言 百炼成钢1

    //题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> ...

  9. C语言 百炼成钢18

    //题目52:用递归打印以下图形 //* //*.*. //*..*..*.. //*...*...*...*... //*....*....*....*....*.... #include<s ...

随机推荐

  1. page resizing

    <script type="text/javascript"> $(window).load(function () { var root; root = $(&quo ...

  2. iOS网络-06-监听Iphone的网络状态

    使用系统的方法来监听网络状态 系统的方法是通过通知机制来实现网络状态的监听 实现网络状态监听的步骤 定义Reachability类型的成员变量来保存网络的状态 @property (nonatomic ...

  3. 关于bitcode~

    最近在做语音识别- 在真机调试的时候一直报 ld: '/Users/Chenglijuan/Documents/语音识别/lib/iflyMSC.framework/iflyMSC(IFlyRecog ...

  4. 多线程基础(七)GCD线程组+栅栏函数

      1.GCD队列组     拦截通知和等待所有任务全部结束在继续往下执行|阻塞   需求:下载两张图片,等两张图片都下载完毕之后,合成图片(这个实例,复习的时候一定要凭空敲出代码练习,好记性不如烂键 ...

  5. 从1.5k到18k, 一个程序员的5年成长之路

    昨天收到了心仪企业的口头offer, 回首当初什么都不会开始学编程, 到现在恰好五年. 整天在社区晃悠, 看了不少的总结, 在这个时间点, 我也写一份自己的总结吧. 我一直在社区分享, 所以, 这篇总 ...

  6. Remote Desktop Connection Manager (RDCMan) 介绍

    Remote Desktop Connection Manager介绍 Remote Desktop Connection Manager (RDCMan) 是微软Windows Live体验团队的主 ...

  7. 如何成功发布一个MSMQ的Windows服务

    因为MSMQ的使用需要不断的查看队列是否有新消息,所以一般是结合Windows的服务,当然也可以用一个不关闭的Winform程序,不过前者更好一些,不怕被人误关. 完成MSMQ的WindowsServ ...

  8. Requirejs2.0笔记

    API http://requirejs.org/ RequireJS 插件 http://requirejs.org/docs/api.html#plugins ①require.js脚本的异步加载 ...

  9. Oracle 分组聚合二种写法,listagg和wmsys.wm_concat

    with temp as( select 'China' nation ,'Guangzhou' city from dual union all select 'China' nation ,'Sh ...

  10. jmeter的使用(四)

    jmeter如何调用java程序呢,下面做简单介绍.1.打开eclipse,新建项目,导入jmeter依赖的包ApacheJMeter_core.jar和ApacheJMeter_java.jar,这 ...