前言:
对应鹏哥专升本c语言,51集
内容:
找出10个数值中的最大值,
#include <stdio.h>
//求10个整数中的最大值
int main()
{//准备10个整数 //int arr[10] = {1,2,3,4,13,6,7,8,9,-2};//用于循环10次int i = 0;//也可以自己输入10个数值,需要循环数组下标int arr[10] ={0};//for循环for(i= 0; i < 10; i++){scanf("%d", &arr[i]); //数组不要取地址,但是数组中的每个元素需要去地址 } //找出最大值,假设最大值为数组第一个int max = arr[0];//循环for(i=1; i<=10; i++){if(max < arr[i]){max = arr[i];}} printf("%d", max);return 0;
}
2、打印9*9乘法表
//int main()
//{
// //循环9次,就是一行的数字是固定的
// int i = 0;
// int j = 0;
// int sum = 0;
// for(i=1; i<=9; i++)
// {
// for(j=1; j<=i; j++) //就是一行一列,都是相同的,
// {
// printf("%d*%d=%-2d\t", i, j, i*j);
// }
// printf("\n");
// }
//}
3、猜数字游戏
都是之前讲过的,就是的,但是这道题有难度,明天再做讨论
4、二分法查找,查找数组中的下标
这是原始的,没有使用自定义函数,我好像没有说找不到返回什么
#include <stdio.h>
求10个整数中的最大值
//int main()
//{
// //准备10个整数
// //int arr[10] = {1,2,3,4,13,6,7,8,9,-2};
//
// //用于循环10次
// int i = 0;
//
// //也可以自己输入10个数值,需要循环数组下标
// int arr[10] ={0};
// //int arr[] = {0};
// //这里没有指定数组的元素个数,就会根据初始化的内容来推算元素的个数
// //那么默认就是只能存一个数据
// //
//
//
// //for循环
// for(i= 0; i < 10; i++)
// {
// scanf("%d", &arr[i]); //数组不要取地址,但是数组中的每个元素需要去地址
// }
// //找出最大值,假设最大值为数组第一个
// int max = arr[0];
//
// //循环
// for(i=1; i<=10; i++)
// {
// if(max < arr[i])
// {
// max = arr[i];
// }
// }
// printf("%d", max);
//
// return 0;
//}//int main()
//{
// //循环9次,就是一行的数字是固定的
// int i = 0;
// int j = 0;
// int sum = 0;
// for(i=1; i<=9; i++)
// {
//
// for(j=1; j<=i; j++) //就是一行一列,都是相同的,
// {
// printf("%d*%d=%-2d\t", i, j, i*j);
// }
// printf("\n");
// }
//
//}//猜数字游戏
//int main()
//{
// int input = 0;
// strand()
// return 0;
// }
// //形参名字和实参名字可以相同,可以不同
int binary_search(int arr[], int h, int zs)
{int left = 0;int right = zs - 1;while(left<=right){int mid = (right-left)/2 + left; if(arr[mid] > h){right = mid - 1;}else if(arr[mid] < h){left = mid +1;}else{return mid;}return -1;}
} //忘记一个括号了,但是可以用鼠标移到括号位置,如果加深就是有配对的括号,没有就是少打了括号 //二分法查找数组下标,自定义函数
int main()
{int arr[] = {1,2,3,4,5,6,7,8,9,10};//选择需要挑选的数字下标 int h = 11;int left = 0;//总元素大小,除一个元素大小,等于有几个元素 int zs = sizeof(arr) / sizeof(arr[0]); //不能在自定义函数创建,因为形参只拷贝数组的第一元素的地址,无法计算总元素大小除以一个元素大小 //找到了,返回下标 //右下标等于总数-1 int right = zs -1;int ret = binary_search(arr, h, sz); //这里没有修改成自己的参数 h if(ret == -1){printf("找不到了"); } else{printf("找到了,数组下标为:%d", ret); //一个错误,改用函数,没有用返回值打印 }// while(left<=right)
// {
// int mid = (right-left)/2 + left;
// if(arr[mid] > h)
// {
// right = mid - 1;
// }
// else if(arr[mid] < h)
// {
// left = mid +1;
// }
// else
// {
// printf("找到了,下标为:%d",mid);
// break;
// }
// }
// printf("找不到了"); return 0;}
第二套题目
第一题,关于形参和实参的描述
形参是实参的临时拷贝
新参在函数调用的时候才实例化,才开辟内存
改变形参就是改变实参(这个是错误的)
传值调用,不会改变实参
第二题,函数调用exec((v1. v2) (v3, v4), v5, v6))
逗号表达式是一个参数(传值,就是一个),v5,v6是两个变量
一起就是四个实参个数
第三题,函数设计
函数功能应该尽量高内聚低耦合(对的)
功能应该尽量单一,就是说如果是计算加法,那么加法的函数里,应该就不要出现打印的功能
函数尽量少用全局变量(对的)本来是这样的
函数尽可能多的使用全局变量
函数参数不易过多(对的)
设计函数是,尽量做到谁申请的资源就由谁释放(对的)
fun()
{
//申请了内存
//使用
//释放
//别的函数不能释放他人的资源
}
第四题,函数描述正确的是
函数必须有参数和返回值(错的)
函数的实参只能是变量(错的)
库函数的使用必须要包含对应的头文件(对的)
有了库函数就不需要自定义函数(错的)
第五题,在一个源程序中,main函数的位置
可以任意
第六题,。。。明天写