17、给出程序的运行结果 #include int main() { int a,b,c,d; char op1,op2,op3; int sum; printf("please input:a b c d\n"); scanf("%d%c%d%c%d%c%d",&a,&op1,&b,&op2,&c,&op3,&d); sum=a b c d; printf("sum=%d",sum); return 0; } 程序运行时从键盘输入: 1<回车>2 3 1<回车> a、7 b、1 c、3 d、6
20、写出下面程序的输出结果#include int main() { int x=6,y,z; x*=18 1; printf("%d,",x--); x =y=z=11; printf("%d",x); return 0; } a、114,124 b、113,124 c、109,116 d、110,116
21、给出程序的运行结果#include int main() { int a,b,c,d; char op1,op2,op3; int sum; printf("please input:a b c d\n"); scanf("%d%c%d%c%d%c%d",&a,&op1,&b,&op2,&c,&op3,&d); sum=a b c d; printf("sum=%d",sum); return 0; } 程序运行时从键盘输入: 1<回车>2 3 1<回车> a、7 b、1 c、3 d、6
22、以下程序的执行结果是#include int main() { int a = 5, b = 4, x, y; x = 2 * a ; y = --b * 2; printf("a=%d, x=%d\n", a, x); printf("b=%d, y=%d\n", b, y); return 0; } a、a=6, x=10 b=3, y=6 b、a=6, x=10 b=3, y=8 c、a=6, x=12 b=3, y=6 d、以上均不对
1、程序代码如下:#include int main() { int a,b; printf("please input a and b:\n"); scanf("%d%d",&a,&b); printf("the output data is %d\n",a 7<回车> 则程序输出为 a、the output data is 7 b、the output data is 2 c、the output data is 1 d、the output data is 0
2、以下程序运行后的输出结果是 #include int main() { int a,b,c; a=10; b=20; c=(a%b<1)||(a/b>1); printf("%d,%d,%d",a%b,a/b,c); return 0; } a、10,0,0 b、10,1,0 c、10,0,1 d、10,1,1
3、从键盘输入三角形的三边长为a,b,c,按下面公式计算并输出三角形的面积。 程序代码如下,但程序运行后输出结果不正确,请找出有问题的语句。 #include #include int main() { float a, b, c; float s, area; printf("input a,b,c:"); scanf("%f,%f,%f",&a,&b,&c); if (a b>c && b c>a && a c>b) { s = 1/2 * (a b c); area = sqrt(s * (s - a) * (s - b) * (s - c)); printf("area=%.2f\n", area); } else { printf("it is not a triangle\n"); } return 0; } a、第11行: s = 1/2 * (a b c); b、第9行: if (a b>c && b c>a && a c>b) c、第12行: area = sqrt(s * (s - a) * (s - b) * (s - c)); d、第8行: scanf("%f,%f,%f",&a,&b,&c);
6、下列复合语句中,不能实现两数交换的是 a、{ a=b; b=a; } b、{ b = a * b; a = b / a; b = b / a; } c、{ t=a; a=b; b=t; } d、{ a = a b; b = a – b; a = a – b; }
7、写出下面程序的输出结果 #include int main() { int x=1, y=0, a=0, b=0; switch(x) { case 1: switch(y) { case 0: a ; case 1: b ; } case 2: a ; b ; } printf("a=%d, b=%d\n", a, b) ; return 0; } a、a=2, b=2 b、a=2, b=1 c、a=1, b=1 d、a=1, b=0
8、以下程序运行后的输出结果是 #include int main() { int a=5,b=4,c=3,d; d=(a>b>c); printf("%d\n",d); return 0; } a、0 b、1 c、5 d、4 e、3
9、执行以下程序后的输出结果为 #include int main() { int a=1,b=0; switch (a) { case 1: switch (b) { case 0: printf("**0**");break; case 1: printf("**1**");break; } case 2: printf("**2**");break; } return 0; } a、**0****2** b、**0** c、**0****1****2** d、有语法错误
10、下面程序运行后的输出结果是 #include int main() { int a=3,b=4,c=5,d=2; if(a>b) { if(b>c) { printf("%d",d 1); } else { printf("%d", d 1); } } printf("%d\n",d); return 0; } a、2 b、3 c、43 d、44
11、下面程序代码的功能是判断输入整数的正负性和奇偶性,请将第19行和22行标号处缺少的代码填写完整。 #include int main() { int m; printf("input m: "); scanf("%d", &m); //输入一个整数 if (m > 0) //是否为正数 { if (m % 2 == 0) //是正数,且能被2整除,则是正偶数 { printf("%d is a positive even\n", m); } else //不能被2整除,则是正奇数 { printf("%d is a positive odd\n", m); } } _______________ //判断是否为负数 { _______________ { printf("%d is a negative even\n", m); //是负偶数 } else { printf("%d is a negative odd\n", m); //是负奇数 } } else { printf("%d is zero.it is an even\n", m); } return 0; } a、第19行代码: else if(m < 0) 第22行代码: if (m % 2 == 0) b、第19行代码: if(m < 0) 第22行代码: if (m % 2 == 0) c、第19行代码: else if(m < 0) 第22行代码: if (m % 2 != 0) d、第19行代码: if(m < 0) 第22行代码: if (m % 2 != 0)
12、程序功能:从键盘输入一个字符,判别它是否为大写字母。如果是,将它转换成小写字母,如果不是,不转换。在屏幕上输出最后得到的字符。程序代码如下,为实现上述功能,请将第8行标号处缺少的语句填写完整。 #include int main() { char c; printf("please input a character:"); scanf("%c",&c); if(c >='a'&&c <= 'z') c =_______________; printf("%c\n",c); return 0; } a、c 32 b、c 48 c、c 65 d、c 97
13、执行下列程序,k输入为1时的输出结果是 #include int main() { int k; scanf("%d",&k); switch(k) { case 1: printf("%d",k ); case 2: printf("%d",k ); case 3: printf("%d",k ); break; default: printf("full!"); } return 0; } a、123 b、1 c、2 d、3
14、编程计算下面的分段函数,根据从键盘输入的x值,在屏幕上输出y值。 程序代码如下,为完成以上功能,请将第13行标号处缺少的代码填写完整。 #include #include int main() { int x; double y; printf("input x: "); scanf("%d", &x); // 输入一个整数 if (x > 0) { y = exp(-x); //如果大于0,计算y=exp(-x)的值 } _____________ { y = 1; //x=0,则y=1 } else { y = -exp(x); //x<0,则y=-exp(x) } printf("y=%f\n", y); return 0; } a、else if (x == 0) b、else if (x = 0) c、if (x == 0) d、if (x = 0)
15、以下程序运行后的输出结果是 #include int main() { int a=1,b=2,m=0,n=0,k; k=(n=b>a)||(m=a a、1,0 b、0,0 c、0,1 d、1,1
16、以下程序的功能是计算一元二次方程的根。代码如下,请将第10行标号处缺少的语句填写完整。 #include #include #include #define eps 1e-6 int main() { float a, b, c, disc, p, q; printf("please enter the coefficients a,b,c:"); scanf("%f,%f,%f", &a, &b, &c); _________________________________ /* a=0时,输出"不是二次方程" */ { printf("it is not a quadratic equation!\n"); exit(0); /* c标准库函数,用于终止整个程序的执行,强制返回操作系统 */ } disc = b * b - 4 * a * c; /* 计算判别式 */ p = - b / (2 * a); q = sqrt(fabs(disc)) / (2 * a); if (fabs(disc) <= eps) /* 判别式等于0时,输出两相等实根 */ { printf("x1 = x2 = %.2f\n", p); } else { if (disc > eps) /* 判别式大于0时,输出两不等实根 */ { printf("x1 = %.2f, x2 = %.2f\n", p q, p-q); } else /* 判别式小于0时,输出两共轭复根 */ { printf("x1 = %.2f %.2fi, ", p, q); printf("x2 = %.2f-%.2fi\n", p, q); } } return 0; } a、if (fabs(a) <= eps) b、if (a <= eps) c、if (a=0) d、if (a<= eps || a>=-eps)
6、下列复合语句中,不能实现两数交换的是 a、{ a=b; b=a; } b、{ b = a * b; a = b / a; b = b / a; } c、{ t=a; a=b; b=t; } d、{ a = a b; b = a – b; a = a – b; }
7、写出下面程序的输出结果#include int main() { int x=1, y=0, a=0, b=0; switch(x) { case 1: switch(y) { case 0: a ; case 1: b ; } case 2: a ; b ; } printf("a=%d, b=%d\n", a, b) ; return 0; } a、a=2, b=2 b、a=2, b=1 c、a=1, b=1 d、a=1, b=0
8、执行下列程序,k输入为1时的输出结果是#include int main() { int k; scanf("%d",&k); switch(k) { case 1: printf("%d",k ); case 2: printf("%d",k ); case 3: printf("%d",k ); break; default: printf("full!"); } return 0; } a、123 b、1 c、2 d、3
9、编程计算下面的分段函数,根据从键盘输入的x值,在屏幕上输出y值。 程序代码如下,为完成以上功能,请将第13行标号处缺少的代码填写完整。#include #include int main() { int x; double y; printf("input x: "); scanf("%d", &x); // 输入一个整数 if (x > 0) { y = exp(-x); //如果大于0,计算y=exp(-x)的值 } _____________ { y = 1; //x=0,则y=1 } else { y = -exp(x); //x<0,则y=-exp(x) } printf("y=%f\n", y); return 0; } a、else if (x == 0) b、else if (x = 0) c、if (x == 0) d、if (x = 0)
10、以下程序的功能是计算一元二次方程的根。代码如下,请将第10行标号处缺少的语句填写完整。 #include #include #include #define eps 1e-6 int main() { float a, b, c, disc, p, q; printf("please enter the coefficients a,b,c:"); scanf("%f,%f,%f", &a, &b, &c); _________________________________ /* a=0时,输出"不是二次方程" */ { printf("it is not a quadratic equation!\n"); exit(0); /* c标准库函数,用于终止整个程序的执行,强制返回操作系统 */ } disc = b * b - 4 * a * c; /* 计算判别式 */ p = - b / (2 * a); q = sqrt(fabs(disc)) / (2 * a); if (fabs(disc) <= eps) /* 判别式等于0时,输出两相等实根 */ { printf("x1 = x2 = %.2f\n", p); } else { if (disc > eps) /* 判别式大于0时,输出两不等实根 */ { printf("x1 = %.2f, x2 = %.2f\n", p q, p-q); } else /* 判别式小于0时,输出两共轭复根 */ { printf("x1 = %.2f %.2fi, ", p, q); printf("x2 = %.2f-%.2fi\n", p, q); } } return 0; } a、if (fabs(a) <= eps) b、if (a <= eps) c、if (a=0) d、if (a<= eps || a>=-eps)
11、从键盘输入三角形的三边长为a,b,c,按下面公式计算并输出三角形的面积。 程序代码如下,但程序运行后输出结果不正确,请找出有问题的语句。#include #include int main() { float a, b, c; float s, area; printf("input a,b,c:"); scanf("%f,%f,%f",&a,&b,&c); if (a b>c && b c>a && a c>b) { s = 1/2 * (a b c); area = sqrt(s * (s - a) * (s - b) * (s - c)); printf("area=%.2f\n", area); } else { printf("it is not a triangle\n"); } return 0; } a、第11行: s = 1/2 * (a b c); b、第9行: if (a b>c && b c>a && a c>b) c、第12行: area = sqrt(s * (s - a) * (s - b) * (s - c)); d、第8行: scanf("%f,%f,%f",&a,&b,&c);
13、程序功能:从键盘输入一个字符,判别它是否为大写字母。如果是,将它转换成小写字母,如果不是,不转换。在屏幕上输出最后得到的字符。程序代码如下,为实现上述功能,请将第8行标号处缺少的语句填写完整。#include int main() { char c; printf("please input a character:"); scanf("%c",&c); if(c >='a'&&c <= 'z') c =_______________; printf("%c\n",c); return 0; } a、c 32 b、c 48 c、c 65 d、c 97
14、程序代码如下:#include int main() { int a,b; printf("please input a and b:\n"); scanf("%d%d",&a,&b); printf("the output data is %d\n",a 7<回车> 则程序输出为 a、the output data is 7 b、the output data is 2 c、the output data is 1 d、the output data is 0
15、以下程序运行后的输出结果是#include int main() { int a=5,b=4,c=3,d; d=(a>b>c); printf("%d\n",d); return 0; } a、0 b、1 c、5 d、4 e、3
16、下面程序运行后的输出结果是#include int main() { int a=3,b=4,c=5,d=2; if(a>b) { if(b>c) { printf("%d",d 1); } else { printf("%d", d 1); } } printf("%d\n",d); return 0; } a、2 b、3 c、43 d、44
12、有以下程序,若从键盘给n输入的值是-3,则程序的输出结果是 #include int main() { int s=0,a=1,n; scanf("%d",&n); do { s =1; a=a-2; } while(a!=n); printf("%d\n",s); return 0; } a、2 b、-1 c、3 d、0
13、以下程序运行后的输出结果是 #include int main() { int i=0,s=0; for (;;) { if(i==3||i==5) continue; if (i==6) break; i ; s =i; } printf("%d\n",s); return 0; } a、程序进入死循环 b、10 c、13 d、21
15、程序执行后的输出结果是 #include int main( ) { int i,s=0; for(i=1;i<10;i =2) { s =i 1; } printf("%d\n",s); return 0; } a、自然数1~10中的偶数之和 b、自然数1~9的累加和 c、自然数1~10的累加和 d、自然数1~9中的奇数之和
16、以下程序的输出结果是 #include int main() { int a, b; for(a=1, b=1; a<=100; a ) { if(b>=10) break; if (b%3==1) { b =3; continue; } } printf("%d\n",a); return 0; } a、4 b、101 c、6 d、5
17、三色球问题。若一个口袋中放有12个球,其中有3个红色的,3个白色的,6个黑色的,从中任取8个球,问共有多少种不同的颜色搭配? 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include int main() { int i, j, k; for (i=0; i<=3; i ) { for (j=0; j<=3; j ) { for (________________) { if (__________________) { printf("i=%d, j=%d, k=%d\n", i, j, k); } } } } return 0; } a、第9行: k=0; k<=6; k 第11行: i j k == 8 b、第9行: k=0; k<=6; k 第11行: i j k = 8 c、第9行: k=0; k<=6; k 第11行: i j k <= 8 d、第9行: k=0; k<6; k 第11行: i j k == 8
18、我国古代的《张丘建算经》中有这样一道著名的百鸡问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”其意为:公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元买100只鸡,问公鸡、母鸡和小鸡各能买多少只? 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include int main() { int x, y, z; for (x=0; x<=20; x ) { for (y=0; _________; y ) { _______________; if (_______________) { printf("x=%d, y=%d, z=%d\n", x, y, z); } } } return 0; } a、第7行: y<=33 第9行: z = 100 – x - y 第10行: 5*x 3*y z/3.0 == 100 b、第7行: y<=33 第9行: z y x = 100 第10行: 5*x 3*y z/3.0 = 100 c、第7行: y<=33 第9行: z = 100 – x - y 第10行: 5x 3y z/3.0 == 100 d、第7行: y<33 第9行: z = 100 – x - y 第10行: 5*x 3*y z/3.0 <= 100
19、以下不是死循环的程序段是 a、int s=36; while (s) { --s; } b、int i=100; while(1) { i=i0 1; if (i>100) break; } c、for( ; ;); d、unsigned int k=0; do{ k; } while (k>=0);
21、以下程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是 #include int main( ) { char k; int i; for(i=1;i<3;i ) { scanf("%c",&k); switch(k) { case '0': printf("another\n"); case '1': printf("number\n"); } } return 0; } a、another number number b、number number c、another number d、another number another
23、利用泰勒级数: 计算e的近似值,当最后一项的绝对值小于时认为达到了精度要求,要求统计总共累加了多少项。 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include #include int main() { int n = 1, count = 1; ________________; double term = 1.0; while (fabs(term) >= 1e-5) //判末项大小 { ______________; //求出累加项 e = e term; //累加 n ; // 计算下一项 _______________; //统计累加项数 } printf("e = %f, count = %d\n", e, count); return 0; } a、第6行代码: double e = 1.0 第10行代码: term = term / n 第13行代码: count b、第6行代码: double e = 0 第10行代码: term = term / n 第13行代码: count c、第6行代码: double e = 1.0 第10行代码: term = term *n 第13行代码: count d、第6行代码: double e = 0 第10行代码: term = term *n 第13行代码: count
24、打印所有的“水仙花数”。所谓“水仙花数”,是指一个三位数,其各位数字的立方和等于该数本身。例如,153是“水仙花数”,因为 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include int main() { int i, j, k, n; printf("result is:"); for (n=100; ________; n ) { i = n / 100; //分离出百位 j = ____________; //分离出十位 k = ____________; //分离出个位 if (_________________________) { printf("%d\t ",n); //输出结果 } } printf("\n"); return 0; } a、第6行: n<1000 第9行: (n - i * 100) / 10 第10行:n % 10 第11行:i*100 j*10 k == i*i*i j*j*j k*k*k b、第6行: n<1000 第9行: (n - i * 100) / 10 第10行:n % 10 第11行:i*100 j*10 k = i*i*i j*j*j k*k*k c、第6行: n<=1000 第9行: n % 100 第10行:n % 10 第11行:i*100 j*10 k == i*i*i j*j*j k*k*k d、第6行: n<1000 第9行: (n - i * 100) / 10 第10行:n /10 第11行:i*100 j*10 k == i*i*i j*j*j k*k*k
练兵区——单选题——不计入总分
1、程序运行后的输出结果是#include int main() { int i; for(i=0;i<3;i ) switch(i) { case 0: printf("%d",i); case 2: printf("%d",i); default: printf("%d",i); } return 0; } a、000122 b、022111 c、021021 d、012
2、若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是 a、for( i=1; i<=5; i ) { p=1; p*=i; } b、for(i=1,p=1;i<=5;i ) p*=i; c、i=1; p=1; while ( i<=5 ) { p*=i; i ; } d、i=1; p=1; do { p*=i; i ; } while ( i<=5 );
8、利用泰勒级数: 计算e的近似值,当最后一项的绝对值小于时认为达到了精度要求,要求统计总共累加了多少项。 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include #include int main() { int n = 1, count = 1; ________________; double term = 1.0; while (fabs(term) >= 1e-5) //判末项大小 { ______________; //求出累加项 e = e term; //累加 n ; // 计算下一项 _______________; //统计累加项数 } printf("e = %f, count = %d\n", e, count); return 0; } a、第6行代码: double e = 1.0 第10行代码: term = term / n 第13行代码: count b、第6行代码: double e = 0 第10行代码: term = term / n 第13行代码: count c、第6行代码: double e = 1.0 第10行代码: term = term *n 第13行代码: count d、第6行代码: double e = 0 第10行代码: term = term *n 第13行代码: count
9、打印所有的“水仙花数”。所谓“水仙花数”,是指一个三位数,其各位数字的立方和等于该数本身。例如,153是“水仙花数”,因为 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include int main() { int i, j, k, n; printf("result is:"); for (n=100; ________; n ) { i = n / 100; //分离出百位 j = ____________; //分离出十位 k = ____________; //分离出个位 if (_________________________) { printf("%d\t ",n); //输出结果 } } printf("\n"); return 0; } a、第6行: n<1000 第9行: (n - i * 100) / 10 第10行:n % 10 第11行:i*100 j*10 k == i*i*i j*j*j k*k*k b、第6行: n<1000 第9行: (n - i * 100) / 10 第10行:n % 10 第11行:i*100 j*10 k = i*i*i j*j*j k*k*k c、第6行: n<=1000 第9行: n % 100 第10行:n % 10 第11行:i*100 j*10 k == i*i*i j*j*j k*k*k d、第6行: n<1000 第9行: (n - i * 100) / 10 第10行:n /10 第11行:i*100 j*10 k == i*i*i j*j*j k*k*k
10、以下程序执行后的输出结果是#include int main( ) { int i,n=0; for(i=2;i<5;i ) { do { if(i%3) continue; n ; }while(!i); n ; } printf("n=%d\n",n); return 0; } a、n=4 b、n=5 c、n=2 d、n=3
11、以下程序运行后的输出结果是#include int main() { int i=0,s=0; for (;;) { if(i==3||i==5) continue; if (i==6) break; i ; s =i; } printf("%d\n",s); return 0; } a、程序进入死循环 b、10 c、13 d、21
12、程序执行后的输出结果是 #include int main( ) { int i,s=0; for(i=1;i<10;i =2) { s =i 1; } printf("%d\n",s); return 0; } a、自然数1~10中的偶数之和 b、自然数1~9的累加和 c、自然数1~10的累加和 d、自然数1~9中的奇数之和
13、以下程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是#include int main( ) { char k; int i; for(i=1;i<3;i ) { scanf("%c",&k); switch(k) { case '0': printf("another\n"); case '1': printf("number\n"); } } return 0; } a、another number number b、number number c、another number d、another number another
21、有以下程序,若从键盘给n输入的值是-3,则程序的输出结果是#include int main() { int s=0,a=1,n; scanf("%d",&n); do { s =1; a=a-2; } while(a!=n); printf("%d\n",s); return 0; } a、2 b、-1 c、3 d、0
22、三色球问题。若一个口袋中放有12个球,其中有3个红色的,3个白色的,6个黑色的,从中任取8个球,问共有多少种不同的颜色搭配? 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include int main() { int i, j, k; for (i=0; i<=3; i ) { for (j=0; j<=3; j ) { for (________________) { if (__________________) { printf("i=%d, j=%d, k=%d\n", i, j, k); } } } } return 0; } a、第9行: k=0; k<=6; k 第11行: i j k == 8 b、第9行: k=0; k<=6; k 第11行: i j k = 8 c、第9行: k=0; k<=6; k 第11行: i j k <= 8 d、第9行: k=0; k<6; k 第11行: i j k == 8
23、我国古代的《张丘建算经》中有这样一道著名的百鸡问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”其意为:公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元买100只鸡,问公鸡、母鸡和小鸡各能买多少只? 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include int main() { int x, y, z; for (x=0; x<=20; x ) { for (y=0; _________; y ) { _______________; if (_______________) { printf("x=%d, y=%d, z=%d\n", x, y, z); } } } return 0; a、第7行: y<=33 第9行: z = 100 – x - y 第10行: 5*x 3*y z/3.0 == 100 b、第7行: y<=33 第9行: z y x = 100 第10行: 5*x 3*y z/3.0 = 100 c、第7行: y<=33 第9行: z = 100 – x - y 第10行: 5x 3y z/3.0 == 100 d、第7行: y<33 第9行: z = 100 – x - y 第10行: 5*x 3*y z/3.0 <= 100
4、设计一个函数,用来判断一个整数是否为素数。 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include #include int isprimenumber(int number); int main() { int n, ret; printf("input n:"); scanf("%d", &n); ret = isprimenumber(n); if (___________) { printf("%d is a prime number\n", n); } else { printf("%d is not a prime number\n", n); } return 0; } //函数功能:判断number是否是素数,函数返回非0值,表示是素数,否则不是素数 int isprimenumber(int number) { int i; if (number <= 1) return 0; // 负数、0和1都不是素数 for (i=2; ________________; i ) { if (_______________) // 被整除,不是素数 return 0; } return 1; } a、第11行: ret != 0 第29行: i<=sqrt(number) 第31行: number % i == 0 b、第11行: ret == 0 第29行: i<=number 第31行: number % i == 0 c、第11行: ret == 0 第29行: i<=sqrt(number) 第31行: number / i == 0 d、第11行: ret != 0 第29行: i<=number 第31行: number / i == 0
5、以下程序执行后的输出结果是 void fun(int v , int w) { int t; t=v; v=w; w=t; } int main( ) { int x=1,y=3,z=2; if(x>y) fun(x,y); else if(y>z) fun(y,z); else fun(x,z); printf("%d,%d,%d\n",x,y,z); return 0; } a、1,3,2 b、1,2,3 c、3,1,2 d、2,3,1
8、设计一个函数mincommonmultiple(),计算两个正整数的最小公倍数。 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include int mincommonmultiple(int a, int b); int main() { int a, b, x; printf("input a,b:"); scanf("%d,%d", &a, &b); x = _________________; if (__________) printf("mincommonmultiple = %d\n", x); else printf("input error!\n"); return 0; } //函数功能:计算两个正整数的最小公倍数,-1表示没有最小公倍数 int mincommonmultiple(int a, int b) { int i; if (_________________) return -1; // 保证输入的参数为正整数 for (i=1; i a、第8行: mincommonmultiple(a, b) 第10行: x != -1 第22行: a<=0 || b<=0 第26行: (i * a) % b == 0 b、第8行: mincommonmultiple 第10行: x == -1 第22行: a<=0 && b<=0 第26行: (i * a) % b == 0 c、第8行: mincommonmultiple(b, a) 第10行: x != -1 第22行: a<=0 || b<=0 第26行: (i * a) / b == 0 d、第8行: mincommonmultiple(int a, int b) 第10行: x = -1 第22行: a<=0 || b<=0 第26行: (i * a) % b == 0
9、设计一个函数maxcommonfactor(),利用欧几里德算法(也称辗转相除法)计算两个正整数的最大公约数。 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include int maxcommonfactor(int a, int b); int main() { int a, b, x; printf("input a,b:"); scanf("%d,%d", &a, &b); x =_______________ ; if (x != -1) { printf("maxcommonfactor = %d\n", x); } else { printf("input error!\n"); } return 0; } //函数功能: 计算两个正整数的最大公约数,-1表示没有最大公约数 int maxcommonfactor(int a, int b) { int r; if (a<=0 || b<=0) return -1; // 保证输入的参数为正整数 do{ ____________; a = b; _____________; }while (__________); return a; } a、第8行: maxcommonfactor(a, b) 第29行: r = a % b 第31行: b = r 第32行: r != 0 b、第8行: maxcommonfactor(a, b, x) 第29行: r = a % b 第31行: a = r 第32行: r == 0 c、第8行: maxcommonfactor(a, x) 第29行: r = b % a 第31行: b = r 第32行: r = 0 d、第8行: maxcommonfactor(x, b) 第29行: r = a / b 第31行: a = r 第32行: r != 0
11、编程计算下面组合数的值 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include _________________________; int main() { int m, k; _________; do{ printf("please input m,k (m>=k>0):"); scanf("%d, %d", &m, &k); } while (______________); p = (double)factorial(m) / (factorial(k) * factorial (m-k)); printf("p=%.0f\n", p); return 0; } //函数功能:计算无符号整型数number的阶乘 unsigned long factorial(unsigned int number) { unsigned long i, result = 1; for (________________) { result *= i; } return result; } a、第2行: unsigned long factorial(unsigned int number) 第6行: double p 第11行: m b、第2行: long factorial(unsigned int number) 第6行: double p 第11行: m c、第2行: unsigned long factorial(int number) 第6行: int p 第11行: m d、第2行: unsigned factorial(unsigned number) 第6行: int p 第11行: m 12、完全数,又称完美数或完数(perfect number),它是指这样的一些特殊的自然数,它所有的真因子(即除了自身以外的约数)的和,恰好等于它本身。例如,6就是一个完全数,是因为6 = 1 2 3。请编写一个判断完全数的函数isperfect(),然后判断从键盘输入的整数是否是完全数。注意:1没有真因子,所以不是完全数。 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include #include int isperfect(int x); int main() { int m; printf("input m:"); scanf("%d", &m); if (_________________) /* 完全数判定 */ printf("%d is a perfect number\n", m); else printf("%d is not a perfect number\n", m); return 0; } /* 函数功能:判断完全数,若函数返回0,则代表不是完全数,若返回1,则代表是完全数 */ int isperfect(int x) { int i; int total = 0; /* 1没有真因子,不是完全数 */ for (__________________) { if (___________) total = total i; } return total==x ? 1 : 0; } a、第10行: isperfect(m) 第24行: i=1; i b、第10行: m 第24行: i=1; i<=x; i 第26行: x % i != 0 c、第10行: isperfect(m)!=1 第24行: i=0; i<=x; i 第26行: x / i == 0 d、第10行: isperfect(m)==0 第24行: i=0; i 13、以下程序执行后输出结果是 #include int maxvalue(int x, int y) { return x>y? x:y; } int minvalue(int x,int y) { return x>y? y:x; } int main() { int a=4,b=3,c=5,d,e,f; d=maxvalue(a,b); d=maxvalue(d,c); e=minvalue(a,b); e=minvalue(e,c); f=a b c-d-e; printf("%d,%d,%d\n",d,f,e); return 0; } a、5,4,3 b、3,4,5 c、5,3,4 d、3,5,4
练兵区——单选题——不计入总分
1、设计一个函数maxcommonfactor(),利用欧几里德算法(也称辗转相除法)计算两个正整数的最大公约数。 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include int maxcommonfactor(int a, int b); int main() { int a, b, x; printf("input a,b:"); scanf("%d,%d", &a, &b); x =_______________ ; if (x != -1) { printf("maxcommonfactor = %d\n", x); } else { printf("input error!\n"); } return 0; } //函数功能: 计算两个正整数的最大公约数,-1表示没有最大公约数 int maxcommonfactor(int a, int b) { int r; if (a<=0 || b<=0) return -1; // 保证输入的参数为正整数 do{ ____________; a = b; _____________; }while (__________); return a; } a、第8行: maxcommonfactor(a, b) 第29行: r = a % b 第31行: b = r 第32行: r != 0 b、第8行: maxcommonfactor(a, b, x) 第29行: r = a % b 第31行: a = r 第32行: r == 0 c、第8行: maxcommonfactor(a, x) 第29行: r = b % a 第31行: b = r 第32行: r = 0 d、第8行: maxcommonfactor(x, b) 第29行: r = a / b 第31行: a = r 第32行: r != 0
5、完全数,又称完美数或完数(perfect number),它是指这样的一些特殊的自然数,它所有的真因子(即除了自身以外的约数)的和,恰好等于它本身。例如,6就是一个完全数,是因为6 = 1 2 3。请编写一个判断完全数的函数isperfect(),然后判断从键盘输入的整数是否是完全数。注意:1没有真因子,所以不是完全数。 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include #include int isperfect(int x); int main() { int m; printf("input m:"); scanf("%d", &m); if (_________________) /* 完全数判定 */ printf("%d is a perfect number\n", m); else printf("%d is not a perfect number\n", m); return 0; } /* 函数功能:判断完全数,若函数返回0,则代表不是完全数,若返回1,则代表是完全数 */ int isperfect(int x) { int i; int total = 0; /* 1没有真因子,不是完全数 */ for (__________________) { if (___________) total = total i; } return total==x ? 1 : 0; } a、第10行: isperfect(m) 第24行: i=1; i b、第10行: m 第24行: i=1; i<=x; i 第26行: x % i != 0 c、第10行: isperfect(m)!=1 第24行: i=0; i<=x; i 第26行: x / i == 0 d、第10行: isperfect(m)==0 第24行: i=0; i 6、下列说法中正确的是 a、函数原型是一条语句,不包括函数体。 b、无论何种情况,只要把用户自定义的所有函数都放在main函数的前面,就可以不用写函数原型了。 c、在c语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元,此时形参值的变化会影响到实参的值。 d、函数只有一个返回值,所以不能有多个return语句。
7、以下程序有语法错误,有关错误原因的正确说法是 #include void prt_char(); int main() { int g=5,k; ...... k=prt_char(g); ...... return 0; } int prt_char(int x) { ...... } a、函数原型和函数定义不匹配 b、变量名不能使用大写字母 c、函数名不能使用下划线 d、函数prt_char(int x)定义的位置不对,不能放在主函数main()的后面。
9、设计一个函数,用来判断一个整数是否为素数。 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include #include int isprimenumber(int number); int main() { int n, ret; printf("input n:"); scanf("%d", &n); ret = isprimenumber(n); if (___________) { printf("%d is a prime number\n", n); } else { printf("%d is not a prime number\n", n); } return 0; } //函数功能:判断number是否是素数,函数返回非0值,表示是素数,否则不是素数 int isprimenumber(int number) { int i; if (number <= 1) return 0; // 负数、0和1都不是素数 for (i=2; ________________; i ) { if (_______________) // 被整除,不是素数 return 0; } return 1; } a、第11行: ret != 0 第29行: i<=sqrt(number) 第31行: number % i == 0 b、第11行: ret == 0 第29行: i<=number 第31行: number % i == 0 c、第11行: ret == 0 第29行: i<=sqrt(number) 第31行: number / i == 0 d、第11行: ret != 0 第29行: i<=number 第31行: number / i == 0
10、以下程序执行后的输出结果是void fun(int v , int w) { int t; t=v; v=w; w=t; } int main( ) { int x=1,y=3,z=2; if(x>y) fun(x,y); else if(y>z) fun(y,z); else fun(x,z); printf("%d,%d,%d\n",x,y,z); return 0; } a、1,3,2 b、1,2,3 c、3,1,2 d、2,3,1
12、设计一个函数mincommonmultiple(),计算两个正整数的最小公倍数。 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include int mincommonmultiple(int a, int b); int main() { int a, b, x; printf("input a,b:"); scanf("%d,%d", &a, &b); x = _________________; if (__________) printf("mincommonmultiple = %d\n", x); else printf("input error!\n"); return 0; } //函数功能:计算两个正整数的最小公倍数,-1表示没有最小公倍数 int mincommonmultiple(int a, int b) { int i; if (_________________) return -1; // 保证输入的参数为正整数 for (i=1; i a、第8行: mincommonmultiple(a, b) 第10行: x != -1 第22行: a<=0 || b<=0 第26行: (i * a) % b == 0 b、第8行: mincommonmultiple 第10行: x == -1 第22行: a<=0 && b<=0 第26行: (i * a) % b == 0 c、第8行: mincommonmultiple(b, a) 第10行: x != -1 第22行: a<=0 || b<=0 第26行: (i * a) / b == 0 d、第8行: mincommonmultiple(int a, int b) 第10行: x = -1 第22行: a<=0 || b<=0 第26行: (i * a) % b == 0
13、编程计算下面组合数的值 代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 #include _________________________; int main() { int m, k; _________; do{ printf("please input m,k (m>=k>0):"); scanf("%d, %d", &m, &k); } while (______________); p = (double)factorial(m) / (factorial(k) * factorial (m-k)); printf("p=%.0f\n", p); return 0; } //函数功能:计算无符号整型数number的阶乘 unsigned long factorial(unsigned int number) { unsigned long i, result = 1; for (________________) { result *= i; } return result; } a、第2行: unsigned long factorial(unsigned int number) 第6行: double p 第11行: m b、第2行: long factorial(unsigned int number) 第6行: double p 第11行: m c、第2行: unsigned long factorial(int number) 第6行: int p 第11行: m d、第2行: unsigned factorial(unsigned number) 第6行: int p 第11行: m 第6周编程题在线测试
3、子函数fun(int a, int b)的功能是,对任意两个整数a和b,返回两者中的最大值。以下程序是通过调用子函数fun(int a, int b),找到三个整数中的最大值。若程序运行后的输出结果是8,请补充完整空白处缺少的代码。 #include int fun(int a, int b) { if(a>b) return_________; else return________; } int main() { int x=3, y=8, z=6, r; r=_______________; // 找到三个整数x,y,z中的最大值 printf("%d", r); return 0; } a、第4行: a 第5行: b 第11行: fun(fun(x,y),z) b、第4行: b 第5行: a 第11行: fun(x,y,z) c、第4行: 1 第5行: 0 第11行: fun(x,y,z) d、第4行: 0 第5行: 1 第11行: fun(fun(x,y),z)
5、下面程序是用辗转相除法计算两个正整数的最大公约数的递归求解方法。请将程序补充完整。 提示:辗转相除法的基本思路是,对正整数a和b,连续进行求余运算,直到余数为0为止,此时非0的除数就是最大公约数。设r=a mod b表示a除以b的余数,若r≠0,则将b作为新的a,r作为新的b,重复a mod b运算,直到r=0时为止,此时b为所求的最大公约数。例如,50和15的最大公约数的求解过程可表示为:gcd(50, 15)=gcd(15, 5)=gcd(5, 0)=5。 int gcd(int a, int b) { if (a%b == 0) return b; else return ____________________; } a、gcd(b, a%b) b、gcd(a, b%a) c、gcd(b%a, a) d、gcd(a%b, b)
6、以下程序的输出结果是 #include int func(); int i=10; int main() { int j=1; j=func(); printf("%d,",j); j=func(); printf("%d",j); return 0; } int func() { int k=0; k=k i; i=i 10; return(k); } a、10,20 b、0,0 c、10,10 d、20,20
7、子函数incre()的功能是,利用静态变量,使子函数的输出值能够随调用次数的增加依次为: 第1次调用,输出:的结果 第2次调用,输出:的结果 第3次调用,输出:的结果 ..... 在下面的程序中,对子函数incre()进行了两次调用,若使程序的输出结果是: 2 6 请补充完整空白处缺少的代码。 #include int x=3; void incre(); int main() { int i; for (i=1;_______;i ) incre(); return 0; } void incre() { ___________; x*=x 1; printf("%d\n",x); } a、第7行: i b、第7行: i<=x 第13行: static int x=0 c、第7行: i d、第7行: i<=x 第13行: int x=0
8、请给出程序的运行结果。 #include int fun(int m) { static int n = 0; m /= 2; m = m * 2; if (m) { n *= m; return(fun(m - 2)); } else return n; } int main() { int a, i; for (i = 0; i < 2; i ) { a = fun(4 i); printf("%d\n", a); } return 0; } a、0 0 b、8 8 c、4 4 d、64 64
9、写出下面程序的运行结果。 #include int square(int i) { return i * i; } int main(void) { int i = 0; i = square(i); for ( ; i<3; i ) { static int i = 1; i = square(i); printf("%d,", i); } printf("%d\n", i); return 0; } a、2,6,42,3 b、2,2,2,3 c、2,2,3,3 d、2,3,4,3
10、根据最大公约数的如下3条性质,采用递归法编写计算最大公约数的函数gcd(),在主函数中调用该函数计算并输出从键盘任意输入的两正整数的最大公约数。 性质1 如果a>b,则a和b与a-b和b的最大公约数相同,即gcd(a, b) = gcd(a-b, b) 性质2 如果b>a,则a和b与a和b-a的最大公约数相同,即gcd(a, b) = gcd(a, b-a) 性质3 如果a=b,则a和b的最大公约数与a值和b值相同,即gcd(a, b) = a = b 代码如下,请补充程序中缺少的内容。 #include int gcd(int a, int b); int main() { int a, b, c; printf("input a,b:"); scanf("%d,%d", &a, &b); c = gcd(a, b); if (_________) printf("greatest common divisor of %d and %d is %d\n", a, b, c); else printf("input number should be positive!\n"); return 0; } int gcd(int a, int b) { if (_______________) return -1; if (a == b) return __________; else if (a > b) return __________; else return ___________; } a、第9行: c!= -1 第18行: a <= 0 || b <= 0 第21行: a 第23行: gcd(a - b, b) 第25行: gcd(a, b - a) b、第9行: c== -1 第18行: a <= 0 && b <= 0 第21行: a 第23行: gcd(a - b, b) 第25行: gcd(a, b - a) c、第9行: c!= -1 第18行: a <= 0 && b <= 0 第21行: b 第23行: gcd(a, b - a) 第25行: gcd(a - b, b) d、第9行: c== -1 第18行: a <= 0 || b <= 0 第21行: a 第23行: gcd(a, b - a) 第25行: gcd(a - b, b)
7、下面程序是用辗转相除法计算两个正整数的最大公约数的递归求解方法。请将程序补充完整。 提示:辗转相除法的基本思路是,对正整数a和b,连续进行求余运算,直到余数为0为止,此时非0的除数就是最大公约数。设r=a mod b表示a除以b的余数,若r≠0,则将b作为新的a,r作为新的b,重复a mod b运算,直到r=0时为止,此时b为所求的最大公约数。例如,50和15的最大公约数的求解过程可表示为:gcd(50, 15)=gcd(15, 5)=gcd(5, 0)=5。int gcd(int a, int b) { if (a%b == 0) return b; else return ____________________; } a、gcd(b, a%b) b、gcd(a, b%a) c、gcd(b%a, a) d、gcd(a%b, b)
11、子函数fun(int a, int b)的功能是,对任意两个整数a和b,返回两者中的最大值。以下程序是通过调用子函数fun(int a, int b),找到三个整数中的最大值。若程序运行后的输出结果是8,请补充完整空白处缺少的代码。#include int fun(int a, int b) { if(a>b) return_________; else return________; } int main() { int x=3, y=8, z=6, r; r=_______________; // 找到三个整数x,y,z中的最大值 printf("%d", r); return 0; } a、第4行: a 第5行: b 第11行: fun(fun(x,y),z) b、第4行: b 第5行: a 第11行: fun(x,y,z) c、第4行: 1 第5行: 0 第11行: fun(x,y,z) d、第4行: 0 第5行: 1 第11行: fun(fun(x,y),z)
12、以下程序的输出结果是 #include int func(); int i=10; int main() { int j=1; j=func(); printf("%d,",j); j=func(); printf("%d",j); return 0; } int func() { int k=0; k=k i; i=i 10; return(k); } a、10,20 b、0,0 c、10,10 d、20,20
13、请给出程序的运行结果#include int fun(int m) { static int n = 0; m /= 2; m = m * 2; if (m) { n *= m; return(fun(m - 2)); } else return n; } int main() { int a, i; for (i = 0; i < 2; i ) { a = fun(4 i); printf("%d\n", a); } return 0; } a、0 0 b、8 8 c、4 4 d、64 64
14、写出下面程序的运行结果。#include int square(int i) { return i * i; } int main(void) { int i = 0; i = square(i); for ( ; i<3; i ) { static int i = 1; i = square(i); printf("%d,", i); } printf("%d\n", i); return 0; } a、2,6,42,3 b、2,2,2,3 c、2,2,3,3 d、2,3,4,3
15、根据最大公约数的如下3条性质,采用递归法编写计算最大公约数的函数gcd(),在主函数中调用该函数计算并输出从键盘任意输入的两正整数的最大公约数。 性质1 如果a>b,则a和b与a-b和b的最大公约数相同,即gcd(a, b) = gcd(a-b, b) 性质2 如果b>a,则a和b与a和b-a的最大公约数相同,即gcd(a, b) = gcd(a, b-a) 性质3 如果a=b,则a和b的最大公约数与a值和b值相同,即gcd(a, b) = a = b 代码如下,请补充程序中缺少的内容。#include int gcd(int a, int b); int main() { int a, b, c; printf("input a,b:"); scanf("%d,%d", &a, &b); c = gcd(a, b); if (_________) printf("greatest common divisor of %d and %d is %d\n", a, b, c); else printf("input number should be positive!\n"); return 0; } int gcd(int a, int b) { if (_______________) return -1; if (a == b) return __________; else if (a > b) return __________; else return ___________; } a、第9行: c!= -1 第18行: a <= 0 || b <= 0 第21行: a 第23行: gcd(a - b, b) 第25行: gcd(a, b - a) b、第9行: c== -1 第18行: a <= 0 && b <= 0 第21行: a 第23行: gcd(a - b, b) 第25行: gcd(a, b - a) c、第9行: c!= -1 第18行: a <= 0 && b <= 0 第21行: b 第23行: gcd(a, b - a) 第25行: gcd(a - b, b) d、第9行: c== -1 第18行: a <= 0 || b <= 0 第21行: a 第23行: gcd(a, b - a) 第25行: gcd(a - b, b)