精华内容
下载资源
问答
  • 问题 A: C语言-数字交换 题目描述 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。 输入 10个整数 输出 整理后的十个数,每个数...

    《算法笔记》6.5小节-queue的常见用法详解

    问题 A: C语言-数字交换
    题目描述
    输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。
    输入
    10个整数
    输出
    整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)
    样例输入
    2 1 3 4 5 6 7 8 10 9
    样例输出
    1 2 3 4 5 6 7 8 9 10

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int a[10];
    void input()
    {
    	for(int i=0;i<10;i++){
    		scanf("%d",&a[i]);
    	}
    }
    void deal()
    {
    	int min=0;
    	for(int i=0;i<10;i++){
    		if(a[i]<a[min]) min=i;
    	}
    	swap(a[0],a[min]);
    	int max=0;
    	for(int i=0;i<10;i++){
    		if(a[i]>a[max]) max=i;
    	}
    	swap(a[9],a[max]);
    }
    void output()
    {
    	for(int i=0;i<10;i++){
    		printf("%d ",a[i]);
    	}
    }
    int main()
    {
    	input();
    	deal();
    	output();
    	return 0;
    }
    
    展开全文
  • 问题 A: C语言-数字交换 时间限制: 1 Sec 内存限制: 128 MB 提交: 1129 解决: 402 [提交][状态][讨论版][命题人:外部导入] 题目描述 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三...

    1 题目

    问题 A: C语言-数字交换
    时间限制: 1 Sec 内存限制: 128 MB
    提交: 1129 解决: 402
    [提交][状态][讨论版][命题人:外部导入]
    题目描述
    输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。

    输入
    10个整数

    输出
    整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)

    样例输入
    2 1 3 4 5 6 7 8 10 9
    样例输出
    1 2 3 4 5 6 7 8 9 10

    2 思路(使用队列)

    • 声明两个队列,一个用于读入数据q,另个用于临时存储temp
    • 在读入数据的时候记录最大值和最小值,q的队首和队尾
    • 把最大值和最小值分别放到temp的队首和队尾
    • 将q中最小值与队首元素交换位置(遇到与最小值相等第二个元素时,用原先存储的q的队首元素替换),存入temp中
    • 将temp中最大元素与队尾交换位置(遇到与最大值相等第一个元素时,用原先存储的q的队尾素替换),存入q中
    • 打印q

    3 代码

    #include <cstdio>
    #include <queue>
    #include <iostream>
    #include <limits.h>
    
    using std::queue;
    using std::cin; using std::istream;
    
    
    int MAX = INT_MIN;
    int MIN = INT_MAX; 
    int MaxTemp, MinTemp;
    
    void read(istream& in, queue<int>& q){
        while(!q.empty()){
          q.pop();
        }
    
        int x;
        for (int i = 0; i != 10; ++i)
        {
          in >> x;
          q.push(x);
          if(x > MAX){
            MAX = x;
          } 
          if(x < MIN){
            MIN = x;
          }
        }
      MinTemp = q.front();
      MaxTemp = q.back();
    }
    
    void deal(queue<int>& q, queue<int>& temp){
      while(!temp.empty()){
          temp.pop();
        }
    
          temp.push(MIN);
          q.pop();
          for (int i = 0; i != 8; ++i)
           {
             if(q.front() == MIN){
              q.front() = MinTemp;
            } 
            temp.push(q.front());
            q.pop();
           } 
           temp.push(MAX);
        
    
        while(!q.empty()){
          q.pop();
        }
    
        int flag = true;
        while(!temp.empty()){
          
            if(temp.front() == MAX){
              if(flag == true){
                temp.front() = MaxTemp;
              }
              flag = false;
            } 
            q.push(temp.front());
            temp.pop();
      }
    }
    
    void print(queue<int>& result){
    
    
      while(!result.empty()){
        printf("%d ", result.front());
          result.pop();
      }
    
      printf("\n");
    }
    
    int main(int argc, char const *argv[])
    {
      queue<int> q;
      queue<int> temp;
    
      read(cin,q);
      deal(q, temp);
      print(q);
      
      // printf("%d %d\n", MAX, MIN);
    
      return 0;
    }
    

    4 测试数据

    输入:
    10 9 8 7 6 5 4 1 3 2
    输出:
    1 9 8 7 6 5 4 2 3 10 
    
    输入:
    2 1 3 4 5 6 7 8 10 9
    输出:
    1 2 3 4 5 6 7 8 9 10 
    
    展开全文
  • 问题 A: C语言-数字交换 时间限制: 1 Sec 内存限制: 128 MB 提交: 326 解决: 102 [提交][状态][讨论版][命题人:外部导入] 题目描述 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数...

    问题 A: C语言-数字交换

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 326  解决: 102
    [提交][状态][讨论版][命题人:外部导入]

    题目描述

    输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。

    输入

    10个整数

    输出

    整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)

    样例输入

    2 1 3 4 5 6 7 8 10 9

    样例输出

    1 2 3 4 5 6 7 8 9 10 
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main() {
    	//max可能在a[0]位置,此时调换最小值后下标不准确,故分开查找调换
    	int a[10];
    	while (cin>>a[0]) {
    		int index = 0;
    		for (int i = 1; i < 10; i++) {
    			cin >> a[i];
    			if (a[i] < a[index]) {
    				index = i;
    			}
    		}
    		swap(a[0], a[index]);
    		for (int i = 0; i < 10; i++) {
    			if (a[i] > a[index]) {
    				index = i;
    			}
    		}
    		swap(a[9], a[index]);
    		for (int i = 0; i < 10; i++)
    			cout << a[i] << " ";
    		cout << endl;
    	}
    	return 0;
    }

     

    展开全文
  • 问题 A: C语言-数字交换 题目描述 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。 输入 10个整数 输出 整理后的十个数,...

                                            问题 A: C语言-数字交换

    题目描述

    输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。

    输入

    10个整数

    输出

    整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)

    样例输入

    2 1 3 4 5 6 7 8 10 9

    样例输出

    1 2 3 4 5 6 7 8 9 10 

    AC代码:

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int str[10];
    void input(int str[]){
        for(int i=0;i<10;i++){
            scanf("%d",&str[i]);
        }
    }
    void deal(int str[]){
        int max=0,min=0;
        for(int i=0;i<10;i++){
            if(str[min]>str[i]) {
              min=i;
            } 
        }
        swap(str[min],str[0]);
        for(int i=0;i<10;i++){
            if(str[max]<str[i]) max=i;
        } 
        swap(str[max],str[9]);
    }
    void output(int str[]){
        for(int i=0;i<10;i++){
            printf("%d ",str[i]);
        }
    }
    int main(){
        input(str);
        deal(str);
        output(str);
        printf("\n");
        return 0;
    }
    /**************************************************************
        Problem: 1863
        User: 2015212040209
        Language: C++
        Result: 正确
        Time:0 ms
        Memory:1116 kb
    ****************************************************************/

     

    展开全文
  • 问题 A: C语言-数字交换 时间限制:1 Sec内存限制:128 MB 提交:593解决:193 [提交][状态][讨论版][命题人:外部导入] 题目描述 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个...
  • CodeUp---100000600---C语言-数字交换 题目:http://codeup.cn/problem.php?cid=100000600&pid=0思路:最开始看到这个题目很疑惑,这个和队列有什么关系(到现在也没明白)?这道题我是用两个数组解决的,一个...
  • 题目描述 输入10个整数,将其中最小的数与第一个数对换,...思路:其实这个题没有必要用queue,不过需要注意的是,第一次进行交换后数组发生了改变,应当在第一次交换完之后再寻找最大的数。 #include <iostream>
  • codeup 1863 C语言-数字

    2019-04-06 17:06:58
    codeup 1863 C语言-数字 题目描述 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。 输入 10个整数 输出 整理后的十个数,每个数...
  • 2 1 3 4 5 6 7 8 10 9
  • 题目描述 输入10个整数,将其中最小的数与第一个数对换,然后把最大的数与最后一个数对换。 写三个函数; ①输入10个数;②进行处理;③输出10个数。 输入 ...整理后的十个数,每个数...C语言 题目截图: 思路: ...
  • 1.创建临时变量实现两个数的交换 这种方法的思想就是你把a和b想象成两个容器,你想交换容器里面的东西,然后借助了第三个容器tmp。具体实现就是先把a里面的东西拿出来放在tmp里面,现在a是空的,就可以把b里面的东西...
  • #include using namespace std; void Swap(int& x, int& y) { int temp = x; x = y; y = temp;... cout 交换后x的数值是:"交换后y的数值是:"; // 其中\t是水平制表符,显示在同一水平线上。 return 0; }
  • C语言-输入数字,然后进行倒序输出

    千次阅读 2020-07-16 12:45:31
    /*第一个和最后一个交换,第二个和倒数第二个交换,......一直到10/2的时候,也就是数组的一半的时候*/ a[10 - i - 1] = temp; } for (i = 0; i ; i++) { printf("%d", a[i]); } printf("\n"); return 0; }
  • C语言-数字调序 题目描述 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数。 输入 输入数据的个数n n个整数 移动的位置m ...
  • c语言--查表法

    2021-05-26 21:25:21
    } } /*我们多加了一个标记tag,这样就可以使其更完善,比如我们排序的数字中,只有第一个和第二个需要排序,后面的都是顺序的,我 们就不需要再进行循坏排序了,这会我们在循坏开始时,定义个状态bool类型的tag为...
  • c语言---选择排序for while do_while递归练习前言思路 前言 很多人感觉迷宫实现比较难,自动寻路更是摸不着头脑,现在我们就从0开始实现一个手动实现迷宫的过程,认真理解后过几天我再总结一个AI自动寻路的迷宫...
  • 写一个宏可以将一个数字的奇数位和偶数位交换 #define _CRT_SECURE_NO_WARNINGS 1 #include #include #define exchange_even_uneven(x)\ (((x&(0xAAAAAAAAA)) >> 1) + ((x&(0x555555555)) )) //前半部分代表奇数为...
  • C语言交换两个数字的三种做法

    千次阅读 2017-06-20 19:38:20
    C语言交换两个数字的三种做法 1.借助中间变量法: void swap(int *a , int *b) { int temp; temp = *a; *a = *b; *b = temp; } 2.使用加减法运算法:这种做法可能会导致溢出,从而造成错误。 void swap...
  • 1.输入一维数组的8个元素,并将最大值与最后一个数交换,最小值与第一个数交换,然后输出交换后的8个数。
  • 学完C语言基础视频,根据基础视频中迷宫游戏有感而发,自编一个数字九宫格游戏练练手。游戏及规则均是自创。AppStore上有九宫格游戏,本人曾经下载下来玩过,但是总是存在打乱次序后完不成的情况,可能是程序逻辑...
  • 本文实例为大家分享了C语言实现数字炸弹小游戏的具体代码,供大家参考,具体内容如下 使用的是C语言 # 内容 #include #include int main(){ //变量 char c_TheRequest = 1;//开始界面的字符 int in_Deltar = 1,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,775
精华内容 15,110
关键字:

c语言-数字交换

c语言 订阅