}
for(i=3;i>0;i--) {
for(j=1;j<=20-3*i;j++) printf(\
for(K=1;k<=2*i-1;k++) printf(\printf(\} } 答案 * * * * * * * * * * * * * * * * * * * * * * * * *
【题2】下面程序的功能是用“辗转相除发”求两个正整数的最大公约数。请填空 #include
scanf(“%d%d”,&m,&n);
if (m while(r) {m=n; n=r; r = ; } m%n printf(“%d\\n”,n); } 【题3】下面的程序的运行结果是【s=254】. #include {int a,s,n,count; a=2;s=0;n=1;count=1; while(count<=7) {n=n*a; s=s+n; ++count} printf(“s=%”,s); } 0); 【题4】下面程序段的运行结果是【a=-5】. i=1;a=0;s=1; do{a=a+s*i; s= - s; i++;} while (i<=10); printf(“a=%d”,a); 【题5】 下面程序的运行结果是【x=1,y=20】。 #include { int i,x,y; i=x=y=0; do {++i; if(i%2!=0) {x=x+i;i++;} y=y+i++; } while (i<=7); printf(“x=%d,y=%d\\n”,x,y); } 【题6】 鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有几只,请填空。 for(x=1;x<=29;x++) {y=30-x; if(【2*x+4*y==90】 ) printf(“%d,%d\\n”,x,y); } 【题7】以下程序的功能是根据公式e=1+1/1!+1/2!+1/3!+…求e的近似值,精度要求为10-6请填空。 #include double e,new; e=1.0 ; new=1.0; for(i=1; new>=1e-6 ;i++) {new/=(double)i; e+=new; } printf(“e=%f\\n”,e) } 【题 8】下面程序的功能是完成用一元人民币换成一分、两分、五分的所有兑换方案。请填空。 #include {int i,j,k,l=1; for(i=0;i<=20;i++) for(j=0;j<=50;j++) {k=100-i*5-j*2; if(k>=0) {printf(“ --- ”,i,j,k); l=l+1; if(l%5==0) printf(“\\n”); } } } 【题 9】下面程序的功能是从三个红球、五个白球、六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。请填空。 #include printf(“\\n hong bai hei \\n”); for(i=0;i<=3;i++) for( j=1 ;j<=5 ; j++ ) {k=8-i-j; if(k>=0&&k<=6) printf(“ = = = \\n”,i,j,k); } } 第6章数组部分 6.1 选择题 【题1 】在C语言中,引用数组元素时,其数组下标的数据类型允许是(C) A) 整型常量B) 整型表达式C) 整型常量或整型表达式D) 任何类型的表达式 【题 2】 以下对一维整形数组a的正确说明是(D)。 A) int a(10); B) int n=10,a[n]; C) int n; D) #define SIZE 10 scanf(“%d”,&n); int a[SIZE]; int a[n]; 【题 3】 若有说明:int a[10];则对a数组元素的正确引用是(D)。 A) a[10] B) a[3.5] C) a(5) D) a[0] 【题4】 以下对一维整形数组a进行正确初始化的语句是(C)。 A) int a[10]=(0,0,0,0,0); B) int a[10]={}; C) int a[8]={0,2}; D) int a[10]=10; 【题5】以下对二维整形数组a的正确说明是(C)。 A) inta[3][]; B) float a(3,4); C) double a[4][4]; D) float a(3)(4); 【题6】 若有说明:int a[3][4];则对a数组元素的正确引用是(C)。 A) a[2][4] B)a[1,3] C) a[2][0] D) a(2)(1) 【题7】 以下对二维整形数组a进行正确初始化的语句是(B)。 A) int a[2][]={{1,01},{5,2,3}}; B) int a[][3]={{1,2,3},{4,5,6}}; C) int a[2][3]={{1,2,3},{4,5},{6}}; D) int a[3][ ]={{1,0,1},{1},{1,1}}; 【题8】C语言规定,数组名做实参时,它和对应形参之间的数据传递方式是:_D ____ A) 用户指定传递方式 B) 无传递 C )单向值传递 D)地址传递 【题9】对以下说明语句的正确理解是(B)。 int a[10]={6,7,8,9,10}; A)将5个初值依次赋给a[1]至a[5] B)将5个初值依次赋给a[0]至a[4] C)将5个初值依次赋给a[6]至a[10] D)因为数组长度与初值的个数不同,所以此语句不正确 【题11】定义如下变量和数组: int k; int a[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是(A)。 for (k=0;k<3;k++)printf(“%d”,a[k][2-k]); A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7 【题12】下面是对S的初始化,其中不正确的是(D)。 A)char s[5]={“abc”}; B)char s[5]={?a?,?b?,?c?}; C)char s[5]=” ”; D)char s[5]=”abcdef ”; 2 填空题 【题1】在C语言中,二维数组的定义方式为:类型说明符 数组名【常量表达式 】 【常量表达式 】; 【题2】 在C语言中,二维数组元素的内存中的存放顺序是按行主顺序存放 。 【题3】 若有定义:double x[3][5];则x数组中行下标的下限为 0 ,列下标的上限为 4 。 【题4】 若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是 0 ,a[2][1]得到的初值是 6 【题5】 下面程序以每行4个数据的形式输出a数组,请填空。 #define N 20 main() { int a[N],i; for (i=0;i { if(【i%4==0 】) printf(“\\n”) printf(“3%d”,a[i]); } printf (“n”); } 【题6】下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中。请填空。 main() { int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j; printf(“arrar a:\\n”); for(i=0;i<=1;i++) {for(j=0; j<=2;j++) {printf(“5%d”,a[i][j]); b[j][i]=a[i][j]) ; } printf(“\\n”); } printf(“array b:\\n”); for(i=0; i<=2;i++) { for(j=0;j<=1;j++) printf(“5%d”,b[i][j]); printf(“\\n”); } } 【题7】下面程序可求出矩形阵a的主对角线上的元素之和。请填空。 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 (i==j ) sum=sum+a[i][j] ; printf(“sum=%d\\n”,sum); } 【题8】以下程序可求出所有的水仙花数。(提示:所谓水仙花数是指一个三位正整数, 其各位数字之和的立方之和等于该正整数。例如:407=4×4×4+0×0×0+7×7 ×7。故407是一个水仙花数。)请填空。 main() { int x,y,z,a[8],m,i=0; printf(“The special numbers are (in the arrange of 1000):\\n”); for (m=100;m<1000 ; m++) { x=m/100; y=m/10-x*10 ; z=m; if(x*100+y*10+z==x*x*x+y*y*y+z*z*z)