strcmp(p[i],p[i+1])>0是什么意思
时间: 2023-09-26 07:09:48 浏览: 128
strcmp(p[i], p[i+1]) > 0 是一个字符串比较的判断语句,它的含义是比较字符串 p[i] 和 p[i+1] 的大小。如果 p[i] 大于 p[i+1],则返回一个正数,如果 p[i] 小于 p[i+1],则返回一个负数,如果相等则返回 0。因此,strcmp(p[i], p[i+1]) > 0 的判断结果为真(true)时,表示字符串 p[i] 大于 p[i+1]。
相关问题
#include<iostream> #include<algorithm> #include<string> #include<cstring> using namespace std; struct add { char w[4]; double z; }s[10010]; double p,sum=0; int main() { int n; cin>>n; char a[n][4],k[n][4]; for(int i=0;i<n;i++) cin>>a[i]; int m; cin>>m; for(int i=0;i<m;i++) { cin>>s[i].w>>s[i].z; sum+=s[i].z; } p=sum/m; int t=0,v=0; for(int i=0;i<m;i++) { if(s[i].z>p) { for(int j=0;j<n;j++) { if(strcmp(s[i].w,a[j])==0) t++; } if(t==0) { strcpy(k[v],s[i].w); v++; } } } sort(k,k+v); for(int i=0;i<v;i++) cout<<k[i]<<endl; return 0; }改错
代码中存在以下问题:
1. 动态数组的声明需要使用变量,而不是常量。因此,char a[n][4]应改为char a[10010][4]。
2. 对于结构体数组s,循环应该从0到m-1,而不是从1到m。
3. 在循环中,应该将变量t初始化为0,以避免累积错误。
4. 在变量v增加后,应该将其减少1,以便将新的字符串存储到正确的位置。
下面是修改后的代码:
```c++
#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
using namespace std;
struct add {
char w[4];
double z;
}s[10010];
double p,sum=0;
int main() {
int n;
cin>>n;
char a[10010][4],k[10010][4];
for(int i=0;i<n;i++)
cin>>a[i];
int m;
cin>>m;
for(int i=0;i<m;i++)
{
cin>>s[i].w>>s[i].z;
sum+=s[i].z;
}
p=sum/m;
int t=0,v=0;
for(int i=0;i<m;i++)
{
t=0;
if(s[i].z>p)
{
for(int j=0;j<n;j++)
{
if(strcmp(s[i].w,a[j])==0)
t++;
}
if(t==0)
{
strcpy(k[v],s[i].w);
v++;
v--;
}
}
}
sort(k,k+v);
for(int i=0;i<v;i++)
cout<<k[i]<<endl;
return 0;
}
```
#include<bits/stdc++.h> using namespace std; int main() { int m,n,s; cin>>m>>n>>s; char a[m][30],b[m][30]; int t=0; for(int i=1;i<=m;i++) { cin>>a[i]; } int p=1,y=0; for(int i=1;i<=m;i++) { if(i%n==0) p=1; p++; if(p==s) { y++; strcpy(b[t++],a[i]); for(int k=0;k<t;k++) { if(strcmp(a[i],b[k])==0) { strcpy(b[k],a[i+1]); } } } } if(y==0) { cout<<"Keep going..."<<endl; } else { for(int i=0;i<t;i++) { cout<<b[i]<<endl; } } return 0; }改错
这段代码存在一些问题,主要是数组下标越界和字符串处理函数的使用问题。下面是修改后的代码:
```c++
#include<bits/stdc++.h>
using namespace std;
int main() {
int m,n,s;
cin>>m>>n>>s;
string a[m],b[m];
int t=0;
for(int i=0;i<m;i++) // 数组下标从0开始
{
cin>>a[i];
}
int p=s-1,y=0; // p初始值应为s-1
for(int i=p;i<m;i+=n) // i每次加n
{
bool flag=true;
for(int k=0;k<t;k++)
{
if(a[i]==b[k]) // 字符串比较应使用==,而不是strcmp函数
{
flag=false;
break;
}
}
if(flag) // 如果不重复,则加入输出数组b中
{
b[t++]=a[i];
}
else // 如果重复,则将p加1
{
p++;
}
}
if(t==0) // 输出判断应该是t==0
{
cout<<"Keep going..."<<endl;
}
else
{
for(int i=0;i<t;i++)
{
cout<<b[i]<<endl;
}
}
return 0;
}
```
阅读全文