C语言看不出哪里出错了?

2025-06-26 04:49:28
推荐回答(1个)
回答1:

  1. 15行、25行、26行for循环控制变量都没有增值,这是明显错误。

  2. 声明的a、b、c...d都是3元素字符数组而不是字符串,后面却用%s字符串控制符操作,这肯定要乱套。把所有%s,改成%c。把数组声明都改成char a[4]="ABC";这种形式。

  3. 有两个if (num[i] == 2){却没有if (num[i] == 9){,total也没有增量。

修改过的代码如下——

#include "stdio.h"

#include

int main(){

int num[7];

int i,j;

FILE *fp;

int total = 0;

char a[4]="ABC";

char b[4]="DEF";

char c[4]="GHI";

char d[4]="JKL";

char e[4]="MNO";

char f[4]="PRS";

char g[4]="TUV";

char h[4]="WXY";

printf("input 7 digits between 2-9:");

for(i = 0; i<7; i++ ){///////////////15行改成i++

scanf("%d",&num[i]);

}

//创建word_number.txt,存入总结果

fp = fopen("word_number.txt","w");

if(fp == NULL){

printf("Fail to open file!\n");

exit(0);

}

//枚举

for(j = 0; j <3 ;j++ ){/////////25行改成j++

for(i = 0; i<7 ; i++ ){/////////26行改成i++

if(num[i] == 2){

fprintf(fp,"%c",a[j]);

printf("%c",a[j]);

}

if(num[i] == 3){

fprintf(fp,"%c",b[j]);

printf("%c",b[j]);

}

if(num[i] == 4){

fprintf(fp,"%c",c[j]);

printf("%c",c[j]);

}

if(num[i] == 5){

fprintf(fp,"%c",d[j]);

printf("%c",d[j]);

}

if(num[i] == 6){

fprintf(fp,"%c",e[j]);

printf("%c",e[j]);

}

if(num[i] == 7){

fprintf(fp,"%c",f[j]);

printf("%c",f[j]);

}

if(num[i] == 8){

fprintf(fp,"%c",g[j]);

printf("%c",g[j]);

}

if(num[i] == 9){///改成9

fprintf(fp,"%c",h[j]);

printf("%c",h[j]);

}

fprintf(fp,"\n");

printf("\n");

total++;

}

}

printf("the total number of result is %d\n",total);

fclose(fp);

return 0;

}

return 0;

}