1

基础实例(1)

C语言编程基础实例1

计算2000-2500之间的闰年

闰年的计算方法是:条件1)能被4整除,且不能被100整除;2)能被400整除

# include<stdio.h>
// 计算2000-2500之间的闰年
int main(){
    int leapYearNumber = 0;
    for (int i = 2000; i <= 2500; i++){

        if (i % 4 == 0 && i % 100 !=0){

            printf("%d is a lear year!\n",i);
            leapYearNumber += 1;

        }
        else if (i % 400 ==0){
            printf("%d is a lear year!\n",i);
            leapYearNumber += 1;


        }
        else{
            printf("%d is not a leap year!\n", i);

        }

    }

    printf("There are %d leap years between 2000 and 2500!\n",leapYearNumber);


}

结果显示:

判断一个数是否为素数

素数又叫质数,从定义看是指从1到自身,只能被1和自身整除的数。例如2是质数,4非质数

# include<stdio.h>
//判断一个数是否为素数
int main(){
    printf("Please input a number:\n");
    int n;
    scanf("%d",&n);
    int result = 0;

    for (int i=2; i<= n-1; i++){
        if (n % i == 0){
            result += 1;
        }

    }

    if (result == 0){
        printf("%d is a prime number. \n",n);

    }
    else{
        printf("%d is not a prime number. \n",n);
    }

}

结果显示:

计算1-1/2+1/3-1/4+...+1/99-1/100

#include <stdio.h>
//计算1-1/2+1/3-1/4+...+1/99-1/100
int main(){
float result = 1.0;
int sign = 1;
for (int i = 2; i <= 100; i++){
    sign = (-1)*sign;
    result = result + sign*(1.0/i);

}
    printf("result:%f\n",result);

    return 0;
}

结果显示:

计算5!

#include<stdio.h>
//计算阶乘
int main(){
    int res;
    res = 1;
    int i=1;
    while (i <= 5){
        res = res*i;
        i = i+1;

    }
    printf("result:%d",res);

}

结果输出:

自加自减运算(一)

#include<stdio.h>
// 自增和自减运算
int main(){

   int i=8;
   printf("%d\n",++i); //++i是先自增后参与运算,因此是先加1,后打印出来i=9,显示9
   printf("%d\n",--i); //上一步i=9,因此,先自减1=8,后再打印出来,显示8
   printf("%d\n",i++);// 上一步i=8,先打印出来,在自增,i=9,显示8
   printf("%d\n",i--);//先打印出i再自减,i=8,显示9
   return 0;

}

结果显示:

自加自减运算(二)

#include<stdio.h>
//自加自减运算
int main() {
    int i = 5, j = 5, p, q;
    p = (i++) + (i++) + (i++); // 先参与计算,p 等于3个i,结果为15,然后 i++3次,最后i=8
    q = (++j) + (++j) + (++j); // 先自加,j自加三次,j= 8,而q = 8+8+8
    printf("%d,%d,%d,%d", p, q, i, j);
    return 0;

}

结果输出:

逗号运算符和逗号表达式

在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接
起来组成一个表达式, 称为逗号表达式. 其一般形式:
表达式1,表达式2
其求值过程是分别求两个表达式的值,并以表达式 2 的值作为整个逗号表达式的值。

#include<stdio.h>
//逗号表达式
int main() {
    int a = 2, b = 4, c = 6, x, y;
    y = (x = a + b), (b + c);  //逗号表达式,x = 6,y=x=6,逗号表达式的运算级最低,比赋值运算符级别还低。因此y=x=6,后面b+c不影响y的结果,如果y = ((x = a + b), (b + c));那么逗号表达式的值等于最右一个表达式的值,此时y=10
    printf("y=%d,x=%d\n", y, x);

}

结果输出:

输入输出到单个字符

#include<stdio.h>
//输入输出字符
void main(){
    char c;
    printf("input a character\n");
    c=getchar();
    putchar(c);
    printf("$$$$$$$$$$$$$$$$$$\n");
    putchar(getchar());
    printf("%c",getchar());//与上一行的功能一样
}

结果输出:

printf函数格式化输出

#include<stdio.h>
//printf 函数格式化输出
int main() {
    int i = 8;
    printf("%d\n%d\n%d\n%d\n%d\n%d\n", ++i, --i, i++, i--, -i++, -i--); 
    // Turbo C 是按从右到左进行的,但是显示还是从左到右。-i--,得到-8(打印-8),然后--得到7,取负得到-7(打印-7),然后再++,再取负为正得到8(打印),再--得到7(打印),再++得到8(打印)
    // --i得到7,++i得到8(打印)
    printf("$$$$$$$$$$$$$$$$$$$\n");
    printf("%d\n", ++i);
    printf("%d\n", --i);
    printf("%d\n", i++);
    printf("%d\n", i--);
    printf("%d\n", -i++);
    printf("%d\n", -i--);
}

