sokaoti.com
技能培训专题:系统测试题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” 相关考题
考题 下列程序的功能是输入一个整数,判断是否是素数,若为素数,则输出1,否则输出0,请填空。main(){ int i, x, y=1; scanf("%d", &x); for(i=2; i<=x/2; i++) if{ y=0; break;} printf("%d\n", y);}正确答案:x%i == 0。在本题中,题目给出了程序段的功能是输入一个整数,判断是否是素数,若为素数,则输出1,否则输出0。这里我们首先要知道什么样的数是素数。素数即质数,是指在一个大于1的自然数中,除了1和自身外,不能被其他自然数整除的数。换句话说,只有两个正因数(1和自己)的自然数即为素数,那么它与除1和本身外的任何整数进行取余运算,其结果都不为0。在程序中,首先定义三个整型变量,将y的值赋为1,然后从键盘输入的一个数初始化变量x,根据题目要求,这个输入的数即为被处理的整数。然后通过一个循环来判断这个被处理的整数是否为素数,本题需要填空的地方正是循环体中一个条件判断语句的条件,如果条件为真,则将变量y赋值为0,然后跳出循环。从后面的输出语句和题目要求我们不难推断出:如果变量y=0,说明被处理的数不是素数,根据上面对素数特性的分析,此时x%i应该等于0。因此,本题的答案是x%i == 0。

考题 假定输入28,那么程序运行的结果是【】。 include void main() {int n,i,k=0;cout假定输入28,那么程序运行的结果是【 】。include<iostream.h>void main() {int n, i,k=0;cout<<“请输入整数”;cin>>n; for(i=1;i<n;i++)if(n%i= =0) k=k+i;if(n= =k)cout<<n<<“是完数\n”;else cout<<n<<“不是完数\n”;}正确答案:请输入整数: 2828是完数请输入整数: 2828是完数

考题 阅读以下代码,回答问题:1 至问题 3 ,将解答填入答题纸的对应栏内。【代码 1】#includevoid swap(int x, int y){int tmp =x; x= y; y= tmp;}int maim(){int a= 3, b= 7;printf("al= %d b1=%d\n",a,b); Swap( a, b);Printf("a2 = %d b2=%d\n”,a,b); return 0;} 【代码 2】#include#define SPACE ¨ //空格字符 Int main(){char str[128] =”Nothing is impossible! “; int i,num =0,wordMark=0; for(i=0;str[i];i++)If(str[i]=SPACE)WordMark=0;elseIf(wordMark=0){ wordMark=1;Mun++;} Printf(“%d/n”,num) retun 0; } 【代码 3】#include#define SPACE “//空格字符 int countStrs(char *); int main(){char str[128] = " Nothing is impossible! "; Printf(‘%d/n,(1)(str))retum 0;} int countStrs(char *p){int num=0, wordMark= 0; for(;(2);p++) {If((3)=SPACE)wordMark= 0;elseif( !wordMark ) { wordMark = 1;++mun}}retum (4) ;}【问题 1】(4 分)写出代码 1 运行后的输出结果。【问题 2】(3 分)写出代码 2 运行后的输出结果。【问题 3】(8 分)代码 3 的功能与代码 2 完全相同,请补充 3 中的空缺,将解答写入答题纸的对应栏内。答案:解析:a1=3 b1=7 a2=7 b2=3

考题 填空题下列程序的功能是将从键盘输入的一对整数由小到大排序输出,当输入的一对整数相等时结束循环。程序中的空白处(横线上方)应该填入()。  #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解析:暂无解析

考题 请编写一个函数void fun(int m, int k, int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入所指的数组中。例如,若输入17,5,则应输出19,23,29,3l,37。注意:部分源程序给出如下。请勿改动主函数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=O;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==O) break;if(j>=i) /*如果是素数放入数组xx中*/xx[n++]=i;}}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==O) break;if(j>=i) /*如果是素数,放入数组xx中*/xx[n++]=i;}} 解析:本题只要掌握了判断素数的算法即不难完成了,其实程序缺少部分也正是这部分。

考题 下列程序的输出结果是()。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。

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

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

考题 下面程序输出的结果是( )。 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解析:函数的参数是引用,故能实现引用调用。

考题 以下程序的功能是:将输入的正整数按逆序输出。例如:若输入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。