在学了C语言之后,感觉发现了很多技术以外的东西……
比如说:
1.有时候代码不知道怎么就不运行了,也不知道怎么就运行了……
(下面是我最近学完字符串后写的代码)
#include<stdio.h>
int main()
{
char a[ ][10]={
"January",
"February",
"March",
"April",
"May" ,
"June",
"July",
"August",
"September",
"October",
"November",
"December",};
int month;
scanf("%d",&month);
if(month>=1&&month<=12){
printf("This month is %s.\n",a[month-1]);
}
return 0;
}
二维字符串数组,挺正常的吧?
(我第一遍写的是这个代码……)
#include<stdio.h>
int main()
{
char *a[ ][10]={
"January",
"February",
"March",
"April",
"May" ,
"June",
"July",
"August",
"September",
"October",
"November",
"December",};
int month;
scanf("%d",&month);
if(month>=1&&month<=12){
printf("This month is %s.\n",a[month-1]);
}
return 0;
}
几乎一模一样,是吧?
char *A中的*坏事了!
我一开始还不知道,后来大佬告诉我:我把二维字符串数组写成了二维指针数组,而每一个指针指向一个字符串。
后面我改了一下……
#include<stdio.h>
int main()
{
char *a[ ][10]={
"January",
"February",
"March",
"April",
"May" ,
"June",
"July",
"August",
"September",
"October",
"November",
"December",};
int month;
scanf("%d",&month);
if(month>=1&&month<=12){
printf("This month is %s.\n",*a[month-1]);
}
return 0;
}
我对printf里面的指针a进行了解引用*(这个概念也是大佬教的,C语言基础课程里面没有教‘解引用’这个概念)。
2.基础扣得很细。
我类型转换里面概念比较多,过的比较快,所以……
(昨天我写了一个代码……)
#include<stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("%d是%d的%.2f%",a,b,(double)a/b*100.0);
return 0;
}
结果百分号输出不了……
后来询问大佬才知道,特殊字符的输出需要转义……(我学过吗???)
于是改了一下……
#include<stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("%d是%d的%.2f%%",a,b,(double)a/b*100.0);
return 0;
}
将%改为%%,舒心多了。
感觉大佬也会回头多看基础教程。
之后大佬给我分享了一个东西,叫《提问的智慧》……
(据说是学长搞的……)
好累啊,不写了!!!!