我写代码的时间不长(只有2个月)。我的问题与循环中计数器的迭代有关。下面是我用while编写的程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int cnt=0;
int match;
int position;
int tries=0;
char letter;
int main()
{FILE *Difficult= fopen("/GODlvl.txt", "r");
char singl[19];
if (Difficult==NULL){
return -1;}
for(int i = 0; i < rnd1; i++)
fgets(singl, 21, Difficult);
int DashN1= strlen(singl);
printf("%s", singl);
for (int i=0; i<DashN1-1; i++)
{
singl[i]='_';
singl[DashN1]='\0';
}
for (int i=0; i<DashN1; i++) /**it adds an extra character ..possibly a space..**/
{
printf(" ");
printf(" %c", singl[i]);
}
do{
scanf(" %c", &letter);
if(letter==singl[cnt])
{
match=1;
position=cnt;
printf("match found");
}
if (position==cnt)
{
singl[position]=letter;
printf(" %s", singl);
}
cnt++;
tries++;
}
while(tries!=8);
}do循环从0开始运行,并在每一步之后迭代。问题出在if条件上;它们不会测试char数组中的任何任意元素(singl)。如何编辑此代码(无论是if条件还是循环)以运行任意索引。
发布于 2018-12-02 03:07:31
在读取letter的用户输入之后,只需执行以下操作即可请求在singl中使用的随机索引:
srand((unsigned)time(NULL));
cnt = rand() % DashN1;这意味着你的do循环应该看起来像这样:
do{
scanf(" %c", &letter);
srand((unsigned)time(NULL));
cnt = rand() % DashN1;
if(letter==singl[cnt]){
//....
}
}while(/*...*/);确保你这样做:
#include<stdlib.h>为了访问srand和rand
https://stackoverflow.com/questions/53574012
复制相似问题