前言:
對應鵬哥專升本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函數的位置
可以任意
第六題,。。。明天寫