摘要:本文主要向大家介绍了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+频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号