gpt4 book ai didi

c - C 中的函数和循环问题

转载 作者:太空宇宙 更新时间:2023-11-04 07:13:07 26 4
gpt4 key购买 nike

这个程序要求用户输入一个7位数字(1和0除外),每个数字都有对应的一组字母(2=ABC、3=DEF、4=GHI、5=JKL、6=MNO、7=PRS、8=TUV、9=XYZ,如美国手机上所示)。最后,它应该输出所有 2187 个可能的字母序列。

例如:输入 2345678 输出应该是 ADGJMPT ADGJMPU ADGJMPV ADGJMRT ADGJMRU ADGJMRV ADGJMST.........CFILOSV

但我的输出总是 AAAAAAA AAAAAAB AAAAAAC.........CCCCCCC

(我在校验数字时也遇到了麻烦。我先设置了一个循环和数组,if (che[1] != 1 && che[0] != 1) break; 但有时它不会破裂。)

你能解释一下哪里出了问题吗?

#include<stdio.h>

int main(){
int che[50] = { 0 };

int a, b, c, d, e, f, g, i, r, q, number, check;

char word2[7];

char word1[8][3] = {
{ 'A', 'B', 'C' },
{ 'D', 'E', 'F' },
{ 'G', 'H', 'I' },
{ 'J', 'K', 'L' },
{ 'M', 'N', 'O' },
{ 'P', 'R', 'S' },
{ 'T', 'U', 'V' },
{ 'W', 'X', 'Y' } };


while (1)
{
printf("Enter seven digit(except 0 and 1):");
scanf("%d", &number);

check = number;
for (; number != 0; number /= 10)
{
q = number % 10;
che[q] = 1;
}
if (che[1] != 1 && che[0] != 1) break;
}
number = check;

for (i = 6; number == 0; i--)
{
r = number % 10;
if (r == 2){ word2[i] = 0; }
if (r == 3){ word2[i] = 1; }
if (r == 4){ word2[i] = 2; }
if (r == 5){ word2[i] = 3; }
if (r == 6){ word2[i] = 4; }
if (r == 7){ word2[i] = 5; }
if (r == 8){ word2[i] = 6; }
if (r == 9){ word2[i] = 7; }
number /= 10;
}

for (a = 0; a < 3; a++){

for (b = 0; b < 3; b++){

for (c = 0; c < 3; c++){

for (d = 0; d < 3; d++){

for (e = 0; e < 3; e++){

for (f = 0; f < 3; f++){

for (g = 0; g < 3; g++){
printf("%c%c%c%c%c%c%c ",word1[word2[0]][a], word1[word2[1]][b], word1[word2[2]][c], word1[word2[3]][d], word1[word2[4]][e], word1[word2[5]][f], word1[word2[6]][g]);
}
}
}
}
}
}
}

return 0;
}

最佳答案

主要问题在这里:

for (i = 6; number == 0; i--)

循环条件与应有的相反。您希望继续迭代该数字,直到达到 0(通过连续将其除以 10)。

应该是

for (i = 6; number != 0; i--)

for (i = 6; i >= 0; i--)

另外请注意

    if (r == 2){ word2[i] = 0; }
if (r == 3){ word2[i] = 1; }
if (r == 4){ word2[i] = 2; }
if (r == 5){ word2[i] = 3; }
if (r == 6){ word2[i] = 4; }
if (r == 7){ word2[i] = 5; }
if (r == 8){ word2[i] = 6; }
if (r == 9){ word2[i] = 7; }

相当于

 if (r >= 2 && r <= 9)
word2[i] = r - 2;

关于c - C 中的函数和循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26827587/

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