C/C++知识点之C语言第二次考试改错
小标 2018-11-12 来源 : 阅读 928 评论 0

摘要:本文主要向大家介绍了C/C++知识点之C语言第二次考试改错,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之C语言第二次考试改错,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

A卷(改错)

1. 数组排序(50分)
输入10个整数,存入数组,将最大的数与第一个数交换,最小的数与最后一个数交换,交换后存储并输出。
输入:10个整数。
输出:交换后的10个数。
样例:

  评分标准:
(1)正确定义数组,给出输入语句,正确实现10个整数的输入,20分;
(2)正确交换,20分;
(3)正确输出结果,10分。

 #include "stdafx.h"  
    int main(void)  
        {  
         int a[10];  
           for (int i = 0; i < 10; i++)  
             {  
             scanf_s("%d", &a[i]);  
           }  
         int min = a[0],max = a[0]; ;  
          int minnum = 0,maxnum = 0;       
          int j;  
           for (j = 0;j < 10;j++)  
           {  
             if (a[j] < min)  
               {  
                 min = a[j];  
                 minnum = j;  
             }  
         }  
         int k ;  
           for (k = 0; k < 10; k++)  
           {  
             if (a[k] > max)  
               {  
                 max = a[k];  
                 maxnum = k;  
             }  
         }  
         int temp;  
           temp = a[0];  
         a[0] = a[maxnum];  
         a[maxnum] = temp;  
     
     temp = a[9];  
         a[9] = a[minnum];  
         a[minnum] = temp;  
     
     for (int i = 0; i < 10; i++)  
             {  
             printf("%d ", a[i]);  
           }  
     return 0;
}  
     
 2. 查找最小的k个元素(40分)
题目描述:输入n个正整数(可以有重复的情况出现),输出其中最小的k个(如有重复的情况出现,重复输出),其中1≤k≤n≤10000,每个正整数小于10000。 例如输入1、4、8、2、5、7、6、3这8个数字,则最小的4个数字为1、2、3、4。
输入:第一行,n和k,用空格隔开。
n个整数,用空格隔开。  
输出:最小的k个正整数,且从小到大排序,用空格隔开。
样例:

  评分标准:
(1)正确定义数组,给出输入语句,正确实现n个整数的输入,10分;
(2)正确找到最小的k个数,10分;
(3)正确将k个数进行排序,10分;
(4)正确输出结果,10分。

 #include "stdafx.h"  
      int maopaopaixu(int a[], int n);  
          int main(void)  
        {  
         int n, k;  
           scanf_s("%d %d", &n,&k);  
           int a[10000];  
           for(int i = 0;i<n;i++)  
             {  
             scanf_s("%d", &a[i]);  
           }  
         maopaopaixu(a, n);  
         for (int i = 0; i < k; i++)  
             {  
             printf("%d ", a[i]);  
           }  
       
     return 0;  
       }  
        
 int maopaopaixu(int a[], int n)  
          {  
         int temp;  
           for(int i =0;i<n;i++)  
                 for (int j = 0; j < n - i - 1; j++)  
                 {  
                 if (a[j] > a[j + 1])  
                   {  
                     temp = a[j];  
                     a[j] = a[j + 1];  
                     a[j + 1] = temp;  
                 }  
             }  
         return 0;  
       }  
     
 
 3. 单词翻转(50分)
  题目描述:对于一句话,在不改变单词的顺序的情况下,将每一个单词翻转(单词倒序写)。(失分原因:以为是对称)
  输入:只有英文单词和空格(不含其它字符)。如:其中I am happy today是键盘输入的。
输出:按题目要求变换的字符串
(主要转换功能用自定义函数实现)
样例:

  评分标准:
(1)正确定义数组,给出输入语句,正确实现句子的输入,10分;
(2)正确给出函数定义,5分;
(3)函数正确实现,10分;
(4)函数正确调用,10分;
(5)正确输出结果,15分。

 
 #include "stdafx.h"  
      #define MAX 10000  
      int swap(char a[],int i, int j);  
              
 int main(void)  
        {     
         char words[MAX];  
           gets_s(words);  
         int num[MAX] = { -1 };  
           int j = 1;  
           for (int i = 0;;i++)  
             {  
             if (words[i] == ‘ ‘ || words[i] == ‘\0‘)  
                   {  
                 num[j] = i;  
                 j++;  
             }  
             if (words[i] == ‘\0‘) break;  
             
     }  
         for(int i = 0;i < j - 1;i++)  
             {  
             swap(words,num[i],num[i + 1]);  
             printf(" ");  
           }  
       
     return 0;  
       }  
       
   
 int swap(char a[],int i,int j) //i,j都是空格的位置  
      {  
         for (;j - 1>= i + 1;j--)  
           {  
             printf("%c",a[j - 1]);  
           }  
         return 0;  
       }  
     下一次 C语言分数一定不能这么低了
 
 B卷
3. 查找并删除子串(50分)
给定一个短字符串(不含空格),再给一个带有空格的长字符串,在长字符串中删除所含有的短字符串。  
输入:先输入一个指定将被删除的字符串,再输入一串将被删除指定字符串的长字符串。
输出:在长字符串中查找并删除输入的短字符串(不区分大小写),去掉空格后输出。如果长字符串中不含有短字符串,则只对长字符串去空格后输出。 
样例:

  
  评分标准:
(1)正确实现输入,10分;
(2)正确删除子串,30分;
(3)输出正确,10分。

 C卷
3. 最少的交换(50分)
题目描述:现在给你一个由n个互不相同的整数组成的序列,现在要求你任意交换相邻的两个数字,使序列成为升序序列,请问最少的交换次数是多少?
输入:包含多组测试数据。每组输入第一行是一个正整数n(n<20),表示序列的长度,当n=0时,终止程序。接下来的n行,每行一个整数a[i],表示序列中第i个元素。
输出:对于每组输入,输出使得所给序列升序的最少交换次数。
(主要交换功能用自定义函数实现)
样例:

  评分标准:
(1)正确定义数组,给出输入语句,正确实现n个整数的输入,10分;
(2)正确给出函数定义,5分;
(3)函数正确实现,10分;
(4)函数正确调用,10分;
(5)正确输出结果,10分;
(6)实现多组数据,5分。
有数学背景 :逆序数

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程