导航:复试上机历年真题,题目未搜集全
十四:2003 十三:2004
十二:2005 十一:2006
十:2007 九:2008
八:2009 七:2012
六:2013 五:2014
四:2015 三:2017
二:2018 一:2019
十四、2003
1、字符串统计连续整数
题目:
输入一个字符串,内有数字和非数字字符。如 A123X456Y7A,302ATB567BC,打印字符串中所有连续(指不含非数字字符)的数字所组成的整数,并统计共有多少个整数
代码:
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
//1. 输入一个字符串,内有数字和非数字字符。如 A123X456Y7A,302ATB567BC,
//打印字符串中所有连续(指不含非数字字符)的数字所组成的整数,并统计共有
//多少个整数。
const int maxn = 100;
bool isNumber(char ch)
{
if(ch<='9'&&ch>='0')
return true;
else
return false;
}
char a[maxn][maxn];//用二维数组统计
int row=0, col=0;
int main()
{
char str[maxn];
int i, j, len;
gets(str);
len = strlen(str);
memset(a, 0, maxn*maxn);
for(i=0;i<len;i++)//逐个判断
{
while(i<len&&isNumber(str[i])==true)//如果是数字则放在二维数组中
a[row][col++] = str[i++];
row++;
col = 0;
}
for(i=0;i<row;i++)
if(strlen(a[i])>0)//打印数字
{
for(j=0;j<strlen(a[i]);j++)
printf("%c", a[i][j]);
printf("
");
}
return 0;
}
2、分糖果
题目:
甲、乙、丙、丁四人共有糖若干块,甲先拿出一些糖分给另外三人,使他们三人的糖数加倍;乙拿出一些糖分给另外三人,也使他们三人的糖数加倍;丙、丁也照此办理,此时甲、乙、丙、丁四人各有 16 块,编程求出四个人开始各有糖多少块。
逆推即可
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
//甲、乙、丙、丁四人共有糖若干块,甲先拿出一些糖分给另外三人,使他们
//三人的糖数加倍;乙拿出一些糖分给另外三人,也使他们三人的糖数加倍;丙、
//丁也照此办理,此时甲、乙、丙、丁四人各有 16 块,编程求出四个人开始各有
//糖多少块
int main()
{
int sums, i, j;
int a[4];
fill(a, a+4, 16);//最后每个人都有16块糖果
for(i=3;i>=0;i--)
{
sums = 0;
for(j=0;j<4;j++)
{
if(j!=i)//分别找到另外三个人,糖果减半
{
sums += a[j] / 2;
a[j] /= 2;
}
}
a[i] += sums;
}
for(i=0;i<4;i++)
printf("%d ", a[i]);
return 0;
}