二级C语言程序设计题专项强化真题试卷4
程序设计题
1.请编写函数fun,其功能是:找出一维整型数组元素中最大的值及其所在的下标,并通过形参传回。数组元素中的值已在主函数中赋予。
主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入编写的若干语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
void fun(int a[],int n,int*max,int*d)
{
}
void main()
{
FILE*wf:
int i,x[20],max,index,n=10;
int y[20]={4,2,6,8,11,5};
srand((unsigned)time(NULL));
for(i=0;i<n;i++)
{
x[i]=rand()%50;
printf(\\
void fun(int a[],int n,int*max,int*d)
{int i;
*max=a[0];*d=0;
for(i=0;i<n;i++)
/*将最大的元素放入指针max所指的单元,最大元素的下标放入指针d所指的单元*/
if(*max<a[i])
{ *max=a[i];*d=i; }
}
解析:本题考查:查找一维数组中的最大值及其下标,使用循环判断结构实现;指针变量的应用。
要查找最大值及其下标需要定义两个变量,该程序直接使用形参max和d,由于它们都是指针变量,所以在引用它们所指向的变量时要对其进行指针运算。循环语句用来遍历数组元素,条件语句用来判断该数组元素是否最大。
该程序考查求最大值,需要掌握以下语句:
for(i=0;i<n;i++)
/*将最大的元素放入指针max所指的单元,最大元素的下标放入指针d所指的单元*/
if(*max<a[i])
{ *max=a[i];*d=i;}
2.请编写函数fun,其功能是:判断形参n中的正整数是几位数(输入数据的位数不超过4位),并将结果通过函数值返回。例如:若输入的数据为123,则输出结果为:输入的数字是3位。
注意:部分源程序存在PROG1.C中,请勿改动主函数mmn和其他函数中的任何内容,仅在函数hn的花括号中填入所编写的若干语句。
试题程序:
#include
void NONO();
int fun(int n)
{
}
main()
{int n,place;
do{
printf(\\
int bits=1;//临时变量统计位数
while(n/10)//判断该位是否为0,若不为0,bits加1,再将n除以10,继续判断
{
bits++;
n=n/10:
}
return bits;
解析:通过对指定的多位数每次除以10,去掉最后一位,直到为0结束,使用临时变量来统计一个多位数的位数。
3.请编写函数fun:在形参指针所指的4个整数中找出最大值和最小值,最大的放在a中,最小的放在d中。
注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
给定源程序:
#include
void NONO();
void fun(int*a,int*b,int*c,int*d)
{
}
main()
{int a,b,C,d;
printf(\\
int max,min;//临时存放最大值、最小值
max=rain=*a;//初始化为*a
if(max<*b)//与*b比较,如果max比*b小,修改max,如果min比*b大,修改min,下同
max=* b:
if(rain>*b)
min=*b:
if(max<* c)
max=*c:
if(min>* c)
min=*c:
if(max<* d)
max=*d:
if(min>* d)
min=*d;
*d=min;
*a=max;
解析:通过初始化指定最大值、最小值,再使用当前的最值与剩下的值比较,若比最大值大,修改最大值;若比最小值小,修改最小值。
4.请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。
注意:部分濂程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include
#include
#include
#define M 3
#define N 4
void fun(int tt[M][N],int pp[N])
{
}
void main()
{
int t[M][N]={{68,32,54,12},{14,24,88,58},{42,22,44,56}};
int P[N],i,j,k;
system(\\
void fun(int tt[M][N],int pp[N])
{
int i,j,max;
if(tt==NULL‖pp==NULL)return;
for(j=0;j<N;j++)
{
max=tt[0][j];/*假设各列中的第一个元素最大*/
for(i=0;i<M;i++)
if(tt[i][j]>max)/
本文档预览:3600字符,共3883字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载