有人可以给我解释一下这个程序吗

栀九1234 2021-05-18 06:58:29
#include<stdio.h>
void main()
{
char ch[2][5]={"6937","8254"},*p[2];
int i,j,s=0;
for(i=0;i<2;i++)
p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>'\0';j+=2)
s=10*s+p[i][j]-'0';
printf("%d\n",s);
}
...全文
700 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2021-05-19
  • 打赏
  • 举报
回复
引用 2 楼 栀九lyp 的回复:
[quote=引用 1 楼 自信男孩的回复:]p指针数组,即是数组,元素是指针,*p[2]定义了2个char *类型的指针变量;

char ch[2][5]定义了一个二维数组;初始化了2个字符串;加上'\0'正好5个字符;

下面的结果就是需要楼主根据结果可以反推出两层循环逻辑了。

我想知道那两层循环是怎么循环的[/quote]
循环还需要怎么解释,你用结果可以倒推到循环的逻辑的,j+2,不就是跳着来的吗?比如p[0][0]是'6',那么j+2不就是'3'吗?这些还需要怎么解释?

p[0][4](j = 0, j+2, j+2)不就是'\0',这是两个字符串,所以p[1][4]也是'\0'。
如果字符串,数组,循环学的还可以的话,这不算是什么难点的呀~
qzjhjxj 2021-05-18
  • 打赏
  • 举报
回复
供参考:
#include<stdio.h>
void main()
{
    char ch[2][5]={"6937","8254"},*p[2];
    int i,j,s=0;
    for(i=0;i<2;i++)
        p[i]=ch[i];
    for(i=0;i<2;i++) //按行:i=0时-->"6937"
                     //     i=1时-->"8254"
        for(j=0;p[i][j]>'\0';j+=2)//i=0 j=0 p[i][j]='6' ,i=0 j=2 p[i][j]='3'
                                  //i=1 j=0 p[i][j]='8' ,i=0 j=2 p[i][j]='5'
            s=10*s+p[i][j]-'0';
    printf("%d\n",s);     //输出数字:6385
}
栀九1234 2021-05-18
  • 打赏
  • 举报
回复
引用 1 楼 自信男孩的回复:
p指针数组,即是数组,元素是指针,*p[2]定义了2个char *类型的指针变量;

char ch[2][5]定义了一个二维数组;初始化了2个字符串;加上'\0'正好5个字符;

下面的结果就是需要楼主根据结果可以反推出两层循环逻辑了。
我想知道那两层循环是怎么循环的
自信男孩 2021-05-18
  • 打赏
  • 举报
回复
p指针数组,即是数组,元素是指针,*p[2]定义了2个char *类型的指针变量;

char ch[2][5]定义了一个二维数组;初始化了2个字符串;加上'\0'正好5个字符;

下面的结果就是需要楼主根据结果可以反推出两层循环逻辑了。


33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