C学习笔记(1)

C学习笔记(1)

C C学习笔记 C基本函数


三目运算符

一般形式: 表达式1 ? 表达式2 : 表达式3

表达式1的值为真(非0)则直接到表达式2,若表达式1的值为假(0值),则到表达式3

1
2
3
4
5
6
7
8
9
10
11
12
13
a>b?a:b //返回a和b中较大的值
/*
示例:从终端输入两个数字并输出其中较大的值
**/
#include <stdio.h>
void main(){
int a,b;
scanf("%d %d",&a,&b);
printf("%d",a>b?a:b);
}
//输入:3,5
//输出:5


Switch的用法

一般形式:swithch(表达式){case 常量1:语句一;break;…}

  • switch后面括号内的表达式,其值的类型必须为整数型(在C语言中字符也是整数类型
  • 一定要写break,如果不写的话将执行匹配到的case下方的所有语句,包括default
  • 可几个case用一个break,增加灵活性。详见示例
  • 不是必须写default
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    /*
    示例:从终端输入一个字符,若输入A或者a,则打印Hello,若输入B或者b,则打印hi,若输入其他,则报错
    **/
    #include <stdio.h>
    void main(){
    char ch;
    scanf("%c",&ch);
    switch (ch) {
    case 'A':
    case 'a':
    printf("Hello\n");
    break;
    case 'B':
    case 'b':
    printf("hi\n");
    break;
    default: //可不写,但是写了提高代码的可使用性
    printf("Your input is not defined!\n");
    break;
    }
    }
    //输入:a | b | c |
    //输出:Hello | hi | Your input...|


结束循环

break

  • break跳出整个循环过程

    continue

  • continue结束本次循环
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    /*
    示例:显示两个结束符号的不同。
    在第一个循环中,我们输出小于11的所有奇数,在遇到偶数的时候,结束本次循环;
    在第二个循环中,我们输出自增的自然数,当增加到5时跳出循环
    **/
    #include <stdio.h>
    void main(){
    //continue:
    for(int i=0;i<11;i++){
    if(i%2==0) continue;
    printf("%d\t",i);
    }//输出:13579
    printf("\n");
    //break:
    for(int i=0;i<11;i++){
    if(i==5) break;
    printf("%d\t",i);
    }//输出:01234
    }


字符串数组

  • 可以用gets(字符数组)puts(字符数组)输入和输出一个字符串,只能输入输出一个,括号内不可写多个字符串数组

    gets()方法不安全,最好不用
    1
    2
    3
    4
    5
    6
    7
    8
    //示例:
    #include <stdio.h>
    void main(){
    char a[20];
    gets(a);//从键盘输入:“hello”
    printf("%s\n",a);//输出方式1:“hello”
    puts(a);//输出方式2:“hello”
    }
字符串函数< string.h >

(以下函数均在string.h头文件中定义)

  • strcar(字符数组1,字符数组2) 字符串连接函数 注意参数必须是字符数组名

    作用:将两个字符串数组连接为一个新的字符串数组

    1
    2
    3
    4
    5
    6
    7
    //示例:
    #include <stdio.h>
    void main(){
    char a[]="hello";
    char b[]="world\n";
    printf("%s",strcat(a,b));
    }//输出:“helloworld”
  • strcpy(字符数组1,字符串2) 字符串复制函数 字符串可以是临时定义,非必须字符数组

    作用:将字符串2复制到字符数组1中

    1
    2
    3
    4
    5
    6
    7
    8
    //示例:第二个参数无论是数组还是临时定义的均合法
    #include <stdio.h>
    void main(){
    char a[20]="hello";
    char b[20]="world\n";
    printf("%s",strcpy(a,b));//输出:“world”
    printf("%s\n",strcpy(a, "Helloworld"));//输出:“Helloworld”
    }
  • strncpy(字符数组1,字符串2,整数) 字符串复制函数2 数据要求同上
    作用:将字符串2中最前面整数个字符复制到字符数组1中,取代字符数组原来最前面整数个字符

    1
    2
    3
    4
    5
    6
    7
    //示例:
    #include <stdio.h>
    void main(){
    char a[20]="hello";
    char b[20]="world\n";
    printf("%s\n",strncpy(a,b,3));//输出:"worlo"
    }
  • strcmp(字符串1,字符串2)
    作用:比较两个字符串,将两个字符串逐个字符比较,按照ASCII码值大小比较,直到出现不同字符或‘\0’为止,按照第一个不同字符比较结果为准
    返回值:

  1. 若str1 = str2,返回值0
  2. 若str1 > str2,返回值为正整数
  3. 若str1 < str2,返回值为负整数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//示例:
#include <stdio.h>
void main(){
char a[]="apple";
char b[]="banana";
char c[]="aunt";
char d[]="apple";
if(strcmp(a, b)>0){
printf("%s > %s\n",a,b);
}else
if(strcmp(a, b)<0){
printf("%s < %s\n",a,b);
}else{
printf("%s = %s\n",a,b);
}//输出:"apple < banana"
printf("%s %s:%d\n",a,c,strcmp(a,c));//输出:"apple aunt:-5"
printf("%s %s:%d\n",a,d,strcmp(a,d));//输出:"apple apple:0",说明相等
/*可以使用临时定义字符串比较*/
printf("%d\n",strcmp("hello","world"));//输出:"-15"
}
  • strlen(字符数组) 不包括’\0’的长度
    作用:测试字符串的长度

    1
    2
    3
    4
    5
    6
    7
    //示例:
    #include <stdio.h>
    void main(){
    char a[]="apple";
    printf("%d\n",strlen(a));//输出:"5"
    }
  • strlwr(字符串) 大小写字母转换函数 只能在vc环境下使用,Unix的gcc无法使用
    作用:将字符串中的大写字母换成小写字母

  • strupr(字符串) 大小写字母转换函数 只能在vc环境下使用,Unix的gcc无法使用
    作用:将字符串的小写字母转换成大写字母
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //示例:
    #include <string.h>
    #include <stdio.h>
    void main(){
    char a[]="AppleID";
    printf("%d\n\n",strlwr(a));//输出;"appleid"
    printf("%d\n\n",strupr(a));//输出:"APPLEID"
    }