apue 20130316

时间下一秒:判断是不是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;    aint 类型的别名

起别名    定义变量    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'   

 

 

原文地址:https://www.cnblogs.com/wangjingyuwhy/p/2963938.html