15行、25行、26行for循环控制变量都没有增值,这是明显错误。
声明的a、b、c...d都是3元素字符数组而不是字符串,后面却用%s字符串控制符操作,这肯定要乱套。把所有%s,改成%c。把数组声明都改成char a[4]="ABC";这种形式。
有两个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;
}