|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 丿Ordinary★灬 于 2012-12-12 22:28 编辑
废话不多说,看代码。。谢谢了 一菜鸟 真心求教!!!!- #include<stdio.h>
- #define max 10
- int main(void)
- {
- int number[max],n,x,i,k=0;
- char *str[max];
- printf("请输入班级学生的人数:");
- scanf("%d",&n);
- printf("请逐个输入学生的学号和姓名:\n");
- for(i=0;i<n;i++)
- {
- scanf("%d",&number[i]);
- scanf("%s",&str[i]);
- }
- printf("请输入要查找的学生学号:");
- scanf("%d",&x);
- for(i=0;i<n;i++)
- {
- if(number[i]==x)
- {
- k=i;
- break;
- }
- }
- if(k==n)
- printf("查找失败\n");
- else
- {
- printf("%d\t",number[k]);
- printf("%s\n",str[k]);
- }
- return 0;
- }
复制代码 这样在printf("%s\n",str[k]); 这里会出错,如图:file:///C:/Documents%20and%20Settings/Administrator/%E6%A1%8C%E9%9D%A2/1.jpg
可是把这里改下 printf("%s\n",str+k); 又出现这种现象:
输出那里 为什么会这样呢??
这是我改过的代码,正确的:
- #include<stdio.h>
- #define max 10
- int main(void)
- {
- int number[max],n,x,i,k=0;
- char *str[max];
- printf("请输入班级学生的人数:");
- scanf("%d",&n);
- printf("请逐个输入学生的学号和姓名:\n");
- for(i=0;i<n;i++)
- {
- scanf("%d",&number[i]);
- scanf("%s",str+i);
- }
- printf("请输入要查找的学生学号:");
- scanf("%d",&x);
- for(i=0;i<n;i++)
- {
- if(number[i]==x)
- {
- k=i;
- break;
- }
- }
- if(k==n)
- printf("查找失败\n");
- else
- {
- printf("%d\t",number[k]);
- printf("%s\n",str+k);
- }
- return 0;
- }
复制代码 结果:
但是输入中文就这样了:
这是不是赋值的原因啊!!
下面还有个问题??
- #include<stdio.h>
- int main(void)
- {
- char *str[3];
- int i = 0;
- for(i=0;i<3;++i)
- {
- printf("请输入第[%d]个字符串:",i+1);
- scanf("%s",str+i);
- }
- for(i=0;i<3;++i)
- {
- printf("输出第[%d]个字符串:",i+1);
- printf("%s\n",str+i);
- }
- printf("\n");
- return 0;
- }
复制代码 输出结果:请输入第[1]个字符串:abcdef
请输入第[2]个字符串:ghijkl
请输入第[3]个字符串:mnopq
输出第[1]个字符串:abcdghijmnopq
输出第[2]个字符串:ghijmnopq
输出第[3]个字符串:mnopq
请按任意键继续. . .
为什么???
|
|