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;
}