鱼C论坛

 找回密码
 立即注册
查看: 2702|回复: 6

Who can help me ?

[复制链接]
发表于 2012-5-26 23:00:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有两个问题

1:   

char *stu_name = "I like beautiful girls";

    while (*stu_name != '\0')

        {
            printf ("%c",*stu_name);
            *stu_name++;                          //为什么前面写*号也能正常显示, *(sut_name++),我能理解运算顺序。
        }

2:

我想实现一个输入学生号(0~n),显示出该生的名字。

int main ()

{
    char str[4][2] = {"ab","cd","ef","gh"};

    char *p = str[0];

while (//条件该怎么写)
{
        printf ("%c",*p);

        p++;
}


    return 0;


}

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-26 23:53:31 | 显示全部楼层
第一个题,就像你说的,运算符的优先级。
*stu_name++; 这个语句的目的是让stu_name指向下一个字符的地址,如你所说相当于*(stu_name++);只要让它指向下一个字符就行了,加不加*都一样的。
第二个题目
  1. int main ()

  2. {
  3.     char str[4][2] = {"ab","cd","ef","gh"};
  4.     char *p = str[0];
  5.         char *q = str[3];

  6. while (p <= q)
  7. {
  8.         printf ("%c",*p);

  9.         p++;
  10. }


  11.     return 0;


  12. }
复制代码
这个程序还有待改进,你自己先去发现,但是可以这样去作为判断语句

评分

参与人数 1鱼币 +4 收起 理由
programmer + 4

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-27 01:27:30 | 显示全部楼层
1.既然你知道优先级, 那么, 你也应该知道编译器直接优化了 *stu_name++, "*" 在这里并没有任何作用.
2.不知道楼上的是不是符合你的要求
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4.         int i;
  5.     char str[4][3] = {"ab", "cd", "ef", "gh"};
  6.         scanf("%d", &i);
  7.         printf("%s\n", *(str + i));
  8.         return 0;
  9. }
复制代码
注意字符串常量后面还有一个 '\0'. 所以是  char str[4][3];
不知道你为什么要用循环.{:1_1:}

评分

参与人数 1鱼币 +4 收起 理由
programmer + 4

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-5-27 09:08:54 | 显示全部楼层
  1. int main ()

  2. {
  3.     char str[4][2] = {"ab","cd","ef","gh"};

  4.     char *p = str[0];

  5.     int i;

  6.     scanf ("%d",&i);

  7.     printf ("%c %c\n",*(p+i*2+0),*(p+i*2+1));




  8.     return 0;


  9. }
复制代码
这个是我昨天想出来的。。。感觉没三楼的简单!  
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-5-27 09:21:22 | 显示全部楼层
我想做一个统计学生成绩的小程序,会的很少,刚刚学到字符指针,我想用指针来接收输入的姓名,可以吗,指针可以代替数组吗,指针里面放的是地址,必须和数组配合使用吗,(对指针理解不深,高手别笑)
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-27 09:56:52 | 显示全部楼层

这个程序*(p+i*2+0),*(p+i*2+1);这里用的有点问题,你是要输出单个字符吗?
如果是那样的话,应该用printf ("%c %c\n",*(p+i)+0,*(p+i)+1);而且p的声明也要修改,改成一个指向二维数组的指针,char (*p)[2];即p是一个指针,指向包含两个字符型数据组成的数组。
数组的概念本来就很纠结,楼主要多下功夫。数组学好了,后面的那些链表,二叉树都迎刃而解。
至于你说统计学生成绩的小程序,用指针代替数组,其实是可以的。数组和指针有很大的关系,有时候可以互换,只是数组名是常量,指针是变量。
楼主多看下二维数组以及指针,另外给你一份资料。
http://bbs.fishc.com/forum.php?mod=viewthread&tid=15831
这里说的很详细的
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-5-27 10:33:07 | 显示全部楼层
恩,谢谢汐哥,看谭老的书异常麻烦,char *p = str[0];   //指向的不是二维数组吗
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-13 13:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表