改代码#include <bits/stdc++.h> using namespace std; #define ll long long #define std ios::sync_with_stdio(false) int a[1000]; int b[29]; void pme(int m,int n) { if(m == n) { for(ll i=0;i<=n-1;i++) { if(a[i]) cout << "1 "; else cout << "0 "; } cout << endl; } else { a[m] = 1; pme(m+1,n); a[m] = 0; pme(m+1,n); } } void print(string T) { ll i; for(i=0;i<=T.size()-1;i++) { if(T[i] == ' ') continue; else if(((T[i]=='-' && T[i+1]=='>')||T[i]=='|'&&T[i+1]=='|')&&i<T.size()-1) cout << T[i] << T[i+1] << " ",i++; else if(T[i]=='<'&&T[i+1]=='-'&&T[i+2]=='>'&&i<T.size()-2) cout << T[i] << T[i+1] << T[i+2] << " ",i+=2; else cout << T[i] << " "; } cout << endl; return; } void sort(string T,char p[],int m) { for(ll i=0;i<=m-2;i++) { for(ll j=i+1;j<=m-1;j++) { if(p[i] > p[j]) swap(p[i],p[j]); } } return; } void show(string T,char p[],int m) { sort(T,p,m); for(ll i=0;i<=m-1;i++) { cout << p[i] << " "; } cout << endl; } int main() { std; string T; char p[1000]; while(getline(cin,T)) { fill(b,b+25,0); int c = 0; int m = 0; for(ll i=0;i<=T.size()-1;i++) { if(T[i] <= 'z' && T[i]>='a' && b[T[i]-'a']==0) { c++; b[T[i]-'a'] = 1; p[m++] = T[i]; } } p[m] = '\0'; print(T); show(T,p,m); pme(0,c); } return 0; }
时间: 2024-03-11 14:49:48 浏览: 133
C++万能头: bits/stdc++.h 下载
这个代码稍作修改就能够在C语言中使用了,修改如下:
```c
#include <stdio.h>
#include <string.h>
#define ll long long
int a[1000];
int b[29];
void pme(int m,int n) {
if(m == n) {
for(ll i=0;i<=n-1;i++) {
if(a[i])
printf("1 ");
else
printf("0 ");
}
printf("\n");
}
else {
a[m] = 1;
pme(m+1,n);
a[m] = 0;
pme(m+1,n);
}
}
void print(char T[]) {
ll i;
for(i=0;i<=strlen(T)-1;i++) {
if(T[i] == ' ')
continue;
else if(((T[i]=='-' && T[i+1]=='>')||T[i]=='|'&&T[i+1]=='|')&&i<strlen(T)-1)
printf("%c%c ", T[i], T[i+1]),i++;
else if(T[i]=='<'&&T[i+1]=='-'&&T[i+2]=='>'&&i<strlen(T)-2)
printf("%c%c%c ", T[i], T[i+1], T[i+2]),i+=2;
else
printf("%c ", T[i]);
}
printf("\n");
return;
}
void sort(char T[],char p[],int m) {
for(ll i=0;i<=m-2;i++) {
for(ll j=i+1;j<=m-1;j++) {
if(p[i] > p[j])
// 交换p[i]和p[j]
char tmp = p[i];
p[i] = p[j];
p[j] = tmp;
}
}
return;
}
void show(char T[],char p[],int m) {
sort(T,p,m);
for(ll i=0;i<=m-1;i++) {
printf("%c ", p[i]);
}
printf("\n");
}
int main() {
char T[1000];
char p[1000];
while(fgets(T, sizeof(T), stdin)) {
memset(b, 0, sizeof(b));
int c = 0;
int m = 0;
for(ll i=0;i<strlen(T);i++) {
if(T[i] <= 'z' && T[i]>='a' && b[T[i]-'a']==0) {
c++;
b[T[i]-'a'] = 1;
p[m++] = T[i];
}
}
p[m] = '\0';
print(T);
show(T,p,m);
pme(0,c);
}
return 0;
}
```
主要的修改内容包括:
1. 头文件改为`stdio.h`和`string.h`。
2. `using namespace std`删除。
3. `cout`改为`printf`。
4. `string`改为`char`。
5. `getline`改为`fgets`。
6. `swap`改为手动交换。
需要注意的是,C语言中的字符串是以字符数组的形式存储的,因此需要使用字符数组来替换原代码中的字符串。
阅读全文