《大学C语言期末考试练习题(带详解答案).docx》由会员分享,可在线阅读,更多相关《大学C语言期末考试练习题(带详解答案).docx(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、 单项选择题( A )是构成C语言程序的基本单位。A、函数 B、过程 C、子程序 D、子例程C语言程序从 C开始执行。A)程序中第一条可执行语句B)程序中第一个函数C)程序中的main函数 D)包含文件中的第一个函数3、以下说法中正确的选项是(C )oA、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main()函数中定义C、C语言程序总是从main()函数开始执行D、C语言程序中的main()函数必须放在程序的开始局部4.以下关于C语言的说法错误的选项是(B )oA)C程序的工作过程是编辑、编译、连接、运行B)C语言不区分大小写。C)C程序的三种基本结构是
2、顺序、选择、循环D) C程序从main函数开始执行.以下正确的标识符是(C )oA.-alB.aiC.a2_iD.int t58题为相同类型题考点:标识符的命名规那么(1)只能由字母、数字、下划线构成(2) 数字不能作为标识符的开头(3) 关键字不能作为标识符选项A中的,选项B中“广与下不满足(1);选项D中的int为关键字,不满足(3).以下C语言用户标识符中合法的是(B )oA)3ax B)x C)case D)-e2 E)union选项A中的标识符以数字开头不满足(2);选项C, E均为为关键字,不满足(3);选 项D中的“,不满足(1);.以下四组选项中,正确的C语言标识符是(C )o
3、A) %xB) a+b C) al23D) 123选项A中的“”,选项B中不满足(I );选项D中的标识符以数字开头不满足(2)8、以下四组字符串中都可以用作C语言程序中的标识符的是(A )。A、print_3ddb8aBcB、Iam one_half start$it3paiC、str_lCpppowwhileD、Pxq My-book line#His.age选项B中的,选项D中“不满足(1);选项C中的while为关键输出Z2-1,表达式xvy不成立,因此不执行内层的ifelse.进而z中的值没有被改变。输出z中的值为5#include main() float a9b9c9t;a=3;
4、b=7;c=l;if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printfC % 5.2f, % 5,2f, % 5.2f” ,a,b,c);)运行结果为:1.00, 2.00, 7.00详见教材472数据的输出形式此题包含了 3个if语句,每个if语句后的 都不可省略,因为每个 中都包含了多条语句 假设表达式ab成立,那么执行t=a;a=b;b=t;假设表达式ac成立,那么执行t=a;a=c;c=t;假设表达式bc成立,那么执行t=b;b=c;c=t;输出a,b,c中的值,要求输出的每个数据宽度为5个空格,小数局部保存2位,数据右
5、对齐3小于7,因此表达式ab不成立,因此不执行t=a;a=b;b=t;3大于1,因此表达式ac成立,那么执行t=a;a=b;b=t;。第一句,将a中的3拷贝,粘贴到 t中;第二句,将c中的1拷贝,粘贴到a中,覆盖掉先前的3;第三句。将t中的3拷贝到 c中,覆盖掉c中先前的1.执行完复合语句后实现了 a,c元素的值的互换,a为1, c为3, t 为 3,。7大于c中的3,因此bc成立,执行那么执行t=b;b=c;c=t;,过程同上,执行后b为3, c为 7, t为7此时输出a,b,c中的值为1.00, 2.00, 7.004. #include main () float c=3.0, d=4.
6、0;if ( cd ) c=5.0;elseif ( c=d ) c=6.0;else c=7.0;printf (;运行结果为:7.0此题为ifelse语句的嵌套,第二ifelse作为第一个ifelse语句else局部的复合语句。假设表达式cd成立,那么执行c=5.0;否那么(表达式cd不成立)假设表达式c=d成立,那么执行c=6.0;否那么,执行c=7.0;输出c中的值3.0小于4.0,因此表达式0d不成立,执行第二个ifelse。3.0不等于4。因此表达式c=d不成立,执行c=7.0,将7.0赋给c,覆盖掉c中的3.0,此 时c中的值为7.0输出此时的c中的值5. #include ma
7、in() int m;scanf(n%df &m);if (m = 0) if (m%2 = O)printf(n%d is a positive evennM, m);else printf(H %d is a positive oddn, m); else if (m % 2 = 0) printf(n%d is a negative evennu, m);else printf(n%d is a negative oddnH, m);假设键入一9,那么运行结果为:-9 is a negative odd#include main()int num=0;while(num=2) num+;
8、 printf(H%dn,num); )运行结果为:12详见教材pll5循环结构当循环条件num=2成立的时候,执行循环体 num+; printf(n%dnn,num); 中的语句。循环初值num为0;循环条件num=2成立第1次循环:执行num+;即将num中的值加1,执行后num为1;执行printf(dn”,num);在屏幕上输出num中的值,即输出1,之后换行此时num中的值为1,循环条件num=2成立第2此循环:执行num+;即将num中的值加1,执行后num为2;执行printf(dn”,num);在屏幕上输出num中的值,即输出2,之后换行此时num中的值为2,循环条件num=
9、2成立第3此循环:执行num+;即将num中的值加L执行后num为3;执行printf(dn”,num);在屏幕上输出num中的值,即输出3,之后换行此时num中的值为3,循环条件num=2不成立,结束循环。6. #include main()int sum=10,n=l;while(n3) sum=sum-n; n+; )运行结果为:3,7当循环条件n3成立的时候,执行循环体sum=sum-n; n+; 中的语句。循环初值sum为10,n为1;循环条件n3成立第 1 次循环:执行 sum=sum-n=10-l=9;执行n+,即将n中的值加1,执行后n为2;此时n中的值为2, sum中的值为9
10、,循环条件n3成立,继续执行循环第2次循环:执行sum二sum-n=9-2=7;执行n+,即将n中的值加1,执行后n为3;输出此时n,sum中的值,即为3,7。需要注意,在printf(“d,%dn,sum);中要求输出的数据 彼此间用逗号间隔,因此结果的两个数据间一定要有逗号7. #include main()int num9c;scanf(H %dn,&num);do c=num%10; printf(n%d,c); while(num/=10)0);prmtf(HnM);从键盘输入23,那么运行结果为:32详见教材P117循环结构;p60复合的赋值运算符do while(表达式);先无条
11、件执行循环体,再判断循环条件。注意while (表达式)后有分号定义整型变量num, c;为num赋一个整型值;执行c=num%10; printf(n%dM,c); 直到循环条件(num/=10)0 不成立;输出换行为num赋值23第1次执行循环体执行 c=num% 10=23% 10=3;执行 printf(dc);输出 3判断循环条件num/=10等价于num=num/10;因此num=23/10=2, 2大于0,因此循环条件 (num/=10)0成立,继续执行循环体。执行完第1次循环时,num为2, c为3第2次执行循环体执行 c=2%10=2;执行 printf(”d”,c);再输出
12、 2判断循环条件num=2/10=0,0等于0,因此循环条件(num/=10)0不成立。结束循环8. #include main()int s=0,a=5,n; scanf(n%du,&n);do s+=l; a=a-2; while(a!=n);printf(M%d %dnH,s,a);假设输入的值1,运行结果为:2,1详见教材P117循环结构;p60复合的赋值运算符执行 s+=l; a=a-2; 直到循环条件a!=n不成立;为n赋值l,s为0, a为5 第1次执行循环体执行s+=l;等价于s=s+1=0+1执行 a=a-2; a=5-2=3判断循环条件,3不等于1,因此循环条件a!=n成立
13、,继续执行循环体。 执行完第1次循环时,s为1, a为3 第2次执行循环体执行 s+=l;等价于 s=s+l=l + l=2执行 a=a-2; a=3-2=l判断循环条件,1等于1,因此循环条件a!=n不成立,结束循环。执行完第2次循环时,s为2, a为1输出此时s,a中的值,结果为2,19. #include nstdio.hnmain()char c;c=getchar();while(c!=,?f) putchar(c); c=getchar(); )如果从键盘输入abcde? fgh (回车) 运行结果为:abcde#include main() char c;while(c=getc
14、har()!=,$)if(6A,=c&c=iZ,) putchar(c);else if(6a,=c&c=6z5) putchar(c-32); 当输入为运行结果为:ABABCDCD#include main()int x, y =0;for(x=l;x=io)break;y=y+x;)printf(u%d %d”,y,x);运行结果为:105详见教材pl20 for语句详见教材pl26128 break, continue语句for(表达式1;表达式2;表达式3)(1)先求解表达式1求解表达式2,假设其值为真,执行循环体,然后执行(3).假设为假,那么结束循环,转到(3)求解表达式3(4)转
15、回上面(2)继续执行(5)循环结束,执行for语句下面的一个语句break ,跳出循环体;continue,结束本次循环(第i次循环),继续执行下一次循环(第i+1 次循环)此题 表达式1为x=l,表达式2 (循环条件)为xv=10,表达式3为x+初值x为1, y为0,循环条件(即表达式2) x=10成立,进入循环体第1次循环执行if语句。0小于10, if语句的条件表达式不成立,不执行break;执行 y=y+x; y=0+l = l转向表达式3,执行x+, x=x+l = l + l=2o循环条件xv=10成立,进入第2次循环第2次循环执行if语句。1小于10, if语句的条件表达式不成立
16、,不执行break;执行 y=y+x; y= 1+2=3转向表达式3,执行x+, x=x+l=2+l=3o循环条件x=10成立,进入第3次循环第3次循环执行if语句。3小于10, if语句的条件表达式不成立,不执行break;执行 y=y+x; y=3+3=6转向表达式3,执行x+, x=x+l=3+l=4o循环条件x=10成立,进入第4次循环第4次循环执行if语句。6小于10, if语句的条件表达式不成立,不执行break;执行 y=y+x; y=6+4= 10转向表达式3,执行x+, x=x+l=4+l=5。循环条件x=10成立,进入第5次循环第5次循环执行if语句。10等于10, if语
17、句的条件表达式成立,执行break,跳出循环。从break跳出至for语句的下一条语句。执行printf(%d %d”,y,x);输出当前的y与x.结果为10510. #include main() char ch; ch=getchar();switch(ch) case: printf(%c”JA); case ,B: printf(%cJB); break; default: printf(sn”/other”);当从键盘输入字母A时,运行结果为:AB详见教材pl03, switch语句 switch (表达式) case常量1 :语句1 case常量2 :语句2IIIIIIIIIcas
18、e常量n :语句n default :语句 n+1)其中表达式,常量1,,常量n都为整型或字符型case相当于给出执行程序的入口和起始位置,假设找到匹配的常量,那么从此处开始往下执行 程序,不再匹配常量,直至遇到break或switch结束此题过程:首先从键盘接收一个字符,*并将其放在变量ch中。执行switch语句。Switch后面的条件表达式为ch,因此表达式的值即为字符,A,用字 符A依次与下面的case中的常量匹配。与第1个case后的常量匹配,那么从其后的语句开始往下执行程序(在执行过程中不再 进行匹配。)因此先执行printf(“%c”:A)屏幕上输出A;再往下继续执行printf
19、(“%c”;B) 屏幕上输出B;再继续执行break,此时跳出switch语句。11. #include main()int a=l,b=O; scanf(u%d&a);switch(a) case 1: b=l; break; case 2: b=2; break; default: b=10; printf(n%d b);)假设键盘输入5,运行结果为:10此题过程:首先用scanf函数为变量a赋值为5。执行switch语句。switch后面的条件表达式为a,因此表达式的值即为5.用5依次与下 面case中的常量匹配。没有找到匹配的常量,因此两个case后的语句都不执行。执行default
20、后面的语句b=10;将10赋给变量b。输出变量b,结果为10#include main()_ char grade=,C,; switch(grade)(caseprintf(“90100n);case B: printf(u80-90n95);printfC670-80nw);case D: printf(“6070n); break;case - printf(“v60n);default: printf(uerror!n,9); )运行结果为:70-8060-70此题过程:首先从键盘接收一个字符,。并将其放在变量grade中。执行switch语句。switch后面的条件表达式为grade
21、,因此表达式的值即为字符,C.用字 符,0依次与下面的case中的常量匹配。与第3个case后的常量匹配,那么从其后的语句开始往下执行程序(在执行过程中不再 进行匹配。)因此先执行printfC70-80n);,屏幕上输出70-80,并换行;再往下继续执行 printf(“60-70rT),屏幕上输出60-70,并换行;再继续执行break,此时跳出switch语句。17. #include main()int y=9;for(;y0;y-)if(y%3=0)printf(%d -y);运行结果为:852详见教材p53,自增自减符号此题 表达式1被省略,表达式2 (循环条件)为y0,表达式3为
22、y-初值y为9,循环条件(即表达式2) y0成立,进入循环体第1次循环执行if语句。9%3=0, if语句的条件表达式成立,执行printf(%d”,-y),即y先自减1 变为8,然后在输出,因此屏幕上输出8转向表达式3,执行y-, y=y-l=8-l=7o循环条件y0成立,进入第2次循环第2次循环执行if语句。7%3不为0, if语句的条件表达式不成立,不执行printf(%d”,-y)转向表达式3,执行y-, y=y-l=7-l=6o循环条件y0成立,进入第3次循环第3次循环执行if语句。6%3=0, if语句的条件表达式成立,执行printf(%d”,-y),即y先自减1 变为5,然后在
23、输出,因此屏幕上输出5转向表达式3,执行y-, y=y-l=5-l=4。循环条件y0成立,进入第4次循环第4次循环执行if语句。4%3不为0, if语句的条件表达式不成立,不执行printf(%d”,-y)转向表达式3,执行y-, y=4-l=3o循环条件y0成立,进入第5次循环第5次循环执行if语句。3%3=0, if语句的条件表达式成立,执行printf(%d”,-y),即y先自减1 变为2,然后在输出,因此屏幕上输出2转向表达式3,执行y-, y=y-l=2-l=lo循环条件y0成立,进入第5次循环第6次循环执行if语句。1%3不为0, if语句的条件表达式不成立,不执行printf(%
24、d”,-y)转向表达式3,执行y-, y=l-l=0o循环条件y0不成立,循环结束。18. #include main()int i,sum=0; i=l;do sum=sum+i; i+; while(i=10);printf(“d”,sum);运行结果为:5519. #include #define N 4main()int i;int xl=l,x2=2;printf(unH);for(i=l;i=N;i+) printf(n%4d%4dH,xl,x2);if(i%2=0)printf(nnu);xl=xl+x2;x2=x2+xl;)运行结果为:1235813 21 34此题 首先为整型
25、变量赋初值xl = l,x2=2表达式1为i=l,表达式2 (循环条件)为iv=N即i=4,表达式3为i+循环变量初值i为1,循环条件(即表达式2) i=4成立,进入第1次循环第1次循环执行printf(”%4d%4d二xl,x2);因此屏幕上输出12执行if语句。1%2不为0, if语句的条件表达式不成立,不执行printf(n);执行xl=xl+x2=l+2=3;此时xl中的值已变为3执行 x2=x2+xl =2+3=5。转向表达式3,执行i+, i为2。循环条件iv=4成立,进入第2次循环第2次循环执行printf(”%4d%4d”,xl,x2);因此屏幕上输出35执行if语句。2%2=
26、0, if语句的条件表达式成立,执行printf(”n”);换行执行xl=xl+x2=3+5=8;此时xl中的值已变为8执行 x2=x2+x 1=5+8=13。转向表达式3,执行i+, i为3。循环条件iv=4成立,进入第3次循环第3次循环执行printf(”%4d%4d”,xl,x2);因此屏幕上输出813执行if语句。3%2不为0, if语句的条件表达式不成立,不执行printf(n);执行xl=xl+x2=8+13=21;此时xl中的值已变为21字,不满足(3)9 .C语言中的简单数据类型包括(D )。A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型C、整型、字符型、逻辑型 D、整
27、型、实型、字符型.在C语言程序中,表达式5%2的结果是一 C 。A)2.5B)2C)1D)3详见教材P5253.%为求余运算符,该运算符只能对整型数据进行运算。且符号与被模数相同。5%2=1;5% (-2) =1; (-5) %2=1; (-5) % (-2) =1;/为求商运算符,该运算符能够对整型、字符、浮点等类型的数据进行运算,5/2=2.如果int a=3,b=4;那么条件表达式avb? a:b”的值是 A 。A) 3B)4C)0 D) 1详见教材P97.表达式1?表达式2:表达式3先计算表达式1,假设表达式1成立,那么选择计算表达式2,并表达式2的值作为整个大表达式的值;假设表达式1
28、不成立,那么选择计算表达式3,并将表达式3的值作为整个大表达式的值此题中的ab相当于表达式1, a相当于表达式2, b相当于表达式3.a为3, b为4。ab表达式1成立,因此计算表达式2,并将表达式2的值即a中的值,并 作为整个表达式的值,因此整个表达式的值为3.假设 int x=2,y=3,z=4 那么表达式 xz?y:z 的结果是(B ).A)4B)3C)2D)0 E)1. C语言中,关系表达式和逻辑表达式的值是(B ) oA)0B)0 或 1C) 1 D),F或,F.下面(D)表达式的值为4.A) 11/3 B) 11.0/3C) (float) 11/3 D) (int)( 11.0/
29、3+0.5)1416题为同一类型详见教材P5456.(1)相同数据类型的元素进行数学运算( +、-、*、/)得到结果还保持原数据类型。(2)不同数据类型的元素进行数学运算,先要统一数据类型,统一的标准是低精度类型转 换为高精度的数据类型。选项A, 11与3为两个整数,11/3结果的数据类型也应为整数,因此将3.666666的小数部 分全部舍掉,仅保存整数,因此11/3=3.选项B, 11.0为实数,3为整数,因此首先要统一数据类型,将整型数据3转换为3.0,转 换后数据类型统一为实型数据,选项B变为11.0/3。结果的数据类型也应为实型数据,因此 选项 B 11.0/3=3.666666选项C
30、,先将整数11强制类型转换,转换为实型11.0,因此选项C变为11.0/3,其后计算 过程、结果与选项b同执行 x2=x2+x 1=21+ 13=34。转向表达式3,执行i+, i为4。循环条件i=4成立,进入第4次循环 第2次循环执行printf(”4d%4d”,xl,x2);因此屏幕上输出2134执行if语句。4%2=0, if语句的条件表达式成立,执行printf(n);换行执行xl=xl+x2=21+34=55;此时xl中的值已变为55执行 x2=x2+x 1=34+55=89。转向表达式3,执行i+, i为5。循环条件iv=4不成立,结束循环20#include main() int
31、 x, y;for(x=30, y=0; x=10, y10; x, y+) x/=2, y+=2;printf(“x=%d,y=%dn”,x,y);)运行结果为:x=0,y=1221.#include #define N 4main()int ij;for(i=l;i=N ;i+) for(j=l;ji;j+)printf(n H);printf(M*H);printf(unH);运行结果为:*详见教材P41符号常量用宏处理指令定义符号常量N为4,在编译过程中,遇到N即视为整数4。外层for循环,表达式1为i=l,表达式2 (循环条件)为i二N,表达式3为i+内层for循环,表达式1为j=l
32、,表达式2 (循环条件)为ji,表达式3为j+ 首先计算外层循环的表达式1, i为1,使得循环条件i=4成立,进入外层for循环体外层for循环第1次 此时i为1内层循环j=l,使得循环条件ji不成立,因此不执行内层循环体(不输出空格)执行 printf(n*n);执行 printf(”n);换行至此外层循环体执行完,计算外层循环的表达式3, i+,此时i为2.使得循环条件i=4 成立,再次进入外层for循环体外层for循环第2次此时i为2内层循环j=l,使得循环条件jvi成立第1次执行内层循环体printf(H n);执行内层循环表达式3, j+为2, jvi不成立,跳出内层循环执行 pri
33、ntf(n*n);执行 printf(n);换行至此外层循环体执行完,计算外层循环的表达式3, i+,此时i为3.使得循环条件i=4 成立,进入外层for循环体外层for循环第3次此时i为3内层循环j=l,使得循环条件jvi成立第1次执行内层循环体printf(H );执行内层循环表达式3, j+为2, jvi成立,再次执行内层循环第2次执行内层循环体printf(H n);执行内层循环表达式3, j+为3, ji不成立,跳出内层循环执行 printf(n*n);执行 printf(rT);换行至此外层循环体执行完,计算外层循环的表达式3, i+,此时i为4.使得循环条件i=4 成立,进入外层
34、for循环体外层for循环第4次此时i为4内层循环j=l,使得循环条件ji成立第1次执行内层循环体printf(H n);执行内层循环表达式3, j+为2, ji成立,再次执行内层循环第2次执行内层循环体printf(n n);执行内层循环表达式3, j+为3, ji成立,再次执行内层循环第3次执行内层循环体printf(H n);执行内层循环表达式3, j+为4, ji不成立,跳出内层循环执行 printf(n*n);执行 printf(n);换行至此外层循环体执行完,计算外层循环的表达式3, i+,此时i为5,使得循环条件i=4 不成立,跳出外层for循环体数组#include main(
35、) int i, a10;for(i=9;i=0;i)ai=10-i;printf(d%d%d”,a 间5间 8);运行结果为:852详见pl43-146.例题6.1 一定看懂!首先定义整型变量i,整型数组a, a的长度为10,即a中包含10个整型元素(整型变量) 执行for循环语句 初值i=9,使得循环条件i=0成立,执行循环体 第1次循环执行 ai=10-i 等价于 a9=10-9=1计算表达式3,即i-, i为8,使得循环条件i=0成立,继续执行循环体 第2次循环执行 ai=10-i 等价于 a8=10-8=2计算表达式3,即i-,i为7,使得循环条件i=0成立,继续执行循环体 第3次循
36、环执行 ai=10-i 等价于 a7=10-7=3计算表达式3,即i-i为6,使得循环条件i=0成立,继续执行循环体 第4次循环执行 ai=10-i 等价于 a6=10-6=4计算表达式3,即i-i为5,使得循环条件i=0成立,继续执行循环体 第5次循环执行 ai=10-i 等价于 a5=10-5=5计算表达式3,即i-, i为4,使得循环条件i=0成立,继续执行循环体 第6次循环执行 ai=10-i 等价于 a4=10-4=6计算表达式3,即i-, i为3,使得循环条件i=0成立,继续执行循环体第7次循环执行 ai=10-i 等价于 a3=10-3=7计算表达式3,即i-, i为2,使得循环
37、条件i=0成立,继续执行循环体 第8次循环执行 ai=10-i 等价于 a2=10-2=8计算表达式3,即i-, i为1,使得循环条件i=0成立,继续执行循环体 第9次循环执行 ai=10-i 等价于 al=10-l=9计算表达式3,即i-,i为0,使得循环条件i=0成立,继续执行循环体 第10次循环执行 ai=10-i 等价于 a0=10-0=10计算表达式3,即i-,i为-1,使得循环条件i=0不成立,跳出循环体2.#include main()int i,a6;for (i=0; i=0 ; i-)printf(H%3dH,ai);)运行结果为: 首先定义整型变量i,整型数组a, a的长
38、度为6,即a中包含6个整型元素(整型变量) 执行第一个for循环语句 初值i=0,使得循环条件i6成立,执行循环体 第1次循环执行ai= i等价于a0=0计算表达式3,即i+, i为1,使得循环条件i6成立,继续执行循环体 第2次循环执行ai=i等价于计算表达式3,即i+, i为2,使得循环条件i6成立,继续执行循环体 第3次循环执行ai= i等价于a2=2计算表达式3,即i+, i为3,使得循环条件i6成立,继续执行循环体 第4次循环执行ai= i等价于a3=3计算表达式3,即i+, i为4,使得循环条件i6成立,继续执行循环体第5次循环执行ai= i等价于a4=4计算表达式3,即i+, i
39、为5,使得循环条件i6成立,继续执行循环体第6次循环执行ai= i等价于a5=5计算表达式3,即i+, i为6,使得循环条件i=0成立,执行循环体第1次循环执行printf(n%3dn,ai);即输出a的值计算表达式3,即i-, i为4,使得循环条件i=0成立,继续执行循环体第2次循环执行 printf(n%3dn,ai);即输出 a4的值计算表达式3,即i-i为3,使得循环条件i=0成立,继续执行循环体第3次循环执行 printf(H%3dH,ai);即输出 a3的值计算表达式3,即i-, i为2,使得循环条件i=0成立,继续执行循环体第4次循环执行printf(n%3dn,ai);即输出a
40、的值计算表达式3,即i-, i为1,使得循环条件i=0成立,继续执行循环体第5次循环执行printf(n%3dn,ai);即输出a的值计算表达式3,即i-, i为0,使得循环条件i=0成立,继续执行循环体第6次循环执行 printf(n%3dn,ai);即输出 a0的值计算表达式3,即i-i为6,使得循环条件i=0不成立,结束循环#include main()inti,k,a10,p3;k=5;for(i=0; i10; i+)ai=i;for(i=0; i3; i+)pi=ai*(i+l);for(i=0; i3; i+)k+=pi*2;printf(,%dnn,k);)运行结果为:21首先
41、定义整型变量i, k,整型数组a, a的长度为10,整型数组p,p的长度为3k初值为5第一个for循环语句为数组a进行初始化执行完第一个 for 语句后,a0=0, al=l, a2=2, a3=3, a4=4, a5=5, a6=6, a7=7,a8=8, a9=9(循环过程略)第二个for循环语句为数组p进行初始化初值i=0,使得循环条件i3成立,执行循环体第1次循环执行 pi=ai*(i+l); 即 p0=a0*(0+1 )=a0=0计算表达式3,即i+, i为1,使得循环条件i3成立,继续执行循环体第2次循环执行 pi=ai*(i+l);即 pl=al*(l + l)=a=2计算表达式
42、3,即i+, i为2,使得循环条件i3成立,继续执行循环体 第3次循环执行 pi=ai*(i+l);即 p2=a2*(2+l)=a6=6计算表达式3,即i+, i为3,使得循环条件i3不成立,结束循环第三个for循环语句初值i=0,使得循环条件33成立,执行循环体第1次循环执行 k+=pi*2;即 k=5+p0*2=5+0=5计算表达式3,即i+, i为1,使得循环条件i3成立,继续执行循环体 第2次循环%(彳亍 k+=pi*2; 即 k=5+pl*2=5+2*2=9计算表达式3,即i+, i为2,使得循环条件i3成立,继续执行循环体 第1次循环执行 k+=pi*2; 即 k=9+p*2=9+
43、6*2=21计算表达式3,即i+, i为3,使得循环条件i3不成立,结束循环#include int m33=l,2,3;int n33=l,2,3);main() printf(u%dA ml0+n00);printf(w%dn9mOl+nlO);)运行结果为:3,0详见教材P149152,图6.7看懂! 首先定义整型二维数组m, m为3行,3列的二维矩阵,并对其以行的形式初始化m00= 1 m0l=0 ml2=0 ml0=2 mll=0 m =0 m20=3 m2l=0 m =0定义整型二维数组n,定义整型二维数组n,m为3行,3列的二维矩阵n00=l n0l=2 nl2=3nl0=0 nll=0 n22=0 n20=0 n2l=0 n22=0因此 ml0+n00=2+l=3m0l+nl0=0+0=0#include main()int i;int x33=l,2,3,4,5,6,7,8,9;for (i=l; i3; i+)printf(n%d n,xi3-i);)运行结果为:3. 8首先按存储顺序为数组x初始化x00=l x0l=2 x02=3xl0=4 xll=5 xl2=6x20=7 x2l=8 x22=9初值i=l,使得循环条件i3成立,执行循环体第1次循环执行 printf(”d n,xi3-i),打印出 xi3-i