鱼C论坛

 找回密码
 立即注册
查看: 1564|回复: 31

[已解决]帮帮忙,谢谢啦

[复制链接]
发表于 2023-7-29 21:39:35 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
大家好,小白想问一下就是从16行代码开始,是在表达什么,c语言小白,实在是看不懂,想请教一下,谢谢啦
Screenshot_2023_0729_213524.jpg
最佳答案
2023-7-29 21:58:37
代码流程如下
输入转换字符
循环{
若该字符ASCLL码在0到9之间
{
      将该字符所代表的数字加到num的末尾
}
若检测到换行
{
       退出循环     
}
}
输出转换完了的num
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-29 21:39:40 | 显示全部楼层
你好!没问题,我会尽力解释给你听。请把那16行代码贴出来,这样我才能帮你理解它表达的含义。同时,如果你能告诉我代码所属的上下文和用途,我也会更好地帮助你理解。期待你的代码和更多信息!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 21:40:17 | 显示全部楼层
关于 C/C++ 代码的解析

以下是对您提供的 C/C++ 代码进行解析的说明:
#include <iostream>using namespace std;int main() {    int n;    cin >> n;    int a[n];    for (int i = 0; i < n; i++) {        cin >> a[i];    }    for (int i = 0; i < n - 1; i++) {        for (int j = 0; j < n - i - 1; j++) {            if (a[j] > a[j + 1]) {                int temp = a[j];                a[j] = a[j + 1];                a[j + 1] = temp;            }        }    }    for (int i = 0; i < n; i++) {        cout << a[i] << " ";    }    return 0;}
1. 引入头文件和命名空间:
#include <iostream>using namespace std;
这段代码引入了iostream头文件,使我们可以使用标准输入输出流(如cincout)。using namespace std;语句是为了省略后续使用std::前缀的必要性,使得我们可以直接使用cincout

