还剩57页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
大学语言考试题及答案2025Celse printf%d is a negative odd\n m;}f若键入-,则运行结果为・99is a negativeodd
7.#include stdio.h mainO{int num=0;%whilenum=2{num++;printf d\rT,num;}运行结果为123详见教材循环结构pll5当循环条件num=2成立的时候,执行循环体{num++;pr i ntf%d\nH,num;}中的语句循环初值num为0;循环条件num=2成立第1次循环执行num++;即将num中的值加1,执行后num为1;执行pr intf%d\rT,num;在屏幕上输出num中的值,即输出1,之后换行此时num中的值为1,循环条件num=2成立第2此循环执行num++;即将num中的值加1,执行后num为2;执行pr intf%d\n”,num;在屏幕上输出num中的值,即输出2,之后换行此时num中的值为2,循环条件num=2成立第3此循环执行num++;即将num中的值加1,执行后num为3;执行pr intf%d\n,num;在屏幕上输出num中的值,即输出3,之后换行此时num中的值为3,循环条件num〈二2不成立,结束循环8,#include stdio.h main{int sum=10n=l;fwhilen3{sum=sum-n;n++;}printf/f%d%d/r n sum;f f f运行结果为37f当循环条件n3成立的时候,执行循环体{sum=sum-n;n++;}中的语句循环初值sum为10,n为1;循环条件水3成立第1次循环执行sum二sum-『10-1二9;执行n++,即将n中的值加1,执行后n为2;此时n中勺值为2,sum中的值为9,循环条件水3成立,继续执行循环第2次循环执行surrFsum-n=9-2=7;执行n++,即将n中的值加1,执行后n为3;输出此时n,sum中的值,即为3,7需要注意,在pr intf%d,%d,n,sum;中要求输出的数据彼此间用逗号间隔,因此结果的两个数据间一定要有逗号
9.#include stdio.h mainO{int numc;scanf%d”,num;fdo{c=num%10;printfl,%dc;}whilenum/=100;fprintfCAn;从键盘输入,则运行结果为2332num=0详见教材循环结构;复合的赋值运符pll7p60表达式;do{}while先无条件执行循环体,再判断循环条件注意表达式后有分号while定义整型变量num,c;为num赋一个整型值;执行{c=num%10;printfn%dH,c;}直到循环条件num/=100不成立;输出换行已知为num赋值23第1次执行循环体执行c=num%10=23%10=3;执行pr intf“%d”,c;输出3判断循环条件num/=10等价于num=num/10;因此num=23/10=2,2大于05因此循环条件num/=100成立,继续执行循环体执行完第1次循环时,num为2,c为3第2次执行循环体执行c=2%10=2;执行printf“%dc;再输出2判断循环条件num=2/10=0,0等于0,因此循环条件num/nO0不成立结束循环10#include stdio.h mainO%{int s=0,a=5,n;scanf”cT,n;do{s+=l;a=a-2;}whilea!=n;printfM%d,%d\nsa;f f若输入的值,运行结果为12,1详见教材循环结构;复合的赋值运符pll7p60执行{S+=1;a=a-2;}直到循环条件a!二n不成立;已知为n赋值1,s为0,a为5第1次执行循环体执行s+口;等价于s=s+仁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判断循环条件J等于1,因此循环条件a!二n不成立,结束循环执行完第2次循环时,s为2,a为1输出此时S,a中的值,结果为2,111/include stdio.h main{char c;c=getchar;whilec!=,{putcharc;c=getchar;}如果从键盘输入问车abcdefgh运行结果为abcde12#include stdio.h mainO{char c;whilec=getcharO!=f${玳T TV=cc=putcharc;else if宣=cc=fzr putcharc-32;}当输入为^刖%改口$日寸,运行结果为«ABABCDCD
13.#include stdio.h mainO{int x y=0;forx=l;x=10;x++f{ify=iobreak;y=y+x;printf%d%d”,y,x;}运行结果为105详见教材语句pl20for详见教材pl26〜128break,continue语句for表达式1;表达式2;表达式3先求解表达式11求解表达式,若其值为真,执行循环体,然后执行若为假,则结束循环,转到
223.5求解表达式33转上面继续执行42循环结束,执行语句下面的一个语句5for,跳出循环体;结束本次循环第次循环,继续执行下一次循环第次循环break continue,i i+1回此题表达式1为x=1,表达式2循环条件为XU10,表达式3为X++初值X为1,y为0,循环条件即表达式2x*10成立,进入循环体第1次循环执行if语句小于10,if语句的条件表达式不成立,不执行break;执行尸y+x;尸0+1=1转向表达式3,执行x++,=x+1=1+1=2循环条件x=10成立,进入第2次循环x第2次循环执行if语句1小于10,if语句的条件表达式不成立,不执行break;执行尸y+x;尸1+2=3转向表达式3,执行x++,x=x+1=2+1=3循环条件x=10成立,进入第3次循环第3次循环执行if语句3小于10,if语句的条件表达式不成立、不执行break;执行尸y+x;y=3+3=6转向表达式3,执行x++,x=x+1=3+1=4循环条件xU10成立,进入第4次循环第4次循环执行if语句6小于10,汗语句的条件表达式不成立,不执行break;执行y=y+x;y=6+4=10转向表达式3,执行x++,x=x+1=4+1=5循环条件x*10成立,进入第5次循环第5次循环执行if语句10等于10,汗语句的条件表达式成立,执行break,跳出循环°从break跳出至for语句的下一条语句执行pr intf%d%d”,y,x;输出当前的y与x.结果为
10514.#includestdio.hmain{char ch;ch=getchar;switch ch{case A:printf n%cn A;case B:printf u%cn/Bf;break;default:printf f/%s\nffother;}}当从键盘输入字母寸,运行结果为8AB详见教材,语句pl03switch表达式switch常量:语句{case11常量:语句case22常量:语句case n n:语句default n+1其中表达式,常量,…,常量都为整型或字符型1n相当于给出执行程序的入口和起始位置,若找到匹配的常量,则从此处开始往下执行程序,不case再匹配常量,直至遇到或结束break switch本题过程首先从键盘接收一个字符A并将其放在变量ch中执行switch语句Switch后面的条件表达式为ch,因此表达式的值即为字符A.用字符5A依次与下面的case中的常量匹配与第1个case后的常量匹配,则从其后的语句开始往下执行程序在执行过程中不再进行匹配因此先执行printf“%c,A,屏幕上输出A;再往下继续执行pr i ntf“%/,B,屏幕上输出B;再继续执行break,此时跳出switch语句
15.#include stdio.h main{int a=l b=O;fscanf x/%d/f,a;switcha{case1:b=l;break;case2:b=2;break;default:b=10;}printfM%db;f若键盘输入,运行结果为510本题过程首先用scanf函数为变量a赋值为5执行switch语句switch后面的条件表达式为a,因此表达式的值即为
5.用5依次与下面case中的常量匹配没有找到匹配的常量,因此两个case后的语句都不执行执行default后面的语句b=10;将10赋给变量b输出变量b,结果为
1016.#include stdio.h main0_二{char gradeC;switch gradecaseTV:printf//90-100\n f;〃〃case B:printf80-90\n;〃・〃case C:printf7080\n;・case D:printf“6070n;break;case D:printf v60\rT;default:printf error!\n;运行结果为70-8060-70本题过程首先从键盘接收一个字符c并将其放在变量grade中执行switch语句switch后面的条件表达式为grade,因此表达式的值即为字符C,用字符5C依次与下面的case中的常量匹配与第3个case后的常量匹配,则从其后的语句开始往下执行程序在执行过程中不再进行匹配因此先执行printf“70-80\n”;,屏幕上输出70-80,并换行;再往下继续执行pr intf%0-70\rT,屏幕上输出60-70,并换行;再继续执行break,此时跳出switch语句
17.#include stdio.h mainO{int y=9;for;y0;y--ify%3==0{printf%d,f--y;f运行结果为852详见教材,自增自减符号p53此题表达式1被省略,表达式2循环条件为y0,表达式3为y—初值y为9,循环条件即表达式2y0成立,进入循环体第1次循环执行if语句9%3=0,汗语句的条件表达式成立,执行printf%d“-y,即y先自减1变为8,然后在输出,因此屏幕上输出8转向表达式3,执行y--,y=y-1=8-1=7循环条件y0成立,进入第2次循环第2次循环执行if语句7%3不为0,汗语句的条件表达式不成立,不执行prin%d-口转向表达式3,执行y--,y=y-1=7-1=6循环条件y0成立,进入第3次循环第3次循环执行if语句6%3=0,汗语句的条件表达式成立,执行printf%d-y,即y先自减1变为5,然后在输出,因此屏幕上输出5转向表达式3,执行y--,y=y-1二5-1=4循环条件y0成立,进入第4次循环第4次循环执行if语句4%3不为0,汗语句的条件表达式不成立,不执行printf%d”,--y转向表达式3,执行y,y二47二3循环条件y0成立,进入第5次循环第5次循环执行if语句3%3=0,if语句的条件表达式成立,执行printf(%d”,--y),即y先自减1变为2,然后在输出,因此屏幕上输出2转向表达式3,执行y--,y=y7=27=1循环条件y0成立…进入第5次[摩不第6次循环执行if语句1%3不为0,汗语句的条件表达式不成立,不执行printf(%d”,--y)转向表达式3,执行y--,y=1-1=0循环条件y0不成立5循环结束
18.#include stdio.h mainO{int i sum=O;i=l;f()()do{sum=sum+i;i++;}while i=10;printf sum;f)运行结果为
5519.#include stdio.h#define N4main{int i;int xl=l x2=2;printfCXn;fori=l;i=N;i++f{printfl,%4d%4dll xl x2;ifi%2==0printfCXn;xl=xl+x2;x2=x2+xl;f f运行结果为12358132134此题首先为整型变量赋初值x1=1,x2=2表达式1为i=1,表达式2(循环条件)为iUN即i*4,表达式3为i++循环变量初值i为1,循环条件(即表达式2)i04成立,进入第1次循环第1次循环执行pr intf”%4d%4d“,x1,x2;因此屏幕上输出12执行if语句1%2不为0,汗语句的条件表达式不成立,不执行printf”\n;执行x1=x1+x2=1+2=3;此时x1中的值已变为3执行x2=x2+x1=2+3=5转向表达式3,执行i++,i为2循环条件i=4成立,进入第2次僻第次循执行pr in”%4d%4d”,x1,x2;因此屏幕上输出35执行if语句2%2=0,if语句的条件表达式成立,执行顺执行乂1内1+乂2=3+5=8;printf\iT此时乂1中的值已变为8执行x2=x2+x1=5+8=13转向表达式3,执行i++.i为3循环条件i=4成立,进入第3次循悖次循执行pr intf”%4d%4d”,x1,x2;因此屏幕上输出813执行if语句3%2不为0,汗语句的条件表达式不成立,不执行prin”\n;执行x1=x1+x2=8+13=21;此时x1中的值已变为21执行乂2内2+乂1=21+13=34转向表达式3,执行i++,i为4循环条件i=4成立,进入第4次管像次循执行pr intf“%4d%4d”,x1,x2;因此屏幕上输出2134执行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 stdio.h main{int x y;fforx=30y=0;x=10y10;x—y++x/=2y+=2;f f f f〃,printf x=%d,y=%d\n x,y;运行结果为x=0y=12f
21.#include stdio.h#define N4main{int i j;fori=l;i=N;i++f{forj=l;ji;j++printf;printfC1*11;printfCAn;}运行结果为***详见教材符号常量P41用口处理指令定义符号常量N为4,在编译过程中,遇到N即视为整数4外层for循环,表达式1为in,表达式2循环条件为i=N,表达式3为i++内层for循环,表达式1为,表达式2循环条件为卜1,表达式3为j++首先计算外层循环的表达式1,i为1,使得循环条件i=4成立,进入外层for循环体外层for循环第1次此时i为1内层循环户1,使得循环条件Ji不成立,因此不执行内层循环体不输出空格执行printf”*“;执行printf”\n”;换行至此外层循环体执行完,计算外层循环的表达式3,i++,此时i为2,使得循环条件i*4成立,再次进入外层for循环体外层for循环第2次此时i为2内层循环/1,使得循环条件卜i成立第1次执行内层循环体printf”;执行内层循环表达式3,j++为2,卜i不成立,跳出内层循环执行pr intf“*;执行printf”\n”;换行至此外层循环体执行完,计算外层循环的表达式3,i++,此时i为
3.使得循环条件i04成立,进入外层干「循环体外层for循环第3次此时i为3内层循环,使得循环条件卜i成立第1次执行内层循环体printf“”;执行内层循环表达式3,j++为2,ki成立,再次执行内层循环第2次执行内层循环体printf”;执行内层循环表达式3,j++为3,ki不成立,跳出内层循环执行printf“*”;执行printf”\n”;换行至此外层循环体执行完,计算外层循环的表达式3,i++,此时i为
4.使得循环条件iU4成立,进入外层for循环体一单项选择题
1.在C语言中,以_D_作为字符串结束标志A\n BCO D\O
2.下列数据中属于“字符串常量”的是A A.a”B.{ABC}C.abc\O D.a若干个字符构成字符串在C语言中,用单引号标识字符;用双引号标识字符串选项B,C,分别用{}和标识字符串选项D,标识字符
3、以下说法中正确的是C A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main函数中定义C、C语言程序总是从main函数开始执行D、C语言程序中的main函数必须放在程序的开始部分
4.下列关于C语言的说法错误的是B OAC程序的工作过程是编辑、编译、连接、运行B C语言不区分大小写C C程序的三种基本结构是顺序、选择、循环D C程序从ma in函数开始执行
5.下列正确的标识符是C A.-a1B.a[i]C.a2_i Dj ntt6-下列C语言用户标识符中合法的是B A3ax Bx Ccase D-e2E uni on7•下列四组选项中,正确的C语言标识符是C°A%x Ba+b Ca123D
1238、下列四组字符串中都可以用作C语言程序中的标识符的是A Aprint_3d db8aBc B、I\am one_haIf start$i t3pa iC、str_1Cpp powwhile D、Pxq My-book Ii ne#H i s.age外层for循环第4次此时i为4内层循环,使得循环条件卜i成立第1次执行内层循环体printf”;执行内层循环表达式3T++为2,j〈i成立,再次执行内层循环第2次执行内层循环体printf;执行内层循环表达式3,j++为3,ki成立,再次执行内层循环第3次执行内层循环体printf”;执行内层循环表达式3,j++为4,卜i不成立,跳出内层循环执行printf“*”;执行printf”\n”;换行至此外层循环体执行完,计算外层循环的表达式3,i++,此时i为
5.使得循环条件i04不成立,跳出外层for循环体数组
1.#include stdio.h mainO{int i,a
[10];fori=9;i=0;i-a[i]=10-i;printf/f%d%d%df,a
[2]a
[5]a
[8];f f f运行结果为852详见例题一定看懂!P143-
146.
6.1首先定义整型变量i,整型数组a,a的长度为10,即a中包含10个整型元素整型变量执行for循环语句初值匚9,使得循环条件i=0成立,执行循环体第1次循环执行a[i]=10-i等价于a
[9]=10-9=1计算表达式3,即i—,i为8,使得循环条件i=0成立,继续执行循环体第2次循环执行a[i]=10-i等价于a
[8]=10-8二2计算表达式3,即i—,i为7,使得循环条件i=0成立,继续执行循环体第3次循执行a[i]=10-i等价于a
[7]:10-7=3计算表达式‘3,即i—,i为6,使得循环条件i=0成立,继续执行循环体第4次循环执行a[i]=10-i等价于a
[6]=10-6=4计算表达式3,即i—,i为5,使得循环条件i=0成立,继续执行循环体第5次循环执行a[i]=10-i等价于a
[5]=10-5=5计算表达式3,即i--,i为4,使得循环条件i=0成立,继续执行循环体第6次循环执行a[i]=10-i等价于a
[4]=10-4=6计算表达式3,即i—,i为3,使得循环条件i=0成立,继续执行循环体第7次循环执行a[i]=10-i等价于a
[3]=10-3=7计算表达式3,即i—,i为2,使得循环条件i=0成立,继续执行循环体第8次循环执行a[i]=10-i等价于a
[2]=10-2=8计算表达式3,即i—,i为1,使得循环条件i=0成立,继续执行循环体第9次循环执行a[i]=10-i等价于a
[1]=10T=9计算表达式3,即i—,i为0,使得循环条件i=0成立,继续执行循环体第10次循环执行a[i]=10-i等价于a
[0]0-0二10计算表达式3,即i,i为7,使得循环条件i=0不成立,跳出循环体
2.#include stdio.h mainO{int i,a
[6];for i=0;i6;i++a[i]=i;for i=5;i=0;i--%printf3d”,a[i];运行结果为543210首先定义整型变量i,整型数组a,a的长度为6,即a中包含6个整型元素整型变量执行第一个for循环语句初值匚0,使得循环条件i6成立,执行循环体第1次循环执行a[i]=i等价于a
[0]=0计算表达式3,即i++,i为1,使得循环条件i6成立,继续执行循环体第2次循环执行a[i]=i等价于a
[1]口计算表达式3,即i++,i为2,使得循环条件i6成立,继续执行循环体第3次循执行a[i]=i等价于a
[2]=2计算表达式3,即i++,i为3,使得循环条件i6成立,继续执行循环体第4次循环执行a[i]=i等价于a
[3]=3计算表达式3,即i++,i为4,使得循环条件i6成立,继续执行循环体第5次循环执行a[i]=i等价于a
[4]=4计算表达式3,即i++,i为5,使得循环条件i6成立,继续执行循环体第6次循环执行a[i]=i等价于a
[5]=5计算表达式3,即i++,i为6,使得循环条件i6不成立,结束循环执行第二个for循环语句初值匚5,使得循环条件i=0成立,执行循环体第1次循环执行pr intfn%3dH,a[i];即输出a
[5]的值计算表达式3,即i—,i为4,使得循环条件i=0成立,继续执行循环体第2次循环执行pr intf”%3d”,a[i];即输出a
[4]的值计算表达式3,即i—,i为3,使得循环条件i=0成立,继续执行循环体第3次循环执行pr i ntf“%3d”,a[i];即输出a
[3]的值计算表达式3,即i—,i为2,使得循环条件i=0成立,继续执行循环体第4次循环执行pr intfn%3dn,a[i];即输出a⑵的值计算表达式3,即i—,i为1,使得循环条件i=0成立,继续执行循环体第5次循环执行pr intf”%3d”,a[i];即输出a
[1]的值计算表达式3,即i—,i为0,使得循环条件i=0成立,继续执行循环体第6次循环执行pr i ntf“%3d n,a[i];即输出a
[0]的值计算表达式3,即i—,i为6,使得循环条件i=0不成立,结束循环
3.#include stdio.h main{int ik a
[10]p
[3];k=5;f f ffori=0;i10;i++a[i]=i;fori=0;i3;i++p[i]=a[i*i+l];fori=0;i3;i++k+=p[i]*2;%printf d\rT,k;运行结果为21首先定义整型变量i,k,整型数组a,a的长度为10,整型数组p,P的长度为3k初值为5第一个for循环语句为数组a进行初始化执行完第一个for语句后,a
[0]=0,a⑴=1,a
[2]=2,a
[3]=3,a
[4]=4,a
[5]=5,a
[6]=6,a[刀二7,a
[8]=8,a
[9]=9循环过程略第二个for循环语句为数组p进行初始化初值;0,使得循环条件i3成立,执行循环体第1次循环执行p[i]=a[i*i+1];即p
[0]=a[0*0+1]=a
[0]=0计算表达式3,即i++,i为1,使得循环条件i3成立,继续执行循环体第2次循环执行p[i]=a[i*i+1];即p
[1]=a[1*1+1]=a⑵=2计算表达式3,即i++,i为2,使得循环条件i3成立,继续执行循环体第3次循环执行p[i]=a[i*i+1];即p
[2]=a[2*2+1ra
[6]=6计算表达式3,即i++,i为3,使得循环条件i3不成立,结束循环第三个for循环语句初值;0,使得循环条件i3成立,执行循环体第1次循环执行k+=p[i]*2;即k=5+p
[0]*2=5+0=5计算表达式3,即i++,i为1,使得循环条件i3成立,继续执行循环体第2次循环执行k+=p[i]*2;即k=5+p
[1]*2=5+2*2=9计算表达式3,即i++,i为2,使得循环条件i3成立,继续执行循环体第1次循环执行k+邛[i]*2;即k=9+p
[2]*2=9+6*2=21计算表达式3,即i++,i为3,使得循环条件i3不成立,结束循环
4.#include stdio.h;int m
[3]
[3]={{l},{2}{3}};int n
[3]
[3]={l2,3}mainf f{printf n%d m[l]
[0]+n
[0]
[0];fprintf f/%d\n m
[0][l]+n[l]
[0];f运行结果为3,0详见教材,图看懂!P149~
1526.7首先定义整型二维数组m,m为3行,3列的二维矩阵,并对其以行的形式初始化m
[0]
[0]=1m
[0]
[1]=0川口]⑵=0m
[1]
[0]=2m
[1]
[1]=0mm⑵⑵二0⑵
[0]=3m
[2]
[1]=0m
[2]⑵=0定义整型二维数组n,m为3行,3列的二维矩阵n
[0]
[0]=1n
[0]
[1]=2n
[1]
[2]=3n
[1]
[0]=0n
[1]
[1]=0n⑵⑵=0n⑵
[0]=0n⑵
[1]=0n⑵⑵二0因此m
[1]
[0]n
[0]
[0]=21=3++m
[0]
[1]+n
[1]
[0]=0+0=
05.#include stdio.h mainO{int i;int x
[3]
[3]={1,2,3,4,5,6,7,8,9};for i=l;i3;i++printf%d运行结果为
6.8首先按存储顺序为数组x初始化x
[0]
[0]=1x
[0]
[1]=2x
[0]
[2]=3x
[1]
[0]M x
[1]
[1]=5x⑴⑵=6x
[2]
[0]=7x
[2]
[1]=8x⑵⑵=9初值i口,使得循环条件i3成立,执行循环体第1次循环执行prin%d,x[i][3-i],打印出x⑴[3-i],即x
[1]⑵的值计算表达式3,即i++,i为2,使得循环条件i3成立,继续执行循环体第2次循环执行printf”%d,x[i][3-i],打印出x[i][3-i],即x⑵⑴的值计算表达式3,即i++,i为3,使得循环条件i3成立,结束循环
6.#include stdio.h main{int n
[3]
[3]i j;fori=0;i3;i++{forj=0;j3;j++f f;〃%{n[i][j]=i+j printf d,n[i][j];运行结果为012123234循环变量i为,循环条件i3成立,执行循环体外层for第1次循环相当于输出第1行内层for循环j初值为0,循环条件j3成立,执行循环体内层for第1次循环执行n⑴=;即n
[0]
[0]=0+0=0;执行printf%d”,n[i][j];执行内层循环表达式3,J++T为1,k3成立,继续执行内层循环体内层for第2次循环执行n[i][j]=i+j;即n
[0]⑴=0+仁1;执行printf%d:n[i][j];执行内层循环表达式3,j++,j为2,卜3成立,继续执行内层循环体内层for第3次循环执行n[i][j]=i+j;即n
[0]⑵=0+2=2;执行printf“%d”,执行内层循环表达式3T++,j为3,卜3不成立,结束内层循环执行pr i ntf\n;执行外层for语句的表达式3,i++,i为,1,i3成立,继续执行外层循环体外层for第2次循环相当于输出第2行内层for循环j初值为0,循环条件卜3成立,执行循环体内层for第1次循环执行n[i][J]=i+j;即n⑴
[0]=1+0=1;执行printf%d,n[i][j];执行内层循环表达式3,j++T为1成立,继续执行内层循环体内层for第2次循环执行n[i][j]=i+j;即m]
[1]=1+仁2;执行printf“%d:n[i][j];执行内层循环表达式3,j++,j为2,卜3成立,继续执行内层循环体内层for第3次循环执行n[i]5=i+j;即n⑴⑵=1+2=3;执行printf“%d”,执行内层循环表达式3,j++,j为3,j3不成立,结束内层循环执行pr i ntf\n;执行外层for语句的表达式3,i++,i为J,i3成立,继续执行外层循环体外层for第2次循环相当于输出第3行内层for循环j初值为0,循环条件卜3成立,执行循环体内层for第1次循环执行n[i][j]=i+」;即n⑵
[0]=2+0=1;执行printf%d n[i][j];执行内层循环表达式3,j++,j为1,k3成立,继续执行内层循环体内层for第2次循环执行n[i]=;即n⑵⑴=2+1=2;执行pr intf%d,n[i][j];执行内层循环表达式3,j++,j为2,卜3成立,继续执行内层循环体内层for第3次循环执行n[i][j]=i+j;即n⑵⑵=2+2=3;执行内层循环表达式3,j++T为3T3不成立,结束内层循环执行printf\n;执行外层for语句的表达式3,i++,i为,3,i3不成立,结束外层循环{int i f
[10];ff[O]=f[l]=l;fori=2;i10;i++f[i]=f[i-2]+f[i-l];fori=0;i10;i++{ifi%4==0〃printf\n;printf f/%d f[i];f}运行结果为1123581321・34559#include stdio.h funcint b[]{int j;forj=0;j4;j++;b[j]=jmain{int a
[4]i;funca;f运行结果为fori=0;i4;i++printf O%2d a[i];f0123详见教材P194定义函数f unc函数头未定义函数的类型,则系统默认为int型函数func的形参为整型数组名,即只接收鲤数组地址函数体定义整型变量J循环变量初值表达式1户0,使得循环条件表达式2」4成立,执行循环体第1次循环执行b[j]二j;即b
[0]=0;执行循环变量自增及表达式3j++,j为1,使得卜4成立,继续执行循环体第2次循环b
[1]=1;j++,j为2,使得j4成立,继续执行循环体第3次循环b
[2]=2;j++,j为3,使得j4成立,继续执行循环体第4次循环b
[3]=3;」++,j为4,使得j4不成立,结束循环ma in函数:定义整型变量i和数组a,其长度为4,funca;表示调用函数func,并以数组名a作为调用的实参数组名在C语言中表示数组所在内存空间的首地址,在以数组名作为实参时,形参与实参公用存储空间,因此对数组b的操作,即对数组a的操作
10.#include stdio.h main{float funfloat x[];,,float avea
[3]={
4.524};fave=funa;printf//ave=%
7.2f//ave;ffloat funfloat x[]{int j;float aver=l;for j=0;j3;j++aver=x[j]*aver;return aver;运行结果为ave=
36.
0011.#include stdio.h mainO{int a
[2]
[3]={{l,2,3},{4,5,6}};int b
[3]
[2]ij;f ffori=0;i=l;i++{forj=0;j=2;j++b[j][i]=a[i][j];fori=0;i=2;i++{forj=0;j=l;j++printf%5d b[i][j];f运行结果为14253612#include stdio.h fint b[],intn{int ir;r=l;ffor i=0;i=n;i++r=r*b[i];return r;main口={int x,a{1,23,4,5,6,7,8,9};;%x=fa3printfd\rT,x;f运行结果为
2413.#includelstdio.hl main{int jk;fstatic int x
[4]
[4]y
[4]
[4];fforj=0;j4;j++fork=j;k4;k++x[j][k]=j+k;forj=0;j4;j++fork=j;k4;k++y[k][j]=x|j][k];forj=0;j4;j++fork=0;k4;k++printf%dy[j][k];f f运行结果为0,0,0,0,120,0,2,3,4,034,5,
69.C语言中的简单数据类型包括D A、整型、实型、逻辑型B、整型、实型、逻辑型、字符型C、整型、字符型、逻辑型D、整型、实型、字符型
10.在C语言程序中,表达式5%2的结果是________________A
2.5B2C1D
311.如果int a二3,b=4;则条件表达式ab a:b的果是A A3B4C0D
112.若int x=2,y=3,z=4则表达式xzy:z的结果是B.
13.C精雪中助英系装映式和嫂露装烧式的值是BoA0B0或1C1D T或F
14.下面D表达式的值为
4.A1111-0/3int
11.0/3+
0.5B/3Cfl oat11/3D
15.设整型变量a=2,则执行下列语句后,浮点型变量b的值不为
0.5的是B A.bn.O/a.b=f loat1/aBC-b=1/f loatab=1/a*
1.0D
16.若“int n;float f=
13.8;M,则执行“n二i ntf%3后,n的值是AA.1B.4C.
4.333333D.
4.
617.以下对一维数组a的正确说明是―DA char a10;B int a口;C i nt k=5,a[k];D chara
[3]={Ja5,5b5,5c5};
18.以下能对一维数组a进行初始化的语句是C A.int a
[5]=0,1,2,3,4,B.int a5={}C.int a
[3]={0,1,2}D.int a⑸={10*1}19-在c语嬴叔寸式希髻型数组的正醐/X色翦田0int n;a[n];D#define N10i nt a[N];
20、已知int a
[10];则对a数组元素的正确引用是D A、a
[10]B、a[
3.5]C、a5D、a
[0]
21.若有以下数组说明,则i=10;a[a[i]]元素数值是C int a
[12]={1,4,7,10,2,5,8,11,3,6,9,12};A.10B.9C.6D.
522.若有说明int a[]
[3]={{1,2,3},{4,5},{6,7}};则数组a的第一维的大小为B函数
1.#include stdio.h intSubint a,intb{return a-b;}main{int x,y,result=0;%,scanf d,%d“x,y;result=Subx y;fprintfC1result=%d\nl,result;f当从键盘输入运行结果为:6,3result=
32.#include stdio.hint minint x int yf{int rnifx ym=x;else m=y;returnm;main{int a=3,b=5abmin;fabmin=mina b;f〃,printf f/min is%d abmin;运行结果为min is
53.#includestdio.h funcint x{x=10;printf%d,”,x;main〃,{int x=20;funcx;printf%d x;运行结果为1020f在砧小函数中调用函数千11优,巾25函数将20作为实参穿给千11根,并转向开始执行func.fumnacin对应对的应内的存内func执行x=10;,其内存中x变为
10.func执行printf%d,”,x;即输出func函数对应内存中x的值,输出的是
10.至此,func函数执行结束,返向nain函数main函数执行prin■tf%c^,x;此时输出ma i n函数对应内存中的x,即
204.#include stdio.h int m=4;int funcint x int yf{int m=l;returnx*y-m;main{int a=2b=3;printf,%d\n,,m;printf%d\rr,funca,b/m;f运行结果为1整型变量m在函数外定义,因此m为全局变量,其作用于范围为其定义位置开始,一直到整个程序结束因此func与ma in函数都可以访问m程序首先执行ma in函数执行pr intf%d\n”,m;即输出m中的值4,并换行执行pr intfNdn,funca,b/m;即输出表达式func a,b/m的值,为了计算该表达式5需要调用函数func此时ma in将a,b中的2和3值作为实参传递给func的x和y程序开始转向执行func函数,此时func中的x为2,y为3执行int m=1;此句定义了一个局部变量m并赋值为1m的作用域为其所在的度语句,即func的函数体,因此在func的函数体重,有限访问局部变量m执行return x*y-m;即return2*3-1;返叵的是整数
5.func函数返至ma in函数中的被调用处回ma in函数中func a,b的值为5,func a,b/m=5/4=1,注意,在mai n函数中访问的m为全局变量m此时ma in函数无法访问func中的m,因为不在func中m的作用域#include stdio.h int funint a,intb{if ab return a;else returnb;main{int x=15y=8r;r=funx y;f f fprintf,,r=%d\n,,r;f运行结果为r=15程序首先执行ma i n函数执行产fun x,y;即将funcx,y的值赋给r,为了计算该表达式,需要调用函数func此时main将x,y中的15和8值作为实参传递给func的a和b程序开始转向执行func函数,此时func中的a为15,b为8执行if语句;判断if后面的表达式,ab成立,因此执行相应的操作return a;即返口a的值func函数返至ma in函数中的被调用处回ma in函数中func x,y的值为15,即将15赋给r执行pr i ntf“r=%d\n,r;即输出r=15回
6.#include stdio.h intfacint n{intf=l i;fori=l;i=n;i++f=f*i;returnf;fmain{int js;scanf%dr/j;s=facj;printf,%d!=%d\n js;f f f f如果从键盘输入,运行结果为33!=6程序首先执行ma i n函数执行广funx,y;即将funcx,y的值赋给r,为了计家该表达式,需要调用函数func此时main将x,y中的15和8值作为实参传递给f unc的a和b程序开始转向执行func函数,此时func中的a为15,b为8执行if语句;判断if后面的表达式,ab成立,因此执行相应的操作returna;即返口a的值func函数返至ma i n函数中的被调用处ma in函数中func x,y的值为15,即将15赋给r执行pr i ntf”r=%d\n,r;即输出r=15回
7.#include stdio.hunsigned fun6unsigned num{unsigned k=l;do{k*=num%lQ;nunV=lQ;}whilenum;return k;main{unsigned n=26;printf%d\n”,fun6n;运行结果为12程序首先执行ma in函数执行printf,fun6n;即输出表达式func6的值,为了计X该表达式,需要调用函数func此时ma in将n中的26作为实参传递给func的num程序开始转向执行func函数,此时func中的num为26执行do-whi Ie语句第1次循环执行k*二num%10,即k=k*num%10=1*26%10=6执行num/口0;即nurrFnum/10=26/10=2whi Ie后面循环条件为num,此时num为2,是非0值,即表示循环条件成立,继续执行循环体此时k为6第2次循环执行k*二num%10,即k=k*num%10=6*2%10=12执行num/=10;即num=num/10=2/10=0whi Ie后面循环条件为num,此时num为0,表示循环条件不成立,结束循环执行return k;即返至main函数中的被调用处执行main函数继续执行printf%d\S3,fun6n;即输出
128.#include stdio.hint maxint xint y;mainf{int ab,c;a=7;b=8;fc=maxa,b;printfCMax is%d c;fmaxint xint yf{int z;z=xy x:y;returnz;运行结果为Max is8指针
1.#includestdio.h main{intx[]={1020304050};f f f fint*p;p=x;〃%printfd,*p+2;运行结果为30首先定义一个整型数组X,乂的长度为5;然后定义一个指针变量P;对p进行初始化,将数组x的地址赋给P因此此时P中存放的数组x的首地址,即数组中第一个元素x
[0]的地址然后执行prin语句,输出表达式*p+2的值p+2表示以p当前指向的位置起始,之后第第元素的地址,即a
[2]的地址*p+2则表示该地址内所存放的内容,即a
[2]的值30,因此输出
302.#include stdio.h main{char s[]=z/abcdefg”;char*p;p=s;printf f/ch=%c\nfr*p+5;f运行结果为ch=f首先定义一个字符型数组s,并用字符串对s进行初始化;abcdefg然后定义一个字符型指针变量P;对P进行初始化,将数组S的地址赋给p因此此时P中存放的数组S的首地址,即数组中第一个建s
[0]的地址然后执行pr in语句,输出表达式*p+5的值p+5表示以p当前指向的位置起始,之后第5个元素的地址,即a
[5]的地址*p+5则表示该地址内所存放的内容,即a
[5]的值f,因此输出ch二f
3.#include stdio.hmain{int a[]={l23,45};f f fint x y,*p;p=a;x=*p+2;f%printf d:%d\rT,*p,x;运行结果为1:3首先定义一个整型数组a,并对a进行初始化;然后定义整型变量x,y,整型指针变量p;再将数组a的地址赋给p因此此时P中存放的数组a的首地址,即数组中第一个元素a
[0]的硼执行;P+2表示以p当前所指向的位置起始,之后第2个元素的地址,即a⑵的地址*p+2X=*p+2则表示该地址内所存放的内容,即a
[2]的值3,然后再把3赋给x然后执行printf语句,先输出表达式*p的值此时*P表示的是P所指向变量的内容,即a
[0]的值1再输出一个冒号然后再输出X中的值
34.#includestdio.h main{int arr[]={30,25,20,15,10,5},*p=arr;p++;〃%printf d\n”,*p+3;运行结果为10首先定义一个整型数组arr,并对arr进行初始化;然后定义整型指针变量P;再将数组arr的地址赋给p因此此时P中存放的数组arr的首地址,即数组中第一个元素a
[0]的地址执行P++,即P=P+1P+1表示以P当前所指向的位置起始,之后第1个元素的地址,即arr[的地址然后再将arr
[1]的地址赋给p,执行完此语句后,P不再指向arr
[0],而是指向arr
[1]然后执行printf语句,输出表达式*p+3的值p+3表示以p当前指向的位置起始此时p指向ar H1],之后第3个元素的地址、即arr
[4]的地址*p+3则表示该地址内所存放的内容,即arr
[4]的值10,因此输出10#include stdio.h main{int a[]={l23,456};f fffintxy*p;p=a
[0];f fx=*p+2;;y=*p+4printf f/*p=%d x=%d y=%d\rT,*p,xy;fff运行结果为*p=1x=3y=5首先第义二个整型数组a,并对a进行初始化;然后定义整型变量X,V,整型指针变量P;再将数组元素a
[0]的地址赋给p执行x=*p+2;p+2表示以p当前所指向的位置起始,之后第2个元素的地址,即a
[2]的地址*P+2则表示该地址内所存放的内容,即a
[2]的值3,然后再把3赋给x执行y=*P+4;P+4表示以p当前所指向的位置起始,之后第4个元素的地址,即a
[4]的地址*p+4则表示该地止内所存放的内容,即a
[4]的值5,然后再把5赋给y执行printf语句,先输出表达式*p的值此时*P表示的是P所指向变量的内容,即a
[0]的值1再输x的值3再输出y的值
56.#includestdio.h main{static chara[]=ff Program”,*ptr;forptr=a ptra+7;ptr+=2fputchar*ptr;运行结果为Porm首先定义一个字符型数组a,并对a进行初始化;然后定义字符型指针变量P;执行for语句Ptr=a为表达式,1,将数字a的地址赋给ptr;表达式,2循环条件ptr〈a+7;表达式3为ptr+=2,即ptr=ptr+2;第1次执行循环体执行putchar*ptr;即输出*ptr所对应的字符此时ptr指向数组中的第1个元素,即a
[0],因此*ptr表示a
[0]中的值,即P
5.执行完循环体,转向执行表达式3,即ptr=ptr+2ptr+2表示以ptr当前所指向的置起始,之后第2个元素的地址,即a
[2]的地址,然后将a
[2]的地址赋给pt ra
[2]的址等价于a+2,因此循环条件ptr〈a+7成立,继续执行循环体第2次执行循环体执行putchar*ptr;即输出*ptr所对应的字符此时ptr指向数组中的第3个元素,即a
[2],因此*ptr表示a
[2]中的值,即o
5.执行完循环体,转向执行表达式3,即ptr=ptr+2ptr+2表示以ptr当前所指向的置起始,之后第2个元素的地址,即a
[4]的地址,然后将a
[4]的地址赋给pt ra
[4]的址等价于a+4,因此循环条件ptr〈a+7即a+4〈a+7成立,继续执行循环体第3次执行循环体执行putchar*ptr;即输出*ptr所对应的字符此时ptr指向数组中的第5个元素,即a
[4],因此*ptr表示a
[4]中的值,即r.执行完循环体,转向执行表达式3,即ptr=ptr+2ptr+2表示以ptr当前所指向的位置起始,之后第2个元素的地址,即a
[6]的地址,然后将a
[6]的地址赋给pt ra
[6]的地址脩于a+6,因此循环条件ptra+7即a+6〈a+7成立,继续执行循环体第4次执行循环体执行putchar*ptr;即输出*ptr所对应的字符此时ptr指向数组中的第7个元素,即a
[6],因此*ptr表示a
[6]中的值,即m
5.执行完循环体,转向执行表达式3,即ptr=ptr+2ptr+2表示以ptr•当前所指向的位置起•始,之后第2个元素的地址,即a
[8]的地址,然后将a
[8]的地址赋给pt ra
[6]的地址傍于a+8,因此循环条件ptr〈a+7即a+8〈a+7不成立,结束循环
7.#include stdio.h chars[]=r ABCD”;mainO{char*p;forp=s;ps+4;p++〃%printf c%s\n”,*p,p;运行结果为A ABCD
8.BCDC CDDD首先定义一个字符型数组s,并对s进行初始化;数组S是全局变量,其有效范围从其定义开始至整个程序结束执行ma in函数定义一个字符型指针P执行千「语句P=s为表达式1,将数字s的首地址赋给p;表达式2循环条件ps+4;表达式3为p++,即p=p+1;第1次执行循环体执行printf%c%s\n,*p,p;即以字符%形式输出*p所对应的字符此时P指向数组中的第1个元素,即s
[0],因此*p表示a
[0]中的值,即A
5.然后再以字符串%s的形式输出以P中地址为首地址的整个字符串,即输出ABCD执行完循环体,转向执行表达式3,即P=P+1P+1表示以P当前所指白铜位置起始,之后1个元素的地址,即s
[1]的地址,然后将a
[1]的地址赋给p o
[1]的地址等价s于s+1,因此循环条件p〈s+4成立,继续执行循环体第2次执行循环体执行printf%c%s\n”,*p,p;即以字符加形式输出*p所对应的字符此时p指向数组中的第2个元素,即s
[1],因此*p表示s
[1]中的值,即B.然后再以字符串%s的形式输出以P中地址为首地址的整个字符串,此时P指向s
[1],即从s
[1]开始,依次输出后面的字符串,因此又输出BCD执行完循环体,转向执行表达式3,即P=P+1P+1表示以P当前所指白的位置起始,之后1个元素的地址,即s
[2]的地址,然后将a
[2]的地址赋给p s
[2]的地址等价于s+2,因此循环条件p〈s+4成立,继续执行循环体第3次执行循环体执行printf%c%s\n”,*p,p;即以字符%形式输出*P所对应的字符此时P指向数组中的第3个元素,即s
[2],因此*p表示s
[2]中的值,即C.然后再以字符串%s的形式输出以P中地址为首地址的整个字符串,此时P指向s
[2],即从s
[2]开始,依次输出后面的字符串,因此又输出CD执行完循环体,转向执行表达式3,即p=p+1p+1表示以p当前所指白铜位置起始,之后1个元素的地址,即s
[2]的地址,然后将s
[2]的地址赋给ps
[2]的地址等价于s+3,因此循环条件ps+4成立,继续执行循环体第4次执行循环体执行printf%c%s\n,*p,p;即以字符%形式输出*P所对应的字符此时P指向数组中的第4个元素,即s
[3],因此*p表示s
[3]中的值,即D.然后再以字符串%s的形式输出以P中地址为首地址的整个字符串即输事D执行完循环体,转向执行表达式3,即p=p+1P+1表示以P当前所指白铜位置起始,之后1个元素的地址,即s
[3]的地址,然后将s
[3]的地址赋给ps
[3]的地址等价于s+4,因此循环条件p〈s+4不成立,结束循环结构体
1.#include stdio.hstruct st{intx;inty;}a
[2]={57,2,9;fmain%printf d\n”,a[O].y*a[l].x;运行结果是14首先是定义结构体St,St中共有两个整型成员x,V然后定义一个St类型的数组a,a的长度为2,即数组中含有两个st类型的元素,分别是a
[0]和a
[1].对a进行初始化,此题是按照储存顺序进行初始化,即将5赋给a
[0]中的x即a
[0].x=5;将7赋给a
[0]中的y即a
[0].y=7;将2赋给a⑴中的x即=2;将9赋给a⑴中的y即a
[1].y=9;a
[0]a[l]执行main函数,输出表达式a
[0].y*a
[1].x的值,即7*2的值#includestdio.hmain{struct stu{int num;chara
[5];float score;〃,}m={1234//wang
89.5};printf fi%d%s%ff m.num m.a m.score;fffff运行结果是A.2B.3C.4D.无确定值57D
36923.对二维数组的正确定义是C A.int a[][]={1,2,3,4,5,6};B.int a
[2][]={1,2,3,4,5,6;C.int a[]
[3]={1,2,3,4,5,6};D.int a[2,3]={1,2,3,4,5,6;
24.已知i nt a
[3]
[4];则对数组元素引用正确的是_Aa⑵⑷Ba[1,3]Cat2]
[0]Da⑵⑴
25.C语言中函数返回值的类型是由_______________________________A决定的.A函数定义时指定的类型Breturn语句中的表达式类型开徽建毒船类型c调用该函数时的实参的数据类型D.任意指定的数据类型
27.在函数调用时,以下说法正确的是B A.函数调用后必须带回返回值B.实际参数和形式参数可以同名C.函数间的数据传递不可以使用全局变量D.主调函数和被调函数总是在同一个文件里
28.在C语言中,表示静态存储类别的关键字是C Aauto Bregister Cstatic Dextern
29.未指定存储类别的变量,其隐含的存储类别为A Aauto BstaticCextern Dregi ster
30.若有以下说明语句struct student{i ntnum;char name[];fI oatscore;}stu;则下面的叙述不正确的是D A.struct是结构体类型的关键字B.struct student是用户定义的结构体类型C.num,score都是结构体成员名D.stu是用户定义的结构体类型名
31.若有以下说明语句1234,wang,
89.
53.#includestdio.h structcmplx{intx;inty;}cnum
[2]={l3,2,7;fmainprintf cnum[O].y*cnum[l].x;f运行结果是6与第一题解法同
4.#include stdio.h struct abc{int a,b c;};mainf{structabcs
[2]={{l23}r{456}};int t;fff ft=s[O].a+s[l].b;printf%d\n t;f运行结果是6与第一题解法同
二、程序填空
1.输入一个字符,判断该字符是数字、字母、空格还是其他字符ma in{char ch;ch=getchar0;ifch=a5ch〈=z’||ch=A ch二Z pr i ntfIt i s anEng Ii shcharacterll;eI se if ch=O ch〈=9pr i ntfIt i s adigitcharacter\n;eIse if ch==pr i ntf Iti sa spacecharacter\n;e Isepr i ntf nItisother character\n;}第1空字符在计1机中以ASCI I码的形式存储所以当输入的字符,即ch中字符所对应的ASCII码的范围在英文字母的ASCI I码的范围内即可,参照p377由于英文字母又分为大写字母和小写字母,因此此处用一个逻辑或表达式,表示ch中是小写字母或者大写字母,都能使得表达式成立ch=97ch=122||ch=65ch=90需要注意的是,对于本题区间所对应的表达式,不可写作97〈二chV122,也不可写作A5对于97二2仁122因为在计乂此表达式时的顺序是从左向右,因此先计“7二2无论ch中的髓如何,表达式97=ch的值只有两种情况0或
1.所以无论是0还是1,都小于122,因此97Uch*122恒成立第3空,判断ch中是否为空格,也是通过ch中字符与空格字符的ASCI I码来判断在判断表潼的值是否相等时,用关系符号=;不要用赋值符号二
2.下列程序的功能是从输入的整数中,统计大于零的整数个数和小于零的整数个数用输入0来结束输入,用i,j来放统计数,请填空完成程序vo i d ma in{int n,i=0,j=0;pr i ntfinput ai nteger,0for end\n55;scanf%d,n;whilen或n!=0[i fn0i=i+1;eIse j=j+1;printfi=%4d,产%4d\n”,i,j;}此题用i来记录大于零的整数,用j记录小于零的整数所以循环条件是n或者n!=0即当n不为0时执行循环体在循环体中是一个选择语句如果n0,则令i加1,相当于令正整数的个数加
3.编程计11+3+5+……+101的值#i ncIudestd i o.h1;否则即水0,令j加1,相当于令负整数的个数加1vo i d ma in{i nti,sum=0;for i=1;i=101;;2+i=i sum=sum+i;pr intf sum=%d\n,sum;}for语句的一般形式详见p
120.表达式1为i二1,为循环变量赋初值,即循环从1开始,本题从1到101,因此终值是101,表达式2是循环条件,用来控制循环的结束,因此循环条件为i=101;表达式3为循环变量的自增,本题是
4.编程计+3+5…+99的值ma in{int i,sum=0;i=1;whi Iei100{sum=sum+i;I=i+2;}pr i ntf sum=%d\n,sum;
5.从键盘输入一个字符,判断它是否是英文字母#i ncIudestd io.hvo i d ma in{char c;pr i ntf i nput acharacter:;c=getchar0;ifc=及c=Z||c二引c=pr i ntf Yes\n;eIse pr i ntfNo;三程序改错下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果求
1.Ix2x3x4x xnmain{long intsum;//若定义变量的语句有错误,常见考点有两个1变量的类型,2在定义用于存放运X结果的变量时,一定要赋初值一般赋值0或者循环初值int ni=l;fscanf%dH n;f〃若scanf语句有错误,常见考点有两个1格式声明符号要与后面欲赋值的变量的类型一致,此题%d与n的类型int一致详见P69-78;2变量的前面要有地址符号〃printf\n;//循环条件用于控制循环的次数,若以iwhilein为循环条件,则意味着i的终值为联1,由于且i初值为1,因此一共能够循环展1次比要求少了1次,因此应改为i=n或者in+1;若不为sum赋初值,则此处无法计sum*i{sum=sum*i//;i++printfsum=%d”,sum;〃若printf语句有错误,常见考点有1个格式声明符号要与后面欲输出的变量的类型一致,此题%^与$5的类型long int不一致,应改为%Id详见p69-78;sum应初始化即加入SUHF1第四行改为scanf%d,n;第六行改为whi Iei=n或者whi lein+1第十行改为pr intfnsum=%ldn,sum;求一个数组中最大值及其下标2main{int max,j,m;int a
[5];forj=l;j=5;j++//产1为循环变量j赋初值为1,同时用j作为数字元素的逻辑地址下标因此输出的时候只能从a口]开始输出,无法输出a
[0].因此应将j赋初值0,相应的循环条件改为k5或者卜二4用于控制循环执行5次-------------〃%scanf d,a;〃若scanf语句有错误,常见考点有两个1格式声明符号要与后面欲赋值的变量的类型一致,此题%^与2的类型int一致详见P69-78;2变量的前面要有地址符号max=a
[0];//修改思、路与上一个for语句同forO=l;j=5;j++ifmaxa[j]{max=a[j];m=j;〃下标%最大值%printfd\n:d“j maxff〃」为化「语句的循环变量,当千「语句执行完之后,j中的值为6,并非最大值下标,在执行某一次循环的比较过程中,将当时最大值的下标存在了m里第四行改为:for j=0;j5;j++第五行改为scanfu%d;第七行改为for j=1;j5;j++第八行改为:if maxa[j]第十三行改为printf“下标%d\n最大值:%d,m,max用一个函数求两个数之和
3.〃函数定义的一般形式p173774sumx,y{float z;z=x+y;return语句后面可以返HO、常量、变量和表达式的值return;回{main{float ab;int c;/f/若定义建的语句有错误,常见考点有两个1变量的类型,2在定义用于存放运结果的变量时,X一定要赋初值一般赋值0或者循环初值scanf%f,%f,a,b;c=suma b;fprintfu\nSum is%f sum;f第一行改为:float sumf Ioat x,f Ioat y;第四行改为:return z;或者return z;第八行float c;第—行pr i ntf”\nSum is%f,c;.程序读入个整数,统计非负数个数,并计非负数之和.〃420K include stdiohmainint i,s,count n=20;f〃数组定义的一般形式,详见p143,其中的常量表达式不能为变量int a[n];・・〃语句的格式,三个表达式之间用分号,且分号不可省略for i=l,iv20,ifor〃%〃,scanf da[i];〃若scanf语句有错误,常见考点有两个1格式声明符号要与后面欲赋值的变量的类型一致,此题%01与门的类型int一致详见p69-78;2变量的前面要有地址符号fori=0;i20;i++ifa[i]0;//break与conti nue的区别p
128.break在改错题中若错误出现在break语句,则通常是将break换为cont inue;反之,若错误出现在conti nue,通常是将其换为breaks+=a[i];count++;printf/ys=%f count=%f\n/fscount;ff〃若printf语句有错误,常见考点有1个格式声明符号要与后面欲输出的变量的类型一致答案:int a
[20]s=count=0;for i=0;i20;i一scanf%cT,a[i];cont inue;pr i ntfs=%d count=%d\n55,s,count;从键盘输入整数的值,并输出的值.
5.xymain〃%{float xy;scanf d”,x;y=
3.5+x;f〃〃printf y=%d;i ntx;fI oat y;正确的:pr intf,y;
四、编程题.输入个整数,求两数的平方和并输出12#incIude stdio.h int mainvoid{i ntta,b,s;pr i ntf please input a,b:\rT;scanf n%d%d,5,a,b;s=a*a+b*b;pr intf theresult is%d\nn,s;return0;}.输入一个圆半径,当时,计并输出圆的面积和周长,否则,输出提示信息2r r=0f{doubIe r,area,gi rth;pr intf please inputr:\nn;scanf%lfn,r;if r=0{area=PI*r*r;gi rth=2*PI*r;pr i ntf thearea i%.2f\nn,area;pr i ntf nthegi rth is%.2f\nn,girth:}#i ncIudestd io.h#def ine PI
3.14i nt mainvoide Isepr i ntf Inputerror!\n;return0;}、已知函数,编程实现输入一个值,输出值3y=fx xy2x+l x0y=0x=02x-lx0#i ncI udestd io.h vo i d ma in{intx,y;scanfu%d55,x;ifx0y=2*x+1;e Ise i f x0y=2*x-1;e Ise y=0;pr intfu%d55,y;.从键盘上输入一个百分制成绩,按下列原则输出其等级,等级为4score score90A;80scor,,,等级为等级为等级为等级为e90•B;70score80C;60score70D;score60E°#i ncI udestd io.h vo i dma in{int data;char grade;pr intf PIeaseenter thescore:;scanf n%dn,data;switchdata/10case10:case9:grade=A5;break;case8:grade=B5;break;case7:grade=C5;breakcase6:grade=D5;breakdefault:grade=E5;}pr intfthegrade is%c”,grade;}编一程序每个月根据每个月上网时间计上网费用,计方法如下
5.X X二30V10小时费用=『每小时3元1°-50小时[每小时
2.5元250小时要求当输入每月上网小时数,显示该月总的上网费用分6#i ncI udestd io.h voi dma in{inthour;fI oatfee;pr intfup Iease input hour:\n,5;scanf,hour;ifhour=10fee=30;e Isei f hour=10hour=50fee=3*hour;eIse fee=hour*
2.5;pr intfThe totaI feeis%f55,fee;1从键盘输入个整数,统计其中正数、负数和零的个数,并在屏幕上输出
6.10#i ncIudestd io.h voidma in{inta,i,p=0,n=0,z=0;pr intfpleaseinputnumbern;for i=0;i10;i++{scanf%d,,a;i f a0p++;e Isei fa0n++;eIse z++;pr intf正数:%5d,负数:%5d,零:%5d\nn,p,n,z;}编程序实现求之间的所有数的乘积并输出71-10#i ncIudestd io.h voidma in{inti;Iong sum=1;for i=1;i=10;i=i+1sum=sum*i;pr intfthe sumof odd is:%ld”,sum;从键盘上输入个数,求其平均值
8.10#i ncI udestd io.h voi dma in{1nta,i,sum=0;f Ioat ave;;for i=0;i10;i++{scanf%d,a;sum+=a;}ave=fI oatsum/10;pr intf ave=%f\n,ave;}、编程序实现求・之间的所有奇数的和并输出9l1000#i ncIudestd io.h voidma in{inti,sum=0;for i=1;i1000;i=i+2sum=sum+i;pr intfthe sumof odd is:%d”,sum;有一个分数序列,……编程求这个序列的前项之和
10.2/1•3/2•5/3•8/5•13/820#i ncIudestd io.h voidmain0{inti,t,n=20;fI oat a=2,b=1,s=0;for i=1;i=n;i++{s=s+a/b;t=a;a=a+b;b=t;}pr intf sum=%
6.2千,s;从键盘输入两个数,求出其最大值要求使用函数完成求最大值,并在主函数中调用该函数
11.#incIude stdio.hf Ioat maxf Ioat x,f Ioaty;voidmain{f Ioata,b,m;scanf H%f,%f,a,b;m=max a,b;pr intf Maxis%f\n,m;f Ioat maxf Ioatx,f Ioat yifx=y returnx;e Ise returny;}
12.编写程序,其中自定义一函数,用来判断一个整数是否为素数,主函数输入一个数,输出是否为素数#i ncIudemath.h#i ncIudestd io.hi ntIsPr imeNumberintnumber{int i;if number=1return0;for i=2;i sqrtnumber;i++{if number%i==0return0;}return1;}void main{int n;pr intfUPI easeinput n:;scanf%d,n;i fIsPri meNumbern printf\n%d isa Pr ime Number55,n;eIse pr intfu\n%dis notaPrimeNumber,n;从键盘输入个数存放在数组中,将最小值与第一个数交换,输出交换后的个数13n n#i ncIudestd io.h intmainvoid{int i,n,i Index,temp;int a
[10];pr intf Enter n:;scanf%d,n;struct date{int year;int month;int day;}br ithday;则下面的叙述不正确的是.A struct是声明结构体类型时用的关键字B structdate是用户定义的结构体类型名C brithday是用户定义的结构体类型名D year,day都是结构体成员名
32.以下对结构变量stu I中成员age的非法引用是_B struct student{intage;intnum;}stu1,*p;p=stu1;A stu
1.age Bstudent,age C p-age D*p.age
33.设有如下定义struck sk{int a;fI oatb;}data;int*p;若要使P指向data中的a域,正确的赋值语句是_GA p=a;B p=data.a;Cp=data.a;D*p=data.a;
34.设有以下说明语句typedef structstu{int a;float b;}stutype;则下面叙述中错误的是D A、struct是结构类型的关键字B、structstu是用户定义的结构类型C、a和b都是结构成员名D、stutype是用户定义的结构体变量名
35.语句int*p;说明了C pr intfuEnter%dintegers:\n n;for i=0;in;i++scanf%dn,a[i];i lndex=0;for i=1;in;i++{ifa[i]a[iIndex]i Index=i;}temp=a
[0];a
[0]=a[i Index];a[i Index]=temp;for i=0;in;i++pr intf%5d,a[i];printf\n;return0;}第二种解法利用函数#i ncIudestd io.hi ntcomp int arry[],intn{int i,index,temp;printf为数组赋值\n;for i=0;in;i++{scanf%dn,arry[i];}for i=1,index=0;i=n-1;i++{if arry[i]arry[i ndex]{i ndex=i;}temp=arry
[0];arry
[0]=arry[index];arry[index]=temp;fori=0;i〈n;i++{printf%d H,arry[i];return0;}main{int n;int a
[10];pr in为n赋值\rT;scanf%dH,n;comp a,n;.用数组实现以下功能输入个学生成绩,而后求出这些成绩的平均值并显示出来145#i ncI udestd io.h voidmain{inta
[5],s=0;inti;for i=0;i5;i++scanfu%dJ,,a[i];for i=0;i5;i++s=s+a[i];printf tfiresuI t=%f55,s/
5.0;、输入一个正整数,再输入nxn的矩阵,求其主对角线元素之和及副对角线元素之和并输15nn=6出#i ncIudestdio.hintmainvoid{inti,j,n,sum1=0,sum2=0;inta
[6]
[6];printf Enternn=6:n;scanf%dH,n;printfEnterdata:\n;for i=0;in;i++for j=0;jn;j++{scanf%dn,a[i][j];ifi=jsum1+=a[i][j];if i+j==n-1sum2+=a[i][j];printfnsum1=%d,sum2=%dn,sum1,sum2;return0;A P是指向一维数组的指针B回P是指向函数的指针,该函数返一int型数据P是函数名,该函数返同一指冏品酶辖翱胃的指
36.能怀正确的定义是口47指针的量窝「223A.int*p=i,i;B.int*p,i;C-int i,*p=i;D.int i,*p;
37.若有说明int n=2,*p=n,*q=p,则以下非法的赋值语句是D Ap=q B*p二*q Cn=*q D p二n
38.有语句int a
[10],;则工__是对指针变量p的正确定义和初始化A intp=*a;B int*p=a;C intp=a;D int*p=a;
39.惹有说明语句int a
[5],*p=a广,则对数组元素的正确引用是CkaLM B.p[a]C.*p+2D.p+
240.有如下程序int a
[10]={1,2,3,4,5,6,7,8,9,10,*P=a;则数值为9的表达式是_B*P+9B*P+8C*P+=9D P+
81.基本输入输出及流程控制
2.#include stdio.h mainO{inta=l b=3c=5;ifc==a+b printfCyesXn;f relseprintfCnoXn;运行结果为no详见教材选择结构详见教材关系符号p89p91详见附录符号的优先级Dp378二二表示判断符号两边的值是否相等;二表示将符号右边的值赋给左边的变量本题考点是选择结构3种基本形式的第二种选择结构三种一般形式中的“语句”皆为复合语句,复合语句要用{}括起来,只有当复合语句中只包括一条语句时可以省略{},此题即如此,因此两个print千操作没有加{}若0=飞+13成立,则执行pr intfyes\n;否则即c=a+b不成立,执行printf no\n“;+的优先级高于=,因此先算a+b,值为4,表达式5=4不成立,因此执行print千no\nu;即输出字符串no
3.#include stdio.h mainO{inta=12,b=-34c=56min=O;min=a;f fifminbmin=b;ifmincmin=c;printf,lmin=%dl,min;f运行结果为min=-34详见教材选择结构p89本题考点是选择结构种基本形式的第一种一共包含了两个选择结构两个语句3if定义变量,并赋值此时a=12,b=-34c=56min=0ff将中值拷贝,赋给,覆盖了中的,此时中的值被更新为若成a min min0min12minb立,则执行二min b;若成立,则执行输出中的值minc min=c min大于第一个语句的表达式成立,因此执行执行后中的值被更新为小12-34,if min=b;min-
34.-34于第二个语句的表达式不成立,因此不执行56,if min=c;最后输出中的值为min•・
34.
4.#include stdio.h main{intx=2y=-l z=5;ifxvyf fifyoz=0;elsez=z+l;printf%d\n,z;运行结果为5遇到选择结构,首先要明确条件表达式成立时执行哪些操作本题中,第一个语句,其后的复合if语句没有大括号{},说明复合语句中只包含一条语句,进而省略了{}内层的.是选择结构的第二种基本形式,在结构上视为一条语句因此内层的if...else.•if..…作为第一个语句的复合语句.else if若表达式成立,则继续判断xy,则执行^y0z=0;否则即,执行y=0z=z+l;输出z,表达式不成立,因此不执行内层的.进而中的值没有被改变输出中的值2-1xvy if…else…z z为
55.#include stdio.h mainO;{float ab cta=3;fffb=7;c=l;ifab{t=a;a=b;b=t;}ifac{t=a;a=c;c=t;}ifbc{t=b;b=c;c=t;}%printf
5.2f,%
5.2f,%
5.2f”,a,b,c;运行结果为LOO,
3.
007.00f%为求余运算详见教材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成立,则执行仕二a;a二b;b=t;}第一句,将a中的3拷贝,粘贴到t中;第二句,将c中的1拷贝,粘贴到a中,覆盖掉先前的3;第三句将t中的3拷贝到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•#includestdio.h main{float c=
3.0d=
4.0;ifcdc=
5.0;elsefi fc==dc=
6.0;else c=
7.0;printf,c;运行结果为
7.0此题为if..e Ise...语句的嵌套,第二if...e Ise...作为第一个if...e Ise...语句・e Ise部分的复合语句若表达式cd成立,则执行c=
5.0;否则表达式cd不成立若表达式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 stdio.h mainQ%intm;scanf d”,m;if m=0{if m%2==0else printf%d isa positiveeven\n m;felse printf%d isa positiveodd\n m;}f{if m%2==0printf%d isanegativeeven\nm;f7#include stdio.h mainO;char diamond[]
[5]={{V/**},,,,,,,,,,,,,,,,,r*,*\f17*f//*\j,*一,一,一,I,Jft—,r_r JrI_r_fint i,j;fori=0;i5;i++forj=0;j5;j++printf u%c diamond[i]|j];printf\n;f}注〃,代表一个空格运行结臬为********
8.#includestdio.h main。
个人认证
优秀文档
获得点赞 0