1、2019 最新大学 C语言考试题(含答案)姓名成绩温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油!一单项选择题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、C语言程序总是
2、从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 8、下列四组字符串中都可以用作C语言程
3、序中的标识符的是(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 D)1 12若 int x=2,y=3,z=4
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是用户定义的结构体变量名35 语句 int*p;说明了
5、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 的正确定义和初始化。A)int p=*a;B)int*p=a;C)int p=&a
6、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);运行结果为:no 详见教材 p89 选择结构详见教材 p91 关系符号详见附录 D p378 符号的
7、优先级=表示判断符号两边的值是否相等;=表示将符号右边的值赋给左边的变量本题考点是选择结构3 种基本形式的第二种选择结构三种一般形式中的“语句”皆为复合语句,复合语句要用 括起来,只有当复合语句中只包括一条语句时可以省略 ,此题即如此,因此两个 printf操作没有加 若 c=a+b 成立,则执行printf(yesn);否则(即 c=a+b 不成立),执行printf(non);+的优先级高于=,因此先算a+b,值为 4,表达式 5=4 不成立,因此执行 printf(non);即输出字符串no 2.#include main()int a=12,b=-34,c=56,min=0;min=a
8、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 中的值12 大于-34,第一个 if语句的表达式成立,因此执行min=b;执行后 min中的值被更新为-34.-34 小于
9、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.是选择结构的第二种基本形式,在结构上视为一条语句。因此内层的if.else.作为第一个 if语句的复合语句。若表达式 xy 成立,则继续判断若 y=0),执行
10、 z=z+1;输出 z 2-1,表达式 xy 不成立,因此不执行内层的if else.进而 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 详见教材 p72 数据的输出形式本题包含了3 个 if语句,每个if语句后的 都不可省略,因为每个 中都包含了多条语句若表达式 ab 成立,则执行
11、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 拷贝,粘贴到a 中,覆盖掉先前的 3;第三句。将t 中的 3 拷贝到 c 中,覆盖掉c 中先前的 1.执行完复合语句后实现了a,c 元素的值的互换,a 为 1,c 为 3
12、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.else.语句的嵌套,第二if.else.作为第一个if.else.语句 else 部分的复合语句。若表达式 cd 成立,则执行c=5.0;否则(表达式cd 不成立)若表达
13、式 c=d 成立,则执行c=6.0;否则,执行c=7.0;输出 c 中的值3.0 小于 4.0,因此表达式cd 不成立,执行第二个if else。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=0)printf(%d is a positive evenn,m);else printf(%d is a positive oddn,m);else i f(m%2=0)printf(%d
14、 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成立的时候,执行循环体 num+;printf(%dn,num);中的语句。循环初值 num为 0;循环条件 num=2成立第 1 次循环:执行num+;即将 num中的值加 1,执行后 num为 1;执行 print
15、f(%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+;即将 num中的值加 1,执行后 num为 3;执行 printf(%dn,num);在屏幕上输出num中的值,即输出 3,之后换行此时 num中的值为 3,循环条件num=2不成立,结束循环。8#include main()int sum=1
16、0,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 中的值加 1,执行后 n 为 2;此时 n 中的值为 2,sum中的值为 9,循环条件n3 成立,继续执行循环第 2 次循环:执行sum=sum-n=9-2=7;执行 n+,即将 n 中的值加 1,执行后 n 为 3;输出此时 n,sum 中的值,即为3,7。需要注意,在
17、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);从键盘输入23,则运行结果为:3 2 详见教材 p117 循环结构;p60 复合的赋值运算符do while(表达式);先无条件执行循环体,再判断循环条件。注意while(表达式)后有分号定义整型变量num,c;为 num赋一个整型值;执行 c=num%10;printf(%d,c);直到
18、循环条件(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/=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()i
19、nt 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 不成立;已知为 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
20、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;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)put
21、char(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 详见教材 p120 for语句详见教材 p126128 break,continue语句for(表达式 1;表达式 2;表达式 3)(1)先求解表达式1 (2)求解表达式2,若其值为真,执行循环体,然后执行(3).若为假,则结束循环,转到(5)(3)求解表达式3 (4)转回上面 (2)继续执行(5)循环结束,执行for 语句下面的一个语句br
22、eak,跳出循环体;continue,结束本次循环(第i 次循环),继续执行下一次循环(第 i+1 次循环)此题表达式 1 为 x=1,表达式 2(循环条件)为x=10,表达式 3 为 x+初值 x 为 1,y 为 0,循环条件(即表达式2)x=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
23、2=3 转向表达式3,执行 x+,x=x+1=2+1=3。循环条件x=10 成立,进入第3 次循环第 3 次循环执行 if语句。3 小于 10,if语句的条件表达式不成立,不执行break;执行 y=y+x;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语句的条件表达
24、式成立,执行break,跳出循环。从 break 跳出至 for 语句的下一条语句。执行printf(“%d%d”,y,x);输出当前的y 与 x.结果为 10 5 14.#include 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
25、语句 n default :语句 n+1 其中表达式,常量1,常量 n 都为整型或字符型case 相当于给出执行程序的入口和起始位置,若找到匹配的常量,则从此处开始往下执行程序,不再匹配常量,直至遇到break 或 switch结束本题过程:首先从键盘接收一个字符A并将其放在变量ch 中。执行 switch语句。Switch 后面的条件表达式为ch,因此表达式的值即为字符 A.用字符 A依次与下面的 case 中的常量匹配。与第 1 个 case 后的常量匹配,则从其后的语句开始往下执行程序(在执行过程中不再进行匹配。)因此先执行printf(“%c”,A),屏幕上输出 A;再往下继续执行p
26、rintf(“%c”,B),屏幕上输出B;再继续执行 break,此时跳出 switch语句。15.#include main()int a=1,b=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 后的语句都不执行。执行d
27、efault后面的语句b=10;将 10 赋给变量 b。输出变量 b,结果为 10 16.#include main()_ char 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语句。
28、switch后面的条件表达式为grade,因此表达式的值即为字符 C.用字符 C依次与下面的 case 中的常量匹配。与第 3 个 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,自增自减符号此题
29、表达式 1 被省略,表达式2(循环条件)为y0,表达式 3 为 y-初值 y 为 9,循环条件(即表达式2)y0 成立,进入循环体第 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语
30、句。6%3=0,if语句的条件表达式成立,执行printf(%d”,-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-,
31、y=y-1=2-1=1。循环条件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,
32、x2);if(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=x2+x1=2
33、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,if语句的条件表达式不成立,不执行printf(n);执
34、行 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。循环条件i=4 不成立,结束循环20#include main()int x,y;for(x=3
35、0,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(循环条件)为i=N,表达式3 为 i+内层 for 循环,表达式1 为 j=1,表达式 2(循环条件)为ji
36、表达式 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 内层循环 j=1,使得循环条件ji成立第 1 次执行内层循环体printf();执行内层循环表达式3,j+为 2,ji不成立,跳出内层循环执行
37、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+为 3,ji不成立,跳出内层循环执行 printf(*);执行 printf(n);换行至此外层循环体执行完,计算外层循环的表达式3,i+,此时 i 为4.使得循环条件i=4 成立
38、进入外层for 循环体外层 for 循环第 4 次此时 i 为 4 内层循环 j=1,使得循环条件ji成立第 1 次执行内层循环体printf();执行内层循环表达式3,j+为 2,ji成立,再次执行内层循环第 2 次执行内层循环体printf();执行内层循环表达式3,j+为 3,ji成立,再次执行内层循环第 3 次执行内层循环体printf();执行内层循环表达式3,j+为 4,ji不成立,跳出内层循环执行 printf(*);执行 printf(n);换行至此外层循环体执行完,计算外层循环的表达式3,i+,此时 i 为5.使得循环条件i=4 不成立,跳出外层for 循环体数组1.#in
39、clude 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,使得循环条件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
40、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 成立,继续执行循环体第 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 成立
41、继续执行循环体第 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 成立,继续执行循环体第 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
42、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,使得循环条件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,即
43、i+,i 为 3,使得循环条件i6 成立,继续执行循环体第 4 次循环执行 ai=i 等价于 a3=3 计算表达式3,即 i+,i 为 4,使得循环条件i6 成立,继续执行循环体第 5 次循环执行 ai=i 等价于 a4=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(%
44、3d,ai);即输出 a4 的值计算表达式3,即 i-,i 为 3,使得循环条件i=0 成立,继续执行循环体第 3 次循环执行 printf(%3d,ai);即输出 a3 的值计算表达式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);即输出 a
45、0 的值计算表达式3,即 i-,i 为 6,使得循环条件i=0 不成立,结束循环3.#include main()int i,k,a10,p3;k=5;for(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=
46、9 (循环过程略)第二个 for 循环语句为数组p 进行初始化初值 i=0,使得循环条件i3 成立,执行循环体第 1 次循环执行 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 循环语句初
47、值 i=0,使得循环条件i3 成立,执行循环体第 1 次循环执行 k+=pi*2;即 k=5+p0*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,”,
48、m10+n00);printf(“%dn”,m01+n10);运行结果为:3,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
49、3,4,5,6,7,8,9;for(i=1;i3;i+)printf(%d ,xi3-i);运行结果为:6 8 首先按存储顺序为数组x 初始化x00=1 x01=2 x02=3 x10=4 x11=5 x12=6 x20=7 x21=8 x22=9 初值 i=1,使得循环条件i3 成立,执行循环体第 1 次循环执行 printf(%d ,xi3-i),打印出 xi3-i,即 x12的值计算表达式3,即 i+,i 为 2,使得循环条件i3 成立,继续执行循环体第 2 次循环执行 printf(%d ,xi3-i),打印出 xi3-i,即 x21的值计算表达式3,即 i+,i 为 3,使得循环条
50、件i3 成立,结束循环6.#include main()int n33,i,j;for(i=0;i3;i+)for(j=0;j3;j+)nij=i+j;printf(“%d ”,nij);运行结果为:0 1 2 1 2 3 2 3 4 循环变量 i 为 0,循环条件 i3成立,执行循环体外层 for 第 1 次循环相当于输出第1 行内层 for 循环 j 初值为 0,循环条件j3 成立,执行循环体内层 for 第 1 次循环执行 nij=i+j;即 n00=0+0=0;执行 printf(“%d ”,nij);执行内层循环表达式3,j+,j 为 1,j3 成立,继续执行内层循环体内层 for