结果输出:

格式字符串

格式字符串的一般形式为:
%[*][输入数据宽度][长度]类型其中有方框号[]的项为任选项。各项的意义如下:

  • 类型:表示输入数据的类型,其格式符和意义如下表所示:
格式 字符意义
d 输入十进制整数
o 输入八进制整数
x 输入十六进制整数
u 输入无符号十进制整数
f或e 输入实数型(用小数形式或指数形式)
c 输入单个字符
s 输入字符串
  • “*”符:用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。
    scanf("%d %*d %d",&a,&b);当输入1 2 3时,把1赋予a2被跳过,3赋予b
  • 输入数据的宽度
    用十进制整数指定输入的宽度(即字符数)。
    例如:scanf("%5d",&a);输入12345678,只把12345赋予变量a,其余部分被截去。
    又如:scanf("%4d%4d",&a,&b);输入12345678,将把1234赋予a,把5678赋予b
  • 长度
    长度格式符为lhl表示输入长整型数据(如%ld)和双精度浮点数(如%lf)。h表示输入短整型数据。
    使用scanf函数需要注意以下几点:
  • scanf函数中没有精度控制,如:scanf("%5.2f",&a);是非法的。不能企图用此语句输入小数为 2 位的实数.
  • scanf 中要求给出变量地址,如给出变量名则会出错。如 scanf("%d",a);是非法的,应改为 scanf("%d",&a);才是合法的.
  • 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格TAB回车作间隔。C 编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A 即为非法数据)时即认为该数据结束.
  • 在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符.
    例如scanf("%c%c%c",&a,&b,&c);输入为d e f,则把'd'赋予a,' '赋予b'e'赋予c,只有当输入为def时,才能把'd'赋予a'e'赋予b'f'赋予c,如果在格式控制中加入空格作为间隔,如
    scanf("%c %c %c",&a,&b,&c);则输入时各数据之间可加空格。

实例1:

# include<stdio.h>
int main(){
    char a, b;
    printf("input character a,b\n");
    scanf("%c%c",&a,&b);//没有空格,因此打字的时候不要空格
    printf("%c%c\n",a,b);

}

结果显示

实例2:

# include<stdio.h>
int main(){
    char a, b;
    printf("input character a,b\n");
    scanf("%c %c",&a,&b);//格式控制串"%c %c"之间有空格,则打字输入时要加空格
    printf("%c%c\n",a,b);

}

结果输出:

实例3:

# include<stdio.h>
int main() {
    long a;
    printf("input a number\n");
    scanf_s("%ld", &a); //当输入数据改为长整型后,输入输出数据相等
    printf("%ld", a);

}

结果输出:

实例4:

# include<stdio.h>
int main() {
    int a;
    long b;
    float f;
    double d;
    char c;
    printf ("\nint:%d\nlong:%d\nfloat:%d\ndouble:%d\nchar:%d\n", 
        sizeof(a), sizeof(b), sizeof(f), sizeof(d), sizeof(c));

}

结果输出:

实例5:

# include<stdio.h>
int main() {
    char a, b, c;
    printf("input character a,b,c\n");
    scanf("%c %c %c", &a, &b, &c);
    printf("%d,%d, %d\n % c, %c, %c\n",a,b,c,a-32,b-32,c-32); //输入三个小写字母,输出其 ASCII 码和对应的大写字母。

}

逻辑运算符

C语言中提供了三种逻辑运算符,

  • &&与运算
  • ||或运算
  • !非运算
    逻辑运算符和其他运算符的优先级关系

    !(非)->&&(与)->||(或),优先级逐次降低,而“&&”和“||”低于关系运算符,“!”高于算术运算符。
    按照运算符的优先顺序可以得出:

逻辑表达式

#include<stdio.h>
//逻辑表达式
int main(){
    char c='k';
    int i=1,j=2,k=3;
    float x=3e+5,y=0.85;
    printf("%d,%d\n",!x*!y,!!!x);  // !x=0,!y=0,所以!x*!y=0;!!!x=0
    printf("%d,%d\n",x||i&&j-3,i<j&&x<y);//x||i&&j-3先计算j-3=-1,再计算i&&j-3的逻辑值为1,再计算x||1,因此x||i&&j-3的逻辑值为1;i<j&&x<y先计算i<j的逻辑值为1,x<y的逻辑值为0,因此1&&0的逻辑值为0
    printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k);//i==5&&c&&(j=8),j=8的逻辑值为0,i==5的逻辑值为0,最后值为0;x+y||i+j+k,x+y的值非0,i+j+k非0,最后的逻辑值为1
}

结果输出:

if-else-if语句

其一般形式

if(表达式1)
  语句1;
else if(表达式2)
  语句2;
else if(表达式3)
  语句3;
  ...
else
  语句n;

实例

#include<stdio.h>
//if-else语句
int main(){
    char c;
    printf("input a character:");
    c = getchar();
    if(c<32)
        {printf("this is a control character\n");}
    else if(c>='0'&&c<='9')
        {printf("this is a digit\n");}
    else if(c>='A'&&c<='Z')
        {printf("this is a capital letter\n");}
    else if (c>='a'&&c<='z')
        {printf("this is a small letter\n");}
    else
        {printf("this is an other character\n");}
}



switch语句

#include<stdio.h>
//switch语句
int main(){
    int a;
    printf("input integer number:\n");
    scanf("%d",&a);
    switch(a){

        case 1:printf("Monday\n");break;
        case 2:printf("Tuesday\n");break;
        case 3:printf("Wednesday\n");break;
        case 4:printf("Thursday\n");break;
        case 5:printf("Friday\n");break;
        case 6:printf("Saturday\n");break;
        case 7:printf("Sunday\n");break;
        default:printf("Error\n");break;

    }

}

结果输出:

计算器程序

#include<stdio.h>
//计算器程序
int main(){
    float a,b;
    char c;
    printf("input expression: a+(-,*,/)b\n");
    scanf("%f%c%f",&a,&c,&b);
    switch(c){
        case '+':printf("%f\n",a+b);break;
        case '-':printf("%f\n",a-b);break;
        case '*':printf("%f\n",a*b);break;
        case '/':printf("%f\n",a/b);break;
        default:printf("input error\n");
    }
}

循环控制

循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,反复执行某程序
段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。C语
言提供了多种循环语句,可以组成各种不同形式的循环结构。

  • 用 goto 语句和 if 语句构成循环
  • 用 while 语句
  • 用 do-while语句
  • 用for语句

1)goto语句
基于语法为goto 语句标号;
其中标号是一个有效的标识符,这个标识符加上一个“:”一起出现在函数内某处, 执行
goto 语句后,程序将跳转到该标号处并执行其后的语句。另外标号必须与 goto 语句同处于
一个函数中,但可以不在一个循环层中。通常 goto 语句与 if 条件语句连用, 当满足某一条
件时, 程序跳到标号处运行。
实例:用goto语句和if语句构成循环计算\(\sum_{n=1}^{100} n\)

#include<stdio.h>
int main(){
    int i,sum=0;
    i = 1;
    loop: if(i<=100){
        sum = sum + i;
        i++;
        goto loop;
    }
    printf("%d\n",sum);

}

结果输出:

2)while语句
while语句的一般形式:while(表达式)语句

#include<stdio.h>
int main(){
    int i,sum=0;
    i=1;
    while(i<=100){
        sum = sum+i;
        i++;

    }
    printf("%d\n",sum);
}

结果输出:

3)do-while语句
do-while语句的一般形式为:

do
  语句
while(表达式);

这个循环与 while 循环的不同在于:先执行循环中的语句,然后再判断表达式是否为
真, 如果为真则继续循环;如果为假, 则终止循环。因此, do-while 循环至少要执行一次
循环语句。

#include<stdio.h>
//do-while语句
int main(){
    int i,sum=0;
    i =1;
    do {
        sum = sum+i;
        i++;

    }
    while(i<=100);
    printf("%d\n",sum);

}

结果输出:

4)for语句
在C语言中,for语句使用最为灵活,它完全可以取代 while 语句。它的一般形式为:
for(表达式1;表达式2;表达式3)语句
for 语句最简单的应用形式也是最容易理解的形式如下:
for(循环变量赋初值;循环条件;循环变量增量)
循环变量赋初值总是一个赋值语句, 它用来给循环控制变量赋初值;循环条件时一个关系表达式,决定什么时候退出循环,循环变量增量,定义 循环控制变量每循环一次后按照什么方式变化,注意三个部分之间用;分开

#include<stdio.h>
//for循环
int main(){
    int i,sum=0;
    for (i=1;i<=100;i++){
        sum = sum +i;

    }
    printf("%d\n",sum);
}

结果输出:

posted @ 2023-04-10 11:05  Bonne_chance  阅读(151)  评论(0编辑  收藏  举报
1