下面程序段的功能是在输入的一组整数中求出最大者,输入0结束循环。请在下划线处填入正确内容。 int a,max; scanf("%d",&a); max=a; while(a) { if(max<a) ; scanf("%d",&a); } printf("%dn",max);
第1题:
请将以下程序中的函数声明语句补充完整。
#include <stdio.h>
int 【 1 2 】 ;
main()
{ int x,y,(*p)();
scanf("%d%d",&x,&y);
p=max;
printf("%d\n",(*p)(x,y));
}
int max(int a,int b)
{ return(a>b?a:b);}

第2题:
请补充main函数,该函数的功能是:从键盘输入3个整数,然后找出最大的数并输出。
例如,输入:12,45,43,最大值为45。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。
试题程序:
include<stdio.h>
include<conio.h>
main()
{
int a, b, c, max;
clrscr();
printf("\nlnput three numbers:\n");
scanf("%d,%d,%d",&a,&b,&c);
printf("The three numbers are:%d,
%d,%d\n",a,b,c);
if(a>b)
【 】;
else
【 】;
if(max<c)
【 】;
printf("max=%d\n",max);
}
第3题:
下面函数的功能是:找出一维数组元素中最大的值和它所在的下标,最大值的和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。请填空。
#include<stdlib.h>
#include<stdio.h>
void fun(int a[],int n, int *max, int *d)
{ int i;
*max=a[0];
*d=0;
for(i=0;【15】;i++)
if(*max<【16】)
{*max=a[i];*d=i;}
}
main()
{ int i, x[20], max, index, n=10;
randomize();
for(i=0;i<n;i++)
{
x[i]=rand()%50; printf("%4d",x[i]);
}
printf("\n");
fun(x,n,&max,&index);
printf("Max=%5d,Index=%4d\n",max,index);
}
第4题:
若输入1.5、2.5,则以下程序的运行结果为______。main(){ float a,b; int c; scanf("%f,%f,",&a,&b); c=max(a,b); printf("%d",c);}max(x,y)float x,y;{ float z; z=x>y?x:y; return(z);}
A.1.5
B.2.5
C.2
D.3
第5题:
当输入10,11,12时,下面程序运行结果是【 】。
include<iostream>
using namespace std;
int main()
{
int a,b,C,max;
cin>>a>>b>>C;
if(max<b)
max=b;
if(max<c)
max=c;
cout<<max<<endl;
return 0;
}
第6题:
请补充main函数,该函数的功能是:从键盘输入一组整数,使用条件表达式找出最大的整数。当输入的整数为0时结束。
例如,输入1,2,3,5,4,0时,最大的数为5。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写出的若干表达式或语句。
试题程序:
include<stdio.h>
include<conio.h>
define N 100
main()
{
int num[N];
int i=-1;
int max=0;
clrscr();
printf("\nInput integer number:\n");
do
{
i++;
printf("num[%d]=",i);
scanf("%d",【 】);
max=【 】num[i]:max;
}while (【 】);
printf("max=%dkn",max);
}
第7题:
某人编写了下列程序,用来求10个整数(整数从键盘输入)中的最大值: Private Sub Command1_Click() Dim a(10) As Integer, max As Integer For k=1 To 10 a(k)=InputBox("输入一个整数") Next k max=0 For k=1 To 10 If a(k)>max Then max=a(k) End If Next k Print max End Sub 运行程序时发现,当输入10个正数时,可以得到正确结果,但输入10个负数时结果是错误的。程序需要修改。下列修改中可以得到正确运行结果的是( )。
A.把Ifa(k)>max Then 改为 If a(k)<max Then
B.把max=a(k)改为a(k)=max
C.把第2个循环语句For k=1 To 10改为For k=2 To 10
D.把max=O改为max=a(10)
第8题:
窗体中有命令按钮Command32,其Click事件代码如下。该事件的完整功能是:
接收从键盘输入的10个大于0的整数,找出其中的最大值和对应的输入位置。
Privme Sub Command32_Click()
max=0
max_n=0
For i=1 To 10
num=Val(InputBox("请输入第"&i&"个大于0的整数:"))
If______Then
max=num
max_n=i
End If
Next i
MsgBox("最大值为第"&max_n&"个输入的"&max)
End Sub
程序空白处应该填入的表达式是
A.num>i
B.i<max
C.num>max
D.num<max
第9题:
编写函数int fun(int lim, int aa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数的个数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include<conio.h>
include<stdio.h>
define MAX 100
int fun(int lim, int se[MAX])
{
}
main()
{
int limit,i,sum;
int aa[MAX];
clrscr();
printf("输入一个整数");
scanf("%d",&limit);
sum=fun(limit,aa);
for(i=0;i<sum;i++)
{
if(i%10==0&&i!=0) /*每行输出10个数*/
printf("\n");
printf("%5d ",aa[i]);
}
}
第10题:
阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。
【说明】
输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
【函数】
main ( )
{
int number[10];
input (number);
max min (number);
output (number);
}
input (number)
int number[10];
{int i;
for ( i=0;i<9;i++ )
scanf ( "%d,",&number[i] );
scanf ( "%d",&number[9] );
}
max_min ( array )
int array[10];
{int *max,*min,k,1;
int *p,*arr_end;
arr end=(1);
max=min=array;
for ( p=(2);p<arr_end;p++ )
if((3)) max=p;
else if ( *p<*min ) min=p;
(4);
l=*min;
(5);array[0]=1;1=*p;
*p=array[9];array[9]=k;k=*p;
return;
}
output ( array )
int array[10];
{ int *p;
for ( p=array;p<array+9;p++ )
printf ( "%d,",*p );
printf ( "%d\n",array[9] );
}
第11题:
第12题:
第13题:
●试题二
阅读下列程序或函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【函数2.1说明】
函数strcmp()是比较两个字符串s和t的大小。若s<t函数返回负数;若s=t函数返回0;若s>t,函数返回正数。
【函数2.1】
int strcmp(char *s,char *t)
{ while(*s && *t && (1) ){
s++;t++;
}
return (2) ;
}
【程序2.2说明】
在n行n列的矩阵中,每行都有最大的数,本程序求这n个最大数中的最小一个。
【程序2.2】
#includestdio.h
#define N 100
int a[N][N];
void main()
{ int row ,col,max,min,n;
/*输入合法n(<100),和输入n×n个整数到数组a的代码略*/
for (row=0;row<n;row++){
for(max=a[row][0],col=1;col<n;col++)
if( (3) )max=a[row][col];
if( (4) )min=max;
else if( (5) )min=max;
}
printf ("The min of max numbers is %d\n",min);
}
●试题二
【答案】(1)*s == *t(2) *s - *t
【解析】*s 和 *t相等才执行循环体。返回二者差值,恰好符合题目要求。
【答案】(3) a[row][col]>max (4) row == 0(5) max<min
【解析】当前值比max大,则把它赋给max。max是本行最大值。初始化min为第一行的max。该行的max比min小,则将max赋给min。
第14题:
试题二
下面程序中函数fun的功能是:在含有10 个元素的s数组中查找最大数,及最大数所在位置(即,下标值),最大数可能不止一个。最大数作为函数值返回,最大数的个数通过指针变量n传回,所在位置由数组pos传回。
例如:
若输入 2 8 5 7 8 4 5 3 2 8
则应输出:
The max: 8
Total: 3 //最大数出现次数
The positions: 1 4 9
请补充下列空缺:
include<stdio.h>
include<conio.h>
define M 10
int fun(int *a, int *n, int pos[])
{int i, k,max=-32767;
(1)
for(i=0; i<M; i++)
if( (2) ) max=a[i];
for(i=0; i<M; i++)
if( (3) )pos[k++]=i;
*n=k;
return max;
}
main()
{int a[M], pos[M], i=0, j, n;
clrscr();
printf("Enter 10 number :");
for(i=0; i<M; i++)scanf("%d", (4));
j=fun( (5) );
printf("The max: %d\n", j);
printf("Total: %d",n);
printf("The position:");
for(i=0; i<n; i++ ) printf("%4d", pos[i]);
printf("\n");
}
试题分析:
正确代码:
#include<stdio.h>
#include<conio.h>
#define M 10
int fun(int *a, int *n, int pos[])
{int i, k, max=-32767;
k=0;//因为后面有k++,所以要在这里先给k赋初值。
for(i=0; i<M; i++)
if(a[i]>max) max=a[i];//用于求出数列中的最大数。
for(i=0; i<M; i++)
if(a[i]== max) pos[k++]=i;//用于记录最大数的下标
*n=k;
return max;
}
main()
{int a[M], pos[M], i=0, j, n;
clrscr();
printf("Enter 10 number :");
for(i=0; i<M; i++)scanf("%d", a+i);
j=fun(a, &n, pos);
printf("The max: %d\n", j);
printf("Total: %d\n",n);
printf("The position:");
for(i=0; i<n; i++ ) printf("%4d", pos[i]);
printf("\n");
}
此程序算法非常简单,先循环找出最大数,再循环找出最大数的下标。但要注意的是一些细节方面的问题,如在形参中int *a 和int pos[]两种写法都可以用来传递数组名。由于形参有:int *n ,所以对应实参应为指针,所以只能写&n不能用n。
参考答案:
(1) k=0
(2) a[i]>max
(3) a[i] == max
(4) a+i 或 &a[i]
(5) a, &n, pos
第15题:
阅读下列说明,回答问题1至问题3。
【说明】
以下代码由C语言书写,在输入3个整数后,能够输出最大数和最小数。
int main(void)
{
int a, b, c, max, min;
printf("input three numbers: ");
scanf("%d%d%d", &a, &b, &c);
if(a>b) /*判断1*/
{
max=a;
min=b;
}
else
{
max=b;
min=a;
}
if(max<c) /*判断2*/
max=c;
else if(min>c) /*判断3*/
min=c;
printf("max=%d\nmin=%d", max, min);
return 0;
}
请画出该程序段的控制流图,并分析该控制流图中有多少条线性独立路径(V(G)的值)。
为了用分支(判定)覆盖方法测试该程序,需要设计测试用例,使其能对该程序中的每个判断语句的各种分支情况全部进行过测试。
对两组输入数据(1)a=3,b=5,c=7;(2)a=4,b=6,c=5,请分别写出程序中各个判断语句的执行结果(以T表示真,以F表示假),填入答题纸的相应栏中。
上述两组测试数据是否能实现该程序的分支(判定)覆盖?如果能,请说明理由。如果不能,请再增设一组输入数据,使其能实现分支(判定)覆盖。
请帮忙给出每个问题的正确答案和分析,谢谢!
有4条线性独立路径或V(G)=4。
有4条线性独立路径,或V(G)=4。

第16题:
本程序用冒泡法对数组a[]的元素从大到小排序,请在程序空白处填空。 void bubble(int a[],int n) {int i,j,max,temp; max=n-1; do{j=0; for(i=0;i<max;i++) if(a[i]<a[i+1]) {temp=a[i];a[i]=a[i+1];a[i+1]=temp; j=i; } max=j; }while(( )); }
第17题:
下面程序的功能是:从输入的正整数中选3个数进行输出,要求这些数都是2的倍数,请填空。
main()
{ int a,i=0;
scanf("%d",&A);
do
{ if(a>0&&a%2==0)
{printf("%d\n",A);i++;}
if(i!=3)
{ scanf("%d",&A);}
}while(( ));
}
第18题:
在窗体中有一外名为Command2的命令按钮,该命令的功能是:接受从键盘输入的10个大于0的整数,找出其中的最大值和对应的输入位置。请依据上述功能要求将事件代码补充完整。
Private Sub Command2_Click()
max=0
max_n=0
For i=1 To 10
num=Val(InputBox("请输入第"& i &"个大于0的整数:"))
If num>max Then
man=【 】
max_n=i
End If
Next i
MsgBox("最大值为第"& max_n &"个输入的" & max)
End Sub
第19题:
以下程序的功能是:利用指针向三个整型变量,并通过指针运算找出三个数中最大值,输出到屏幕上。请填空
main()
{int x,y,z,max,*px,*py,*pz,*pmax;
scanf("%d%d%d",&x,&y,&z);
px=&x;py=&y;pz=&z;pmax=&max;
if(*pmax<*py)*pmax=*py;
if(*pmax<*pz)*pmax二*pz;
printf("max=%d\n",max);}
第20题:
下面函数的功能是找出一维数组元素中最大的值和它所在的下标,最大值的和它所在的下标通过形参传回。#include <stdlib.h>#include <stdio.h>void fun(int a[ ],int n,int *max,int *d){ int i; *max=a[0]; *d=0; for(i=0;;i++) if(*max<) { *max=a[i];*d=i; }}
第21题:
下面程序的功能是由随机函数产生100个在200~700之间的整数,然后找出最大者,并记下是第几个数,但程序不完整,请选择适当的内容在下划线处将程序补充完整。 Dim a(100) For j=1 To 100 a(j)=Int(Rnd*501+200):Print a(j) Next j : Print p=1 : max= ______ For j=2 To 100 If a(j)>max Then max=a(j) : p=j Next j Print "The largest number is " ; max Print "The position is"; p End
A.0
B.a(1)
C.1.7E+38
D.1.7E-38
第22题:
根据源代码,完成以下问题。 一个计算三个数中最大数的程序 main() {int num1,num2,num3,max; printf("Please input three numbers:"); scanf("%d,%d,%d",&num1,&num2,&num3); if (num1>num2) max=num1; else max=num2; if (num3>MAX) max=num3; printf("MAX is:%d \n",max); } (1) 给出对应的流程图 (2) 计算控制流图复杂度V(G) (3)写出所有的独立路径,并设计测试用例
第23题:
下列程序的功能是将从键盘输入的一对整数由小到大排序输出,当输入的一对整数相等时结束循环。程序中的空白处(横线上方)应该填入()。 #include
第24题:
min=1,max=9
min=0,max=9
min=1,max=4
min=0,max=4