您的位置:首页 > 理论基础

计算机那些事儿 --主流操作系统与编程语言发展概要

2013-12-19 17:49 330 查看
括号合法性

#include <stdio.h>
void main()
{
char a[100];
int i=0,j=0;
char c;
scanf("%s",a);
while(a[j] != '\0' &&i>=0)
{
if(a[j]=='(')
i++;
if(a[j]==')')
{
i--;
}
if(i<0)
break;
j++;
}
if(i==0)
printf("YES");
else
printf("NO");
}
2.背包

给定一个数,比如20
然后 再给定几个数字 1 3 5 7 8
1 3 5 7 8
0 0 1 1 1
因为5+7+8=20



3.进制转换

#include <iostream>
#include <string.h>
using namespace std;
void ten_to_n(int num,int n)
{
int i=0;
int len;
char c[40]="\n";
char ans[40]="\n";
while(num!=0)
{
c[i++]=num%n+'0';
num=num/n;
}
len=strlen(c);
for(i=len;i<8;i++)
{
c[i]='0';
}
for(i=0;i<8;i++)
{
ans[i]=c[8-i-1];
}
puts(ans);
}
void n_to_ten()
{
for (int i=0;i<=length;i++)
{
ans=ans*x+num[i];
}
}
int main()
{
int num;
cin>>num;
ten_to_n(num,2);
}
4.子串分离
题目一:子串分离
题目描述:
通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。
如果输入“abc def gh i d”,结果将是abc,def,gh,i,d,
要求实现函数:
void DivideString(const char *pInputStr, long lInputLen, char*pOutputStr);

【输入】 pInputStr: 输入字符串
lInputLen: 输入字符串长度
【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;
【注意】只需要完成该函数功能算法,中间不需要有任何IO 的输入输出
示例
输入:“abc def gh i d”
输出:“abc,def,gh,i,d,”
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char s[100],r[100];
int i=0,j=0;
gets(s);
while(s[i]!='\0')
{
if(s[i]!=' ')
{
r[j++]=s[i++];
if(s[i]==' ')	r[j++]=',';
}
else
i++;
}
r[j]=',';
r[j+1]='\0';
puts(r);
}
5.单词排序
问题描述:
在给定字符串中找出单词( “单词”由大写字母和小写字母字符构成,其他非字母字符视为单词的间隔,如空格、问号、数字等等;另外单个字母不算单词);找到单词后,按照长度进行降序排序,(排序时如果长度相同,则按出现的顺序进行排列),然后输出到一个新的字符串中;如果某个单词重复出现多次,则只输出一次;如果整个输入的字符串中没有找到单词,请输出空串。输出的单词之间使用一个“空格”隔开,最后一个单词后不加空格。
要求实现函数:
void my_word(charinput[], char output[])
【输入】 char input[], 输入的字符串
【输出】 char output[],输出的字符串
【返回】无
示例
输入:charinput[]="some local buses, some1234123drivers" ,
输出:charoutput[]="drivers local buses some"
输入:charinput[]="%A^123 t 3453i*()" ,
输出:charoutput[]=""
#include<iostream>
#include<string.h>
#include<vector>
#include<algorithm>
using namespace std;
bool myfunction (const string &str1,const string &str2) {
return (str2.length() < str1.length());
}

void my_word(char input[], char output[]){

vector<string> str;
char *cur = input;
char *p = input;
int len;
bool flag = false;
//去除杂质,取单词
while(*p != '\0'){
if((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z'))
p++;
else{
len = p-cur;
if(len > 1){
string tmp(cur,len);
for(int i=0;i<str.size();i++)
if(tmp == str[i])
flag = true;
if(flag != true)
str.push_back(tmp);
}
cur = p+1;
p++;
flag = false;
}
}
len = p-cur;
if(len > 1){
string tmp(cur,len);
for(int i=0;i<str.size();i++)
if(tmp == str[i])
flag = true;
if(flag != true)
str.push_back(tmp);
}
//sort
sort(str.begin(),str.end(),myfunction);
//拼接字符串
*output='\0';
int i;
for(i=0;i<str.size()-1;i++){
strcpy(output+strlen(output),(str[i]+" ").c_str());
}
strcpy(output+strlen(output),(str[i]).c_str());
cout<<output<<endl;
}
int main(){

char input[]="some ninja local buses, somes1234123drivers";
char output[500];
my_word(input, output);
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: