复习C部分:1.设置关机程序 2.函数(strcpy,memset----替换函数;库函数;写一个函数,用该函数实现比较两个数的最大值;写一个数,交换两个整数类型的值)

简介: 复习C部分:1.设置关机程序 2.函数(strcpy,memset----替换函数;库函数;写一个函数,用该函数实现比较两个数的最大值;写一个数,交换两个整数类型的值)

//设置关机程序,如设计关机程序,如果不输入"我是猪",则电脑就关机

//思路:C语言中,关机程序是system("shut dowm - s - t 60");            

//(shutdowm -s -t是固定格式,60是在60s内关机)

//然后给出提示让用户输入xx,用scanf接收并创建新的字符串arr用于与你想让用户输入的字符串比较;

//if判断输入字符串是否正确,判断字符串用strcpt(arr,"xxx")==0,

//正确就执行程序system("shut down -a"),错误继续提示用户输入,直到正确或时间消耗完毕关机

//注:比较字符串要用strcmp,引用头文件#string.h

//             使用system要引用头文件#stdlib.h


//#include<stdio.h>
//#include<string.h>
//#include<stdlib.h>
//int main()
//{
//    char arr[20] = { 0 };
//   system("shutdown -s -t 60");
// jixu:
//   printf("请输入我是猪,否则电脑将会关机\n");
//   scanf("%s", arr);
//   if (strcmp(arr ,"我是猪")==0)//引用头文件#include<string.h>
//   {
//       system("shutdown -a");//引用头文件#include<strlib.h>
//   }
//   else
//   {
//       goto jixu;
//   }
//    return 0;
//}

     42.函数

//函数是代码的某一部分,里面有一个或一些代码,完成某项特殊命令,具有相对独立性

//一般都有输入函数和返回值

//库函数的意义:引用头文件,使之一些大量重复出现的命令直接引用,不需要反复编程

// 比较方便学习网站为  https://cplusplus.com/reference/

//                    https://zh.cppreference.com/w/%E9%A6%96%E9%A1%B5

//      注:第一个为默认为英文,速度稍微快一些,第二个默认为中文(将zh删掉即为英文),速度较慢

//函数主要有以下几类

//     IO函数(输入输出函数):printf scanf getchar putchar

//     字符串操作函数:strcmp(字符串比较)  strlen(字符串长度) strcpy(拷贝字符串)

//     字符操作函数:toupper(小写转大写函数)

//     内存操作函数:memcpy memcmp memsrt

//     时间日期函数:time

//     数学函数:sqrt(开平方)pow(求次方)

//     其他库函数:



//将arr2的值拷贝到arr1中去   strcpy


//#include<stdio.h>
//#include<string.h>
//int main()
//{
//    char arr1[20] = { 0 };
//    char arr2[10] = "hello";
//    strcpy(arr1, arr2);//拷贝字符串,将arr2的字符串放在arr1中,strcpy(arr1,arr2)
//    printf("arr1=%s\n", arr1);//打印字符串要用%s    打印结果为arr1=hello
//    return 0;
//}


//memset----替换函数


//#include<stdio.h>
//#include<string.h>
//int main()
//{
//    char arr[] = { "hello shabi" };
//    memset(arr, 'changa', 5);
//    printf("%s\n", arr);//打印结果为 changa shabi
//    return 0;
//}

 43.函数

//库函数的并不能解决所有的事,有些奇奇怪怪的相类似问题,如收录的学生信息(分类,类似表格)

//      也是大量重复数据,但是无法被使用,要自定义函数

//自定义函数必须要有函数名,返回类型,函数参数


//ret_type fun_name(para1, *)
//{
//    statement;
//}
//函数名为fun_name,返回类型为ret_type,函数参数为para1

//实例:写一个函数,用该函数实现比较两个数的最大值


//#include<stdio.h>
//int main()
//{
//    int a = 0;
//    int b = 0;
//    printf("请输入两个整数\n");
//    scanf("%d %d", a b);
//    int max = get_max(a,b);//括号内的ab表示传的实参
//    printf("您输入两个数中最大的数为:%d\n", max);
//    return 0;
//}
//int get_max(int x, int y)
第一个int表示返回类型为int型,括号内的int表示参数类型,需要返回函数,如果不需要,返回类型为void
xy表示传的形参(形参形式可以与实参不一致)
//{
//    int z = 0;
//    x > y ? z;//三目操作符,x>y?z
//    return z;//需要返回z
//}

//实例2:写一个数,交换两个整数类型的值

//注:此处代码错误,错误原因如下

//                   main函数中的a,b的两个原来空间和Swap重新创建的空间不同

//                   所以,无论如何操作Swap内部的a,b(即xy)

//                   都不会影响原来空间的ab


//#include<stdio.h>
//int main()//可以按f10调试
//{
//    int a = 10;
//    int b = 20;
//    printf("交换前:a=%d b=%d\n", a, b);//交换前:a=10 b=20
//    Swap(a, b);//此处可以按f11进入循环内调试
//    printf("交换后:a=%d b=%d\n", a, b);//交换后:a=20 b=10
//    return 0;
//}
//void Swap(int x, int y)
//{
//    int z = 0;
//    z = x;
//    y = z;
//    x = y;
//}

//正确代码如下----不写函数版

//#include<stdio.h>
//int main()
//{
//    int a = 10;
//    int*pa = &a;//将a的地址赋予pa,*表示pa是地址
//    *pa = 20;//将20放在pa地址里,*表示解引用pa,此时才能操作将20放pa地址里
//    printf("%d\n", a);
//    return 0;
//}

//正确代码如下----函数版

//#include<stdio.h>
//int main()//可以按f10调试
//{
//    int a = 10;
//    int b = 20;
//    printf("交换前:a=%d b=%d\n", a, b);//交换前:a=10 b=20
//    Swap(&a, &b);//将a,b的地址传到函数内才可对ab操作,用&a,&b
//    printf("交换后:a=%d b=%d\n", a, b);//交换后:a=20 b=10
//    return 0;
//}
//void Swap(int *pa, int *pb)//*pa*pb表示pa,pb是指针
//{
//    int z = 0;
//    z = *pb;//解引用pb,并把pb的值给z
//    *pa = z;//解引用pb,并把z的值给pa
//    *pb = *pa;//解引用pa,pb,并把pa的值给pb
//}//void不需要返回类型

//关于函数形参和实参:上面已经使用过,如main函数里面的Swap(a,b)的ab为实参

//void Swap(int*pa,int*pb)的pa,pb为形参

//形参只是一种格式,可以用任意符号表示,但是必须有,实参不能变


//45.函数的调用

//传值调用&传址调用

//当是传值调用时,只是将值传递过去,改变形参,不会影响实参

//当是传址调用时,将地址传递过去,可以通过改变形参来影响实参


//例:用函数求100~200之间的素数


//#include<stdio.h>
//int main()
//{
//    int i = 0;
//    int count = 0;
//    for (i = 100; i < 201; i++)
//    {
//        if (is_prise(i) == 1)
//        {
//            printf("%d ", i);
//            count++;
//        }
//    }
//    printf("\ncount=%d\n", count);
//    return 0;
//}
//int is_prise(int n)//该函数只是传递值并返回值,不需要改变原函数i的值
//{
//    int m = 0;
//    for (m = 2; m < n; m++)
//    {
//        if (n % m == 0)
//            return 0;
//    }
//    return 1;
//}

//写一个函数打印1000~2000之间的闰年

#include<stdio.h>
int main()
{
    int y = 0;
    for (y = 1000; y <= 2000; y++)
    {
        if (is_run_year(y) == 1)
        {
            printf("%d ", y);
        }
    }
    return 0;
}
int is_run_year(int m)
{
    return ((m % 4 == 0 && m % 100 != 0) || (m % 400 == 0));
}


相关文章
|
6月前
【变态面试题】【两种解法】不能创建临时变量(第三个变量),实现两个数的交换
【变态面试题】【两种解法】不能创建临时变量(第三个变量),实现两个数的交换
49 0
【变态面试题】【两种解法】不能创建临时变量(第三个变量),实现两个数的交换
|
6月前
|
Perl
在awk中,初始化-测试-递增型的 `for` 循环
在awk中,初始化-测试-递增型的 `for` 循环
47 2
|
6月前
|
程序员 C语言
【C语言】函数----函数的分类、库函数详解(strcpy、memset)、自定义函数的实现(找较大值、交换两个数)
【C语言】函数----函数的分类、库函数详解(strcpy、memset)、自定义函数的实现(找较大值、交换两个数)
40 0
|
6月前
|
存储 C语言
学习总结(位操作符;循环输入的三种方式;交换两个变量值的三种方法;打印数字对应的二进制;unsigned int 与int 的区别;改变特定位数0/1;&&和||的连续操作(与前置,后置结合))
学习总结(位操作符;循环输入的三种方式;交换两个变量值的三种方法;打印数字对应的二进制;unsigned int 与int 的区别;改变特定位数0/1;&&和||的连续操作(与前置,后置结合))
66 0
|
C语言
C语言:写一个函数返回参数二进制中 1 的个数(三种思路)-1
思路一:使用 %2 和 /2 取出每一位并判断 总体思路: (一). 创建函数,参数要设置成无符号整数,设置计数器计算1的个数 (二). 使用 while循环 循环判断二进制每一位, 使用 %2 判断最低位是否为 1, 使用 /2 去掉判断了的最低位,下次循环开始判断新的最低位
 C语言:写一个函数返回参数二进制中 1 的个数(三种思路)-1
|
C语言
C语言: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数,若为素数函数返回值为1,否则为0。在主函数中输入一个整数x,调用函数isprime(x)来判断这个整数x是
C语言: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数,若为素数函数返回值为1,否则为0。在主函数中输入一个整数x,调用函数isprime(x)来判断这个整数x是
1038 0
C语言: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数,若为素数函数返回值为1,否则为0。在主函数中输入一个整数x,调用函数isprime(x)来判断这个整数x是
|
数据安全/隐私保护 C语言
【C语言】交换两个int变量的值,不能使用第三个变量
交换两个int变量的值,不能使用第三个变量。即a=3,b=5,交换之后 a=5,b=3