int alert(SqList *L){ int i; for(i=0;i<L->length;i++){ if(L->O2[i] >= 1 && L->rou[i] >= 2 && L->ORP[i] >= 3 && L->PH[i] <= 4 && L->dirt[i] >= 5) { strcpy(L->pre[i],"轻度污染"); // 轻度污染 } else strcpy(L->pre[i],"重度污染"); // 重度污染 } for(i=0;i<L->length;i++) { printf("第%d个点的污染情况为:%s\n",i+1,L->pre[i]); } printf("\n"); }将上述代码修改正确
时间: 2023-12-19 15:05:04 浏览: 72
代码中存在两个问题:
1. 函数返回类型为 int,但是没有返回值,需要修改为 void。
2. 函数体中两个 strcpy 函数中的目标字符串数组大小没有确定,需要确定大小或使用动态分配内存的方式。
修改后的代码如下:
```
void alert(SqList *L){
int i;
for(i=0;i<L->length;i++){
if(L->O2[i] >= 1 && L->rou[i] >= 2 && L->ORP[i] >= 3 && L->PH[i] <= 4 && L->dirt[i] >= 5)
{
strncpy(L->pre[i],"轻度污染", MAX_STRING_SIZE); // 轻度污染
}
else strncpy(L->pre[i],"重度污染", MAX_STRING_SIZE); // 重度污染
}
for(i=0;i<L->length;i++)
{
printf("第%d个点的污染情况为:%s\n",i+1,L->pre[i]);
}
printf("\n");
}
```
其中,MAX_STRING_SIZE 为预先定义的目标字符串数组的最大长度。另外,可以使用 strncpy 函数代替 strcpy 函数以确保字符串拷贝的安全。
相关问题
#define ListSize 100 typedef struct { ElemType elem[ListSize]; int length; }Sqlist; void sq_dele(Sqlist*L,ElemType K1,ElemType K2) { i=0; while(i<L->length) if((L->elem[i]>=K1)&&(L->elem[i]<=K2)) break; else i++; if(i<L->length) { j=1; while((i+j<L->length)&&(L->elem[i+j]<=K2)) j++; for(k=i+j;k<L->length;k++) L->elem[k-j]=L->[k]; L->length=L->length-j; } }/*sq_dele*/ 添加注释
这段代码定义了一个长度为ListSize的顺序表结构体Sqlist,其中包含了ElemType类型的数组elem和整型变量length。接下来sq_dele函数表示删除顺序表中值在K1和K2之间的元素。其中使用了i、j、k三个整型变量来作为循环计数器。具体实现过程为:
1. 初始化i为0,使用while循环查找第一个值在K1和K2之间的元素,直到找到或者遍历完整个表。
2. 如果找到了该元素,则初始化j为1,使用while循环找到连续的值在K1和K2之间的元素,计算出总共有j个这样的元素。
3. 从第i+j个元素开始,将后面的元素向前移动j个位置,覆盖掉第i到i+j-1个元素。
4. 最后将表的长度减少j。
注释中的/*sq_dele*/表示该段注释是针对sq_dele函数的。
void fun1(SqList *L,ElemType e){ int i=0,j; while(i<L->length && L->data[i].zhishu<e.zhishu) i++; if(L->data[i].zhishu==e.zhishu) L->data[i].xishu+=e.xishu; else{ for (j=L->length-1;j>=i;j--) L->data[j+1]=L->data[j]; L->data[i]=e; L->length++;}}
这是一个函数 fun1,它的作用是向一个顺序表 L 中插入一个元素 e。该顺序表中的元素是按照指数从小到大排列的。函数会遍历顺序表,找到第一个指数大于等于 e 的元素位置 i,然后判断该位置的元素是否和 e 的指数相同,如果相同则将两个元素的系数相加,如果不同则将 e 插入到该位置。如果 i 大于等于顺序表的长度,则直接将 e 插入到顺序表的末尾。插入完成后,顺序表的长度会增加 1。
阅读全文