《2022C语言考试题库及答案.pdf》由会员分享,可在线阅读,更多相关《2022C语言考试题库及答案.pdf(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 2022C 语言考试题库及答案 姓名 成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油!一单项选择题 1.在 C 语言中,以 D 作为字符串结束标志 A)n B)C)0 D)0 2.下列数据中属于“字符串常量”的是(A)。A.“a”B.ABC C.abc0 D.a 若干个字符构成字符串 在 C 语言中,用单引号标识字符;用双引号标识字符串 选项 B,C,分别用和标识字符串 选项 D,标识字符。3、以下说法中正确的是(C )。A、C 语言程序总是从第一个定义的函数开始执行 B、在 C 语言程序中,要调用的函数必须在 main()函数中定义 C、
2、C 语言程序总是从 main()函数开始执行 D、C 语言程序中的 main()函数必须放在程序的开始部分 4.下列关于 C 语言的说法错误的是(B)。A)C 程序的工作过程是编辑、编译、连接、运行 B)C 语言不区分大小写。C)C 程序的三种基本结构是顺序、选择、循环 D)C 程序从 main 函数开始执行 5.下列正确的标识符是(C)。A.-a1 B.ai C.a2_i D.int t 6下列 C 语言用户标识符中合法的是(B)。A)3ax B)x C)case D)-e2 E)union 7下列四组选项中,正确的 C 语言标识符是(C )。A)%x B)a+b C)a123 D)123
3、8、下列四组字符串中都可以用作 C 语言程序中的标识符的是(A)。A、print _3d db8 aBc B、Iam one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My-book line#His.age 9.C 语言中的简单数据类型包括(D )。A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在 C 语言程序中,表达式 5%2 的结果是 C 。A)2.5 B)2 C)1 D)3 11如果 int a=3,b=4;则条件表达式ab?a:b的值是_A_。A)3 B)4 C)0
4、D)1 12若 int x=2,y=3,z=4 则表达式 xage D)(*p).age 33.设有如下定义:struck sk int a;float b;data;int*p;若要使 P 指向 data 中的 a 域,正确的赋值语句是 C A)p=&a;B)p=data.a;C)p=&data.a;D)*p=data.a;34.设有以下说明语句:typedef struct stu int a;float b;stutype;则下面叙述中错误的是(D )。A、struct 是结构类型的关键字 B、struct stu 是用户定义的结构类型 C、a 和 b 都是结构成员名 D、stutype
5、 是用户定义的结构体变量名 35 语句 int*p;说明了 C 。A)p 是指向一维数组的指针 B)p 是指向函数的指针,该函数返回一 int 型数据 C)p 是指向 int 型数据的指针 /指针的定义教材 P223 D)p 是函数名,该函数返回一指向 int 型数据的指针 36下列不正确的定义是(A )。A.int*p=&i,i;B.int*p,i;Cint i,*p=&i;D.int i,*p;37.若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是:(D )A)p=q B)*p=*q C)n=*q D)p=n 38有语句:int a10,;则 B 是对指针变量 p 的
6、正确定义和初始化。A)int p=*a;B)int*p=a;C)int p=&a;D)int*p=&a;39.若有说明语句“int a5,*p=a;”,则对数组元素的正确引用是(C)。A.ap B.pa C.*(p+2)D.p+2 40.有如下程序 int a10=1,2,3,4,5,6,7,8,9,10,*P=a;则数值为 9 的表达式是 B A)*P+9 B)*(P+8)C)*P+=9 D)P+8 一、读程序 基本输入输出及流程控制 1.#include main()int a=1,b=3,c=5;if(c=a+b)printf(yesn);else printf(non);运行结果为:n
7、o 详见教材 p89 选择结构 详见教材 p91 关系符号 详见附录 D p378 符号的优先级=表示判断符号两边的值是否相等;=表示将符号右边的值赋给左边的变量 本题考点是选择结构 3 种基本形式的第二种 选择结构三种一般形式中的“语句”皆为复合语句,复合语句要用 括起来,只有当复合语句中只包括一条语句时可以省略,此题即如此,因此两个 printf 操作没有加 若 c=a+b 成立,则执行 printf(yesn);否则(即 c=a+b 不成立),执行 printf(non);+的优先级高于=,因此先算 a+b,值为 4,表达式 5=4 不成立,因此执行 printf(non);即输出字符串
8、 no 2.#include main()int a=12,b=-34,c=56,min=0;min=a;if(minb)min=b;if(minc)min=c;printf(min=%d,min);运行结果为:min=-34 详见教材 p89 选择结构 本题考点是选择结构 3 种基本形式的第一种 一共包含了两个选择结构(两个 if 语句)定义变量,并赋值 此时 a=12,b=-34,c=56,min=0 将 a 中值拷贝,赋给 min,覆盖了 min 中的 0,此时 min 中的值被更新为 12。若 minb 成立,则执行 min=b;若 minc 成立,则执行 min=c;输出 min 中
9、的值 12 大于-34,第一个 if 语句的表达式成立,因此执行 min=b;执行后 min 中的值被更新为-34.-34 小于 56,第二个 if 语句的表达式不成立,因此不执行 min=c;最后输出 min 中的值,为-34.3.#include main()int x=2,y=-1,z=5;if(xy)if(y0)z=0;else z=z+1;printf(“%dn”,z);运行结果为:5 遇到选择结构,首先要明确条件表达式成立时执行哪些操作。本题中,第一个 if 语句,其后的复合语句没有大括号,说明复合语句中只包含一条语句,进而省略了。内层的 if.else.是选择结构的第二种基本形式
10、,在结构上视为一条语句。因此内层的 if.else.作为第一个 if 语句的复合语句。若表达式 xy 成立,则继续判断 若 y=0),执行 z=z+1;输出 z 2-1,表达式 xy 不成立,因此不执行内层的 ifelse.进而 z 中的值没有被改变。输出 z 中的值为 5 4.#include main()float a,b,c,t;a=3;b=7;c=1;if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(%5.2f,%5.2f,%5.2f,a,b,c);%为求余运算 运行结果为:1.00,3.00,7.00 详见教材
11、p72 数据的输出形式 本题包含了 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 位,数据右对齐 3 小于 7,因此表达式 ab 不成立,因此不执行t=a;a=b;b=t;3 大于 1,因此表达式 ac 成立,则执行t=a;a=b;b=t;。第一句,将 a 中的 3 拷贝,粘贴到 t 中;第二句,将 c 中的 1 拷贝,粘贴
12、到 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.00 5#include main()float c=3.0,d=4.0;if(cd)c=5.0;else if(c=d)c=6.0;else c=7.0;printf(“%.1fn”,c);运行结果为:7.0 此题为 if.e
13、lse.语句的嵌套,第二 if.else.作为第一个 if.else.语句 else 部分的复合语句。若表达式 cd 成立,则执行 c=5.0;否则(表达式 cd 不成立)若表达式 c=d 成立,则执行 c=6.0;否则,执行 c=7.0;输出 c 中的值 3.0 小于 4.0,因此表达式 cd 不成立,执行第二个 ifelse。3.0 不等于 4.0,因此表达式 c=d 不成立,执行 c=7.0,将 7.0 赋给 c,覆盖掉 c 中的 3.0,此时 c 中的值为 7.0 输出此时的 c 中的值 6.#include main()int m;scanf(%d,&m);if(m=0)if(m%2
14、=0)printf(%d is a positive evenn,m);else printf(%d is a positive oddn,m);else if(m%2=0)printf(%d is a negative evenn,m);else printf(%d is a negative oddn,m);若键入9,则运行结果为:-9 is a negative odd 7.#include main()int num=0;while(num=2)num+;printf(%dn,num);运行结果为:1 2 3 详见教材 p115 循环结构 当循环条件 num=2 成立的时候,执行循环体
15、 num+;printf(%dn,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=2 成立 第 3 此循环:执行 num+;
16、即将 num 中的值加 1,执行后 num 为 3;执行 printf(%dn,num);在屏幕上输出 num 中的值,即输出 3,之后换行 此时 num 中的值为 3,循环条件 num=2 不成立,结束循环。8#include main()int sum=10,n=1;while(n3)sum=sum-n;n+;printf(“%d,%d”,n,sum);运行结果为:3,7 当循环条件 n3 成立的时候,执行循环体sum=sum-n;n+;中的语句。循环初值 sum 为 10,n 为 1;循环条件 n3 成立 第 1 次循环:执行 sum=sum-n=10-1=9;执行 n+,即将 n 中的
17、值加 1,执行后 n 为 2;此时 n 中的值为 2,sum 中的值为 9,循环条件 n3 成立,继续执行循环 第 2 次循环:执行 sum=sum-n=9-2=7;执行 n+,即将 n 中的值加 1,执行后 n 为 3;输出此时 n,sum 中的值,即为 3,7。需要注意,在 printf(“%d,%d”,n,sum);中要求输出的数据彼此间用逗号间隔,因此结果的两个数据间一定要有逗号 9.#include main()int num,c;scanf(%d,&num);do c=num%10;printf(%d,c);while(num/=10)0);num=0 printf(n);从键盘输
18、入 23,则运行结果为:3 2 详见教材 p117 循环结构;p60 复合的赋值运算符 do while(表达式);先无条件执行循环体,再判断循环条件。注意 while(表达式)后有分号 定义整型变量 num,c;为 num 赋一个整型值;执行c=num%10;printf(%d,c);直到循环条件(num/=10)0 不成立;输出换行 已知为 num 赋值 23 第 1 次执行循环体 执行 c=num%10=23%10=3;执行 printf(%d,c);输出 3 判断循环条件 num/=10 等价于 num=num/10;因此 num=23/10=2,2 大于 0,因此循环条件(num/=
19、10)0成立,继续执行循环体。执行完第 1 次循环时,num 为 2,c 为 3 第 2 次执行循环体 执行 c=2%10=2;执行 printf(%d,c);再输出 2 判断循环条件 num=2/10=0,0 等于 0,因此循环条件(num/=10)0 不成立。结束循环 10#include main()int s=0,a=5,n;scanf(%d,&n);do s+=1;a=a-2;while(a!=n);printf(%d,%dn,s,a);若输入的值 1,运行结果为:2,1 详见教材 p117 循环结构;p60 复合的赋值运算符 执行 s+=1;a=a-2;直到循环条件 a!=n 不成
20、立;已知为 n 赋值 1,s 为 0,a 为 5 第 1 次执行循环体 执行 s+=1;等价于 s=s+1=0+1 执行 a=a-2;a=5-2=3 判断循环条件,3 不等于 1,因此循环条件 a!=n 成立,继续执行循环体。执行完第 1 次循环时,s 为 1,a 为 3 第 2 次执行循环体 执行 s+=1;等价于 s=s+1=1+1=2 执行 a=a-2;a=3-2=1 判断循环条件,1 等于 1,因此循环条件 a!=n 不成立,结束循环。执行完第 2 次循环时,s 为 2,a 为 1 输出此时 s,a 中的值,结果为 2,1 11#include stdio.h main()char c
21、;c=getchar();while(c!=?)putchar(c);c=getchar();如果从键盘输入 abcde?fgh(回车)运行结果为:abcde 12#include main()char c;while(c=getchar()!=$)if(A=c&c=Z)putchar(c);else if(a=c&c=z)putchar(c-32);当输入为 ab*AB%cd#CD$时,运行结果为:ABABCDCD 13.#include main()int x,y=0;for(x=1;x=10)break;y=y+x;printf(“%d%d”,y,x);运行结果为:10 5 详见教材 p
22、120 for 语句 详见教材 p126128 break,continue 语句 for(表达式 1;表达式 2;表达式 3)(1)先求解表达式 1 (2)求解表达式 2,若其值为真,执行循环体,然后执行(3).若为假,则结束循环,转到(5)(3)求解表达式 3 (4)转回上面(2)继续执行(5)循环结束,执行 for 语句下面的一个语句 break,跳出循环体;continue,结束本次循环(第 i 次循环),继续执行下一次循环(第 i+1 次循环)此题 表达式 1 为 x=1,表达式 2(循环条件)为 x=10,表达式 3 为 x+初值 x 为 1,y 为 0,循环条件(即表达式 2)x
23、=10 成立,进入循环体 第 1 次循环 执行 if 语句。0 小于 10,if 语句的条件表达式不成立,不执行break;执行 y=y+x;y=0+1=1 转向表达式 3,执行 x+,x=x+1=1+1=2。循环条件 x=10 成立,进入第 2 次循环 第 2 次循环 执行 if 语句。1 小于 10,if 语句的条件表达式不成立,不执行break;执行 y=y+x;y=1+2=3 转向表达式 3,执行 x+,x=x+1=2+1=3。循环条件 x=10 成立,进入第 3 次循环 第 3 次循环 执行 if 语句。3 小于 10,if 语句的条件表达式不成立,不执行break;执行 y=y+x
24、;y=3+3=6 转向表达式 3,执行 x+,x=x+1=3+1=4。循环条件 x=10 成立,进入第 4 次循环 第 4 次循环 执行 if 语句。6 小于 10,if 语句的条件表达式不成立,不执行break;执行 y=y+x;y=6+4=10 转向表达式 3,执行 x+,x=x+1=4+1=5。循环条件 x=10 成立,进入第 5 次循环 第 5 次循环 执行 if 语句。10 等于 10,if 语句的条件表达式成立,执行break,跳出循环。从 break 跳出至 for 语句的下一条语句。执行 printf(“%d%d”,y,x);输出当前的 y 与 x.结果为 10 5 14.#i
25、nclude main()char ch;ch=getchar();switch(ch)case A:printf(“%c”,A);case B:printf(“%c”,B);break;default:printf(“%sn”,”other”);当从键盘输入字母 A 时,运行结果为:AB 详见教材 p103,switch 语句 switch(表达式)case 常量 1:语句 1 case 常量 2:语句 2 case 常量 n:语句 n default :语句 n+1 其中表达式,常量 1,常量 n 都为整型或字符型 case 相当于给出执行程序的入口和起始位置,若找到匹配的常量,则从此处开
26、始往下执行程序,不再匹配常量,直至遇到 break 或 switch 结束 本题过程:首先从键盘接收一个字符A并将其放在变量 ch 中。执行 switch 语句。Switch 后面的条件表达式为 ch,因此表达式的值即为字符A.用字符A依次与下面的 case 中的常量匹配。与第 1 个 case 后的常量匹配,则从其后的语句开始往下执行程序(在执行过程中不再进行匹配。)因此先执行 printf(“%c”,A),屏幕上输出 A;再往下继续执行 printf(“%c”,B),屏幕上输出 B;再继续执行 break,此时跳出 switch 语句。15.#include main()int a=1,b
27、=0;scanf(“%d”,&a);switch(a)case 1:b=1;break;case 2:b=2;break;default:b=10;printf(%d,b);若键盘输入 5,运行结果为:10 本题过程:首先用 scanf 函数为变量 a 赋值为 5。执行 switch 语句。switch 后面的条件表达式为 a,因此表达式的值即为 5.用 5 依次与下面 case 中的常量匹配。没有找到匹配的常量,因此两个 case 后的语句都不执行。执行 default 后面的语句 b=10;将 10 赋给变量 b。输出变量 b,结果为 10 16.#include main()_ char
28、 grade=C;switch(grade)case A:printf(“90-100n”);case B:printf(“80-90n”);case C:printf(“70-80n”);case D:printf(“60-70n”);break;case E:printf(“60n”);default:printf(“error!n”);运行结果为:70-80 60-70 本题过程:首先从键盘接收一个字符C并将其放在变量 grade 中。执行 switch 语句。switch 后面的条件表达式为 grade,因此表达式的值即为字符C.用字符C依次与下面的 case 中的常量匹配。与第 3
29、个 case 后的常量匹配,则从其后的语句开始往下执行程序(在执行过程中不再进行匹配。)因此先执行 printf(“70-80n”);,屏幕上输出 70-80,并换行;再往下继续执行 printf(“60-70n”),屏幕上输出 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 为 y-初值 y 为 9,循环条件(即表达式 2)y
30、0 成立,进入循环体 第 1 次循环 执行 if 语句。9%3=0,if 语句的条件表达式成立,执行 printf(%d”,-y),即 y 先自减 1 变为 8,然后在输出,因此屏幕上输出 8 转向表达式 3,执行 y-,y=y-1=8-1=7。循环条件 y0 成立,进入第 2 次循环 第 2 次循环 执行 if 语句。7%3 不为 0,if 语句的条件表达式不成立,不执行 printf(%d”,-y)转向表达式 3,执行 y-,y=y-1=7-1=6。循环条件 y0 成立,进入第 3 次循环 第 3 次循环 执行 if 语句。6%3=0,if 语句的条件表达式成立,执行 printf(%d”
31、,-y),即 y 先自减 1 变为 5,然后在输出,因此屏幕上输出 5 转向表达式 3,执行 y-,y=y-1=5-1=4。循环条件 y0 成立,进入第 4 次循环 第 4 次循环 执行 if 语句。4%3 不为 0,if 语句的条件表达式不成立,不执行 printf(%d”,-y)转向表达式 3,执行 y-,y=4-1=3。循环条件 y0 成立,进入第 5 次循环 第 5 次循环 执行 if 语句。3%3=0,if 语句的条件表达式成立,执行 printf(%d”,-y),即 y 先自减 1 变为 2,然后在输出,因此屏幕上输出 2 转向表达式 3,执行 y-,y=y-1=2-1=1。循环条
32、件 y0 成立,进入第 5 次循环 第 6 次循环 执行 if 语句。1%3 不为 0,if 语句的条件表达式不成立,不执行 printf(%d”,-y)转向表达式 3,执行 y-,y=1-1=0。循环条件 y0 不成立,循环结束。18.#include main()int i,sum=0;i=1;do sum=sum+i;i+;while(i=10);printf(“%d”,sum);运行结果为:55 19.#include#define N 4 main()int i;int x1=1,x2=2;printf(n);for(i=1;i=N;i+)printf(%4d%4d,x1,x2);i
33、f(i%2=0)printf(n);x1=x1+x2;x2=x2+x1;运行结果为:1 2 3 5 8 13 21 34 此题 首先为整型变量赋初值 x1=1,x2=2 表达式 1 为 i=1,表达式 2(循环条件)为 i=N 即 i=4,表达式 3 为 i+循环变量初值 i 为 1,循环条件(即表达式 2)i=4 成立,进入第 1 次循环 第 1 次循环 执行 printf(%4d%4d,x1,x2);因此屏幕上输出 1 2 执行 if 语句。1%2 不为 0,if 语句的条件表达式不成立,不执行printf(n);执行 x1=x1+x2=1+2=3;此时 x1 中的值已变为 3 执行 x2
34、=x2+x1=2+3=5。转向表达式 3,执行 i+,i 为 2。循环条件 i=4 成立,进入第 2 次循环 第 2 次循环 执行 printf(%4d%4d,x1,x2);因此屏幕上输出 3 5 执行 if 语句。2%2=0,if 语句的条件表达式成立,执行 printf(n);换行 执行 x1=x1+x2=3+5=8;此时 x1 中的值已变为 8 执行 x2=x2+x1=5+8=13。转向表达式 3,执行 i+,i 为 3。循环条件 i=4 成立,进入第 3 次循环 第 3 次循环 执行 printf(%4d%4d,x1,x2);因此屏幕上输出 8 13 执行 if 语句。3%2 不为 0
35、,if 语句的条件表达式不成立,不执行printf(n);执行 x1=x1+x2=8+13=21;此时 x1 中的值已变为 21 执行 x2=x2+x1=21+13=34。转向表达式 3,执行 i+,i 为 4。循环条件 i=4 成立,进入第 4 次循环 第 2 次循环 执行 printf(%4d%4d,x1,x2);因此屏幕上输出 21 34 执行 if 语句。4%2=0,if 语句的条件表达式成立,执行 printf(n);换行 执行 x1=x1+x2=21+34=55;此时 x1 中的值已变为 55 执行 x2=x2+x1=34+55=89。转向表达式 3,执行 i+,i 为 5。循环条
36、件 i=4 不成立,结束循环 20#include main()int 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=12 21.#include#define N 4 main()int i,j;for(i=1;i=N;i+)for(j=1;ji;j+)printf();printf(*);printf(n);运行结果为:*详见教材 P41 符号常量 用宏处理指令定义符号常量N 为 4,在编译过程中,遇到N 即视为整数 4。外层 for 循环,表达式 1 为 i=1,表达式 2(循
37、环条件)为 i=N,表达式 3 为 i+内层 for 循环,表达式 1 为 j=1,表达式 2(循环条件)为 ji,表达式 3 为 j+首先计算外层循环的表达式1,i 为 1,使得循环条件 i=4 成立,进入外层 for 循环体 外层 for 循环第 1 次 此时 i 为 1 内层循环 j=1,使得循环条件 ji 不成立,因此不执行内层循环体(不输出空格)执行 printf(*);执行 printf(n);换行 至此外层循环体执行完,计算外层循环的表达式3,i+,此时 i 为 2.使得循环条件 i=4 成立,再次进入外层 for 循环体 外层 for 循环第 2 次 此时 i 为 2 内层循环
38、 j=1,使得循环条件 ji 成立 第 1 次执行内层循环体 printf();执行内层循环表达式 3,j+为 2,ji 不成立,跳出内层循环 执行 printf(*);执行 printf(n);换行 至此外层循环体执行完,计算外层循环的表达式3,i+,此时 i 为 3.使得循环条件 i=4 成立,进入外层 for 循环体 外层 for 循环第 3 次 此时 i 为 3 内层循环 j=1,使得循环条件 ji 成立 第 1 次执行内层循环体 printf();执行内层循环表达式 3,j+为 2,ji 成立,再次执行内层循环 第 2 次执行内层循环体 printf();执行内层循环表达式 3,j+
39、为 3,ji 不成立,跳出内层循环 执行 printf(*);执行 printf(n);换行 至此外层循环体执行完,计算外层循环的表达式 3,i+,此时 i 为 4.使得循环条件 i=4 成立,进入外层 for 循环体 外层 for 循环第 4 次 此时 i 为 4 内层循环 j=1,使得循环条件 ji 成立 第 1 次执行内层循环体 printf();执行内层循环表达式 3,j+为 2,ji 成立,再次执行内层循环 第 2 次执行内层循环体 printf();执行内层循环表达式 3,j+为 3,ji 成立,再次执行内层循环 第 3 次执行内层循环体 printf();执行内层循环表达式 3,
40、j+为 4,ji 不成立,跳出内层循环 执行 printf(*);执行 printf(n);换行 至此外层循环体执行完,计算外层循环的表达式 3,i+,此时 i 为 5.使得循环条件 i=4 不成立,跳出外层 for 循环体 数组 1.#include main()int i,a10;for(i=9;i=0;i-)ai=10-i;printf(“%d%d%d”,a2,a5,a8);运行结果为:852 详见 p143-146.例题 6.1 一定看懂!首先定义整型变量 i,整型数组 a,a 的长度为 10,即 a 中包含 10 个整型元素(整型变量)执行 for 循环语句 初值 i=9,使得循环条
41、件 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 次循环 执行 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
42、成立,继续执行循环体 第 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,使得循环条件 i=0 成立,继续执行循环体 第 8 次循环 执行 ai=10-i 等价于 a2=10-2=8 计算表达式 3,即 i-,i 为 1,使得循环条件 i=0 成立,继
43、续执行循环体 第 9 次循环 执行 ai=10-i 等价于 a1=10-1=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(%3d,ai);运行结果为:5 4 3 2 1 0 首先定义整型变量 i,整型数组 a,a 的长度为 6,即 a 中包含 6 个整型元素(整型变量)执行第一个 for 循环语句 初值 i=0,
44、使得循环条件 i6 成立,执行循环体 第 1 次循环 执行 ai=i 等价于 a0=0 计算表达式 3,即 i+,i 为 1,使得循环条件 i6 成立,继续执行循环体 第 2 次循环 执行 ai=i 等价于 a1=1 计算表达式 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 等价于 a
45、4=4 计算表达式 3,即 i+,i 为 5,使得循环条件 i6 成立,继续执行循环体 第 6 次循环 执行 ai=i 等价于 a5=5 计算表达式 3,即 i+,i 为 6,使得循环条件 i=0 成立,执行循环体 第 1 次循环 执行 printf(%3d,ai);即输出 a5的值 计算表达式 3,即 i-,i 为 4,使得循环条件 i=0 成立,继续执行循环体 第 2 次循环 执行 printf(%3d,ai);即输出 a4的值 计算表达式 3,即 i-,i 为 3,使得循环条件 i=0 成立,继续执行循环体 第 3 次循环 执行 printf(%3d,ai);即输出 a3的值 计算表达式
46、 3,即 i-,i 为 2,使得循环条件 i=0 成立,继续执行循环体 第 4 次循环 执行 printf(%3d,ai);即输出 a2的值 计算表达式 3,即 i-,i 为 1,使得循环条件 i=0 成立,继续执行循环体 第 5 次循环 执行 printf(%3d,ai);即输出 a1的值 计算表达式 3,即 i-,i 为 0,使得循环条件 i=0 成立,继续执行循环体 第 6 次循环 执行 printf(%3d,ai);即输出 a0的值 计算表达式 3,即 i-,i 为 6,使得循环条件 i=0 不成立,结束循环 3.#include main()int i,k,a10,p3;k=5;fo
47、r(i=0;i10;i+)ai=i;for(i=0;i3;i+)pi=ai*(i+1);for(i=0;i3;i+)k+=pi*2;printf(%dn,k);运行结果为:21 首先定义整型变量 i,k,整型数组 a,a 的长度为 10,整型数组 p,p 的长度为 3 k 初值为 5 第一个 for 循环语句为数组 a 进行初始化 执行完第一个 for 语句后,a0=0,a1=1,a2=2,a3=3,a4=4,a5=5,a6=6,a7=7,a8=8,a9=9 (循环过程略)第二个 for 循环语句为数组 p 进行初始化 初值 i=0,使得循环条件 i3 成立,执行循环体 第 1 次循环 执行
48、pi=ai*(i+1);即 p0=a0*(0+1)=a0=0 计算表达式 3,即 i+,i 为 1,使得循环条件 i3 成立,继续执行循环体 第 2 次循环 执行 pi=ai*(i+1);即 p1=a1*(1+1)=a2=2 计算表达式 3,即 i+,i 为 2,使得循环条件 i3 成立,继续执行循环体 第 3 次循环 执行 pi=ai*(i+1);即 p2=a2*(2+1)=a6=6 计算表达式 3,即 i+,i 为 3,使得循环条件 i3 不成立,结束循环 第三个 for 循环语句 初值 i=0,使得循环条件 i3 成立,执行循环体 第 1 次循环 执行 k+=pi*2;即 k=5+p0*
49、2=5+0=5 计算表达式 3,即 i+,i 为 1,使得循环条件 i3 成立,继续执行循环体 第 2 次循环 执行 k+=pi*2;即 k=5+p1*2=5+2*2=9 计算表达式 3,即 i+,i 为 2,使得循环条件 i3 成立,继续执行循环体 第 1 次循环 执行 k+=pi*2;即 k=9+p2*2=9+6*2=21 计算表达式 3,即 i+,i 为 3,使得循环条件 i3 不成立,结束循环 4.#include int m33=1,2,3;int n33=1,2,3;main()printf(“%d,”,m10+n00);printf(“%dn”,m01+n10);运行结果为:3,
50、0 详见教材 P149152,图 6.7 看懂!首先定义整型二维数组 m,m 为 3 行,3 列的二维矩阵,并对其以行的形式初始化 m00=1 m01=0 m12=0 m10=2 m11=0 m22=0 m20=3 m21=0 m22=0 定义整型二维数组 n,m 为 3 行,3 列的二维矩阵 n00=1 n01=2 n12=3 n10=0 n11=0 n22=0 n20=0 n21=0 n22=0 因此 m10+n00=2+1=3 m01+n10=0+0=0 5.#include main()int i;int x33=1,2,3,4,5,6,7,8,9;for(i=1;i3;i+)prin