《2021年C语言练习题.pdf》由会员分享,可在线阅读,更多相关《2021年C语言练习题.pdf(96页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、读程序,写成果#include main()int a=l,b=4,c=6if(c=a+b)printf(truenH);elseprintf(falsen);)运行成果为:false=示意判断符号两边的值是否相等;=示意将符号右边的值赋给左边的变量本题考点是挑选结构3 种根基形式的第二种挑选结构三种一样形式中的“语句”皆为复合语句,复合语句要用 括起来,只有当复合语句中只包罗一条语句时可以省略 ,此题即如此,是以两个printf操纵没有加 若 c=a+b 成立,则执行 printf(truen);否 则(即 c=a+b不 成 立),执行printf(fn);+的 优 先 级 高 于 二=,是
2、 以 先 算a+b,值 为5,表 达 式5=6不成立,是以执行pri mf(“fa lse n”);即输出字符串 fa lse2.#i nc lud e ma i n()i nt a=1 2,b=-3 4,c=56,mi n=O;mi n=a;i f(mi n b)mi n=b;i f(mi n c)mi n=c;pri ntf(,m i n=%d,m i n);)运行成果为:mi n=-3 4本题考点是挑选结构3种根基形式的第一种一共包含了两个挑选结构(两个i f语句)定义变量,并赋值此时a=1 2,b=-3 4,c=56,mi n=O将 a 中值拷贝,赋给m in,覆盖了 m in中 的
3、0,此时m in中 的 值 被 更 新 为 12。若 minb成立,则执行min=b;若 minc成立,则执行min=c;输出m in中的值12大于.3 4,第一个if语句的表达式成立,是以执行min=b;执行后m in中的值被更新为-34.34小于5 6,第二个if语句的表达式不成立,是以不执行min二 c;末了输出m in中 的 值,为-34.3.#include main()int x=2,y=-1,z=5;if(xy)if(y0)z=0;elsez=z+l:printfT%dn”,z);运行成果为:5遇到挑选结构,起首要明白前提表达式成立时执行哪些操纵。本题中,第 一 个 i f 语句
4、,其后的复合语句没有大括号 ,说明复合语句中只包含一条语句,进而省略了 。内层的 if.else.是挑选结构的第二种根基形式,在 结 构 上 视 为 一 条 语 句。是以内层的 if.else.作为 第一个if语句的 复合语句。若表达式xvy成立,则继续判断若 y =0),执行z=z+l;输出z2 -1,表达式xy不成立,是以不执行内层的ifelse.进 而 z 中的值没有被改变。输出z 中 的 值 为 54.#include main()float a,b,c,t;a=3;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=
5、t;)printf(%5.2f,%5.2f,%5.2f;a,b,c);)运行成果为:1.00,2.00,7.00本题包含了 3 个 if语句,每个if语 句 后 的 都不可省略,因为每个 中都包含了多条语句若表达式ab成立,则执行t=a;a=b;b=t;)若表达式ac成立,则执行t=a;a=c;c=t;若表达式bc成立,则执行I=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
6、中 的 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.005.#include main()float c=3.0,d=4.0;if(cd)c=5.0;elseif(c=d)c=6.0;else c=7.0;printfC4
7、%.IfX n c);)运行成果为:7.0此 题 为 if.else.语句的 嵌套,第二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(n%dn,&m);if(
8、m=0)if(m%2=0)printf(M%d is a positive evenn,m);else prinlf(%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 odd7.#include main()int num=0;while(num=2)num+;printf(n%dnM,num);)运行成果为:3当循环前提n u m v=2成立的 时辰,执行循环体
9、n u m+;pri nlf(d n”,num);中的 语句。循环初值n u m为0;循环前提n u m =2成立第1次循环:执行num+;即将n u m中的 值 加1,执行后n u m为1;执行pri ntf(d n”,n u m);在 屏幕上 输出n u m中的 值,即输出1,之后换行此时n u m中的 值 为1,循环前提n u m =2成立第2此循环:执行n u m+唧 将n u m中 的 值 加1,执行后n u m为2;执行pri ntf(%d nn,n u m);在 屏 幕 上 输 出n u m中 的 值,即输出2,之后换行此时n u m中的 值 为2,循环前提n u m =2成立第
10、3此循环:执行num+;即将n u m中的 值 加1,执行后n u m为3;执行pri ntf(d n”,n u m);在 屏 幕 上 输 出n u m中 的 值,即输出3,之后换行此时n u m中 的 值 为3,循环前提n u m v=2不成立,结束循环。8.#i nc lud e ma i n()i nt sum=1 0,n=l;w hi le(n 3)sum=sum-n;n+;pri ntf(%d,%d”,n,sum);)运行成果为:3,7当循环前提n 3成立的时辰,执行循环体sum=sum-n;n+;中的语句。循环初值s u m为1 0,n为1;循环前提n 3成立第 1 次循环:执行
11、sum=sum-n=1 0-l=9;执行n+,即将n中 的 值 加1,执行后n为2;此时n中 的 值 为2,s u m中 的 值 为9,循环前提n 3成立,继续执行循环第2次循环:执行sum=sum-n=9-2=7;执行n+,即将n中 的 值 加1,执行后n为3;输出此时n,sum中 的 值,即 为 3,7。需要注重,在 printf(t%d,%d,n,sum);中要求输出的数据彼此间用逗号间隔,是以成果的两个数据间必然要有逗号9.#include main()int num,c;scanf(d,&num);do c=num%10;printf(d,c);while(num/=10)0);pr
12、intf(nn);)从键盘输入2 3,则运行成果为:32do while(表达式);先无前提执行循环体,再判断循环前提。注重while(表达式)后有分号定义整型变量num,c;为 num赋一个整型值;执行(c=num%10;printf(H%d,c);直到循环前提(num/=10)0 不成立;输出换行已知为n u m赋值2 3第1次执行循环体执行 c=n u m%1 0=2 3%1 0=3;执行 p r i m f(d”,c);输出 3判断循环前提1 1 1 1 1 1 1/=1 0等价于1 1 1 1 0 1=1 1皿/1 0;是以n u m=2 3/1 0=2,2大于0,是以循环前提(n
13、u m/=1 0)0成立,继续执行循环体。执行完第1次循环时,n u m为2,c为3第2次执行循环体执行 c=2%1 0=2;执行p r i n t f(n%dn,c);再输出2判断循环前提n u m=2/1 0=0,0等于0,是以循环前提(n u m/=1 0)0不成立。结束循环1 0#i n c l u d e m a i n()int s=0,a=5,n;scanf(n%dn,&n);do s+=l;a=a-2;while(a!=n);printf(n%d,%dnn,s,a);)若 输 入 的 值 1,运行成果为:2,1执行 s+=l;a=a-2;直到循环前提a!=n不成立;已知为n 赋
14、 值 l,s 为 0,a 为 5第 1 次执行循环体执行s+=l;等价于s=s+1=0+1执行 a=a-2;a=5-2=3判断循环前提,3 不等于1,是以循环前提a!=n成立,继续执行循环体。执行完第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,111.#include stdio.humain()chare;c=getchar();while(c!=,
15、?)putchar(c);c=getchar();)参加从键盘输入abede?fgh(回车)运行成果为:abede12.#include main()char c;while(c=getchar()!=$)if(Av=c&cv=Z)putchar(c);else if(av=c&cv=z)putchar(c-32);1当输入为ab*AB%cd#CD$时;运行成果为:ABABCDCD13.#include main()int x,y=0;for(x=1 ;x=I0)break;y=y+x;)printf(d%d”,y,x);运行成果为:10 5for(表达式1;表达式2;表达式3)(1)先求解表
16、达式1(2)求解表达式2,若其值为真,执行循环体,然后执行(3).若 为 假,则结束循环,转到(5)(3)求解表达式3(4)转 回 上 面 继 续 执 行(5)循环结束,执行for语句下面的一个语句break,跳出循环体;continue,结束本次循环(第i次 循 环),继续执行下一次循环(第i+1次循环)此 题 表 达 式1为x=l,表达式2(循 环 前 提)为x =1 0,表达式3为x+初值x为1,y为0,循环前提(即表达式2)x=10成立,进入循环体第1次循环执行if语句。0小 于10,if语句的前提表达式不成立,不执行break;执行 y=y+x;y=O+l=l转向表达式3,执行x+,
17、x=x+l=l+l=2。循环前提x=10成立,进入第2 次循环第 2 次循环执行if 语句。1小 于 10,if 语句的前提表达式不成立,不执行break;执行 y=y+x;y=l+2=3转向表达式3,执行x+,x=x+l=2+l=3。循环前提x=10成立,进入第3 次循环第 3 次循环执行if 语句。3 小 于 10,if 语句的前提表达式不成立,不执行break;执行 y=y+x;y=3+3=6转向表达式3,执行x+,x=x+l=3+l=4。循环前提x=10成立,进入第4 次循环第 4 次循环执行if 语句。6 小 于 10,if 语句的前提表达式不成立,不执行break;执行 y=y+x
18、;y=6+4=10转向表达式3,执行x+,x=x+l=4+l=5。循环前提x=10成立,进入第5 次循环第 5 次循环执行if语句。10等 于 10,if语句的前提表达式成立,执行b re a k,跳出循环。从 break跳出至for语句的 下一条语句。执行printff4%d%d y,x);输出当前的y 与 x.成 果 为 10 514.#includemain()char ch;ch=getchar();switch(ch)case W :printf(c,A);case,B:printfT%c,B);break;default:printf(u%sn,othef,);)当从键盘输入字母A
19、 时,运行成果为:ABswitch(表达式)c a s e 常 量 1 :语 句 1c a s e 常量2:语句2 1 c a s e 常量n:语句ndefault:语句 n+1其中表达式,常 量 1,常量n 都为整型或字符型case相当于给出执行程序的入口和起始位置,若找到匹配的常量,则从此处最先往下执行程序,不再匹配常量,直至遇到break或 switch结束本题过程:起首从键盘接收一个字符,A,并将其放在变量ch 中。执 行 switch语句。Switch背面的前提表达式为c h,是以表达式的值即为字符,A,用字符A,依 次 与 下 面 的 case中的常量匹配。与 第 1 个 case
20、后的常量匹配,则从其后的语句最先往下执行程序(在执行过程中不再进行匹配。)是 以 先 执 行 printf(c”,A,),屏 幕 上 输 出 A;再往下继续执行printf(c”,B),屏幕上 输出B;再继续执行break,此时跳出switch语句。15.#include main()int a=l,b=0;scanf(u%d,&a);switch(a)case 1:b=l;break;case 2:b=2;break;default:b=10;printf(n%dn,b);)若键盘输入5,运行成果为:10本题过程:起首用scanf函数为变量a 赋 值 为 5。执行switch语句。switc
21、h背面的前提表达式为a,是以表达式的值即为5.用 5 依次与下面case中的常量匹配。没有找到匹配的常量,是以两个case后的语句都不执行。执行default背面的 语句b=10;将 10赋给变量b。输出变量b,成 果 为 1016.#include main()_ char grade=,C,;switch(grade)case A:p rW 9 0100n”);case B:printf(“80-90n);case C:printf(“7080n);case,D:printf(“60-70rT);break;case E:printf(“60rT);default:printfC4eror
22、!n);运行成果为:70-8060-70本题过程:起首从键盘接收一个字符C 并将其放在变量grade中。执行switch语句。switch背面的前提表达式为grade,是以表达式的值即为字符C.用字符C 依 次 与 下 面 的 case中的常量匹配。与第3 个 case后的常量匹配,则从其后的语句最先往下执行程序(在执行过程中不再进行匹配。)是以先执行printf(“70-80n);,屏 幕 上 输 出 70-80,并换行;再往下继续执行printf(“60-70n”),屏幕上 输出6 0-7 0,并换行;再继续执行break,此时跳出switch语句。17.#include main()in
23、t y=9;for(;y0;y-)if(y%3=0)printf(%d,-y);)运行成果为:852此 题 表 达 式 1被省略,表达式2(循 环 前 提)为 y 0,表达式3 为 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=7。循环前提y0成立,进入第2 次循环第 2 次循环执行if 语句。7%3不 为 0,if 语句的前提表达式不成立,不执行printf(%d,-y)转向表
24、达式3,执行y-,y=y-l=7-l=6。循环前提y0成立,进入第3 次循环第 3 次循环执行if 语句。6%3=0,if 语句的前提表达式成立,执行printft%d”,-y),即 y 先自减1变 为 5,然后在输出,是以屏幕上输出5转向表达式3,执行y,y=y-l=5-l=4o循环前提y0成立,进入第4 次循环第 4 次循环执行if语句。4%3不 为 0,if语句的前提表达式不成立,不执行printf(%d,.y)转向表达式3,执行y-,y=4-l=3 o 循环前提y0成立,进入第5 次循环第 5 次循环执行if语句。3%3=0,if语句的前提表达式成立,执行printf(%d,y),即
25、y 先自减1变 为 2,然后在输出,是以屏幕上输出2转向表达式3,执行y,y=y-l=2-l=lo循环前提y0成立,进入第5 次循环第 6 次循环执行if语句。1%3不 为 0,if语句的 前提表达式不成立,不执行printf(%d,-y)转向表达式3,执行y-,y=l-l=0 o 循环前提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(nn)
26、;for(i=l;i=N;i+)printf(4d%4d”,xl,x2);if(i%2=0)printf(nnn);xl=xl+x2;x2=x2+xl;运行成果为:1 2 3 58 13 21 34此题起首为整型变量赋初值xl=l,x2=2表达式1为i=l,表达式2(循 环 前 提)为i=N即i=4,表达式3为i+循环变量初值i为1,循环前提(即表达式2)i=4成立,进入第1次循环第1次循环执行printf(%4d%4d,xl,x2);是以屏幕上 输 出1 2执行i f语句。1%2不 为0,if语句的前提表达式不成立,不执行printf(n);执行xl=xl+x2=l+2=3;此时x l中的
27、值已变为3执行 x2=x2+xl=2+3=5。转向表达式3,执行i+,i为2。循环前提i=4成立,进入第2次循环第2次循环执行printf(%4d%4d,xl,x2);是以屏幕上 输出3 5执行if语句。2%2=0,i f语句的前提表达式成立,执行printf(n);换行执行xl=xl+x2=3+5=8;此时x l中的 值已变为8执行 x2=x2+xl=5+8=13。转向表达式3,执行i+,i为3。循环前提i=4成立,进入第3次循环第3次循环执行printf(%4d%4d,xl,x2);是以屏幕上 输 出8 13执行i f语句。3%2不 为0,if语句的 前提表达式不成立,不执行printf(
28、n);执行xl=xl+x2=8+13=21;此时x l中 的 值 已 变 为21执行 x2=x2+x 1=21+13=34。转向表达式3,执行i+,i为4。循环前提i=4成立,进入第4次循环第2次循环执行printf(%4d%4d,x l,x 2);是以屏幕上 输出21 34执行i f语句。4%2=0,i f语句的前提表达式成立,执行printf(n);换行执行xl=xl+x2=21+34=55;此时x l中的 值已变为55执行 x2=x2+x 1=34+55=89。转向表达式3,执行i+,i为5。循环前提i=4不成立,结束循环20#include main()int x,y;for(x=30
29、,y=0;x=10,y10;x-y+)x/=2,y+=2;printffx=%d,y=%dn”,x,y);)运行成果为:x=0,y=1221.#include#define N 4main()int i,j;for(i=l;i=N;i+)for(j=l;ji;j+)printf();printf(H*M);printf(,nn);)运行成果为:*用宏处理指令定义符号常量N 为 4,在编译过程中,遇到N 即视为整数4。外层for循环,表达式1 为 i=l,表达式2(循环前提)为 i=N,表达式3 为i+内层for循环,表达式1为 j=l,表达式2(循环前提)为 ji,表达式3 为 j+起首计算外
30、层循环的表达式1,i 为 1,使得循环前提i=4成立,进入外层for循环体外层for循环第1 次 此时i 为 1内层循环j=l,使得循环前提j i不成立,是以不执行内层循环体(不输出空格)执行 printf(*);执行 printf(n);换行至此外层循环体执行完,计算外层循环的表达式3,i+,此 时i为2.使得循环前提i =4成立,再次进入外层f o r循环体外层f o r循环第2次 此 时i为2内层循环j=l,使得循环前提j i成立第1次执行内层循环体p r i n t f();执行内层循环表达式3,j+为2,j i不成立,跳出内层循环执行 p r i n t f C*);执行 p r i
31、 n t f(n );换行至此外层循环体执行完,计算外层循环的表达式3,i+,此 时i为3.使得循环前提i =4成立,进入外层f o r循环体外层f o r循环第3次 此时i为3内层循环j=l,使得循环前提j i成立第1次执行内层循环体p r i n t f();执行内层循环表达式3,j+为2,j i成立,再次执行内层循环第 2 次执行内层循环体printf();执行内层循环表达式3,j+为 3,j i不成立,跳出内层循环执行 printfC*);执行 printf(n);换行至此外层循环体执行完,计算外层循环的表达式3,i+,此 时 i 为 4.使得循环前提i=4成立,进入外层for循环体外
32、层for循环第4 次 此 时 i 为 4内层循环j=l,使得循环前提j i成立第 1 次执行内层循环体printf();执行内层循环表达式3,j+为 2,j i成立,再次执行内层循环第 2 次执行内层循环体printf();执行内层循环表达式3,j+为 3,j i成立,再次执行内层循环第 3 次执行内层循环体printf();执行内层循环表达式3,j+为 4,j i不成立,跳出内层循环执行 printfC*);执行 printf(n);换行至此外层循环体执行完,计算外层循环的表达式3,i+,此 时 i 为 5.使得循环前提i=4不成立,跳出外层for循环体21.#include main()i
33、nt i,a10;for(i=9;i=0;i-)ai=10-i;printf(d%d%d,a2,a5,a8);运行成果为:852起首定义整型变量i,整型数组a,a 的 长 度 为 1 0,即 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 次循环执行 ai=10-i
34、等价于 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 为
35、2,使得循环前提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不成立,跳出循环体22.#i n c l u d e m a i n()i n t i,a 6 ;f o r (i=0;i=0 ;i-)p r i n t f(%3 d
36、,a i );)运行成果为:5 4 3 2 1 0起首定义整型变量i,整型数组a,a的 长 度 为6,即a中包含6个整型元素(整型变量)执行第一个f o r循环语句初值i=0,使得循环前提i 6成立,执行循环体第1次循环执行a|i l=i等价于a|0|=0计算表达式3,即i+,i为1,使得循环前提i 6成立,继续执行循环体第2次循环执行a i =i等价于a l =l计算表达式3,即i+,i为2,使得循环前提i6成立,继续执行循环体第3次循环执行ai=i等价于a2=2计算表达式3,即i+,i为3,第4次循环执行a i=i等价于a3=3计算表达式3,即i+,i为4,第5次循环执行ai=i等价于a4
37、=4计算表达式3,即i+,i为5,第6次循环执行ai=i等价于a5=5计算表达式3,即i+,i为6,使得循环前提i6成立,使得循环前提i6成立,使得循环前提i6成立,继续执行循环体继续执行循环体继续执行循环体使得循环前提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的 值计算表达式
38、3,即 i,i 为 2,使得循环前提i=0成立,继续执行循环体第 4 次循环执行printf(%3d,ai);即输出a的 值计算表达式3,即 i-,i 为 1,使得循环前提i=0成立,继续执行循环体第 5 次循环执行 printf(%3d”,ai);即输出 al的 值计算表达式3,即 i,i 为 0,使得循环前提i=0成立,继续执行循环体第 6 次循环执行 printf(%3d,ai);即输出 a0的 值计算表达式3,即 i-,i 为 6,使得循环前提i=0不成立,结束循环23.#include main()int i,k,a10,p3;k=5;for(i=0;i10;i+)ai=i;for(
39、i=0;i3;i+)pi=ai*(i+l);for(i=0;i3;i+)k+=pi*2;printf(n%dnM,k);)运行成果为:21起首定义整型变量i,k,整型数组a,a 的 长 度 为 1 0,整型数组p,p 的 长 度 为 3k 初 值 为 5第一个for循环语句为数组a 进行初始化执行完第一个 for 语句后,a0=0,al=l,a2=2,a|3=3,a4=4,a5=5,a6=6,a7=7,a8=8,a9=9(循环过程略)第二个f o r循环语句为数组p进行初始化初值i=0,使得循环前提i 3成立,执行循环体第1次循环执行 p i =a i*(i+l);即 p LO J=a O*(
40、O+l)=a 0 =0计算表达式3,即i+,i为1,使得循环前提i 3成立,继续执行循环体第2次循环执行 p i =a i*(i+l);即 p l =a l*(l+l)=a 2 =2计算表达式3,即i+,i为2,使得循环前提i 3成立,继续执行循环体第3次循环执行 p i =a i*(i+l)J;即 p 2 =a 2*(2+l)=a 6 J=6计算表达式3,即i+,i为3,使得循环前提i 3不成立,结束循环第三个f o r循环语句初值i=0,使得循环前提i 3成立,执行循环体第1次循环执行 k+=p i *2;即 k=5+p f 0 *2=5+0=5计算表达式3,即i+,i为1,使得循环前提i
41、 3成立,继续执行循环体第 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+6*2=21计算表达式3,即 i+,i 为 3,使得循环前提i3不成立,结束循环24.#include int m33=l,2,3);int n33=l,2,3);main()printf(%d,,mlO+nOO);printf(%dn,mOl+nlO);)运行成 果 为:3,0起首定义整型二维数组m,m为3行,3列的二维矩阵,并对其以行的形式初始化m O O =l m
42、 O l =Om l =0m l (0 =2 m|l l =0m 2 2 =0m 2 0 =3 m 2 l =0m =0定义整型二维数组n,m为3行,3列的二维矩阵n 0 0 =l n 0 l =2n l 2 =3n l 0 =0 n l l =0n 2 2 =0n 2 0 =0 n 2 l =0n 2 2 =0是以m l 0 +n 0 0 =2+l=3m 0 l +n l 0 =0+0=02 5.#i n c l u d e m a i n()i n t i;i n t x 3 3 =l,2,3,4,5,6,7,8,9);f o r (i=l;i 3;i+)p r i n t f(n%d”,
43、x i 3-i );)运行成果为:6 8起首按存储次序为数组x初始化x 0 0 =l x 0 l =2 x 0 2 =3x l 0 =4 x l l =5 x l 2 =6x 2 0 =7 x 2 l =8 x 2 2 =9初值i=l,使得循环前提i 3成立,执行循环体第1次循环执行 p r i n t f(%d ,x i 3-i ),打印出 x i 3-i ,即 x l 的 值计算表达式3,即i+,i为2,使得循环前提i 3成立,继续执行循环体第2次循环执行 p r i n t f(%d ,x i 3-i ),打印出 x i 3-i ,即 x 的 值计算表达式3,即i+,i为3,使得循环前提
44、i 3成立,结束循环26.#include main()intn33,i,j;for(i=0;i3;i+)for(j=0;j3;j+)nij=i+j;printf(d,nij);)运行成果为:0 1 21 2 32 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第 2 次循环执行 nij=i+j;即
45、n =0+1=1;执行 printf(d,nij);执行内层循环表达式3,j+,j 为 2,j3成立,继续执行内层循环体内层for第 3 次循环执行 nij=i+j;即 n =0+2=2;执行 printf(d,ni0);执行内层循环表达式3,j+,j 为 3,j3不成立,结束内层循环执行 printf(n”);执行外层for语句的表达式3,i+,i 为,1,i3成立,继续执行外层循环体外层for第 2 次循环 相当于输出第2 行内层for循环j 初 值 为 0,循环前提j3成立,执行循环体内层for第 1 次循环执行 nij=i+j;B P nl0=l+0=l;执行 printf(d ,ni
46、j);执行内层循环表达式3,j+,j 为 1,j3成立,继续执行内层循环体内层for第 2 次循环执行 nij=i+j;即 nll=l+l=2;执行 printf(d,ni0);执行内层循环表达式3,j+,j 为 2,j3成立,继续执行内层循环体内层for第 3 次循环执行 nij=i+j;即 nl=1+2=3;执行 printf(d,nij);执行内层循环表达式3,j+,j 为 3,j3不成立,结束内层循环执行 printf(n”);执行外层for语句的表达式3,i+,i 为,1,i3成立,继续执行外层循环体外层for第 2 次循环 相当于输出第3 行内层for循环j 初 值 为 0,循环前
47、提j3成立,执行循环体内层for第 1 次循环执行 nij=i+j;即 n =2+0=1;执行 printf(d,nij):执行内层循环表达式3,j+,j 为 1,j3成立,继续执行内层循环体内层for第 2 次循环执行 nij=i+j;即 n 1=2+1=2;执行 printf(d”,ni0);执行内层循环表达式3,j+,j 为 2,卜3 成立,继续执行内层循环体内层for第 3 次循环执行 nij=i+j;即 n =2+2=3;执行内层循环表达式3,j+,j 为 3,j3不成立,结束内层循环执行 printf(“n);执行外层for语句的表达式3,i+,i 为,3,i3不成立,结束外层循环
48、27.#include main()char diamond5=I,*,1,*,(,*,*,),*,*,*,i ,一,一,i,i _,int i,j;for(i=0;i5;i+)(for(j=0;j5y+)printf(c”,diamondij);printf(n”);)注:“一”代表一个空格。运行成果为:*28.#include main()int i,f10;for(i=2;i10;i+)fi=fIi-2+tIi-l;for(i=0;i10;i+)if(i%4=0)printf(“n);printf%d”,fi);)运行成果为:1 1 2 35 8 13 2134 5529.#includ
49、e stdio.hfunc(int b)int j;for(j=0;j4;j+)bUl=j;)main()int a4,i;func(a);for(i=0;i4;i+)printf(2d”,ai);)运行成果为:0 123定义函数func函数头:未定义函数的类型,则系统默认为int型。函数func的形参为整型数组名,即只接收整型数组地址。函数体:定义整型变量j循环变量初值(表 达 式1)j=0,使 得 循 环 前 提(表达式2)j 4成立,执行循环体第1次循环执行 b j =j;即 b 0=0;执行循环变量自增(及表达式3)j+,j为1,使 得j 4成立,继续执行循环体第2次循环b l =l;
50、j+,j为2,使 得j 4成立,继续执行循环体第3次循环b =2;j+,j为3,使得卜4成立,继续执行循环体第4次循环b 3 =3;j+,j为4,使 得j 4不成立,结束循环m a i n函数:定义整型变量i 和数组a,其长度为4,func(a);示意调用函数fu n c,并以数组名a 作为调用的实参(数组名在C 语言中示意数组所在内存空间的首地址,在 以 数 组 名 作 为 实 参 时,形介入实参公用存储空间,是以对数组b 的 操 纵,即对数组a 的 操 纵。)30.#include main()float fun(float x);float ave,a3=4.5,2,4;ave=fun(