文档库 最新最全的文档下载
当前位置:文档库 › 程序阅读及填空(答案)

程序阅读及填空(答案)

程序阅读及填空(答案)
程序阅读及填空(答案)

一.程序阅读题

1.若运行时输入100↙,写出以下程序的运行结果。main ( )

{ int a ;

scanf(“%d”,&a);

printf(“%s”,(a%2!=0)?”No”:”Yes”);

}

答案: Yes

2.写出以下程序的运行结果。

main ( )

{ int a=2,b=7,c=5;

switch (a>0) {

case 1: switch (b<0) {

case 1: printf(“@”); break ;

case 2: printf(“!”); break ;

}

case 0: switch (c==5) {

case 1: pritnf(“*”) ; break ;

case 2: printf(“#”) ; break ;

default : printf(“#”) ; break ;

}

default : printf(“&”);

}

printf(“\n”);

}

答案: *&

3.写出下面程序运行的结果。

main ( )

{ int i,b,k=0 ;

for (i=1; i<=5 ; i++) {

b=i%2;

while (b--==0) k++ ;

}

printf(“%d,%d”,k,b);

}

答案:2 0

4.写出下面程序运行的结果。

main ( )

{ int k=1,n=263 ;

do { k*= n%10 ; n/=10 ; } while (n) ;

printf(“%d\n”,k);

}

答案:36

5.写出下面程序运行的结果。

{ int a=10,y=0 ;

do {

a+=2 ; y+=a ;

if (y>50) break ;

} while (a=14) ;

printf(“a=%d y=%d \n”,a,y) ;

}

答案:a=16 y=60

数组部分:

1.写出下面程序的运行结果。

main ( ) { int a[6][6],i,j ;

for (i=1; i<6 ; i++)

for (j=1 ; j<6 ; j++)

a[i][j]=(i/j)*(j/i) ;

for (i=1;i<6 ; i++) {

for (j=1 ; j<6 ; j++) printf(“%2d”,a[i][j]) ;

printf(“\n”);

}

}

2.写出下面程序的运行结果。

main ( )

{ int i=0;

char a[ ]=”abm”, b[ ]=”aqid”, c[10];

while (a[i]!=?\0? && b[i]!=?\0?) {

if (a[i]>=b[i]) c[i]=a[i]-32 ;

else c[i]=b[i]-32 ;

i++;

}

c[i]=?\0?;

puts(c);

}

答案:AQM

3.当运行下面程序时,从键盘上输入AabD ↙,则写出下面程序的运行结果。

main ( )

{ char s[80];

int i=0;

gets(s);

while (s[i]!=?\0?) {

if (s[i]<=?z? && s[i]>=?a?)

s[i]=?z?+?a?-s[i] ;

i++;

答案:

puts(s);

}

答案:AzyD

二.程序判断题

1.下面程序将输入的大写字母改写成小写字母输出,其他字符不变;请判断下面程序的正误,如果错误请改正过来。

main ( )

{ char c;

c = getchar ( ) ;

c = (c>=?A? | | c<=?Z?) ? c-32 : c+32 ;

printf(“%c”,c);

}

答案: c = (c>=?A? | | c<=?Z?) ? c-32 : c+32 ; 改为:c = (c>='A'&& c<='Z') ? c+32 : c ;

2.下面程序输入两个运算数x,y和一个运算符号op,然后输出该运算结果的值,例如输入3+5↙得到结果8;请判断下面程序的正误,如果错误请改正过来。

main ( )

{

float x,y,r;

char op ;

scanf(“%f%c%f”,&x,&op,&y);

switch (op) {

case …+? : r=x+y ;

case …-? : r=x-y ;

case …*? : r=x*y ;

case …/? : r=x/y ;

}

printf(“%f”,r);

}

答案: 每个Case 分之后面加Break;

三.程序填空题

1、以下程序输出x,y,z三个数中的最小值,请填(2)空使程序完整。

main ( )

{ int x=4,y=5,z=8 ;

int u,v;

u = x

v = u

printf (“%d”,v);

}

答案: 【1】x:y 【2】u:z

2、下述程序用“碾转相除法”计算两个整数m和n的最大公约数。该方法的基本思想是计算m和n相除的余数,如果余数为0则结束,此时的被除数就是最大公约数。否则,将除数作

填(3)空使程序完整。

main ( )

{ int m,n,w;

scanf(“%d,%d”,&m,&n);

while (n) {

w=【1 】;

m=【2 】;

n=【3 】;

}

printf(“%d”,m);

}

答案:【1】w=m%n; 【2】m=n; 【3】n=w;

3、下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请填(3)空使程序完整。

main ( )

{ int n,k=1,s=0,m ;

for (n=1 ; n<=100 ; n++) {

k=1 ; s=0 ;

【1 】;

while (【2 】) {

k*=m%10;

s+=m%10;

【3 】;

}

if (k>s) printf(“%dd”,n);

}

}

答案:【1】m=n; 【2】m!=0 【3】m=m/10;

4、下面程序按公式(课本169页习题6.5)求和并输出结果,请填(3)空使程序完整。main ( )

{

【1 】;

int k ;

for (k=1 ; k<=100 ; k++)

s+=k ;

for (k=1 ; k<=50 ; k++)

s+=k*k ;

for (k=1 ; k<=10 ; k++)

s+=【2 】;

printf(“sum=【3 】”,s);

}

答案:【1】float s=0; 【2】1/k 【3】%f

数组部分:

一、程序判断:

1.下面程序为数组输入数据并输出结果;判断下面程序的正误,如果错误请改正过来。

main ( )

{ int a[3]={3*0} ;

int i;

for (i=0; i<4; i++) scanf(“%d”,&a[i]);

for (i=0; i<4; i++) printf(“%d”,a[i]);

}

答案: for (i=0; i<3; i++) (只有3个数组元素,下标0~2)

2.下面程序为数组输入数据并输出结果;判断下面程序的正误,如果错误请改正过来。

main ( )

{ int a[3]={1,2,3} , i;

scanf(“%d%d%d”,&a);

for (i=0; i<3; i++) printf(“%d”,a[i]);

}

答案:scanf("%d%d%d",&a[0],&a[1],&a[2]);

3.下面程序的功能是:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。例如,当s中的字符串为:“ABCDE”时则t中的字符串应为:“EDCBAABCDE”;判断下面程序的正误,如果错误请改正过来。

main ( )

{ char s[80],t[200]; int i,sl ;

gets(s); sl = strlen(s);

for (i=0; i

for (i=0; i

t[s1+i]='\0'; 加上语句:t[s1+i]='\0';

puts(t);

}

答案:见右边修改语句

4.下面程序的功能是:将n各无序整数从小到大排序;判断下面程序的正误,如果错误请改正过来。

main ( )

{ int a[100], i, j, p, t, n=20 ;

for (j = 0; j

for (j = 0;j

{ p = j;

for ( i=j+1; i

if (a[p]>a[i]) t=i; t 改为:p

if (p!=j)

{ t = a[j]; a[j] = a[p]; a[p]=t; }

}

for ( j = 0; j

}

答案:见右边修改语句

aaas lkaaas ,子字符串为as ,则应输出2

main ( ) { char substr[80],str[80]; int i,j,k,num=0; gets(substr); gets(str); for (i = 0, str[i], i++) for (j=i,k=0;substr[k]==str[j];k++,j++) if (substr[k+1]!=?\0?) { num++; break; } printf(“num=%d”, num); } 答案: 程序修改如右框所示。 二、程序填空题

1.下面程序可求出矩阵a 的主对角线上的元素之和,请填(2)空使程序完整。

main ( )

{ int a[3][3]={1,3,5,7,9,11,13,15,17} , sum=0, i, j ;

for (i=0 ; i<3 ; i++)

for (j=0 ; j<3 ; j++)

if (【1 】)

sum=sum+【2 】;

printf(“sum=%d”,sum);

}

答案: 【1】i= =j 【2】a[i][j]

2.下面程序将十进制整数base 转换成n 进制,请填(3)空使程序完整。

main ( ) { int i,base,n,j,num[20] ; scanf(“%d”,&n); scanf(“%d”,base) ; do { i++; num[i]=【1 】; n =【2 】; } while (n!=0); for (【3 】) ; printf(“%d”,num[j]) ; }

答案: 此程序有点小错误,红色文字为改正错误,蓝色文字为填空答案.

3.下面程序的功能是输入10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后的10个数,请填(3)空使程序完整。

main ( )

{ int a[10],max,min,i,j,k ;

scanf(“%d”,&a[i]);

max=min=a[0];

for (i=0; i<10; i++) {

if (a[i]

if (a[i]>max) {max=a[i]; 【2 】; }

} /*循环完后,最小的数组元素下标放在变量j中,最大的放在变量k中*/

【3 】; /* 借助中间变量max,将最大最小两数组元素交换*/

for (i=0; i<10; i++)

printf(“%d”,a[i]);

}

答案: 【1】j =i 【2】k=i 【3】max=a[j];a[j]=a[k];a[k]=max;

4.下面程序用“插入法”对数组a进行由小到大的排序,请填(3)空使程序完整。

经典算法提示:

简单插入排序算法的基本思想使将数组处理n-1次,第k次处理是将第k个元素插入到目前的位置。第k次的元素是这样插入的:在第k次处理时,前面的元素a[0],a[1],…,a[k-1]必定已排成了升序,将a[k]与a[k-1],a[k-2],…a[0]逐个比较(由后向前),若有a[j]

main ( )

{ int a[10]={191,3,6,4,11,7,25,13,89,10} ;

int i,j,k ;

for (i=1; i<10; i++) {

k = a[i] ;

j = 【1 】;

while (j>=0 && k>a[j] ) { /*k>a[j] 改为: k

【2 】;

j--;

}

【3 】=k ;

}

for (i=0; i<10; i++) printf(“%d”,a[i]);

}

答案: 【1】i-1 【2】a[j+1]=a[j] 【3】a[j+1]

5.下面程序用“两路合并法”把两个已按升序(由小到大)排列的数组合并成一个新的升序数组,请填(3)空使程序完整。

{ int a[3]={5,9,10} ;

int b[5]={12,24,26,37,48} ;

int c[10],i=0,j=0,k=0 ;

while (i<3 && i<5)

if (【1 】) {

c[k]=b[j] ; k++ ; j++ ;

} else {

c[k]=a[j] ; k++ ; i++ ;

}

{ c[k]=a[j] ; i++ ; k++ ; }

while (【3 】) {

{ c[k]=b[j] ; j++ ; k++ ; }

for (i=0; i

}

6.下面程序的功能是将二维数组a中每个元素向右移一列,最右一列换到最左一列,移后的结果保存到b数组中,并按矩阵形式输出

数组a 数组

main ( )

{ int a[2][3] ={{4,5,6},{1,2,3}}, b[2][3], i,j;

for (i=0; i<2 ; i++)

for (j=0; i<3 ; j++ ) {

printf(“%5d”,a[i][j]);

【1 】;

}

printf(“\n”);

}

for (【2 】) b[i][0]=a[i][2];

for (i=0; i<2 ; i++) {

for (j=0; i<3 ; j++) {

printf(“%5d”,b[i][j]);

【3 】;

}

printf(“\n”);

}

}

答案:此程序有错误, 正确的程序见右框

7.下面程序的功能是在一个字符串中查找一个指定的字符,若字符串中包含该字符则输出该字符在字符串中第一次出现的位置(下标值),否则输出-1,请填(2)空使程序完整。

# include

main ( )

{ char c=?a? ; /* 需要查找的字符*/

char t[50] ;

int i,j,k;

gets(t) ;

i = 【1 】;

for (k=0; k

if (【2 】)

{ j = k ; break ;}

else j=-1;

printf(“%d”,j);

}

答案:【1】strlen(t) 【2】t[k]= =c

8.下面程序用“顺序查找法”查找数组a中是否存在某一关键字,请填(2)空使程序完整。

{ int a[10]={25,57,48,371,123,291,18,22,44};

int i=0,x ;

scanf(“%d”,&x);

【1 】;

while (a[i]!=x && i<10) i++ ;

if (【2 】) printf(“found=%d\n”,i);

else printf(“can\?t found!\n”);

}

答案:【1】不需要填【2】i<10

9.以下程序是求矩阵a,b的乘积,结果存放在矩阵

完整。

main ( )

{ int a[2][3]={2,10,9,4,5,119}, b[2][2]={-1,-2,-3,-4};

int i,j,k,s,c[3][2];

for (i=0; I<3; i++)

for (j=0; j<2; j++) {

【1 】;

for (k=0; k<2; k++) s+=【2 】;

c[i][j]=s;

}

for (i=0; i<3; i++)

for (j=0; j<2; j++) {

printf(“%6d”,c[i][j]);

【3 】;

}

}

答案:此程序有错误,正确的程序见右框

10.以下程序是将字符串b的内容连接字符数组a的内容后面,形成新字符串a,请填(2)空使程序完整。

main ( )

{ char a[40]=”Great ”, b[ ]=”Wall”;

int i=0,j=0 ;

while (a[i]!=?\0?) i++ ;

while (【1 】) {

a[i]=b[j] ; i++ ; j++ ;

}

【2 】;

printf(“%s\n”,a);

}

答案:【1】b[j]!='\0' && i<40 【2】a[i]='\0'

C语言程序的设计填空题及答案复习用

导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。 #include main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); } 【3.2】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include double pi(long n) { double s=0.0; long i; for(i=1;i<=n;i++) s=s+ ①; return( ② ); } 【3.3】下面的程序的功能是求一维数组中的最小元素。findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;pamax) amax=x; if( ② ) amin=x; scanf("%f",&x); } printf("\namax=%f\namin=%f\n",amax,amin); } 【3.7】下面程序的功能是将形参x的值转换为二进制数, 所得的二进制数放在一个一维数组中返回,二进制数的 最低位放在下标为0的元素中。 fun(int x,int b[]) { int k=0,r; do { r=x% ①; b[k++]=r; x/= ②; }while(x); } 【3.8】下面程序的功能是输出1到100之间每位数的乘 积大于每位数的和的数。例如数字26,数位上数字的乘 积12大于数字之和8。 main() { int n,k=1,s=0,m; for(n=1;n<=100;n++) { k=1; s=0; ①; while( ② ) 页脚

程序阅读及填空(答案)

一.程序阅读题 1.若运行时输入100↙,写出以下程序的运行结果。main ( ) { int a ; scanf(“%d”,&a); printf(“%s”,(a%2!=0)?”No”:”Yes”); } 答案: Yes 2.写出以下程序的运行结果。 main ( ) { int a=2,b=7,c=5; switch (a>0) { case 1: switch (b<0) { case 1: printf(“”); break ; case 2: printf(“!”); break ; } case 0: switch (c==5) { case 1: pritnf(“*”) ; break ; case 2: printf(“#”) ; break ; default : printf(“#”) ; break ; } default : p rintf(“&”); } printf(“\n”); } 答案: *& 3.写出下面程序运行的结果。 main ( ) { int i,b,k=0 ; for (i=1; i<=5 ; i++) { b=i%2; while (b--==0) k++ ; } printf(“%d,%d”,k,b); } 答案:2 0 4.写出下面程序运行的结果。 main ( ) { int k=1,n=263 ; do { k*= n%10 ; n/=10 ; } while (n) ; printf(“%d\n”,k); } 答案:36 5.写出下面程序运行的结果。

{ int a=10,y=0 ; do { a+=2 ; y+=a ; if (y>50) break ; } while (a=14) ; printf(“a=%d y=%d\n”,a,y) ; } 答案:a=16 y=60 数组部分: 1.写出下面程序的运行结果。 main ( ) 答案: { int a[6][6],i,j ; for (i=1; i<6 ; i++) for (j=1 ; j<6 ; j++) a[i][j]=(i/j)*(j/i) ; for (i=1;i<6 ; i++) { for (j=1 ; j<6 ; j++) printf(“%2d”,a[i][j]) ; printf(“\n”); } } 2.写出下面程序的运行结果。 main ( ) { int i=0; char a[ ]=”abm”, b[ ]=”aqid”, c[10]; while (a[i]!=’\0’ && b[i]!=’\0’) { if (a[i]>=b[i]) c[i]=a[i]-32 ; else c[i]=b[i]-32 ; i++; } c[i]=’\0’; puts(c); } 答案:AQM 3.当运行下面程序时,从键盘上输入AabD↙,则写出下面程序的运行结果。 main ( ) { char s[80]; int i=0; gets(s); while (s[i]!=’\0’) { if (s[i]<=’z’ && s[i]>=’a’) s[i]=’z’+’a’-s[i] ; i++;

C语言程序设计程序填空题库及答案

程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); }

【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

C语言程序填空题及答案

C语言程序填空题及答 案 集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-

程序填空题 1、 #include void main() { int n,k=0; scanf("%d",&n); while( _____1_____ ) // 1)n 2) n!=0; { k++; _____2_____; n=n/10 } printf("%d\n",k); } 2、 #include #include #define f(x) x*x-5*x+sin(x) void main() { int x; float max; ______1______ // max=f(1); for(x=2;x<=10;x++) ______2______ // if(f(i)>max) max=f(i); printf("%f\n",max);

} 3、 #include void main() { char c; c=getchar(); if(______1______) // c>='a' && c<'v' c=c+5; else if (c>='v' && c<='z') ______2______ //c=c-21; putchar(c); } 4、 #include void Dec2Bin(int m) { int bin[32],j; for(j=0;m!=0;j++) { bin[j]= ______1______; // m%2

模块化程序设计练习题及答案

第四章模块化程序设计练习题及参考答案 一、填空题 1、以下程序的运行结果是(111),把x定义为静态变量运行结果是(123)。void increment(void) { int x=0; x+=1; printf("%d",x);} main() { increment(); increment(); increment(); } 2、若输入的值是-125,以下程序的运行结果是(-125=-5*5*5) #include "" main() { int n; void f(int n); scanf("%d",&n); printf("%d=",n); if(n<0) printf("-"); n=fabs(n); fun(n); } void fun(int n) { int k,r; for(k=2;k<=sqrt(n);k++) { r=n%k; while(r==0) { printf("%d",k); n=n/k; if(n>1)printf("*"); r=n%k; } } if(n!=1) printf("%d\n",n); } 3、设有以下宏定义: #define WIDTH 80 #define LENGTH WIDTH+40 则执行赋值语句:v=LENGTH*20;(v为int型)后,v的值是(880) 4、设有以下宏定义: #define WIDTH 80 #define LENGTH (WIDTH+40)

则执行赋值语句:k=LENGTH*20;(k为int型变量)后,k的值是(2400) 5、下面程序的运行结果是(5) #define DOUBLE(r) r*r main() { int x=1,y=2,t; t=DOUBLE(x+y); printf("%d\n",t);} 6、下面程序的运行结果是(36) #define MUL(z) (z)*(z) main() { printf("%d\n",MUL(1+2)+3); } 7、下面程序的运行结果是(212) #define POWER(x) ((x)*(x)) main() { int i=1; while(i<=4) printf("%d,",POWER(i++)); } 8、下面程序的运行结果是(9) #define MAX(a,b) (a>ba:b)+1 main() { int i=6,j=8,k; printf("%d\n",MAX(i,j)); } 二、选择题 1、以下正确的说法是(D)建立自定义函数的目的之一是: A)提高程序的执行效率 B)提高程序的可读性 C)减少程序的篇幅 D)减少程序文件所占内存 2、以下正确的说法是(B) A)用户若需调用标准库函数,调用前必须重新定义 B)用户可以重新定义标准库函数,若如此,该函数将失原有含义。 C)系统根本不允许用户重新定义标准库函数。 D)用户若需调用标准函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调用。 3、以下正确的函数定义形式是(C) A)double fun(int x,int y) B)double fun(int x;int y) C)double fun(int x,int y); D)double fun(int x,y) 4、以下正确的说法是(D)。在C语言中: A)实参与其对应的形参各占用独立的存储单元。 B)实参和与其对应的形参共占用一个存储单元。 C)只用当实参和与其对应的形参同名时才共占用存储单元。

c语言程序填空题完整

三、程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。 #include main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ① ; b= ② ; a= ③ ; printf("a=%d,b=%d\n",a,b); }

【3.2】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include double pi(long n) { double s=0.0; long i; for(i=1;i<=n;i++) s=s+ ① ; return( ② ); } 【3.3】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

-程序填空部分试题及答案

第1.题*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:下面的程序是求1!+3!+5!+……+n!的和。 -------------------------------------------------------*/ #include main() { long int f,s; int i,j,n; /***********SPACE***********/ 【?】; scanf("%d",&n); /***********SPACE***********/ for(i=1;i<=n; 【?】) { f=1; /***********SPACE***********/ for(j=1; 【?】;j++) /***********SPACE***********/ 【?】; s=s+f; } printf("n=%d,s=%ld\n",n,s); } 第2题./*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:以下程序是用选择法对10个整数按升序排序。 -------------------------------------------------------*/ #include /***********SPACE***********/ 【?】 main()

程序填空题

1.下列程序由键盘输入一个文件名,然后把从键盘输入的字符依次存放到磁盘文件中,直到输入一个"#"为止。 #include "stdio.h" main( ) { FILE *fp; char ch,filename[10]; scanf("%s",filename); /*用户输入存在磁盘上的文件名*/ if((fp= ⑦(filename,"w"))==NULL) { printf("cannot open file\n"); exit(0); } while((ch=getchar())!='#') ⑧; fclose(fp); } 2.下列程序的功能是输出一个整数x的绝对值。将程序补充完整,填在空内。 #include main() { int x, ①; scanf("%d",&x); y= ②; printf("%d\n",y); } 3.下列程序的功能是输出1~100之间能被7整除的所有整数。将程序补充完整,填在空内。 main() { int i; for(i=1; ③;i++) { if(i%7) ④; printf("%d ",i); } } 4.以下程序用以删除字符串中所有的空格,请填空。 main() { char s[100]={"Our teacher teach C language!"}; int i,j; for(i=j=0;s[i]!= '\0';i++) if(s[i]!= ' ') { ⑤;j++;} s[j]= ⑥; printf("%s\n",s); } 5.结构体数组中存有三个人的姓名和年龄,以下函数fun的功能是输出三人中最年长者的姓名和年龄。 struct man

C++程序设计练习题与答案

C++程序设计练习题 一、填空题 1.对象的三大基本特性分别为多态性、( )、封装性。 2.赋值运算符应重载为( )函数。 3.用( )声明的基类称为虚基类。 4.用( )声明的函数称为虚函数。 5.派生类对基类继承控制访问有三种。派生类可以定义其基类中不具备的( )。 6.静态成员是对象的成员,( )函数不是类的成员。 7.在函数体之前加( )关键字可以防止覆盖函数改变数据成员的值。 8.一个const对象只能访问( )成员函数。 9.使用友元函数是为了提高程序效率,且节约了( )开销。 10.类名为“ClassName”的类,其拷贝构造函数的原型说明是( )。 11.由关键字private、public和protected限定成员的访问权限分别是( )、( )和( )。缺省关键字时成员的访问权限为( )。 12.如果想要公共基类在派生类中只有一个拷贝,就要将公共的基类说明为( );如果虚基类没有默认构造函数,就必须在每一个派生类的构造函数中都要调用虚基类的( )函数。 13.静态成员函数是使用关键字( )说明的成员函数。 14.一个函数的原型声明为“void FunName(int=0, double=0, char='x');”,则调用FunName函数的方法共有( )种。 15.编译时多态性是通过( )实现的;运行时多态性是通过( )实现的。 16.C++通过( )实现编译时多态性,通过( )实现运行时多态性。 17.在C++中,声明类的关键字是( )。 18.声明C++模板的关键字是( )。 19.调用函数原型声明为“void FunName(short, int=0, float=1.0);”的方法有( )种。 20.处理C++异常的方法:采用( )结构。 21.用关键字( )、( )和( )限定的成员,其访问权限分别为:公有的、私有的和保护的。缺省关键字时,成员的访问权限为( )。 22.在C++中,处理( )的方法是采用try-catch结构。 23.在C++中,用关键字( )说明内置函数。 24.在C++中,声明友元函数的关键字是( )。 25.将公共基类说明为( )时,多重派生过程中公共基类在派生类中就只有一个拷贝了。 26.在C++中,如果函数调用在前、定义在后,就必须先对函数进行( )。 27.在成员函数头之后、函数体之前加( )修饰的成员函数称为类的常成员函数。 28.包含纯虚函数的类称为抽象类,这种类只能用作( )来派生新类。由于抽象类的特殊性,我们可以说明抽象类的( ),但不能说明抽象类的( )。 29.说明函数类型为“double”、函数名为“virfun”且无参数的纯虚函数的表达形式为( )。 30.说明静态成员要使用关键字( )。 31.当函数调用在前定义在后时,必须先对函数进行( )说明。

循环程序设计习题及答案

模块三循环程序设计习题及答案 一、填空题 1、当在数据处理中要重复执行相同的操作时,宜采用程序结构来实现。 2、循环的3要素是、、。 3、在循环语句体中包含另一个循环语句的用法称为。 4、执行循环语句体中的break语句后将使用包含它的循环语句。 5、要结束当前正在执行循环体语句而直接进入下一循环周期,需要执行语句。 6、在for语句中表达式允许省略,但不能少,语句for( ; ;) ;构成的是循环。 7、在for语句中,省略表达式2时,则循环为循环。 8、执行语句for(i=1;i++<4; );后变量i的值是。 9、要使用循环程序提前结束本次循环周期并开始下一个循环周期,应在循环体内有条件使用语句。 10、在每次循环周期均要执行一次的语句,称为。 11、for语句括号内的3个表达式的作用分别是、和循环控制变量的更新。 二、选择题 1、若k为整形变量,则while循环共循环()。 k=5; while(k>=0) k-1; A、无限循环 B、6次 C、5次 D、4次 2、与while( ! n) ; 中表达式!dn等价的是()。 A、dn>=0 B 、dn!=0 C、dn == 0 D、dn != 1 3、以下程序段,while循环执行的次数是() int k=0;

while( k == 1) k++; A、无限次 B、有语法错,不能执行 C、一次也不执行 D、执行1次 4、在C语言中,当do while语句中的条件为()时,结束该循环。 A、0 B、1 C、TRUE D、非0 5、下面程序段的输出结果是() do { b-=a; a++; }while(b--<0); A、10,-1 B、2,8 C、9,0 D、4,-3 6、以下描述正确的是() A、由于do while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 B、do while循环由do开始,用while结束,在while(表达式)后面不能写分号 C、在do while循环体中,一定要有能使while后面匠值变为零的操作 D、do while循环中,根据情况可以省略while 7、若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)。 s=c; for(b=1;b<=c;b++) s=s+1; 则与上述程序段功能等价的赋值语句是() A、s=a+b; B、s=a+c; C、s=s+c; D、s=b+c; 8、假定a,b,c,d均已定义为整型变量,且a、c均已赋值,a大于0,c大于0,则与程序段for(d=a,b=1;b<=c;b++) d--;功能等价的语句是() A、d=a+b; B、d=a+c; C、d=a-b; D、d=a-c 9、下列关于for循环的说法正确的是() A、for循环只能用于循环次数已经确定的情况

程序填空

#include #include /***********SPACE***********/ double f(【?】) { /***********SPACE*********** 答案: =======(答案1)======= float x =======(答案2)======= double y =======(答案3)======= x<=2 =======(答案4)======= return y 题目:已定义一个含有30个元素的数组s,函数fun1的功能是按顺序分别赋予各元素从2开始的偶数,函数fun2则按顺序 每五个元素求一个平均值, 并将该值存放在数组w中。 程序中有4个空,填空使程序完整。 答案: =======(答案1)======= s[i]=k; =======(答案2)======= if( ( i + 1 )%5 == 0 ) =======(答案3)======= sum=0; =======(答案4)======= fun2(s,w); 五、程序改错共1题(共计6分) 第1题(6.0分) /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 题目:函数fun的功能是:输出Fabonacci数列的前20项,要求变量类型定义成浮点型,输出时只输出整数部分,输出项

数不得多于或少于20。 请改正程序中的4个错误,使它能得出正确的结果。 -------------------------------------------------------- 答案: =======(答案1)======= printf("%8.0f",f1); =======(答案2)======= for(i=1;i<20;i++) =======(答案3)======= f1=f2; =======(答案4)======= f2=f3; 题目:要求输出结果为: A,B 65,66 答案: =======(答案1)======= b; =======(答案2)======= 'a' =========或========= 97 =======(答案3)======= 32 题目:以下程序的功能是对任一整数N(N≠0),它都可以分解成1 (或-1)和一些质数(素数)因子的形式。如N=150时,可分解成1×2×3×5×5;N=-150时,可分解为-1×2×3×5×5。 下边程序能实现这种分解过程。当N=150,输出以下分解结 果:N= 1* 2* 3* 5* 5 答案 n>0 i=2 r=n%i n=n/i 题目:输入一个学生的生日(年:y0、月:m0、日:d0),并输入当前日期(年:y1、月:m1、日:d1)。求出该学生的 年龄(实足年龄) 答案: =======(答案1)=======

c语言程序填空(含答案)

【程序填空】 功能:写一个函数,求一个字符串的长度,在main函数中输入字 符串,并输出其长度。 len=length(str ...); I.nt length ........(p) N.++..; P.++..; 【程序改错】 功能:将一个字符串中的大写字母转换成小写字母。 bool (char) ......fun(char *c) fun= c;(return *c) .......... puts(*p);(putchar(*p)) ............. 【程序设计】 功能:编写函数实现两个数据的交换,在主函数中输入任 意三个数据,调用函数对这三个数据从大到小排序。 ------------------------------------------------*/ #include void wwjt(); void swap(int *a,int *b) { /**********Program**********/ /********** End **********/ } main() { int x,y,z; scanf("%d%d%d",&x,&y,&z); if(xn2 .....)

湖南省计算机二级3[1].(6分)程序阅读填空

程序填空题一 1. 下面C语言程序将两个递增有序的数值a和b 合并一个数组c,并保持递增次序,最后输出数组c. #include < stodio.h> #define M6 #define N5 main( ) {int a[M]={1,3,5,7,9,11} b[N]={2,4,6,8,10} int c[M+N] int i ,j, k; i=j=k=0 while( 1 ) if a[i]

printf(%dxt,c[k]; ) 其中(1)(2)(3)(4)处分别填一数据,使程序达到其功能。 答案: 1:i

解:(1)(*f)(x+y)/(*g)(y-x) (2)cos,sin,a,b [解析]本题考察的是函数的声明。要填写的两个空都出现在return语句中,所以要仔细分析函数的返回值。本题的第二个空相对要容易一些,只要根据题干和乘号前面的调用语句对比一下即可得到调用语句的四个参数。第一个空相对要难一些,函数fgh定义时用到了函数指针(*f)和(*g)是为了增加函数的灵活性。根据函数h的定义以及题干要求,可以看出函数fgh应该表示的是乘号两边的某一项。(*f)和(*g)用来表示sin或cos,参数x 和y的加减法运算作为sin或cos函数的参数,故应填写(*f)(x+y)/ (*g)(y-x)。

C语言-程序填空练习题

程序填空:阅读程序。在划线处填写适当的表达式或语句,使程序完整并符合题目要求 1.输入一个字符,判断该字符是数字、字母、空格还是其他字符。 main( ) { char ch; ch=getchar(); if( ch>=?a?&&ch<=?z?|| ch>=?A?&&ch<=?Z?) printf("It is an English character\n"); else if( ch>=?0?&&ch<=?9?) printf("It is a digit character\n"); else if( ch== …?) printf("It is a space character\n"); else printf("It is other character\n"); } 2.下列程序的功能是从输入的整数中,统计大于零的整数个数和小于零的整数个数。用输入0来结束输入,用i,j来放统计数,请填空完成程序。 void main() { int n,i=0,j=0; printf(“input a integer,0 for end\n”); scanf(“%d”,&n); while (n或n!=0 ) { if(n>0) i=i+1 ; else j=j+1; } printf(“i=%4d,j=%4d\n”,i,j); } 3.编程计算1+3+5+……+101的值 #include void main() { int i, sum = 0; for (i = 1;i<=101 ; i++ ) sum = sum + i; printf("sum=%d\n", sum);

C语言程序填空题及答案

程序填空题 1、 #include void main() { int n,k=0; scanf("%d",&n); while( _____1_____ ) // 1)n 2) n!=0; { k++; _____2_____; n=n/10 } printf("%d\n",k); } 2、 #include #include #define f(x) x*x-5*x+sin(x) void main() { int x; float max; ______1______ // max=f(1); for(x=2;x<=10;x++) ______2______ // if(f(i)>max) max=f(i); printf("%f\n",max); } 3、 #include void main() { char c; c=getchar(); if(______1______) // c>='a' && c<'v' c=c+5; else if (c>='v' && c<='z') ______2______ //c=c-21; putchar(c); } 4、

#include void Dec2Bin(int m) { int bin[32],j; for(j=0;m!=0;j++) { bin[j]= ______1______; // m%2 m=m/2; } for(;j!=0;j--) printf("%d", ______2______ ); // bin[j-1] } void main() { int n; scanf("%d",&n); Dec2Bin(n); } 5、 #include #include void main() { int n,s=0; scanf("%d",&n); ______ 1 ______ //n=(n>0?n:-n) ; 2)n=fabs(n); while(n!=0) { ______ 2 ______ // s=s+n%10; n=n/10; } printf("%d\n",s); } 6、 /#include void swap(______1______) //int *pa , int *pb { /*交换两个数的位置*/ int temp; temp = *pa; *pa = *pb;

c语言程序填空题及答案

c语言程序填空题及答案 程序填空题 1、 #include void main() { int n,k=0; scanf("%d",&n); while( _____1_____ ) // 1)n 2) n!=0; { k++; _____2_____; n=n/10 }

printf("%d\n",k); } 2、 #include #include #define f(x) x*x-5*x+sin(x) void main() { int x; float max; ______1______ // max=f(1); for(x=2;x<=10;x++) ______2______ // if(f(i)>max) max=f(i); printf("%f\n",max); } 3、 #include

void main() { char c; c=getchar(); if(______1______) // c>='a' && c<'v' c=c+5; else if (c>='v' && c<='z') ______2______ //c=c-21; putchar(c); } 4、

#include void Dec2Bin(int m) { int bin[32],j; for(j=0;m!=0;j++) { bin[j]= ______1______; // m%2 m=m/2; } for(;j!=0;j--) printf("%d", ______2______ ); // bin[j-1] } void main() { int n; scanf("%d",&n); Dec2Bin(n); } 5、

程序填空

'【程序填空】 '------------------------------------------------------- '功能:下面的程序段用于实现以下功能:利用冒泡法将一组整数' 从小到大排序。 '------------------------------------------------------- Private Sub Form_Click() Const n = 15 Dim a(1 To n) As Integer, work As Boolean Dim i As Integer, j As Integer, x As Integer Randomize For i = 1 To n a(i) = Int((90 * Rnd) + 10) Next i For i = 1 To n Print a(i); Next i Print '**********SPACE********** For i = n To 2 【?】step-1 work = True For j = 1 To i - 1 If a(j) > a(j + 1) Then x = a(j): a(j) = a(j + 1): a(j + 1) = x '**********SPACE********** 【?】work=False End If Next j '**********SPACE********** If work Then 【?】Exit For Next i For i = 1 To n Print a(i); Next i End Sub 答案 1). Step -1 2). work = False 或work=0 或not work = true 3). Exit For '功能:以下程序用于判断一个正整数(≥3)是否为素数。 '-------------------------------------------------------

C语言程序设计选择填空习题及答案

习题一 一、选择题 1.C程序的基本单位是(A)。 A.函数B.文件C.语句D.字符 2.C程序中的变量(B)。 A.不用说明B.先说明后引用 C.先引用后说明D.引用和说明顺序无关 3.变量的说明在(B)。 A.执行语句之后B.执行语句之前 C.执行语句当中D.位置无关 4.C语言是一种(C)。 A.机器语言B.符号语言 C.高级语言D.面向对象的语言 二、填空题 1.一个C程序总是从主函数开始执行。 2.结构化程序由顺序、选择、循环三种基本结构构成。 3.一个C程序只有一个名为main的主函数。 4.C程序中的每个语句以分号结束。 5.C程序中,函数由函数首部和函数体组成。 6.每个基本结构有一个入口和一个出口,没有死循环和死语句。7.算法是计算机解决问题所依据的步骤。 习题二 一、选择题 1.下列数据中属于字符串常量的是( B)。 A.ABC B."ABC" C.'abc' D.'A' 2.在计算机内存中,'\n'占用的字节数是( C)。 A.4 B.3 C.1 D.2 3.字符串"ABC"在内存中占用的字节数是( D)。 A.6 B.8 C.3 D.4 4.在C语言中,合法的长整型常数是( B)。 A.568701400 B.0L C.0.03546287 D.2.654e11 5.char型常量在内存中存放的是( A)。 A.ASCII代码值B.BCD代码值 C.十进制代码值D.内码值 6.下列各项中正确的标识符是( D)。 A.?bb B.a=8 C. b.βD.b_4 7.下列不正确的转义字符是( D)。 A.\\ B.\ 0 C.\" D.0x4

8.设整型变量a、b的值均为5,则表达式(m=n=a++)/(n=b-2)的值为( B)。 A.0 B.1 C.2 D.3 9.设a的值为5,执行下列语句后,b的值不为2的是( C)。 A.b=a/2 B.b=6-(--a) C.b=a%2 D.b=(float)a/2 10.执行语句x=(a=3,b=a--)后,x、a、b的值依次是( C)。 A.3,3,2 B.3,2,2 C.3,2,3 D.2,3,2 11.设有语句int a=3;,则执行了语句a+=a-=a*a;后,变量a的值是( D)。 A.3 B.0 C.9 D.-12 12.在下列运算符中,优先级最高的是( B)。 A.&& B.% C.= D.>= 13.设整型变量a的值为3,则计算表达式a---a后,表达式的值为(B)。 A.1 B.0 C.2 D.表达式出错 14.设整型变量a、b、c的值均为2,表达式a---b+++c++的结果是( C)。 A.6 B.9 C.2 D.表达式出错 15.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是( D)。 A.1 B.2.5 C.2 D.2.0 16.下列表达式中符合C语言语法的赋值表达式是( C)。 A.a=4+b++c=a+8 B.a=4+b++=a+8 C.a=(4+b,b++,a+8) D.a=4+b,c=a+8 17.若有以下定义:char a;int b;float c;double d;,则表达式a*b+d-c的值的类型为( D)。 A.int B.float C.char D.double 二、填空题 1.在内存中存储"A"要占 2 个字节,存储'A'要占 1 个字节。 2.符号常量的定义方法是 #define 常量名常量。 3.无符号基本整型的数据类型符为 unsigned int双精度实型数据类型符为 double ,字符型数据类型符为 char 。 4.十进制数673的二进制、八进制和十六进值数分别为 1010100001 、 2412 和 2A1 。 5.在C语言中,书写八进制数时必须加前缀 0 ;书写十六进制数时必须加前缀 0x 。6.在微机上,int型、short型、long型、float型和double型数据一般在内存中分别占 2 字节、 2 字节、 4 字节、 4 字节和 8 字节。 7.设有下列运算符:<<、+、++、&&、>=,其中优先级最高的是 ++ ,优先级最低的是 && 。8.设x、y为int型变量,且x=1,y=2,则表达式1.0+x/y的值为 1.0 。 9.设整型变量x、y、z均为5,则: ①执行x-=y-z后,x的值为 5 。 ②执行x%=y+z后,x的值为 5 。 10.数学式 a b×c 的C语言表达式为 a/b*c) 。 三、简答题 1.字符常量与字符串常量有什么区别? 2.对于Turbo C系统来说,char型变量与int型变量在内存中存储数据的区别是什么?3.整型变量可细分为哪六类? 4.什么是一个实型数据的规范化指数形式?

相关文档