2. 主函数:
int main() {    // ...    return 0;}
这是程序的入口点,所有的代码都将在此函数中执行。函数返回一个整数值表示程序的退出状态。

3. 变量声明和输入:
int n;cin >> n;int a[n];
这段代码声明了一个整数变量n,并通过标准输入流cin获取一个整数值赋给n。接着,声明了一个大小为n的整数数组a

4. 冒泡排序算法:
for (int i = 0; i < n - 1; i++) {    for (int j = 0; j < n - i - 1; j++) {        if (a[j] > a[j + 1]) {            int temp = a[j];            a[j] = a[j + 1];            a[j + 1] = temp;        }    }}
这是冒泡排序算法的实现部分。通过两层嵌套的循环,依次比较相邻的两个元素,如果顺序错误,则交换它们的位置。

5. 输出结果:
for (int i = 0; i < n; i++) {    cout << a[i] << " ";}
这段代码使用循环遍历排序后的数组a,并通过标准输出流cout输出每个元素,元素之间用空格分隔。

6. 返回状态码:
return 0;
这行代码表示程序正常退出,并返回状态码0,表示成功执行。

希望以上解答对您有所帮助。如果还有其他问题,请随时提问!

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-29 21:44:02 From FishC Mobile | 显示全部楼层
我主要看不懂16行代码
num=10*num+(ch-'0');
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 21:44:27 | 显示全部楼层
我给你人工讲一下吧,稍等哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-29 21:44:53 From FishC Mobile | 显示全部楼层
我主要看不懂16行代码
num=10*num+(ch-'0');
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-29 21:45:31 From FishC Mobile | 显示全部楼层
liuhongrun2022 发表于 2023-7-29 21:44
我给你人工讲一下吧,稍等哈

好的,谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 21:47:19 | 显示全部楼层
我先讲一下14行。
每一个字符都可以转换为固定的ASCII码
这句判断就能只有为这些('0' '1' '2' '3' '4' '5' '6' '7' '8' '9')中字符的可以通过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 21:49:56 | 显示全部楼层
根据ASCLL码,CH这一个变量减去0这个字符,得到的就是CH所代表的数字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 21:50:44 | 显示全部楼层
本帖最后由 liuhongrun2022 于 2023-7-29 21:51 编辑


num*10相当于进了一位
如:1->10,2->20,17->170

ch-'0'很好解释
ch刚刚和你说了,就是那十个字符
'1'-'0'就可以转换为数字1,'2'-'0'就可以转换为数字2,

两者相加就相当于往num的末尾又加了一位数

给个最佳答案吧,我可辛苦的打了这么多字呢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 21:51:45 | 显示全部楼层
故而num = num*10 +(ch-‘0’)
就是将CH这一个字符所代表的数字添加到num变量的末尾
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 21:52:43 | 显示全部楼层
本帖最后由 香蕉那个不拿拿 于 2023-7-29 22:00 编辑

故而
这一串代码可以将一串字符中的数字提取出来输出

点评

不,我坚决不同意楼主的看法!: 5.0
不,我坚决不同意楼主的看法!: 5
不,结果是用整形的num接受的,不可能超过整型  发表于 2023-7-29 21:54
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 21:53:23 | 显示全部楼层
这整个代码相当于将一个字符型的数,不管几位,转换为整数型

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
香蕉那个不拿拿 + 1 + 1 完了,说错了

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 21:54:16 | 显示全部楼层
其中,do while语句的只要检测到换行,“\n”就会退出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 21:58:32 | 显示全部楼层
本帖最后由 tommyyu 于 2023-7-29 22:04 编辑

C语言中,部分字符(包括数字字符)可以与 ASCII 码互相转换。'0' 的 ASCII 码是 48,'1' 的是 49 ,以此类推,'9' 的是 57 。
所以,ch - '0'  将 ch 的 ASCII 值与 '0' 的ASCII值相减。当 ch = '0' 时,原式 = '0' - '0' = 48 - 48 = 0;当 ch = '9' 时,原式 = '9' - '0' = 57 - 48 = 9。
故 ch - '0' 可以将 字符ch 转变为 一个数字,即从 '0' 变成 0,'1' 变成 1。

而 num = 10 * num + (ch - '0') 是在对 num 进行增加位数的操作:
我们先假设读入了 123。
第 1 轮循环,num 原有的值是 0,此时 ch 的值是 '1',操作过后 num = 10 * 0 + 1 = 1
第 2 轮循环,num 原有的值是 1,此时 ch 的值是 '2',操作过后 num = 10 * 1 + 2 = 12
第 3 轮循环,num 原有的值是 12,此时 ch 的值是 '3',操作过后 num = 10 * 12 + 3 = 123

因此,这一句代码实现了在读入一个数字后将其添加到 num 原有数字后面的操作。

评分

参与人数 1荣誉 +3 鱼币 +5 贡献 +3 收起 理由
xzh莫小痕 + 3 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 21:58:37 | 显示全部楼层    本楼为最佳答案   
代码流程如下
输入转换字符
循环{
若该字符ASCLL码在0到9之间
{
      将该字符所代表的数字加到num的末尾
}
若检测到换行
{
       退出循环     
}
}
输出转换完了的num
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-29 22:08:05 From FishC Mobile | 显示全部楼层
各位大佬,我好像没看懂,我以我自己有限的知识,说一下我的理解就是,ch=getchar(),指的就是我输入的字符串通过ASC码赋值给ch,
if(ch>='0'&&ch<='9'),指的是在字符串中寻找0-9的数字,我看了各位的评论,我还是没懂16行有啥作用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 22:16:13 | 显示全部楼层
好比现在有123这一个字符串
循环一: 16行的num = 10*num +(ch-“0”)即为num = 0 + 1(ch) = 1
循环二      num = 10*num + (ch - “0”) 即为 num = 10 * 1 +2(ch) = 10 + 2 = 12
循环三     num = 10*num + (ch - “0”) 即为 num = 10 * 12 + 3(ch) = 120 + 3 = 123
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-29 22:16:14 From FishC Mobile | 显示全部楼层
tommyyu 发表于 2023-7-29 21:58
C语言中,部分字符(包括数字字符)可以与 ASCII 码互相转换。'0' 的 ASCII 码是 48,'1' 的是 49 ,以此类 ...

大佬,我想问一下,ch的ACSII码由getchar()赋值给的,getchar()是有我输入的字符和字符串提供的,如果假设我输入的是有数字有字母的字符串,getchar()ASCII码怎么转化出来的,我比较好奇一个字母的ASCII码是容易转化的,但是字符串是怎么转化的,谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 22:16:37 | 显示全部楼层
本帖最后由 liuhongrun2022 于 2023-7-29 22:20 编辑
xzh莫小痕 发表于 2023-7-29 22:08
各位大佬,我好像没看懂,我以我自己有限的知识,说一下我的理解就是,ch=getchar(),指的就是我输入的字符 ...


ch=getchar(),指是接受一个字符
if(ch>='0'&&ch<='9')指的是如果ch为字符型的0-9,那么就执行第16行
第16行的作用,我局个例子
我输入了1234
第一回:收到'1',num = 0*10+1 = 1
第二回:收到'2',num = 1*10+2 = 12
第三回:收到'2',num = 12*10+3 = 123
第三回:收到'2',num = 123*10+4 = 1234

第16行会将num末尾插入新输入的那个数字!!!


给个最佳答案呗

ASCII码对照表:

                               
登录/注册后可看大图

评分

参与人数 1荣誉 +3 鱼币 +5 贡献 +3 收起 理由
xzh莫小痕 + 3 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-16 09:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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