程序功能:实现输入一个拼音回车后把该拼音的所有汉字输出来,并且每个汉字都有一个序号,下一步请输入一个序号,如果这个序号有相应的字符,则根据这个序号把相应的汉字输出来,否则输出找不到。如果输入的拼音没有汉字库则输出对不起,没有找到该拼音的字库。
下面一拼音wo做了一个程序,不过程序有一些错误,谁来完善一下?
#include<stdio.h>
#include<string.h>
void main()
{
char wo[]={"wo"};
char wo_ch[]={"挝莴涡窝蜗倭踒喔我肟沃卧偓握幄渥龌涴硪斡"};
//char str_input[3];
unsigned int i=0,str_ch_len=strlen(wo_ch);
printf("模仿拼音输入法\n");
printf("请输入拼音wo\n");
//scanf("%s",str_input);
char str_input[3];
gets(str_input);//输入拼音
if(str_input==wo)
{
for(i=0;i<str_ch_len;i++)
printf("%d.%c "i,wo_ch[i]);
last: printf("请输入对应的序号选字:");
scanf("%d" &i);
if (i>str_ch_len)
{
printf("你要选的字符不存在\n");
goto last;
}
else
{
printf("%c",wo_ch[i]);
}
}
else
{
printf("对不起,没有找到该拼音的字库\n");
}
}
练习题啊,快来帮忙。
如果哪位可以指出该代码的每一处错误原因并提供修改方法,追加20分以上。
//这段程序错误太多,而且代码风格太乱;
//不过估计您是个初学者,就帮你的程序按你思路修改了
//运行结果如下:
模仿拼音输入法
请输入拼音wo
wo
0.挝 1.莴 2.涡 3.窝 4.蜗 5.倭 6.踒 7.喔 8.我 9.肟 10.沃 11.卧 12.偓 13.握 14.幄
15.渥 16.龌 17.涴 18.硪 19.斡 请输入对应的序号选字:2
涡
//修改后程序如下,希望对你有用!
#include<stdio.h>
#include<string.h>
int main() //是int还是void,根据编译器,我用的是CodeBlocks需要用int
{
char wo[]= {"wo"};
char wo_ch[]= {"挝莴涡窝蜗倭踒喔我肟沃卧偓握幄渥龌涴硪斡"};
printf("%d:%s\n", strlen(wo_ch), wo_ch);
//char str_input[3];
unsigned int i=0,str_ch_len=strlen(wo_ch);
printf("模仿拼音输入法\n");
printf("请输入拼音wo\n");
//scanf("%s",str_input);
char str_input[3];
gets(str_input);//输入拼音
//if(str_input==wo)//修改如下(字符串是不能直接比较的!)
if (0==strcmp(str_input,wo))
{
for(i=0; i<str_ch_len; i+=2)
//printf("%d.%c "i,wo_ch[i]); //修改如下(双引号之后应该有,号)
printf("%d.%c%c ",i/2,wo_ch[i],wo_ch[i+1]);
last:
printf("请输入对应的序号选字:");
//scanf("%d" &i); //修改如下
unsigned int n;
scanf("%u", &n);
if (2*n>str_ch_len)
{
printf("你要选的字符不存在\n");
goto last;
}
else
{
printf("%c%c",wo_ch[2*n],wo_ch[2*n+1]);
}
}
else
{
printf("对不起,没有找到该拼音的字库\n");
}
return 0;//如果主函数是void,删除此行!
}
追问你做得不错!按照要求我会给你加分,但是怎么我的VC编译时这个错误还那么多?有11处错误。
追答你把VC中自带的头文件留着,再把我给你的程序加进去,可能是VC编译器需要几个特定的头文件,你试试吧!
1. 把 int main() 改成 void main()
2. 删除 return 0;这一句。
其实我在注释里已经说明了,不同编译器,对main()函数的返回类型不一样。
下面是调整了一下风格的版本,你试一下,如果还有错误请把错误信息粘上来,我帮你分析是怎么回事。代码如下:
#include
#include
#include
//int main() //是int还是void,根据编译器,我用的是CodeBlocks需要用int
void main()
{
char wo[]= {"wo"};
char wo_ch[]= {"挝莴涡窝蜗倭踒喔我肟沃卧偓握幄渥龌涴硪斡"};
unsigned int i = 0;
unsigned str_ch_len = strlen(wo_ch);
printf("模仿拼音输入法\n");
printf("请输入拼音wo\n");
char str_input[3];
gets(str_input);//输入拼音
if (0 == strcmp(str_input,wo))
{
for(i=0; i= str_ch_len)
{
printf("你要选的字符不存在\n");
break;
}
else
printf("%c%c\n",wo_ch[2*n], wo_ch[2*n+1]);
}
}
else
printf("对不起,没有找到该拼音的字库\n");
//return 0;//如果主函数是void,删除此行!
}
希望对您有用!!