第1题:
一个C++程序由函数A( ),B( ),C( )和函数P( )构成,在函数A( )中分别调用了函数B( )和函数C ( ),在函数B( )中调用了函数A( ),且在函数P( )中也调用了函数A( ),则可以说
A.函数B( )中调用的函数A( )是函数A( )的间接递归调用
B.函数A( )被函数B( )调用是直接递归调用
C.函数P( )直接递归调用了函数A( )
D.函数P( )中调用的函数A( )是函数P( )的嵌套
第2题:
函数f和g的定义如下图所示。执行函数f时需要调用函数g(a),若采用值调用方式(call by value)调用g(a),则函数f的返回值为(7);若采用引用(call by reference)方式调用g(a),则函数f的返回值为(8)。
A.6
B.13
C.25
D.28
第3题:
第4题:
若有定义inta=8,b=5;要实现输出形式为:8*5=40,正确的printf()函数调用语句是()。
A.printf(“a*b=a*b\n”);
B.printf(“a*b=%d\n”,a*B.;
C.printf(“%d*%d=a*b\n”,a,B.;
D.printf(“%d*%d=%d\n”,a,b,a*B.;
第5题:
请编一个函数fun(oh lr*str),该函数的功能是把字符串中的内容逆置。 例如,字符串中原有的字符串为asdf9,则调用该函数后,串中的内容为9fdsa。 请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。 试题程序: include<string.h> include<conio.h> include<stdio.h> define N 100 void fun(char * str) { } void main { char a[N]; FILE*out: printf("Enter a string:"); gets(a); printf("The origir al string is:"); puts(a); fun(a): printf("The string after modified:"); puts(a); strcpy(a,"Welcome!"); fun(a); ut=fopen("outfile.dat","w"); fprintf(out,"%s".a); fclose(out); }
char ch;
int i,m,n;
i=0:
m=n=strlen(str)-1; //求字符串str长度
while(i<(n+1)/2) //循环逆置交换
{
ch=str[i];
str[i]=str[m];
str[m]=ch:
i++;
m--;
}
【解析】在fun函数中,首先求行字符串的长度,然后通过循环进行字符交换。要注意的是,如果字符串长度是奇数,则最中间的元素在逆置前后的位置是没有改变的。
第6题:
对下列程序段的描述正确的是( )。 #include<iostream.h> int Fun(int,int) void main() { cout<<Fun(5,50)<<endl; } int Fun(int x,int y) { return X*X+y*y; }
A.该函数定义正确,但函数调用方式错误
B.该函数调用方式正确,但函数定义错误
C.该函数定义和调用方式都正确
D.该函数定义和调用方式都错误
第7题:
●函数t、f的定义如下所示,其中,a是整型全局变量。设调用函数t前a的值为5,则在函数t中以传值调用(call by value)方式调用函数f时,输出为(49);在函数t中以引用调用( call by reference)方式调用函数f时,输出为(50)。
(49)
A. 12
B. 16
C. 20
D. 24
(50)
A. 12
B. 16
C. 20
D. 24
第8题:
下列给定程序中,函数fun()的功能是:将字符串p中所有字符复制到字符串b中,要求每复制3个字符之后插入一个空格。例如,在调用fun()函数之前给字符串a输入ABCDEFGHIJK,调用函数之后,字符串b中的内容则为ABC DEF GHI JK。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
include <stdio. h>
void fun (char *p, char *b)
{ int i, k=0;
while (*p)
/*************found***************/
{ i=l;
/*************found***************/
while (i<3|| *P)
{
b[k]=*p;
k++; p++; i++;
}
if (*p)
/*************found***************/
{ b[k]= ' ';}
}
b[k]= '\0';
}
main ( )
{ char a[80],b[80];
printf ("Enter a string: "); gets (a);
printf ("The original string: ");
puts (a);
fun (a,b);
printf("\nThe string after insert
space: "); puts(b); printf("\n\n ");
}
第9题:
请补充函数fun(char *s),该函数的功能是把字符串中的内容逆置。
例如:字符串中原有的字符串为abcde,则调用该函数后,串中的内容变为edcba。
注意;部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
$include<string.h>
include<conio.h>
include<stdio.h>
define N 81
void fun(char*s)
{
int i=0,t,n=strlen(s);
for(;【 】;i++)
{
t=*(s+i);
【 】;
【 】;
}
}
main()
{
char a[N];
clrscr();
printf("Enter a string:");
gets(a);
printf("The original string is:");
puts(a);
fun(a);
printf("\n");
printf("The string after modified:");
puts(a);
}
第10题:
关于函数的返回值,正确的是( )。
A.由return语句返回时,只带回一值,其类型在函数定义时确定
B.其类型由调用表达式决定
C.函数可以没有返回值,这时在函数定义中,函数的类型说明就没必要了
D.函数调用就要有返回值,否则调用就没有意义了