因为一直学的都是坑爹的C,学长给了一个C++的代码(感谢学长 T T),
作为小白的我头文件都还看不懂 ≥~~≤ ,这里就先普及了一下C++与C语言头文件的一些常识(摘录) [感谢度娘]:
以学长给的头文件为例:
#include <cstdio> // stdio.h
#include <iostream> //input output stream
#include <cstring> //string.h
#include <algorithm> //该头文件包含了一些算法
using namespace std; //用#include<iostream.h>就不需写这句话(旧标准)。但是如果你用
// #include<iostream>就必须要写
// 使用std这个名字空间
#include 是个包含命令,就是把iostream.h这个文件里的内容复制到这个地方
ostream.h是input output stream的简写,意思为标准的输入输出流头文件。它包含:
(1)cin>>"要输入的内容"
(2)cout<<"要输出的内容"
这两个输入输出的方法需要#include<iostream.h>来声明头文件。
iostream.h与iostream是不同的。
#include<iostream.h>是在旧的标准C++中使用。在新标准中,用#include<iostream>。
iostream 的意思是输入输出流。
#include<iostream>是标准的C++头文件,任何符合标准的C++开发环境都有这个头文件。
using namespace std;
是:后缀为.h的头文件C++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,
声明在带.h后缀的头文件里,C++标准为了和C区别开,
也为了正确使用命名空间,规定头文件不使用后缀.h。因此,当使用<iostream.h>时,
相当于在c中调用库函数,使用的是全局命名空间,
也就是早期的c++实现;当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;
这样才能正确使用cout。
下面我粘一下题目:
排序
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 41661 Accepted Submission(s): 11936
你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。
输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
0051231232050775
0 77 12312320
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
char str[1100];
int a[1100];
int main ()
{
while(scanf("%s", &str)!=EOF)
{
int len = strlen(str);
int k = 0, i;
memset(a, 0 , sizeof(a));
// memset(void *s,int c,size_t n) 将已开辟内存空间 s 的首 n 个字节的值设为值 c;
// 一字节一字节地把整个数组设置为一个指定的值,用于初始化;
for(i=0; i< len; i++)
{
if(str[i] != '5') //搜索开头的‘5’就向后(就跳过,不读入)
break;
}
for(; i < len; ++i)
{
if(str[i] != '5')
{
for(; i<len && str[i] != '5'; ++i)<span style="white-space:pre"> </span>//<span style="white-space:pre"> </span>不是5且未结束
{
a[k] = a[k] * 10 + str[i] - '0';//<span style="white-space:pre"> </span>分离出5后面的数字;!!!
}
k++; // 利用k记录数据的个数……
}
}
sort(a, a + k);
// sort(begin,end),表示一个范围,把数组a按升序排序;
// 用#include <algorithm> sort即可使用</span>
for(int j = 0; j < k - 1; ++j) // 输出除最后一个元素以外的其他元素
printf("%d\n", a[k - 1]); // 最后一个元素结束输出空格
}
return 0;
}
printf("%d ", a[j]);
printf("%d\n", a[k - 1]); 保证输出格式的正确;
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
char str[1001];
int end[1001];
while(scanf("%s",&str)!=EOF)
{
int len,n=0,i,p,q,j,temp;
len=strlen(str);
for(i=0; i<len; i++)
{
if(str[i]!='5') break;
}
for(; i<len; i++)
{
if(str[i]!='5')
{
for(end[n]=0; str[i]!='5'&&i<len; i++)
{
end[n]=end[n]*10+str[i]-'0';
}
n++;
}
}
for(p=0; p<n; p++)<span style="white-space:pre"> //冒泡排序
{
for(q=0; q<n-p-1; q++)
{
if(end[q]>end[q+1])
{
temp=end[q];
end[q]=end[q+1];
end[q+1]=temp;
}
}
}
for(j = 0; j < n - 1; ++j)
printf("%d ", end[j]);
printf("%d\n", end[n - 1]);
}
return 0;
}