#include<bits/stdc++.h> using namespace std; struct node{ char a; char c; char fu; int t; int f; }; node zhi[100]; char pai[8]; vector<char>v; int main(){ int n; cin>>n; int t=0; int t1=0;getchar(); for(int i=0;i<n;i++){ char a,b,c; int d; string s; getline(cin,s); a=s[0]; b=s[1]; if(b=='='){ d=s[2]-'0'; pai[d-1]=a; t1++;continue; } c=s[2]; d=s[3]-'0'; if(b=='>'){ zhi[t].a=a; zhi[t].fu=b; zhi[t].c=c; zhi[t].t=d; zhi[t++].f=0;} else { zhi[t].a=c; zhi[t].fu='>'; zhi[t].c=a; zhi[t].t=d; zhi[t++].f=0; } } int k=t; while(k--){ for(int i=0;i<t;i++){ if(zhi[i].f==0){ for(int j=0;j<7;j++){ if(pai[j]==zhi[i].a){ int c=zhi[i].t; if(c+j<7) pai[(c+j)]=zhi[i].c; else pai[(c+j)%7]=zhi[i].c; zhi[i].f=1; } if(pai[j]==zhi[i].c){ int c=zhi[i].t; pai[(j-c+7)%7]=zhi[i].a; zhi[i].f=1; } } } } } for(int i=0;i<7;i++){ cout<<pai[i]; } }把这个代码换成C语言,并优化后增加注释
时间: 2024-03-23 17:36:30 浏览: 120
把这个代码换成C语言,并优化后增加注释:
```c
#include <stdio.h>
#include <string.h>
struct node{
char a;
char c;
char fu;
int t;
int f;
};
int main(){
struct node zhi[100];
char pai[8];
memset(pai, 0, sizeof(pai)); // 初始化数组pai为全0
int n;
scanf("%d", &n);
getchar(); // 读取换行符
for(int i = 0; i < n; i++){
char a,b,c;
int d;
char s[100];
fgets(s, sizeof(s), stdin); // 读入一行字符串
a = s[0];
b = s[1];
if(b == '='){
d = s[2] - '0';
pai[d - 1] = a;
continue;
}
c = s[2];
d = s[3] - '0';
if(b == '>'){
zhi[i].a = a;
zhi[i].fu = b;
zhi[i].c = c;
zhi[i].t = d;
zhi[i].f = 0;
}
else{
zhi[i].a = c;
zhi[i].fu = '>';
zhi[i].c = a;
zhi[i].t = d;
zhi[i].f = 0;
}
}
int t = n, t1 = 0;
while(t--){ // 进行n轮循环
for(int i = 0; i < n; i++){
if(zhi[i].f == 0){
for(int j = 0; j < 7; j++){
if(pai[j] == zhi[i].a){ // 如果左边的字符在pai数组中,就执行下面的操作
int c = zhi[i].t;
if(c + j < 7)
pai[c + j] = zhi[i].c;
else
pai[(c + j) % 7] = zhi[i].c;
zhi[i].f = 1; // 标记该方程已经被处理过
}
if(pai[j] == zhi[i].c){ // 如果右边的字符在pai数组中,就执行下面的操作
int c = zhi[i].t;
pai[(j - c + 7) % 7] = zhi[i].a;
zhi[i].f = 1; // 标记该方程已经被处理过
}
}
}
}
}
for(int i = 0; i < 7; i++){
printf("%c", pai[i]); // 输出pai数组
}
return 0;
}
```
阅读全文