终端运行c
➜ c_language git:(master) ✗ killall -9 '网易有道词典'
➜ c_language git:(master) ✗ killall -9 'Sublime Text'
结束运行
➜ c_language git:(master) ✗ cd /Users/tianzi/Desktop/时间复杂度
➜ c_language git:(master) ✗ gcc -Wall -g -o c c.c
编译成功
➜ c_language git:(master) ✗ ./c
请输入您要查找的数字:
3
查找次数:3
已经找到该数字!!
请输入您要查找的数字:
Ss
实战
格式
#include <stdio.h>
int main()
{
return 0;
}
#include <stdio.h>
int main()
{
printf("hello,world");
printf("你好\n");
printf("s\t");
printf("s\n"); //最后一定要加\n
return 0; //不可以漏
}
//hello,world你好
//s s
//[Finished in 0.7s]
#include <stdio.h>
int main()
{
printf("*****\n" );
printf("6啊\n");
printf("*****\n" );
return 0;
}
// *****
// 6啊
// *****
// [Finished in 0.7s]
Int(整型) double(双精度浮点) float(浮点) char (字符)
c的五种基本类型: Int(整型) double(双精度浮点) float(浮点) char (字符)viod(空值)
int a = 3;
float a = 3.14; 字符少
double a= 3.14; 占空间
char a ="SA";
+-*/加减乘除区域
%取余
#include <stdio.h>
int main()
{
double a ,b;
int c;
a= 5;
b= 10;
c= a/b;
printf("%d\n" , c );
return 0; //不可以漏
}
//0 输出的是0 ,因为 直接取整数
// [Finished in 0.8s]
#include <stdio.h>
int main()
{
double a ,b;
int c;
char d;
a = 1;
b= 2;
c= 3;
d = 'B'+32;
a*=b+8;
c%= 3;
printf("%f\n",a );
printf("%d\n",c );
printf("a=%f\t %f\t %d\t %c\t \n",a,b,c,d);
}
// 10.000000
// 0
// a=10.000000 2.000000 0(取余为0) b 大写变成小写+32
// [Finished in 0.7s]
**include
//用于数学计算导包
#include <stdio.h>
#include <math.h>
int main()
{
double a,b,c,s ,area;
a= 3;
b=4;
c=5;
//scanf("%lf,%lf,%lf",&a,&b,&c);键盘输入的
s = (a+b+c)/2;
area = sqrt(s*(s-a)*(s-b)*(s-c));
printf("area =%f\n",area );
return 0 ;
}
//area =6.000000
//[Finished in 0.7s]
#include <stdio.h>
int main(int argc, char const *argv[])
{
// 排序adt
double a,b,t;
a= 1.6;
b= 1.5;
t =2;
if(a>b)
{
t=a;
a= b;
}
printf("%f\n",t );
return 0;
}
// 1.600000
// [Finished in 0.7s]
#include <stdio.h>
int main(int argc, char const *argv[])
{
// 排序adt
double a,b,t;
a= 1.3;
b= 1.5;
t =2;
if(a>b)
a= t;
else
a=0;
printf("%f\n",a );
return 0;
}
// 0.000000
// [Finished in 0.7s]
#include <stdio.h>
int main(int argc, char const *argv[])
{
// 排序adt
double a,b,t;
a= 1.4;
b= 1.5;
t =2;
if(a>b)
a= t;
else
if (a==1.3)
a=0;
else
a=1;
printf("%f\n",a );
return 0;
}
// 1.000000
// [Finished in 0.7s]
试除法 : 不能跑
#include <stdio.h>
int main(int argc, char const *argv[])
{
int primes[MAX_PRIMES];
int td(int N){
int nPrimes = 0;
for (int i=2;i<=N;i++){
int p= primes[u];
if (p*p>i) break;
if (i%p == 0){
ok = false; break;
}
}
if (ok) primes[nPrimes++] = i;
}
return nPrimes;
}
文件名c.c二分查找
Last login: Wed Sep 4 23:15:47 on ttys000
➜ ~ git:(master) ✗ gcc
clang: error: no input files
说明你已经安装了 gcc 编译器,可以直接开始编译程序。
➜ ~ git:(master) ✗ cd /Users/tianzi/Desktop/时间复杂度
➜ 时间复杂度 git:(master) ✗ gcc -Wall -g -o c c.c
-Wall 代表编译器在编译过程中会输出警告信息(Warning),比如有些变量你并没有使用,指针指向的类型有误,main 函数没有返回整数值等。这类信息虽然不是错误,不影响编译,但是很可能是程序 bug 的源头,也有助于你寻找代码中的错误,规范代码格式。所以建议每次编译时都加上 -Wall 参数。
-g 代表编译器会收集调试(debug)信息,这样如果你的程序运行出错,就可以通过 gdb 或者 lldb 等工具进行逐行调试,方便找出错误原因。如果你不是百分之百确定你的程序毫无问题,建议加上 -g 参数。这样 debug 的时候会方便很多。
-o 代表编译器会将编译完成后的可执行文件以你指定的名称输出到你指定的文件夹下。-o 的空格后的名称就是输出的文件的名称。例如我这里 -o 后是 dot,就是说 gcc 会在编译成功后在我的当前目录下生成一个叫 c 的可执行文件。如果不加这个参数,每次编译后生成的可执行文件都会放在根目录下,名字叫做 a.out。每次编译成功后都会把上一次的 a.out 文件覆盖。所以建议加上 -o 参数,这样可以更加条理。
最后一项便是你要编译的的源代码的名称了。我这里是 c.c。
➜ 时间复杂度 git:(master) ✗ ./c
输入 ./可执行文件的名称 即可执行你的程序。
如果提示你 Permission Denied,则是因为你没有赋予这个文件执行权限,需要在终端里输入
chmod u+x c(这里是你自己的文件名)
Segmentation Fault = 有 bug 导致程序崩溃。
请输入您要查找的数字:
6
查找次数:3
已经找到该数字!!
请输入您要查找的数字:
4
查找次数:4
已经找到该数字!!
请输入您要查找的数字:
5
查找次数:1
已经找到该数字!!
请输入您要查找的数字:
6
查找次数:3
已经找到该数字!!
请输入您要查找的数字:
跑不来
#include <stdio.h>
int Bin_Search(int *num,int cnt,int target)
{
int first = 0,last = cnt-1,mid;
int counter = 0;
while(first <= last)
{
counter ++;
mid = (first + last) / 2;//确定中间元素
if(num[mid] > target)
{
last = mid-1; //mid已经交换过了,last往前移一位
}
else if(num[mid] < target)
{
first = mid+1;//mid已经交换过了,first往后移一位
}
else //判断是否相等
{
printf("查找次数:%d\n",counter);
return 1;
}
}
printf("查找次数:%d\n",counter);
return 0;
}
int main(void)
{
int flag = 0,target;
int num[10] = {1,2,3,4,5,6,7,8,10};
while(1)
{
printf("请输入您要查找的数字:\n");
scanf("%d",&target);
// int n = 2;
flag = Bin_Search(num,10,target);
if(flag) printf("已经找到该数字!!\n");
else printf("无该数字!!\n");
}
return 0;
}
qw.c文件
一堆报错????
//3.c语言解决:青蛙403.c
#include"stdlib.h"
#include"stdio.h"
#define MAX_LEN 1100
bool canCrossedByStep(int* stones, int stonesSize,int i,int j,int curStep);
bool canCross(int* stones, int stonesSize);
bool canCross(int* stones, int stonesSize) {
if(stonesSize < 2)
{
return true;
}
if(stones[0] != 0 || stones[1] != 1)
{
return false;
}
return canCrossedByStep(stones, stonesSize,1,2, 1);
}
//i当前所在的位置,j寻找下一步的开始位置,curStep当前步长
bool canCrossedByStep(int* stones, int stonesSize,int i,int j,int curStep)
{
if (j == stonesSize)
{
return true;
}
for (int k = j; k < stonesSize; ++k)
{
//已跳不过去,因为stones[index] > stones[k](index > k)
if (stones[k] > stones[i] + curStep + 1)
{
return false;
}
else if (stones[k] == stones[i] + curStep + 1)
{
//后面不可能再跳过去了,可以直接return
//printf("stones[j] == stones[i] + curStep + 1,stones[i]:%d,stones[j]:%d,step:%d\n",stones[i],stones[k],curStep + 1);
return canCrossedByStep(stones, stonesSize,k,k+1,curStep + 1);
}
else if (stones[k] == stones[i] + curStep)
{
//printf("stones[j] == stones[i] + curStep,stones[i]:%d,stones[j]:%d,step:%d\n",stones[i],stones[k],curStep);
if(canCrossedByStep(stones, stonesSize,k,k+1,curStep))
{
return true;
}
}
else if (curStep - 1 > 0 && stones[k] == stones[i] + curStep - 1)
{
//printf("stones[j] == stones[i] + curStep - 1,stones[i]:%d,stones[j]:%d,step:%d\n",stones[i],stones[k],curStep - 1);
if(canCrossedByStep(stones, stonesSize,k,k+1,curStep - 1))
{
return true;
}
}
}
return false;
}
int main()
{
// int a[] = {0,1,3,5,6,8,12,17};
// int b[] = {0,1,2,3,4,8,9,11};
while(true){
int buf[MAX_LEN];
int index = 0;
printf("please input array,limited length 1100:\n");
while(scanf("%d",&buf[index]) && buf[index] >= 0){
// printf("%d\n",buf[index]);
++index;
if (index >= 1100)
{
break;
}
}
printf("length:%d\n", index);
printf("the result is:%d\n",canCross(buf,index));
}
return 1;
}