10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:
(1) 及格线是10的倍数;
(2) 保证至少有60%的学生及格;
(3) 如果所有的学生都高于60分,则及格线为60分
#include "stdafx.h"
#include <iostream>
using namespace std;
int CaculateScore(int a[],int n);
int _tmain(int argc, _TCHAR* argv[])
{
int Score[10]={40,50,55,49,58,73,80,65,78,90};
cout<<CaculateScore(Score,10)<<endl;
system("pause");
return 0;
}
int CaculateScore(int a[],int n)
{
//对分数由小到大排序
for(int i=1;i<n;i++)
{
for(int j=n-1;j>=i;j--)
{
if(a[j]<a[j-1])
{
int temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
if(a[0]>=60)
{
return 60;
}
else
{
return (a[4]/10)*10;
}
}
2.
一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。每盏电灯由一个拉线开关控制。开始,电灯全部关着。
有n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。n个学生按此规定走完后,长廊里电灯有几盏亮着。
注:电灯数和学生数一致。
#include "stdafx.h"
#include <iostream>
using namespace std;
int lightCount(int n);
int _tmain(int argc, _TCHAR* argv[])
{
cout<<lightCount(100)<<endl;
system("pause");
return 0;
}
int lightCount(int n)
{
bool *a=new bool[n];
for(int i=0;i<n;i++)
{
a[i]=false;
}
if((n>=1)&&(n<=65535))
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(j%i==0)
{
a[j]=!a[j];
}
}
}
int num=0;
for(int i=0;i<n;i++)
{
if(a[i]==true)
{
num++;
}
}
return num;
}
else
{
return -1;
}
}
3.
输入一串数,以','分隔,输出所有数中去掉最大值、最小值之后剩下的个数。(其中最大值与最小值可能有多个)
#include "stdafx.h"
#include <iostream>
using namespace std;
#define Max 100
int CountFunction(char *str);
int _tmain(int argc, _TCHAR* argv[])
{
char str[] = "12,21,34,56,77,12,78,77 ";
cout<<CountFunction(str)<<endl;
system("pause");
return 0;
}
int CountFunction(char *str)
{
char *p = NULL;
int a[Max];
int num=0;
p = strtok(str, ",");
a[num++]=atoi(p);
while((p = strtok(NULL, ","))!=NULL)
{
a[num++]=atoi(p);
}
int min,max;
min=max=a[0];
for(int i=1;i<num;i++)
{
if(min>a[i]) min=a[i];
if(max<a[i]) max=a[i];
}
int count=0;
for(int i=0;i<num;i++)
{
if((a[i]>min)&&(a[i]<max))
{
count++;
}
}
return count;
}
4.
要从5个人中选取2个人作为礼仪,其中每个人的身高范围为160-190,要求2个人的身高差值最小(如果差值相同的话,选取其中最高的两人),以升序输出两个人的身高。
Smpleinput:161 189 167 172188 Sample outPut: 188 189
#include "stdafx.h"
#include <iostream>
using namespace std;
#define NUM 5
int _tmain(int argc, _TCHAR* argv[])
{
int a[NUM]; //身高数组
int Error=30; //身高差值变量 最大差值为30cm
int m=-1,n=-1;
for(int i=0;i<NUM;i++)
{
cin>>a[i];
while(a[i]>190||a[i]<160)
{
cin>>a[i];
}
}
for(int i=0;i<NUM;i++)
{
for(int j=i+1;j<NUM;j++)
{
if(abs(a[i]-a[j])<Error)
{
Error=abs(a[i]-a[j]);
if(a[i]>a[j])
{
m=j;
n=i;
}
else
{
m=i;
n=j;
}
}
else if((abs(a[i]-a[j])==Error)&&(a[i]>a[m])&&(a[i]>a[n]))//差值一样
{
if(a[i]>a[j])
{
m=j;
n=i;
}
else
{
m=i;
n=j;
}
}
}
}
cout<<a[m]<<" "<<a[n];
system("pause");
return 0;
}
5.
输入一串字符串,其中有普通的字符与括号组成(包括‘(’、‘)’、‘[’,']'),要求验证括号是否匹配,如果匹配则输出0、否则输出1.
Smpleinput:dfa(sdf)df[dfds(dfd)] Smple outPut:0
#include "stdafx.h"
#include <iostream>
#define max 100
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char a[max];
char sign[max];
int flag=0; //0为匹配 1为不匹配
int num=0;
while(1)
{
cin>>a[num++];
if(a[num-1]=='#')
{
a[num-1]='\0';
num--;
break;
}
}
int snum=0;
bool IsFlag=false;
for(int i=0;i<num;i++)
{
if(a[i]=='['||a[i]=='(')
{
sign[snum++]=a[i];
IsFlag=true;
}
else if(a[i]==')')
{
if(sign[snum-1]=='(') //匹配
{
sign[snum-1]='\0';
snum--;
}
else
{
flag=1;
break;
}
}
else if(a[i]==']')
{
if(sign[snum-1]=='[') //匹配
{
sign[snum-1]='\0';
snum--;
}
else
{
flag=1;
break;
}
}
}
if(IsFlag==false)//如果没有括号
{
flag=1;
}
cout<<flag<<endl;
system("pause");
return 0;
}
6.
题目要求:输入一个字符串,然后在输入一个整数,就是替换字符串的次数,然后依次输入需要替换的字符串……
例如:
输入:asdfghjasdfghj
3
as->bnm
df->qwe
gh->yui
输出:bnmqweyuijbnmqweyuij
意思就是,将输入的字符串中,as替换成bnm,df替换成qwe,gh替换成yui,总共替换三次,注意次数是不限定的,可以是任意整数等。
如果输入的次数是2,举例说明:
输入:asdfgasdfg
2
as->bn
df->yuio
输出:bnyuiogbnyuiog
此题用c++或java较为简单
#include <iostream>
#include <string>
using namespace std;
int main()
{
string temp;
string s; //输入字符串
cin>>s;
int num; //输入替换次数
cin>>num;
string* ss=new string[num];
string* ss_replace=new string[num];
for(int i=0;i<num;i++)
{
cin>>temp;
int pos=temp.find("->");
ss[i]=temp.substr(0,pos);
ss_replace[i]=temp.substr(pos+2,temp.size()-pos-1);
}
for(int i=0;i<num;i++)
{
int curPos = 0;
int pos1;
while((pos1 = s.find(ss[i], curPos)) != -1)
{
s.replace(pos1, ss[i].size(), ss_replace[i]); // 一次替换
curPos = pos1 + ss_replace[i].size(); // 防止循环替换!!
}
}
cout<<s<<endl;
system("pause");
return 0;
}