技能培训专题:系统测试题2

以下程序的功能是:将输入的正整数按逆序输出。例如:若输入 135 则输出 531 。请填空。

#include <stdio.h>

main()

{ int n,s;

printf("Enter a number : "); scanf("%d",&n);

printf("Output: ");

do

{ s=n%10; printf("%d",s); 【 10 】 ; }

while(n!=0);

printf("\n");

}


正确答案:
答案 n/=10 或 n=n/10
解析:每次循环把 n 除以 10 所得的商赋给 n.


对输入一个整数进行判断,若是偶数,输出even,否则输出odd,在子函数fun2功能是判定整数是否为偶数,若是偶数,返回1,否则返回0int fun2(int x){if(x%2==0);return 0;}main(){int n;scanf("%d",&n);ifprintf("even\n");else printf(odd\n");}


正确答案:return 1 fun2(n)
依据题目的条件,如果整数是偶数,就返回1,返回值语句为return 1.通过返回值,我们能够知道整数是偶数还是奇数,从而进行相应的输出。


下列程序的输出结果是()。 include VOid p(int *x) {printf("%d",++*x); } void main()

下列程序的输出结果是( )。

#include<stdio.h>

VOid p(int *x)

{ printf("%d",++*x);

}

void main()

{ int y=3;

p(&y);

}

A.3

B.4

C.2

D.5


正确答案:B
解析:本题考查函数调用时的参数传递。在函数调用时,形参是指向实参的指针变量,则printf的执行结果为3+1=4。


下面程序的运行结果为 include void swap(int &a, int b) { int temp; temp=a

下面程序的运行结果为

#include<iostream.h>

void swap(int &a, int b)

{

int temp;

temp=a++;

a=b;

b=temp;

}

void main( )

int a=2,b=3;

swap(a, b) ;

cout < < a < <"," < < b < < endl;

}

A.2,3

B.3,2

C.2,2

D.3,3


正确答案:D
解析:本题考查的是引用调用,因为函数swap引用调用参数a,所以在swap函数中a的变化会改变主函数中a的值,即a自加1,但b的值并未改变。


下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0,请填空。

main()

{int i, x, y=1;

scanf("%d", &x);

for(i=2; i<=x/2; i++)

if【14】{ y=0; break;}

printf("%d\n", y);

}


正确答案:
(x%i==0)


系统测试题21.功能:输入整数a和b,交换a和b后输出。#include void main() int a,b,temp; printf(输入整数a,b:); scanf(%d%d,&a,&b); temp=a;/*SPACE*/ 【?】;/*SPACE*/ 【?】; printf(a=%d b=%dn,a,b); 2.题目:求出 -10 到 30 之内能被 7 或 11 整除,但不能同时被 7 或 11 整除的所有整数。 例如:输出-7,7,11,14,21,22,28,。#include #include main() int i;/*SPACE*/ 【?】(i=-10;i=30; i+) /*SPACE*/ if(i%7=0 | i%11=0) 【?】 i%77!=0) /*SPACE*/ printf(【?】,i); 3.请补充main函数,该函数的功能是求方程ax*x+bx+c=0的两个实数根。方程的系数a、b、c从键盘输入,如果判别式(disc=b*b-4ac)小于0,则要求重新输入a、b、c的值。例如:当a=1,b=2,c=1时,方程的两个根分别是x1=-1.00, x2=-1.00。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#include #include #include void main() float a,b,c, disc,x1,x2; system(CLS); do printf(Input a,b,c:); scanf(%f,%f,%f,&a,&b,&c); disc=b*b-4*a*c; if(disc0) printf(disc=%fn Input again!n,disc); /*SPACE*/ while(【?】); printf(*the result*n);/*SPACE*/ x1=【?】;/*SPACE*/ x2=【?】; printf(nx1=%6.2fnx2=%6.2fn,x1,x2);4.题目:从键盘键盘输入3个整数,然后找出最大的数并输出。 例如:输入12,45,43, 输出 三个数是:12,45,43.最大数是:45.。#include #include main()/*SPACE*/ 【?】 a, b, c, max; printf(请输入三个整数:n); scanf(%d,%d,%d,&a, &b, &c); printf(三个数是:%d,%d,%d., a, b, c);/*SPACE*/ if (a b) 【?】; else max=b; /*SPACE*/ if (【?】) max=c; printf(最大数是:%d., max);5.给定程序中,程序的功能是:输出100以内能被3整除且个位数为6的所有正整数。请填空。#include stdio.hvoid main() int i,j;/*SPACE*/ for(i=0;【?】; i+) j=i*10+6;/*SPACE*/ if(【?】) continue; printf(%d ,j); 6.功能:下面程序的功能是用do-while语句求1至1000之间满足用3除余2;且用5除余3的数,且一行只打印五个数。#include main() int i=1,j=0; do/*SPACE*/ if(【?】) printf(%4d,i); j=j+1;/*SPACE*/ if(【?】) printf(n); i=i+1; while(i1000);7.题目:下列程序的功能为:输出100以内能被4整除且个位数为8的所有整数; 请填写适当的符号或语句,使程序实现其功能。#include main() int i,j;/*SPACE*/ for(i=0;【?】; i+) j=i*10+8;/*SPACE*/ if ( 【?】) /*SPACE*/ 【?】; printf(%d,j); 8.题目:计算100-1000之间有多少个数,其各位数字之和是5#includevoid main() int i,s,k,count=0; for(i=100;i1000;i+) s=0; k=i;/*SPACE*/ while(【?】) s=s+k%10;/*SPACE*/ k=【?】; if(s!=5)/*SPACE*/

下列给定程序中,函数fun()的功能是:实现两个整数的交换。例如给a和b分别输入60和65,输出为:a=65 b=60

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序;

include<stdio.h>

include <conio.h>

/*************found**************/

void fun(int a,b)

{ int t;

/*************found**************/

t=b;b=a;a=t;

}

main()

{ int a,b;

clrscr();

printf("Enter a, b: "); scanf("%d%d",

&a,&b);

fun(&a, &b);

printf("a=%d b=%d\n ", a,b);

}


正确答案:(1)错误:void fun(int ab) 正确:void fun(int *aint *b) (2) 错误:t=b;b=a;a=t; 正确;t=*b;*b=*a;*a=t;
(1)错误:void fun(int a,b) 正确:void fun(int *a,int *b) (2) 错误:t=b;b=a;a=t; 正确;t=*b;*b=*a;*a=t; 解析:本题考查指针变量做函数参数。采用一般变量做参数,不能改变实参的值,采用指针变量作为参数则能够改变实参的值。主函数中fun()的调用方式说明fun()函数的参数应当为指针类型。另外,值得一提的是“交换法则”,这题的错误比较明显,如果程序段中有隐蔽的交换错误,一般不容易发现,希望学习者引起注意。


下列程序的输出结果是()。includevoid p(int *x){printf("%d",++*x);}void main(){int

下列程序的输出结果是( )。 #include<stdio.h> void p(int *x) { printf("%d",++*x); } void main() { int y=3; p(&y); }

A.3

B.4

C.2

D.5


正确答案:B
解析:本题考查函数调用时的参数传递。在函数调用时,形参是指向实参的指针变量,则printf的执行结果为3+1=4。


以下程序的输出结果是( )。 include void fun(int x) {if(x/2>0)fun(x/2); printf("%d",

以下程序的输出结果是( )。

include<stdio.h>

void fun(int x)

{ if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(3);printf("\n");

}


正确答案:13
13 解析:函数fun是一个递归函数。执行fun(3);,x=3,x/2=1>0,又调用f(1),此时,x=1,x/2=0,不满足继续递归调用的条件,输出1,返回到fun(3)中,输出3。所以本题的输出结果为13。


请编写一个函数void fun(int m, int k, int xx[]),该函数的功能是将大于整数m且紧靠m的k个非素数存入所指的数组中。

例如,若输入15,5,则应输出16,18,20,21,22。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

include<conio.h>

include<stdio.h>

void fun(int m,int k,int xx[])

{

}

main()

{

int m,n,zz[1000];

clrscr();

printf("\nPlease enter two integers:");

scanf("%d%d",&m,&n);

fun(m,n,zz);

for(m=0;m<n;m++)

printf("%d",zz[m]);

printf("\n");

}


正确答案:void fun(int m int k int xx[]) { int ijn; for(i=m+1n=0;nk;i++) /*找大于m的非素数循环k次即找出紧靠m的k个非素数*/ for(j=2;ji;j++) /*判断一个数是否为素数*/ if(i%j==0) { xx[n++]=i; /*如果不是素数放入数组xx中*/ break; /*并跳出本层循环判断下一个数*/ } }
void fun(int m, int k, int xx[]) { int i,j,n; for(i=m+1,n=0;nk;i++) /*找大于m的非素数,循环k次,即找出紧靠m的k个非素数*/ for(j=2;ji;j++) /*判断一个数是否为素数*/ if(i%j==0) { xx[n++]=i; /*如果不是素数,放入数组xx中*/ break; /*并跳出本层循环,判断下一个数*/ } } 解析:本题只要掌握了判断非素数和素数的算法即不难完成了,其实程序缺少部分也正是这部分。


请补充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);

}


正确答案:&num[i] maxnum[i]? num[i]!=0
&num[i] maxnum[i]? num[i]!=0 解析:第一空:注意掌握标准输入函数scanf()的调用格式,输入参数列表中变量前面要使用求址运算符&。第二空:注意掌握条件表达式的用法,当输入的数比最大值大时,则认为此输入的数为最大值,否则最大值不变。第三空:题目要求输入的整数以0结束,所以,当输入的数不为0时,继续do—while循环,否则终止循环。

更多 “技能培训专题:系统测试题2” 相关考题
考题 下列程序的输出结果是()。include void p(int *x){printf("%d",++*x);}void main(){ in下列程序的输出结果是( )。 #include <stdio.h> void p(int *x) { printf("%d",++*x); } void main() { int y=3; p(&y); }A.3B.4C.2D.5正确答案:B解析:本题考查函数调用时的参数传递。在函数调用时,形参是指向实参的指针变量,则printf的执行结果为3+1=4。

考题 以下程序运行后输入:3,abcde<回车>,则输出结果是【 】include move(char *str,以下程序运行后输入:3,abcde<回车>,则输出结果是【 】include <string.h>move(char *str, int n){ char temp; int i;temp=str[n-1];for(i=n-1;i>0;i--) str[i]=str[i-1];str[0]=temp;}main( ){ char s[50]; int n, i, z;scanf("%d,%s",&n,s);z=strlen(s);for(i=1; i<=n; i++) move(s, z);printf("%s\n",s);}正确答案:cdeabcdeab 解析:本题主要考查函数move()的功能。经过分析可知,每次调用该函数时,都是把最后一个字符移到串的最前端,而原先的第一个字符至倒数第二个字符顺次后移。

考题 下面程序输出的结果是( )。 include using namespace std; void swap(int下面程序输出的结果是( )。 #include <iostream> using namespace std; void swap(int &a,int &b){ int temp; temp=a; a=b; b=temp; } void main(){ int x=2; int y=3; swap(x,y); cout<<x<<y; }A.23B.32C.abD.ba正确答案:B解析:函数的参数是引用,故能实现引用调用。

考题 问答题以下函数的功能是按照从大到小的顺序输出两个整数。请分别在程序的空白处(横线上方)填入一条语句或者一个表达式。   void FUN1(int a,int b)   { int temp;   if(   ①   ){     temp=a;       ②      }    printf(“%d,%d”,a,b);   }正确答案:①a<b②a=b;b=temp;解析:暂无解析

考题 以下程序的功能是:将输入的正整数按逆序输出。例如:若输入135则输出531。请填空。include <stdio.h>main(){ int n, s;printf("Enter a number:"); scanf("%d",&n);printf("Output: ");do{ s=n%10; printf("%d",s); [ ]; }while (n!=0);printf("\n');}正确答案:n/=10或n=n/10或n=(n-s)/10或n=(n-n%10)/10n/=10或n=n/10或n=(n-s)/10或n=(n-n%10)/10 解析:根据s=n%10可知:此操作可以将输入的数据n的最后—位赋给s,根据题目的要求是要将输入的数据逆序输出,现在已经将原数据的个位输出,在其后如果执行n/=10司将原数据的个位数去掉,满足do....while的条件继续s=n%10操作,此时可求出十位上的数进行输出,继续执行n/=10操作,与上相同最后将百位上的数进行输出,所以该题答案为: n/=10。

考题 有以下程序include main(){int x; scanf("%d",&x); if(x有以下程序 #include <stdio.h> main() { int x; scanf("%d",&x); if(x<=3); else if(x!=1O) printf("%d\n",x); } 程序运行时,输入的值在______范围才会有输出结果。A.不等于10的整数B.大于3且不等10的整数C.大于3或等于10的整数D.小于3的整数正确答案:B解析:本题考查的是if-else语句的执行过程当条件表达式x=3时,由于if语句末尾直接是分号,没有语句,因此没有语句执行;否则,即当条件表达式x>3时转向else语句,如果x!=10执行printf语句,因此输入的x的范围应该是大于3且不等于10的整数。

考题 下列程序的功能是将从键盘输入的一对整数由小到大排序输出,当输入的一对整数相等时结束循环。程序中的空白处(横线上方)应该填入()。  #include   main( )   {      int a,b,temp;  scanf(“%d%d”,&a,&b); while(       ){         if(a>b){             temp=a;            a=b;            b=temp;  }  printf(“%d,%d/n”,a,b);  scanf(“%d%d”,&a,&b);  }  }正确答案:a!=b

考题 填空题下列程序的功能是将从键盘输入的一对整数由小到大排序输出,当输入的一对整数相等时结束循环。程序中的空白处(横线上方)应该填入()。  #include   main( )   {      int a,b,temp;  scanf(“%d%d”,&a,&b); while(       ){         if(a>b){             temp=a;            a=b;            b=temp;  }  printf(“%d,%d/n”,a,b);  scanf(“%d%d”,&a,&b);  }  }正确答案:a!=b解析:暂无解析

考题 下面程序输出的结果为()。includevoid fun(int a,int b){int temp;temp=a;a=b;b=tem下面程序输出的结果为( )。 #include<iostream.h> void fun(int a,int b) { int temp; temp=a; a=b; b=temp; } void main() { int m,n; m=1; n=2; fun(m,n); cout<<m<<""<<n<<end1; }A.12B.21C.22D.程序有错误正确答案:A解析:函数fun中定义的参数a和b为形式参数,它们并不是实际存在的数据,只有在发生函数调用时才被分配内存空间,结束后,形参所占有的内存单元也被释放。并且函数fun没有返回值,它做的交换操作,并不能影响实际参数m和n。所以输出值保持不变,仍然是1和2,即输出:12。

考题 填空题下列程序的功能是将从键盘输入的一对整数由小到大排序输出,当输入的一对整数相等时结束循环。程序中的空白处(横线上方)应该填入()。  #include   main( )   {      int a,b,temp;  scanf(“%d%d”,&a,&b); while(       ){         if(a>b){             temp=a;            a=b;            b=temp;  }  printf(“%d,%d/n”,a,b);  scanf(“%d%d”,&a,&b);  }  }正确答案:a!=b解析:暂无解析