时间下一秒:判断是不是60,是秒数为0,分钟+1
判断分钟是不是60,是分钟为0,小时+1
判断小时是不是24,是小时为0,日期+1
s=s+1 if(s==60){
S=0;m=m+1;
If(m==60)
{
M=0;
H++;
If (h==24)
{
H=0;
}
}
}
核心算法+一秒 scanf("%d:%d:%d",&h,&m,&s);
While(1)
{
Sleep(1);表
}
标准C提供的输入输出函数
Printf -> 缓冲区 行 全 零缓冲
Fopen ->屏幕 printf ("\n");
刷新缓冲区 :fflush(NULL);空指针
Fopen() 堆上
Fclose() 1.free 2刷新 fflush(NULL); 文件大小或没写进去 ffflush(NULL);
程序难:完整 printf("\r%d%d%d",);光标移动到行首
循环:
For VS while 一样 注意:在使用continue
Do{}while;
1,作什么 {循环体}
2,循环次数?最痛苦
表达式1,表达式2,表达式3 表达式1一次
For (;;){
语法 循环体;
}
输出:0~9重复代码
初值 步长 while()循环次数
!vi !g
编写代码:输出100以内所有的偶数
偶数:能被2整除 num%2==0
多种算法 初值条件判断步长
I=0; 提示:思考循环最后一次?i<=100 多一个=号多一次
While(i<=50)
{
Printf ("%d",i*2);
I++;
}
循环次数 常 固
变 变
循环嵌套 99乘法表
1****************
2*
*
*
*
3正方形
4三角形
5平形四边形
6菱形 空心菱形
输入一个数判断是不是素数
打印100以内所有的素数
输入一个数,输出大于该数的5个素数
Qt安装过程
1解包:tar -xzvf qt- ....tar.gz
2进入到解压后的文件夹中 cd qt
3执行 ./configure
4执行 make 时间长
5执行make install
分析:
行 空格 星 1个\n
0 3 1
1 2 3
2 1 5
3 0 7
I 3-i 2*i+1最难的
行 空格 星 1个\n
0 1 5
1 2 3
2 3 1
I i+1 5-2*i
最难的 可变大可变小的菱形
素数:只能被1和本身整理除.
For (f=0,i=2;i<n;i++)
{
If (n%i==0)
{
F=1;
Break;
}
}
If (f==0)
Printf ("%d\n",n);
For VS while
For (i=0;i<10;i++)
If (i%3==0) continue;
I=0;
While(i<10)
{
If (i%3==0)
Continue;
I++;
}
Continue:结束本次循环。(for:执行表达式3;while判断语句)
Break:结束循环(一层)
Goto:1。跳出多重循环
2.错误处理
Return 1,2,3 错误不一样
数组 为什么定义数组?相同类型数据的集合
1.成员的类型是相同的
2.连续存储
数据类型 数组名 [成员的个数]
Typedef int arr[100]; arr变量的名字 不对
Typedef int a; a是int 类型的别名
起别名 定义变量 arr buf;
Int buf[100];
Int arr[100];数组类型每一个成员的类型
[]成员的个数 常量 9 'a' const int b;常量
Sizeof(buf)数组名 sizeof(数据类型)*成员个数
数组的初始化
Int arr[8]; 随即值
Int arr[4] = {1,2,3,4};
{1,2,0,0};计算机帮助我们做
{0};全为0,某个成员赋值,字符串
Int arr[] = {1,2,3,4};
1.数组在初始化
2.函数形参
成员的引用:
Arr[0] arr[1] arr[2] arr[3]
创建一个20个成员的数组
Memcpy();对整个内存进行比较
Arr[0]=2;
For (i=1;i<100;i++)
Arr[i]=arr[i-1]+2;
数组的操作
1.成员赋值与取值
2.找最大值
Sizeof(数组名) = sizeof(数据类型)*成员个数
3数组成员交换(反序反向)
输入一个数组,将数组首尾互换,实现数组的翻转
4排序 5种以上排序方法
5数组的移动向前移动向后移动
向前:产生一个数组,删除数组中相同多余的数
向后:向有序数组中插入一个数,使之仍然有序
Rand() ;即数
Srand(getpid()); 变化的值,不同的随即数 #Iinclude <unistd.h> 头文件
Rand()%41+50;
使用随即数产生20个数,将数组分为两部分
奇数部分在前,偶数部分在后,分别排序
Set mouse=a
一维字符数组:字符+‘\0’=字符串
二维数组:CRC校验
二维字符数组:==二级指针+malloc argv
#ifndef N
#define N 10
#endif
Rand()%5 数组大小不变有效减少
向前移动i--
冒泡(相邻的)一个算法
For (i=0;i<len-1;i++)
If (arr[i]>arr[i+1])
{
Tmp 反向冒泡
}
For (i=len-1;i>=1;i--)
If (arr[i]<arr[i-1]){
}少了很多循环
编程:处理数据(全双工) 半双工(pipe mkfifo)
有线:socket 管道 字节流
无线:
字符串:若干个字符 + '\0'
Char buf[100];
Char buf[4] = {'a', 'b', 'c','d'}; 对的
Char buf[4] = {'a','b',0,'\0','0'};
Char buf[4] = {"ab"};
Char buf[4] = "ab";
Char buf[] = {""};可以
字符串的输入输出
Scanf("%s",buf);不能有空格 空格 tab分隔符
Gets();警告
Gets(buf);没有过界的检查
Read(0,buf,sizeof(buf)); 输入
Fgets(buf,sizeof(buf),stdin);
Printf("%s\n",buf);
Char buf[100] = "abcd\-bcd"; abc
Buf +3 回车 没有输出
Puts(buf);自动打印回车,刷新缓冲区,这个地方恰好是'\0'
Write(1,buf,strlen(buf)); 输出
Fputs(buf, sizeof(buf),stdout);
1.从键盘上输入一个字符串,找出最小的字符
2.从键盘上输入一个字符串,计算字符串长度.strlen
3.输入两个字符串,输出较大的字符串strcmp
4.Strchr在字符串中找一个字符
5.Strcat strcpy strstr 长中找小的字符串
6.编写mystrstr在一个字符串中找另一个字符串 "abcd" "bc"
7.输入一个字符串,删除多余的空格 "abc de de" "abc de de"
8.输入一个字符串 将abcd换成bc "abcdefgh" "bcdefgh"
9.输入一个数字字符串,将其转为整型数输出 "123.c" 123
10.从键盘上输入一个数,将其转为字符串 12312 "12312"
提示:字符串末尾有'\0'