gcc、gdb
整数/整数=整数,浮点数/浮点数=浮点数,整数-浮点数=浮点数
变量在未赋值之前的值是不确定的。特别地,它不一定等于0.
n++会使用加1前的值计算表达式,++n会使用加1后的值计算表达式
比较大的数组尽量声明在main函数外,否则程序可能无法运行
fgetc(fin)读取一个打开的文件fin,读取一个字符,返回一个int值,如果要从标准输入读取一个字符,可以用getchar,等价于fgetc(stdin),fgets(buf,maxn,fin)读取完整的一行
调用栈(Call stack)描述 函数之间的调用关系,调用栈由栈帧(Stack Frame)组成,每个栈帧对应着一个未运行完的函数,在gdb中可以用backtrace命令打印所有栈帧信息。若要用p命令打印一个非当前栈帧的局部变量,可以用frame命令选择另一个栈帧
把数组作为参数传递给函数时,实际上只有数组的首地址作为指针传递给了函数,需要另加一个参数表示元素个数
若p是指针,k是正整数,p+k就是指针p后面第k个元素,p-k是p前面的第k个元素
#include <stdudio.h>
#include <time.h>
#define INF 1000000000
#definr maxn 105
int main()
{
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
int a,b,n=0,m,min=INF,max=-INF,x;
FILE *fin,*fout;
fin = fopen("data.in","rb");
fout = fopen("data.out","wb");
while(fscanf(fin,"%d",&x)==1 && n)
fprintf(fout,"%d %d",min,max);
fclose(fin);
fclose(fout);
scanf("%d%d",&n,&m);
a = (4*n-m)/2;
b = n-a;
if (m%2 ==1 || a<0 ||b<0)
printf("No answer\n");
else
printf("%d %d\n",a,b);
for(int i=1;i<=n;i++)
{
printf("%d\n",i);
if (i<10) continue;
if (i>100) break;
}
long long n1 = n;
int count=0
while(n>1)
{
if (n%2==1) n=n*3+1;
else n/= 2;
count++;
}
int f = floor(sqrt(n)+0.5);
printf("time used = %.2f\n",(double)clock()/CLOCKS_PER_SEC);
int a[maxn];
while(scanf("d",&x)==1)
a[n++]=x;
int b[maxn][maxm];
tot = b[x=0][y=n-1] =1;
char s[20];
scanf("%s",s);
if(strchr(s,"a"))
sprintf(s[strlen(s)-1]);
struct Point{double x,y;};
double dist(struct Point a,struct Point b)
{
return hypot(a.x-b.x,a.y-b.y);
}
typedef struct{double x,y;}Point;
double dist(Point a,Point b)
{
return hypot(a.x-b.x,a.y-b.y);
}
return 0
}
#include<studio.h>
void swap(int*a,int*b)//用int*a声明的变量a是指向int型变量的指针
{
int t =*a;*a=*b;*b=t;
}
int main()
{
int a=3,b=4;
swap(&a,&b);//变量名前面加&得到的是该变量的地址
printf("%d %d\n",a,b);
return 0;
}