题目一
在游戏设计中,经常会根据不同的游戏状态调用不同的函数,我们可以通过函数指针来实现这一功能,下面哪个是:一个参数为int *,返回值为int的函数指针( )
作业内容
A.int (*fun)(int)
B.int (*fun)(int )
C.int fun(int )
D.int (*fun)(int *)
首先看题目 是一个函数指针
然后返回值只int 所以首先排除C D
其次要求它的参数是int* 那么排除A
所以说答案是B
B
题目二
描述
有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。
输入描述:
第一行输入一个整数(0≤N≤50)。
第二行输入N个升序排列的整数,输入用空格分隔的N个整数。
第三行输入想要进行插入的一个整数。
输出描述:
输出为一行,N+1个有序排列的整数。
示例1
输入:
5
1 6 9 22 30
8
输出:
1 6 8 9 22 30
题目分析 我们这里主要需要利用 有序这个特点 可以从数组后面像前面比较
如果这个数大于我们要插入的数就往后挪动一格
直到遇见第一个小于我们要插入的数的元素 将需要插入的数放进去
如果直到最前面都没有找到小于需要插入的数的数字 那么我们就将插入数放在最前面
代码表示如下
#include<stdio.h> int main() { // 输入数字 int k = 0; int n = 0; int i; int arr[55] = { 0 }; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d", &arr[i]); } scanf("%d", &k); // 开始插入k for (i = n-1; i >= 0; i--) { if (arr[i] > k) { arr[i + 1] = arr[i]; } else { arr[i + 1] = k; break; } } // 特殊情况 if (i < 0) { arr[0] = k; } for (i = 0; i < n + 1; i++) { printf("%d ", arr[i]); } return 0; }