第二章
一.选择题
1.C 2.B D 3.A 4.A 5. D 6.C 7.D 8.C 9.A 10.D 11.B 12.D 13.C 14.D 15.A 16.B 17.A 18.B 100011 001111 二.判断题 1.错 2.错 3.错 4.错
三.填空题 1. B 66
2. n1=%d\\nn2=%d\\n 3. 0 四.计算 1
(1) x|y = 0x002f (2) x^y = 0x0026 (3) x&y = 0x0009; (4) ~x+~y = 0xffc6 (5) x<<=3 0x0068 (6) y>>=4 0x0002 2 (1) 6 (2) 50 (3) 1 (4) –16 (5) 1 (6) 20 3 (1) 0 (2) 1 (3) 1 (4) 4 (5) 8 (6) 1 4
(1) 12 (2) 0 (3) 1 (4) 27
.. wd ..
. ... .
(5) 1 (6) 6 (7) 24 (8) 27 (9) –29 5 (1) 0 (2) 1 (3) 1 (4) –3 (5) 2
五.程序分析题 程序1
b=20 a=3600
程序2
一.填空题 1.s=6 2.96
3.(1) scanf(\"%c\
(2) c-32 更好的答案:c-('a'-'A') 2.1 main() {
int a,b;
printf(\"please input a & b:\"); scanf(\"%d%d\
printf(\"\\nmax is %d\\n\} 2.2
int max(int x,int y); main() {
int a,b,c,max;
printf(\"please input a & b & c:\"); scanf(\"%d%d%d\max=a>b?a:b;
max=c>max?c:max;
printf(\"\\nmax is %d\\n\} 2.3
.. 第三章
wd ..
. ... .
main() {
int i=0,sum=0; while(i<=100) {
sum+=i; i++; }
printf(\"1+2+3+......+100=%d\\n\} 2.4 main() {
int i;
int a=10,b=-3; int c;
printf(\"%6d%6d\ for(i=2;i<10;i++) {
c=3*b+a;
printf(\"%6d\ a=b; b=c; }
printf(\"\\n\"); } 2.5 main() {
int i; while(1) {
printf(\"please input a data(0:exit):\"); scanf(\"%d\ if(i==0) break; if(i%2==0)
printf(\"the data %d is a even number.\\n\ else
printf(\"the data %d is a odd number.\\n\ } } 2.6
#include .. wd .. . ... . main() { int i; int a=8,b=1; int sum=0; for(i=0;i<10;i++) { b+=3; sum += a; a+=b; printf(\"a%8d b:%8d\\n\ } printf(\"The Sum Of Is:%d\\n\} 2.7 #include float x,y; printf(\"please input x:\"); scanf(\"%f\ if(x<1.0) y=x; else if(x<10) y=2*x-1; else y=3*x-11; printf(\"y=%f\\n\} 2.8 #include long a,i,b,a1; while(1) { printf(\"please input data(1-99999):\"); scanf(\"%ld\ printf(\"a:%ld\\n\ if(a<=0||a>=100000) break; i=0; a1=0; .. wd .. . ... . while(a!=0) { b=a%10; printf(\"%8d\ a/=10; i++; a1=a1*10+b; } printf(\"\\n i:%ld a1:%ld\\n\ } } 2.9 #include main() { int a,b,i,k=0; randomize(); a=random(1001);/*create a random data(0-1000)*/ for(i=0;i<20;i++) { printf(\"please guess a number:\"); scanf(\"%d\ if(a>b) { k++; printf(\"\\n%d:Smaller,guess again!\\n\ } else if(ak++; printf(\"\\n%d:Bigger,guess again!\\n\ } else { printf(\"\\nYou guess right,congraturation!\") ; printf(\"\\nYou have guessed %d times\ break; } } if(k==20) .. wd .. . ... . printf(\"\\nsorry,you failed!\"); } 2.10 #include main() { int a,b,c; int num; for(a=0;a<10;a++) { for(b=0;b<10;b++) { for(c=1;c<10;c++) { num=a*100+b*10+c; if((num%3==0)&&(a==5||b==5||c==5)) printf(\"%8d\ } } } printf(\"\\n\\n\\n\"); } 2.11 #include main() { int i; int a,b; printf(\"please input a,b:\"); scanf(\"%d%d\ for(i=a0;i--) { if(a%i==0&&b%i==0) { printf(\"The max=%d\ break; } } for(i=a>b?a:b;i>0;i++) { if(i%a==0&&i%b==0) { .. wd .. . ... . printf(\"\\nThe min=%d\ break; } } 2.12 #include main() { int a,k=0; printf(\"please input data:\"); scanf(\"%d\ while(a%2==0) { a=a/2; k++; } printf(\"\\nthe number of factor(2) is %d\} 2.13 main() { long i,t=1; long sum=0; for(i=1;i<=10;i++) { t*=i; sum+=t; printf(\"%ld!=%ld\\n\ } printf(\"sum:%ld\\n\ } 2.14 #include void main() { int i,x=0; for(i=9;i>=1;i--) { x=2*(x+1); } printf(\"The first day:%d\ .. wd .. . ... . } 2.15 #include main() { float r,h; float v; printf(\"please input r,h:\"); scanf(\"%f%f\,&h); v=1.0/3*PI*r*r*h; printf(\"V=%.2f\} 2.16 #include main() { long int sn=0; long int m=0,t=0; int a,n,i; printf(\"please input a n:\"); scanf(\"%d%d\ for(i=0;i printf(\"a+aa+aaa+...+aa...a=%ld\\n\\n\} 2.17 #include main() { int k; printf(\"please input k:\"); do { scanf(\"%d\ if(k>=0&&k<=6) break; .. wd .. . ... . }while(1); switch(k) { case 0:printf(\"Sunday.\\n\");break; case 1:printf(\"Monday.\\n\");break; case 2:printf(\"Tuesday.\\n\");break; case 3:printf(\"Wednesday.\\n\");break; case 4:printf(\"Thursday.\\n\");break; case 5:printf(\"Friday.\\n\");break; case 6:printf(\"Saturday.\\n\");break; } } 2.18 #include main() { int i; double x,a,b=1,sum=1; printf(\"please input x:\"); scanf(\"%lf\ a=x; for(i=1;a/b>=1e-6;i++) { sum=sum+a/b; a=a*x; b=(i+1)*b; } printf(\"\\nsum=%lf\} 2.19 #include main() { float a,x1,x2; printf(\"input a:\"); scanf(\"%f\ x1=1.0; while(1) { x2=1.0/2*(x1+a/x1); .. wd .. . ... . if(fabs(x2-x1)<1e-5) break; x1=x2; } printf(\"sqrt(a)=%f\} 第四章 写出下列程序输出结果 1.no 1 a=1no 1 a=0no 1 a=1no 1 a=0 2. a=0 b=0 c=0 a=1 b=0 c=0 a=2 b=0 c=0 3. main:x=5,y=1,n=1 func:x=6,y=21,n=11 main:x=5,y=1,n=11 func:x=8,y=31,n=21 1.D 2.D 3.C 4.6 5.CDABC 6.(1)j+=2 (2)a[i]10.6(同题4) 11.s[i]>='0'&&s[i]<='9' 12. (1)'\\0' (2)str1[i]-str2[i] 5.1 #include int a[3][3],sum; .. 第五章 wd .. . ... . int i,j; sum=0;/*error*/ for(i=0;i<3;i++) { for(j=0;j<3;j++) scanf(\"%d\ } for(i=0;i<3;i++) sum=sum+a[i][i]; printf(\"sum=%d\\n\} void main() { fun(); } 5.2 #include void main( void ) { float Num[10]; float Input,GetNum[11]; int i,j; float a=6; for(i=0; i<10; i++) { Num[i]=a; a=a+7.5; } Loop1: printf(\"Please input a Number(0-80) Input=\"); scanf(\"%f\ if((Input<0)||(Input>70)==1) goto Loop1; for(i=0; i<10; i++ ) { if(Input . ... . } Loop2: for(j=0; jGetNum[j]=Input; for(j=i; j<=10; j++,i++) GetNum[j+1]=Num[i]; for(j=0; j<11; j++ ) printf(\"%3.3f \ } 5.3 #include \"stdio.h\" #include \"stdlib.h\" main() { int a1,a2,a3,a4,a5,a6,a7,a8,a9; int a[3]; int i; for(;;) { for (i=0;i<3;i++) { a[i]=rand()%3; } while((a[0]!=a[1]) && (a[0]!=a[2]) && (a[1]!=a[2]))/*get three different numbers 0,1,2*/ { a1=a[0]+1;/*divide 1~9 into three groups,a1~a3,a4~a6,a7~a9*/ a2=a[1]+1; a3=a[2]+1; a4=a1+3; a5=a2+3; a6=a3+3; a7=a1+6; a8=a2+6; a9=a3+6; /* make sure that each line and each row is made up with three members in different group.*/ .. wd .. . ... . /* such as: a9 a1 a5 a2 a6 a7 a4 a8 a3 */ if(((a1+a5+a9) == (a2+a6+a7)) && ((a1+a5+a9) == (a3+a4+a8)) && ((a1+a6+a8) == (a5+a7+a3)) && ((a1+a5+a9) == (a2+a4+a9))) { printf(\"%d %d %d\\n%d %d %d\\n%d %d %d\\n\ return; } } } } 5.4 #include void main(void) { char input1[100],input2[100],input3[100]; int i,Eng=0,eng=0,num=0,blank=0,other=0; printf(\"Input 3 rows of character,each row don't exceed 80 characters:\\n\"); gets(input1); printf(\"The second row:\\n\"); gets(input2); printf(\"The third row:\\n\"); gets(input3); /*test the first row*/ for(i=0; i<100; i++) { if(input1[i]=='\\0') goto Loop1; else if(('A'<=input1[i])&&(input1[i]<='Z')==1) Eng++; else if(('a'<=input1[i])&&(input1[i]<='z')==1) eng++; else if(('0'<=input1[i])&&(input1[i]<='9')==1) num++; else if(input1[i]==32) .. wd .. . ... . blank++; else other++; } /*test the second row*/ Loop1: for(i=0; i<100; i++) { if(input2[i]=='\\0') goto Loop2; else if(('A'<=input2[i])&&(input2[i]<='Z')==1) Eng++; else if(('a'<=input2[i])&&(input2[i]<='z')==1) eng++; else if(('0'<=input2[i])&&(input2[i]<='9')==1) num++; else if(input2[i]==32) blank++; else other++; } /*test the third row*/ Loop2: for(i=0; i<100; i++) { if(input3[i]=='\\0') goto Loop3; else if(('A'<=input3[i])&&(input3[i]<='Z')==1) Eng++; else if(('a'<=input3[i])&&(input3[i]<='z')==1) eng++; else if(('0'<=input3[i])&&(input3[i]<='9')==1) num++; else if(input3[i]==32) blank++; else other++; } Loop3: printf(\"Upper english character:%d\\nLower character:%d\\nNumber:%d\\nBlank:%d\\nOther characters:%d\\n\} 5.5 #include .. wd english .. . ... . void main(void) { char str1[80],str2[40]; int i,j,k; /*Input two string*/ printf(\"Please input the first string\\n str1=\"); gets(str1); printf(\"Please input the second string\\n str2=\"); gets(str2); /*Get the end of str1*/ for(i=0; i<80; i++) { if(str1[i]=='\\0') break; } /*Copy str2 to str1*/ for(j=i,k=0; str2[k]!='\\0';k++,j++) str1[j]=str2[k]; str1[i+k]='\\0'; puts(str1); } 5.6 #include struct student {char name[20]; int score; }stu[5],stu1; void main(void) { int i,j; printf(\"Input student's score and name(5),seperate using the character of ',' :\\n\"); for(i=0; i<5; i++) scanf(\"%d,%s\/*sorting*/ for(i=0; i<5; i++) for(j=0; j<4-i; j++) .. wd .. . ... . if(stu[j].score>stu[j+1].score) {stu1=stu[j];stu[j]=stu[j+1];stu[j+1]=stu1;} printf(\"After sotred,score and name:\\n\"); for(i=0; i<5; i++) printf(\"%d,%s\\n\} 5.7 #include { int a[3][3],i,j,m,n,o,p; printf(\"Please input a 3*3 shuzu:\\n\"); for (i=0;i<=2;i++) for (j=0;j<=2;j++) scanf(\"%d\ for (i=0;i<=2;i++) { m=(a[i][0]>a[i][1])? a[i][0]:a[i][1]; n=(m>a[i][2])? m: a[i][2]; } for (j=0;j<=2;j++) { o=(a[0][j]p=(o.. wd .. . ... . if (n==p) printf(\"Andian is %d\\\\n\ else printf(\"There is no andian.\\\\n\"); } 5.8 #include void main(void) { int a[4][3],b[3][4],i,j; for(i=0; i<4; i++) { for(j=0; j<3; j++) scanf(\"%d\ } for(i=0; i<4; i++) { printf(\"\\n\"); for(j=0; j<3; j++) printf(\"%5d \ } for(i=0; i<4; i++) { for(j=0; j<3; j++) b[j][i]=a[i][j]; } printf(\"\\n\"); for(i=0; i<3; i++) { printf(\"\\n\"); for(j=0; j<4; j++) printf(\"%5d \ .. wd .. . ... . } } 5.9 #include void main(void) { char str[6]; int i,j=0,m=0,n=0; gets(str); while(str[j]!='\\0') j++; for(i=j-1;i>=0;i--) { m=(str[i]-'0')*(pow(8,j-i-1)); n+=m; } printf(\"shijinzhi %d\ } 5.10#include void main(void) { char input1[100]; int i,num=0,blank=0; printf(\"Please input a row character:\\n\"); gets(input1); /*test the first row*/ for(i=0; i<100; i++) { if(input1[i]=='\\0') .. wd .. . ... . goto Loop; else if(('A'<=input1[i])&&(input1[i]<='Z')==1) num++; else if(('a'<=input1[i])&&(input1[i]<='z')==1) num++; else if (input1[i]==32) blank++; } Loop: printf(\"Character:%d\\nBlank:%d\\n\} 第六章 一、选择题 1.D :p中记录的是a的地址,*p访问地址a的值 2.D :指针数组 3.D:指针可以进行是否相等判断,空指针可以进行指针变量初始化,指针可以偏移; 4.C: 5.C、D:a[5]不存在,若*&a[4]则正确;C,D正确; 6.D: 7.B: 8.B: 二、填空题 1.*(p+3) 2 22 2. cdefg bcdefg abcdefg 7 3. 6385 三、程序分析题 1.p = s[0] ; 错误,应改为:p = s; 或 p = &s[0]; 2.int x , *p;错误,应改为:double x, *p; 3.*p = x ;错误,应改为:p = &x ; 4. 声明顺序错误;应该改为: void main(void) { int a; int *p = &a; a = 10; printf(“%d\\n”,*p); .. wd .. . ... . } 2.3 #include main() { char ch[2][5] = {\"6937\ int i,j,s=0; for(i=0;i<2;i++) p[i] = ch[i]; for(i=0;i<2;i++) for(j=0;p[i][j]>'\\0';j+=2) s = 10*s + p[i][j] - '0'; printf(\"%d\\n\} 4.1