gpt4 book ai didi

c - 如何修复c中if语句崩溃的问题

转载 作者:行者123 更新时间:2023-11-30 19:01:25 34 4
gpt4 key购买 nike

main int() 内的数组有 N 个输入。分配输入后,您需要检查数组的输入是否静态。我的想法是让函数让 IsMonoStatic(T) 返回 bool 值和 3 个另一个函数。下面我将向他们展示。如果函数返回 true,那么我必须在终端中以某种方式打印一些内容,它仅适用于 IsMonoStatic(T),当我在分配后尝试为 IsMonoNotSmaller(T) 返回 true 的输入时输入终端崩溃实际上不打印消息并且终端只是卡住,我需要使用 ctrl + c 才能退出正在执行的程序。

当 IsMonoStatic(T) 返回 true 时,第一个条件在终端起作用

4
1
1
1
1
Array monotonik statik

但是当我尝试另一个输入时,程序崩溃了。

这是我的代码程序。

#include <stdio.h>
#include "array.h"
#include "boolean.h"

boolean IsMonoNotSmaller (TabInt T)
{
// kamus lokal
IdxType i; boolean cek;
// algoritma
i = GetFirstIdx(T);
cek = true; // masih dalam kondisi cek
while ((i<GetLastIdx(T))&&(cek==true)){
if (T.TI[i]<=T.TI[i+1]){
cek = true; // benar maka cek lagi
i++;
} else{
cek = false; // berhenti loop
}
}
return cek;
}

boolean IsMonoNotGreater (TabInt T)
{
// kamus lokal
IdxType i; boolean cek;
// algoritma
i = GetFirstIdx(T);
cek = true;
while ((i<GetLastIdx(T))&&(cek==true)){
if (T.TI[i]>=T.TI[i+1]){
cek = true; // benar maka cek lagi
i++;
} else{
cek = false; // berhenti loop
}
}
return cek;
}

boolean IsMonoStatic (TabInt T)
{
// kamus lokal
IdxType i;
boolean cek;
// algoritma
i = GetFirstIdx(T);
cek = true; // tetap ngecek
while ((i<GetLastIdx(T))&&(cek=true)){
if (T.TI[i]==T.TI[i+1]){
cek = true;// belum ditemukan & ttp lanjut pncarian
i++;
} else{ // != berhenti cek
cek = false;
}
}
return cek;
}

int main(){
/* kamus lokal */
TabInt T;

/* algoritma */
// read input
BacaIsi(&T);

if (IsMonoStatic(T)==true){
printf("Array monotonik statik\n");
} else {
if (IsMonoNotSmaller(T))
printf("Array monotonik tidak mengecil\n");
if (IsMonoNotGreater(T))
printf("Array monotonik tidak membesar\n");
printf("Array tidak monotonik\n");
}

return 0;
}

我期望的输出

4
4
4
3
2
Array monotonik tidak membesar

但是输出在这里不起作用

4
4
4
3
2
// the program crash here, I need to use ctrl+c to quit this program

最佳答案

问题出在你的 while 循环上。

while ((i<GetLastIdx(T))&&(cek=true)){

在这里,我认为您打算编写cek == true

看看这里的控制流程,我们可以通过 for 循环来实现这一点。这是一个重写 IsMonoStatic 的示例:

boolean IsMonoStatic (TabInt T)
{
for(IdxType i = GetFirstIdx(T); i < GetLastIdx(T); i++)
{
if(T.TI[i] != T.TI[i + 1])
{
return false;
}
}

return true;
}

关于c - 如何修复c中if语句崩溃的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57862241/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com