1 强制变量转换的不同含义
Python的int(s)转换的是对应的数字,而C语言转换的是对应的ASCII编码,如:
Python的强制变量转换
s='0'
a=int(s)
print(a) #输出结果为0
s='a'
a=int(s)
print(a) #程序报错
C的强制变量转换
s='0'
a=int(s)
printf("%d",a) //输出结果为48
s='a'
a=int(s)
printf("%d",a) //输出结果为96
Python使用int(s)可以实现字符串到数字的自动转换,但C语言的int(s)只能转换一个字符。
倘若要把字符串‘1234’转换成数字,Python可以这么写:
s="1234"
a=int(s)
C需要这么写
char s[10]="1234";
int a=0;
for (int i=0;i<strlen(s);i++) a=a*10+int(s[i])-48;
人类很容易理解“1234”是一千二百三十四的意思,但机器并不懂,他只知道字符串s里面包含了四个字符'1','2','3','4',对应的ASCII编码分别是49,50,51,52。所以我们需要把机器理解的编码一位一位的转换成我们想要的数字。Python是为了方便产生的简写,他的int(s)底层逻辑依旧是按位转换的,只不过他对这些命令进行了封装,以方便我们程序员调用。
我们需要记住三个ASCII编码('0'--48,'A'--65,'a'--97)。当然如果记不住,直接用'0'替代48也是可以的。编译器会实现自动转换
2 程序层级问题
Python里是严格根据缩进划分层级的,如
print('when you enter APA, you can...')
for i in range(10):
for j in range(8):
print('eat')
print('drink')
print('play')
print('study programming')
print('end')
缩进四格的就是在一层循环内,缩进八格的就是在两层循环内,没有缩进就是在循环外。
C则是使用大括号来区分层级,对缩进没有严格要求
printf("when you enter APA, you can...");
for (int i=0;i<10;i++){
for (int j=0;j<8;j++){
printf("eat");
printf("drink");
printf("play");
}
printf("study programming");
}
printf("end");
一层大括号里是一层循环内,两层大括号里是两层循环内,大括号外是循环外。
当然也有的时候你会看不到大括号,比如:
printf("when you enter APA, you can...");
for (int i=0;i<10;i++)
if (i<5) printf("eat");
printf("drink");
如果for循环(或if语句)里只有一条命令,这时大括号可加可不加。如果没有大括号,则默认for循环(或if语句)后面的第一条命令隶属于该循环,第二条开外都在循环以外。
怎么区分一条命令呢?一个分号就是一条命令,命令与命令用分号分割开来。
3 字符串的输入与输出
(1)输入一个字符串,字符串内保证没有空格(可以理解成一个单词)
scanf("%s",&s); //c语言
cin>>s; //C++
(2)输入N,随后输入N个字符串,字符串内保证没有空格(可以理解成N个单词)
scanf("%d",&n);
for (int i=0;i<n;i++)
scanf("%s",&s[i]); //c语言
cin>>n;
for (int i=0;i<n;i++)
cin>>s[i]//C++
(3)输入一行字符串,字符串内可能包含空格(可以理解成一个句子,不知道几个单词)
gets(s);//C语言,不推荐比赛使用
cin.getline(s); //C++,推荐比赛使用!
(4)输入N,随后输入N个字符串,字符串内可能包含空格(可以理解成N个句子)
scanf("%d",&n);
getchar();//一定要加getchar(),否则当我们输入N后按下回车,机器会把回车符默认成第一句空话
for (int i=0;i<n;i++)
gets(s[i]); //c语言
cin>>n;
getchar();//一定要加getchar(),否则当我们输入N后按下回车,机器会把回车符默认成第一句空话
for (int i=0;i<n;i++)
cin.getline(s); //C++
(5)输入单一字符
char c=getchar();
字符数组与字符串的基本函数:
4 其他小不同
(1)单引号双引号
C语言里单引号('')代表字符型(char s='a'),双引号("")代表字符串(char s[10];s="abcde")
Python单双引号完全等同,可互用
(2)欢迎补充...
标签:常见问题,Python,print,int,注意事项,字符串,输入,大括号 From: https://www.cnblogs.com/rachel0701/p/17872915.html