全国计算机等级考试二 级 C 语 言 (2010版 )同步练习_第1页
全国计算机等级考试二 级 C 语 言 (2010版 )同步练习_第2页
全国计算机等级考试二 级 C 语 言 (2010版 )同步练习_第3页
全国计算机等级考试二 级 C 语 言 (2010版 )同步练习_第4页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

全国计算机等级考试二级C语言(2010版)同步练习作者:张旭仟目录TOC\o"1-5"\h\z\o"CurrentDocument"练习1:C语言程序结构特点 5二 '填空题. 5\o"CurrentDocument"三、上机试验: 5\o"CurrentDocument"练习答案. 6\o"CurrentDocument"练习2:常量、变量、标识符和表达式 7\o"CurrentDocument"一、 选择题. 7\o"CurrentDocument"二、填空题. 8-、上3M•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••8\o"CurrentDocument"练习3:数据的输入输出 11\o"CurrentDocument"选择题. a\o"CurrentDocument"选择题. 12\o"CurrentDocument"上机试验: 13\o"CurrentDocument"四、编程实战: 14\o"CurrentDocument"练习答案. 15\o"CurrentDocument"练习4:关系运算与选择结构 16\o"CurrentDocument"选择题. 16\o"CurrentDocument"填空题. 17四> 编程实战: 20\o"CurrentDocument"练习答案. 20\o"CurrentDocument"练习5:循环结构 21\o"CurrentDocument"二、'填空题. 24\o"CurrentDocument"上机试验: 24\o"CurrentDocument"四、编程实战: 26\o"CurrentDocument"练习答案. 26\o"CurrentDocument"练习6:数组 27\o"CurrentDocument"、选择题. 27\o"CurrentDocument"填空题. 28\o"CurrentDocument"四、编程实战: 31\o"CurrentDocument"练习答案. 31\o"CurrentDocument"练习7:函数 32\o"CurrentDocument"、 选择题. 32\o"CurrentDocument"填空题. 32\o"CurrentDocument"三、上机试验: 33\o"CurrentDocument"四、 编程实战: 34\o"CurrentDocument"练习答案. 34\o"CurrentDocument"练习8:变量的作用域和存储类别 35\o"CurrentDocument"一、选择题. 35\o"CurrentDocument"二、填空题. 35♦、 —•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••3\o"CurrentDocument"练习答案. 37\o"CurrentDocument"练习9:指针 38\o"CurrentDocument"一、选择题. 38\o"CurrentDocument"二、填空题. 41\o"CurrentDocument"三、上机试验: 42\o"CurrentDocument"四、编程实战: 43\o"CurrentDocument"习题答案. 43\o"CurrentDocument"练习10:编译预处理 44\o"CurrentDocument"、选择题. 44\o"CurrentDocument"填空题. 44\o"CurrentDocument"三、上机试验: 45\o"CurrentDocument"练习答案. 45\o"CurrentDocument"练习11:结构体、共用体和用户自定义类型 46\o"CurrentDocument"、 选择题. 46\o"CurrentDocument"填空题. 47\o"CurrentDocument"三、上机试验: 48\o"CurrentDocument"四、 编程实战: 49\o"CurrentDocument"练习答案. 49\o"CurrentDocument"练习12:位运算 50\o"CurrentDocument"、 选择题. 50\o"CurrentDocument"填空题. 50\o"CurrentDocument"三、上机试验: 50\o"CurrentDocument"练习答案. 51\o"CurrentDocument"练习13:文件 52\o"CurrentDocument"一、选择题. 52二、填空题. 52\o"CurrentDocument"四、编程实战: 54\o"CurrentDocument"练习答案. 54附录1: 55\o"CurrentDocument"C操作符的优先级和结合性 55练习1:C语言程序结构特点一、选择题.能将高级语言编写的源程序转换成目标程序的是OA)编辑程序 B)编译程序C)驱动程序 D)链接程序.下列4条叙述中,正确的一条是»A)计算机语言中,只有机器语言属于低级语言B)高级语言源程序可以被计算机直接执行C)C语言属于高级语言D)机器语言是与所用机器无关的.以下对C语言的描述中正确的是。A)C语言源程序中可以有重名的函数 B)C语言源程序中要求每行只能书写一条语句C)注释可以出现在C语言源程序中的任何位置D)最小的C语言源程序中没有任何内容4.算法具有五个特性,以下选项中不属于算法特性的是。A)有零个或多个输入B)可行性 C)有穷性 D)通用性二、填空题.结构化程序由、、3种基本结构组成。.对问题处理方案正确而完整的描述称为算法。三、上机试验:.输入并运行您的第一个C语言程序。^include"stdio.h"main().输入并运行您的第一个C语言程序。^include"stdio.h"main(){printf("MyfirstCProgram!w;}.输入并运行例程,调试程序中的错误。^include"stdio.h"main(){floata,b,area;a=l.2; /*给矩形的两条边赋值*/b=3.6;arae=a*b;printf("a/f,b二%f,area二%f",a,b,area);}.输入并运行例程,学习使用tab键控制格式^include"stdio.h"inti,j,sum;sum=0;for(i=l;i<10;i++){for(j=l;j<10;j++){sum+=i*j;printf("%d\n",sum);).输入并运行例程执行的效果main(){printf(u*\n");printf("***\n*);printf("*****\n");printf(w ;printf(“*\n”);5.测试下面程序,求两数之和。ttinclude<stdio.h>voidmain() sum=a+b;{inta,b,sum;/*声明,定义变量为整型*/ printf(*sumis%d\n",sum);a=123; }b=456;练习答案一、选择题1.B2.C3.C4.D一、填空题1.顺序选择循环2.算法练习2:常量、变量、标识符和表达式一、选择题1.请选出可以作为c语言用户标识符的一组标识符号A)voiddefine WORDB)a3_b3_123IFC)for-abc caseD)2aDOsizeof2.以下选项中,哪一个是c语言中合法的常量0A)±234.34 B)1/8C)'O'D)“a"'b'3.若有以下程序段:intcl=l,c2=2,c3;c3=l.0/c2*cl;则执行后,c3中的值是A)0 B)0.5 C)1D)24.下列程序的输出结果是 。A)3 B)3.2 C)0D)3.07main(){doubled=3.2;intx,y; x=l.2;y=(x+3.8)/5.0;printf(*%d\n”,d*y);)5.设已定义整型变量4和g,则下面的程序输出为 ok=017;g=lll;printf("%d\n",++k);printfUI"%x\n”,g++);A)156f B)1670 C)1571D)166f6.定义a为整型变量,且设其初值为10,则表达式a+=a-=a*=a的值为_OA)10 B)0 C)100D)-107.若a为整型变量,则以下语句 »a=-2L;printfa);A)赋值不合法 B)输出值为-2 C)输出为不确定值D)输出值为28.设有定义:floata=2,b=4,h=3;,以下C语言表达式中与代数式1/2(a+b)h计算结果不相符的是 A)(a+b)*h/2B)(l/2)*(a+b)*hC)(a+b)*h*l/2D)h/2*(a+b)9.数字字符0的ASCII值为48,若有以下程序,程序运行后的输出结果是main(){chara=,1',b='2';printf("%c,”printf("%d\n}A)3,2,b++);”,b-a);B)3,1 C)2,1D)2,210.设有intx=ll;则表达式(x++*l/3)的值是_oA)3B)4 C)11D)1211.设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为.A)4B)16 C)32D)5212.设有说明语句:chara='\72';则变量a A)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法二、填空题.C语言的标识符只能有3种字符组成,它们是:⑴、[2】、[3],.若x,y,z均是整型变量,则执行表达式产(尸4)+(〃2)后,x的值为【4】」的值为【5】。.假设所有的变量都为整型,则表达式(炉2,为K+,加+,K6)值为【6】。.设x为int型变量,请写出描述“x是奇数”的表达式【7】。.已知整型数据炉3,上4,c=5,则表达式K+-Z^(++c)的值是【8】。.在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4,一个double型数据在内存中所占的字节数为【9】。.若有定义:inta=10,b=9,c=8;,接着顺序执行下列语句,变量b中的值是 【1010c=(a~=(b-5));c=(a%ll)+(b=3);.十进制数一5的补码表示为【11】。三、上机试验:1.输入并运行例程,体会符号常量的用法b=2;c=a+b;#include<stdio.h>printf("c=%d\n",c); /*result:#definePI3.14c=3*/main()}{intr,s,1;pintf(wEnterr:99);4.输入并运行例程,改正其中的错误scanf("%d",&r); /*从键盘为r输#include"stdio.h"入一个值*/main()l=2*PI*r;{inta,b=2;s=PI*r*r;a=l;printf(ul=%d,s=%d\nw,1,s);floatdata;]■data=(a+b)*l.2;2.输入并运行例程,学习字符串常量的输出方法printf("data二%f\n”,data);1#include<stdio.h>5.输入并运行例程,想一想为什么会出错main()#include"stdio.h"{ printf(“%s","WelcometoMejormain()computerschool!");{floata,b,c;}c=a+b;3.输入并运行例程,注意变量的声明和赋值的方法printf("c=%f\n”,c);#include"stdio.h"6.输入并运行例程,掌握交换两个变量值的main()方法{inta,b,c;#include“stdio.h"a=l; main(){inta,b,t;a=l;b=2;printf(“交换前:a=%d,b=%d\nw,a,b);t=a;a=b;b二t;printf("交换后:a=%d,b=%d\nw,a,b);}7.输入并运行例程,注意除数不能为0的错误提示#includes<stdio.h>main(){inta=l,b=0,c;c=a/b;printf(<<c=%dn,c);)8.输入并运行例程,注意求余运算的运算量必须都是整型。#includes<stdio.h>main(){inta=3;floatb=2,c;c=a%b;printf(wa=%f>>,a);}9.输入并运行例程,体会赋初值运算符的用法。把程序中的前两条语句换成inta=b=c=d=O;想一想为什么会出错#includes<stdio.h>main(){inta,b,c,d;a=b=c=d=0;a=123;b=a;c=a+b;d=c/2;printf(aa=%d b=%d c=%dd=%d\n>,,a,b,c,d);}.输入并运行下列例程,体会数据类型转换的规律#includes<stdio.h>main(){inta=(int)12.34;intb=10.7;floatc=(float)a;doubled=,A';d+=b;printf(wa=%d b=%d c=%dd=%d\nw,a,b,c,d);).输入并运行下列例程,学习掌握求平均数的方法#includes<stdio.h>main(){inta=2,b=2,c=4;floatpj;pj=a+b+c;pj/=3;printf(<<pj=%fw,pj);).输入并运行下列例程,学习掌握提取一个整数各位上的数的方法#includes<stdio.h>main(){inta,qw,bw,sw,gw;a=4567;qw=a/1000;bw=a/100%10;sw=a/10%10;gw=a%10;printf("qw=%dbw=%dsw=%dgw=%d\n”,qw,bw,sw,gw);}13.输入并运行下列例程,体会自增运算符前置和后置的区别#includes<stdio.h>main(){intj=3,k=3;inta=3,b=5,c;printf(w++j=%dj=%d\nw,++j,j);printf(ak++=%dk=%d\nw,j++,j);printf(“c=%d\n",c=(++a)*b;)a=3;b=5; main()printf(“c=%d”,c=(a++)*b); {inta=2;} a=(a+l,3*4,a+4);14.输入并运行下列例程,体会逗号运算符的 printf("a=%d",a);用法 }#includes<stdio.h>练习答案一、选择题1.B2.C3.A4.C5.D6.B7.B8.B9.D10.A11.C12.A二、填空题[1]字母[2]数字[3]下划线[4]6[5]4[6]6[7]x%2==l[8]13[9]8[10]3[nJunion练习3:数据的输入输出一、选择题1.若变量a、i已正确定义,且i己正确赋值,合法的语句是—A)a==l; B)++i;.以下合法的C语言赋值语句是A)a==l; B)++i;.以下合法的C语言赋值语句是oA)a=b=58 B)k=int(a+b);.有以下程序main(){intm=0256,n=256;printf(*%o%o\n”,m,n);)程序运行后的输出结果是OA)02560400B)0256256.下列程序的运行结果是omain(){inta=2,c=5;printf("a=%d,b=%d\n”,a,c);}A)a=%2,b=%5B)a=2,b=5.以下程序的输出结果是omain(){intk=17;printf(*%d,%o,%x\n*>k,k,k);)A)17,021,0x11B)17,17,17a=a++=5;C)a=58,b=58a=int(i);D)—i;C)256400D)400400C)a=d,b=dD)a=%d,b=%dC)17,0x11,021D)17,21,11.以下叙述中正确的是oscanf('%f”,3.5)scanf('%f”,3.5);B)只有格式控制,没有输入项,能正确输入数据到内存,例如:scanf("a=%d,b=%d");C)当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:scanf(,z%4.2f\&f);D)当输入数据时,必须指明变量地址,例如:scanf("%f”,&f);.有以下程序main(){intm,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%d\n”,m,n,p);}若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是oA)m=123n=456p=789 B)m=123n=456p=789C)m=123,n=456,p=789 D)123456789.以下说法中正确的是«A)#define和printf都是C语句 B)#define是C语句,而printf不是C)printf是C语句,但#define不是 D)#define和printf都不是C语句.下列关于复合语句以及空语句的说法正确的是oA)复合语句中的最后一个语句的最后一个分号可以省略B)复合语句不可以嵌套 C)空语句在执行时没有动作,因此没有用途D)空语句可以做“延时”使用.若变量已正确说明为float类型,要通过语句"scanf("%f%f%f*,&a,&b,&c);”给a赋值10.0,b赋值22.0,c赋值33.0,不正确的输入形式是.10〈回车〉22〈回车〉33〈回车〉10.0,22.0,33.0〈回车〉10.0〈回车〉22.033.0〈回车〉1022〈回车〉33〈回车》.putcharO函数可以向终端输出一个。A)整型变量表达式 B)实型变量值 C)字符串 D)字符或字符型变量值.getcharO函数可以接受一个。A)整型变量表达式 B)实型变量值 C)字符串 D)字符.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33〈回车》.则输出结果是。^include"stdio.h"main(){chara,b;a=getchar(); scanf&b);a=a」A'+'0'; b=b*2;printf(*%c%c\n*,a,b);A)2B B)1B 03B D)4B二、选择题.以下程序运行后的输出结果是 [1】 。main(){inta,b,c;a=25; b=025; c=0x25;printf(*%d%d%d\n,z,a,b,c);).有以下程序main(){chara,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n”,a,b,c,d);}若运行时从键盘上输入:6,5,65,66〈回车>。则输出结果是[2】。.以下程序的执行结果是 【3】。main(){floata=13.8;intb=5; b=((int)a)%3;printf(*b=%d\n*,b);).若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是 【4】。intb,c;floata;scanf("%f,%d,c=%d*,&a,&b,&c).以下程序的执行结果是【5】。main(){inta,b,c;c=(a=3,b=a-);printf("c=%d,a=%d,b=%d\n*,c,a,b);三、上机试验:(inta=1234;1.输入并运行例程,学习掌握字符输出函数putchar()的用法floatf=123.456;charch='a';#include<stdio.h>printf(a%8d,%2d\nw,a,a);main()printf( lf,%.2f,%.2e\nM,f{intc;,f,f,f,f):chara;printf("%3c\n”,ch);c=65;a-B';}putchar(c);putchar('\n);putchar(a); )4.输入并运行例程,观察附加说明符的作用2.输入并运行例程,学习掌握字符输入函数getchar()的用法#include<stdio.h>main()int"1234;#include<stdio.h>floatf=123.456;main()charc[]=aHelloworld!”;{intc;printf(a%8d,%-8d\nw,a,a);printfCenteracharacter/*);printf(a%10.2f,%-10.lf\nw,f,f);c=getchar();printf(^c >hex%x\n”,c,c);}printf(a%10.5s,%-10.3s\n,>,c,c);}3.输入并运行例程,观察说明符e及附加说明符m和.n的作用5.输入并运行例程,观察附加说明符.n在字符串输出时的作用#include<stdio.h>#include<stdio.h>main()main()(chara[]=wHello,world!9,

printf(wprintf(w%s\n%15s\n%10.5s\n%2.5s\n%.3s\n”,a,a,a,a,a);}.输入并运行例程,观察附加说明符“+”和“0”的作用#include<stdio.h>main(){inta=1234;floatf=123.456;printf(<<%08d\n,>,a);printf(<<%010.2f\nn,f);printf(w%0+8d\nM,a);printf("0+10.2f\n",f);).输入并运行例程,观察附加说明“旷的作用#include<stdio.h>main(){inta=123;printf(a%o,%#o,%X,%#X\nw,a,a,a,a);).输入并运行例程,用空格、TAB或回车键作为输入数据的分隔符#include<stdio.h>main(){inta,b,c;scanf(<<%d%d%d>,,&a,&b,&c);printf(ua=%d,b=%x,c=%o>,,a,b,c);).输入并运行例程,用指定的分隔符':'作为输入数据的分隔符^include<stdio.h>main(){inth,m,c,s;scanf("%d:%d:%d”printf(a%d:%d:%dw,h,m,n);)如输入12:30:45J.输入并运行例程ttinclude<stdio.h>main(){inta,b,c,d;scanf(wa=%d,b=%d,c=%dw,&a,&b,&c);printf(aa=%d,b=%d,c=%d"a,b,c);}注意必须像"12,b=24,c=36J这样输入11.输入并运行例程,输入abcJ,观察输出结果,想想为什么♦♦include<stdio.h>main(){intcl,c2,c3;scanf(a%c%c%c",&cl,&c2,&c3);printf(wcl=%d,c2=%d,c3=%d",cl,c2,c3);}12.输入并运行例程,输入1234al23o.26J,观察并分析输出结果Sinclude<stdio.h>main()(inta,b,c;scanf(rt%d%c%fw,&a,&b,&c);printf(Ma=%d,b=%d,c=%dw,a,b,c);四、编程实战:.编写程序,输入两个整数:1500和350,求出它们的商数和余数并输出.编写程序,从键盘读入三个双精度数,输出它们的平均值并保留2位小数(对第三位小数四舍五入)。.编写程序,从键盘读入三个整数分别给a、b、c,然后把a的值给b,b的值给c,c的值给a。.编写程序,从键盘输入大写字母,将其对应的小写字母输出。练习答案一、选择题1.B2.D3.C4.B5.D6.D7.A8.C9.D10.B11.D12.D13.B二、选择题[1]252137 [2]6,5,A,B [3]b=l[4]5.0,4,c=3 [5]c=3,a=2,b=3练习4:关系运算与选择结构一、选择题同时为正或同时为负的逻辑表达式是同时为正或同时为负的逻辑表达式是B)(a>=O&&b>=O)&&(a<O&&b<0)D)a*b>0d=4,m=2,n=2;则执行表达式:(m=a>b)&&(n二c>d)后.能正确表示a和bA)(a>=0IIb>=0)&&(a<0IIb<0)C)(a+b>0)&&(a+b<=0)2,设有如下定义:inta=Lb=2,c=3,n的值为oA)1 B)23.有以下程序main(){inta=3,b=4,c=5,d=2;if(a>b)if(b>c)printf("%d”,d+++elseprintf("%d”,++d+printfC%d\n*,d);TOC\o"1-5"\h\z}程序运行后的输出结果是A)2 B)3C)3 D)01);1);C)43 D)44.语句"printf(〃%d",(a=2)&&(b=-2));”的输出结果是。A)无输出 B)结果不确定C)-1 D)1.有以下程序main(){inti=l,j=2,k=3;if(i++==l&&(++j==3||k++==3))printfC%d%d%d\n”,i,j,k);)程序运行后的输出结果是oA)123 B)234 0223 D)233.在C语言的if语句中,用做判断的表达式为oA)关系表达式 B)逻辑表达式 C)算术表达式 D)任意表达式.有以下程序Aintfl(intx,inty){ returnx>y?x:y; }intf2(intx,inty){ returnx>y?y:x; }main(){inta=4,b=3,c=5,d=2,e,f,g;e=f2(fl(a,b),fl(c,d));f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf("%d,%d,%d\n”,e,f,g);程序运行后的输出结果是OA)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7.以下不正确的if语句形式是oA)if(x>y&&!=y); B)if(x==y)x+=y;C)if(x!=y)scanf("%d",&x)elsescanf(“肌i”,&y) D)if(x<y){x++;y++;}.如下程序main(){intx=l,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}printf(*a=%d,b=%d\n*»a,b);)该程序的输出结果是OA)a=2,b=l B)a=l,b=l C)a=l,b=0 D)a=2,b=2.己知intx=10,y=20,z=30;以下语句执行后的值是。if(x>y)z=x;x=y;y=z;A)x=10,y=20,z=30B)x=20,y=30,z=30C)x=20,y=30,z=10D)x=20,y=30,z=30二、填空题TOC\o"1-5"\h\z.设a,b,c均为整型变量,请描述出“a或b中有一个小于c”的表达式 【1】 。.已知x=7.5,y=2,z=3.6,则表达式x〉y&&z>x<y&&!z>y的值是 【2】 。.已知x=l,y=4,z=3,则表达式!(x<y)II!z&&1的值是【3】 。.以下程序运行后的输出结果是一 【4】 。main(){inta=3,b=4,c=5,t=99;if(b<a&&a<c)t=a;a=c;c=t;if(a<c&&b<c)t=b;b=a;a=tprintf("%d%d%d\n”,a,b,c);:.下面的if语句与y=(x>=10)?3*x-ll:(x<l)?x:2*x-l;的功能相同,请补充完整。if( [5] )if([6] )y=2*x-l;elsey=x;elsey=3*x-ll;.以下程序运行后的输出结果是一 【7】。main(){inta,b,c;a=10;b=20;c=(a%b<l)|I(a/b>l);printf("%d%d%d\n”,a,b,c);三、上机试验:1.调试例程,修改程序中存在的错误ttinclude<stdio.h>main(){inta=0,b=l;if(a=b)printf(waequaltob");elseprintf(aa.notequaltob");}.输入并运行例程,注意n的值,体会逻辑运算中的短路现象#include<stdio.h>main(){inta=l,b=2,c=3,d=4,e,m=l,n=l;e=(m=a>b)&&(n=c>d);printf(Me=%d,m=%d,n=%d\n”,e,m,n);}.输入例程,求实数的绝对值#include<stdio.h>main(){floatx;printf(aEnterx:");scanf("%f",&x);printf(“|x|=%f",(x>=0)?x:-x);}.运行例程,利用选择结构输出A的绝对值#include<stdio.h>main(){inta,b;scanf(“%d",&a);if(a>=0)b=a;elseb="a;printf("b=%d\n",b);}.输入并运行例程#include<stdio.h>#include<math.h>main(){floata=4;if(a>0)printf("%f\n",sqrt(a));}.输入并运行例程#include<stdio.h>main(){inta=4,b=-7;if(a>b)prinf("max=%d\n”,a);elseprintf("max=%d\n”,b);}.输入并运行例程,判断是否为三角形#include<stdio.h>main(){inta,b,c;printf(aEntera,b,c:n;scanf(w%d%d%dw,&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a)printf("yes\n");elseprintf("no\n");}8,运行例程,求偶数的平均值#include<stdio.h>main(){inta,b,c,cnt=0;floatpj=O.0;scanf(a%d%d%d“,&a,&b,&c);if(a%2==0){pj+=a;cnt++;}if(b%2==0){pj+=b;cnt++;)if(c%2==0){pj+=c;cnt++;if(ent!=0)pj/=cnt;printf(ttpj=%d\nw,pj);)9.输入并运行例程,体会i嵌套的if语句的用法#include<stdio.h>main(){inta,b,c;printf(aEntera,b,c:99);scanf(a%d%d%dw,&a,&b,&c);if(a==b)if(b==c)printf(ua==b==c>,);elseprintf(aa=b,b!=cw);elseprintf("a!=b");).输入并运行例程,体会嵌套的if语句的用法#include<stdio.h>main(){intx=100,a=10,b=20;intvl=5,v2=0;if(a<b)if(b!=15)if(!vl)x=l;elseif(!v2)x=10;x=-l;printf(a%d",x);).输入并运行例程,学习使用switch。语句#include<stdio.h>main(){chargrade;grade=getchar();if(grade>=,A'&&grade<=,V)grade+=32;switch(grade){case'a':printf(“85T00\n");break;case<b,:printf(a70-84\nw);break;case:printf(“60-69\n”);break;case'd':printf("<60\n");break;default:printf("error\n");})12.输入并运行例程,学习使用switch。语句#include<stdio.h>main(){intnl,n2,n3,n4=0;charsign;printf(MEnternl:w);scanf(a%d",&nl);printf("Entersign:");scanf(u%c",&sign);printf(wEntern2:99);scanf("%d",,&n2);switch(sign){case:n3=nl+n2;break;case'-':n3=nl-n2;break;case'*':n3=nl*n2;break;caseT':if(n2==0)n4=l;elsen3=nl/n2;break;case:n3=nl%n2;default:n4=l;)if(n4!=l)printf(tt%d%c%d=%dM,nl,sign,n2,n3);elseprintf(Merror!\n);)四、编程实战:.编写程序,求表达式的值5>2>7>8'A'>1001&&01||01.0/3.0*3.0==1.0(9%2==1)?1:0.编写程序,在程序中运行下面的C语句printf(“%d%d\”,1>2,1<2);inta=3;printf("%d%d\nM,a=4,a==4);inta;printf(w%d\nw,a=a-2>l);1.0/3.0*3.0==1.0.编写程序,输入一个整数,打印出它是奇数还是偶数.编写程序,输入a、b、c三个数,打印出最大者练习答案一、选择题D2.B3.A4.D5.D6.D7.A8.C9.A10.B二、填空题[1]a<c|Ib<c[2]0 [3]0 [4]4599 [5]x<10 [6]x>=l[7]10200D)是死循环D)m=0D)是死循环D)m=0D)11练习5:循环结构一、选择题.C语言中while和do-while循环的主要区别是。do-while的循环体至少无条件执行一次do-while允许从外部转到循环体内while的循环控制条件比do-while的循环控制条件严格do-while的循环体不能是复合语句.下面的程序输出结果是omain(){intx=3;while(!(-x))printf(*%d\n*,x-=2);)A)不执行循环体B)1 C)0.运行以下程序后,如果从键盘上输入6514<回车),则输出结果为.main(){intm,n;printf(*Enterm,n:,z);scanf("%d%d”,&m,&n);while(m!=n){while(m>n)m-=n;while(n>m)n-=m;)printf("m=%d\n”,m);}A)m=3 B)m=2 C)m=l.以下程序的输出结果是o^include<stdio.h>main(){inti=0,a=0;while(i<20){for(;;){if((i%10)==0)break;elsei——;}i+=ll;a+=i;}printf("%d\n",a);}A)21 B)32 C)33.以下程序的输出结果是o

main(){intx=2;do{printf(*%3d*,!x-2);}whi1e(-x);)A)0-1 B)0 0 C)-2-2 D)死循环.以下程序运行后的输出结果是omain(){charcl,c2;for(cl=,0*,c2=f9>;cl<c2;cl++,c2—)printf(*%c%c*,cl,c2);printf("\n〃);)A)0918245765B)0893478654C)0786584763D)09182736457.下面程序的功能是:计算1到10之间奇数之和及偶数之和,空白处应填main()7.{inta,b,c,i;a=c=0;for(i=0;i<=10;i+=2){a+=i;;}printf("偶数之和二%d\n”,a);printf("奇数之和二%d\n”,cTl);}C)b+=i D)b+=i+1B)运行程序段后输出为C)b+=i D)b+=i+1B)运行程序段后输出为1,2D)循环体语句执行一次.设有以下程序段intx=0,s=0;while(!x!=0){s+=++x;++x;printf("%d,%d”,s,x)则oA)运行程序段后输出为0C)程序段中的控制表达式是非法的.设x和y均为整型变量,则执行下面的循环后,y的值为。A)2 B)4 C)6 D)8for(y=l,x=l;y<=50;y++){if(x>=10)break;if(x%2==l){ x+=5;continue;}x—3;}.以下程序运行后,输出结果为oA)10000 B)10010 C)00110 D)10100main(){inty=18,i=0,j,a[8];do{ a[i]=y%2;i++;y=y/2;}while(y>=l);for(j=i-l;j>=0;j—)printf(*%d”,a[j]);printf("\n〃);}.以下程序的输出结果是C)x=6D)x=12A)x=4 B)x=8C)x=6D)x=12main(){inti,j,x=0;for(i=0;i<2;i++){ x++;for(j=0;j<=3;j++){ if(j%2)continue;x++;x++;)printf("x=%d\n”,x);}.有以下程序main(){inta=l,b;for(b=l;b<=10;b++){if(a>=8)break;if(a%2==l){a+=5;continue;}a-=3;}printf("%d\n",b);)程序运行后的输出结果是OA)3 B)4 C)5 D)6.有以下程序main(){chark;inti;for(i=l;i<3;i++){scanf&k);switch(k){caseO':printf(z,another\nz,);caseT':printf("number'n");}}}程序运行时,从键盘输入:01<回车),程序执行后的输出结果是oA)another B)another C)another D)numbernumber number number numberanother number

二、填空题.执行下面程序段的结果是 [1】 。intx=234;do{printf("%3d\n”,x-);}while(!x);.以下程序是利用公式pi=4*(lT/3+l/5-1/7+…)来计算乃的值。其中,变量左表示当前符号项,I表示当前项,〃表示当前项的序号,要求精度控制在0.00001内。试分析程序,完成空标号处应填的内容。#include<math.h>main(){floatpi,t,n,k;pi=0.0;n=k=t=1.0;TOC\o"1-5"\h\zwhile( [2]){ pi+=t;~k=^k;t=[3] ;n++;}pi= 【4】 ;printfCpi=%f\n",pi);).以下程序的执行结果是一 【5】 。main(){inti,j,m=0,n=0;for(i=0;i<2;i++){for(j=0;j<2;j++)if(j>=i)nrl;n++;printf("%d\n”,n);}).下面程序的输出结果是[6】。#include<stdio.h>main(){intx,y;for(x=l,y=l;x<100;x++){if(y>=20)break;if(y%3==l){ y=y+3;continue;}y二y-5;)printf("x=%d,y=%d”,x,y);){printf("%4d”,i);if(i%10==0)printf(“\n”);i++:){printf("%4d”,i);if(i%10==0)printf(“\n”);i++:))解法2#include<stdio.h>.输入并运行例程,输出1100的整数解法1#include<stdio.h>main(){inti=l;while(i<=100)main(){inti=l;do{printf("%4d”,i);if(i%10==0)printf(a\nn);i++;}while(i<=100);}解法3#include<stdio.h>main(){inti;for(i=l;i<=100;i++){printf("%4d”,i);if(i%10==0)printf(a\n");.输入并运行例程,求1+2+3……100#include<stdio.h>main(){inti,sum=0;for(i=l;i<=100;i++){sum=sum+i;}printf("sum=%d”,sum);}.输入并运行例程,求100-98+96-94+……2#include<stdio.h>main(){inti,sum=0,sign=1;for(i=100;i<=2;i-=2){sum=sum+k*i;sign=sign*-l;}printf("sum=%d”,sum);}.输入并运行例程,输入字符串,并照原样输出#incluede<stdio.h>main(){charc;while((c=getchar())!=,\n'){puchar(c);.输入并运行例程,输出9*9乘法表#include"stdio.h"#include<stdio.h>main()(inti,j;for(i=l;i<=9;i++){for(j=l;j<=i;j++)printf(<<%d*%d=%d\t>>,i,j,i*j);putchar('\n');)}.运行例程,判断输入的数是否是素数#include<stdio.h>main(){inti,m,flag=l;printf(uEnterm:n);scanf("%d",&m);for(i=2;i<m;i++)if(m%i==0){flag=0;break;)if(flag!=O)printf("/disprimenumber”,m);elseprintf("%dnotisprimenumberw,m);}.运行例程,输出100-200之间的所有素数#include<stdio.h>^include"math,h”main(){inti,m;for(m=100;m<=200;m++){for(i=2;i<m;i++)if(m%i=0)break;if(i==m)/*只有测试到m-1,m%i==0printf("Enterprintf("Enter10number:M;for(i=0;i<10;i++){scanf&a);if(a<=0)continue;num++;sum+=a;)printf(^%dplusinteger'ssum:%6.0f\n”,num,sum);printf("Meanvalue:%6.2f\n”,sum/num);)仍成立,i的值才会等于m*/printf("%d\t”,m);)).输入并运行例程,求输入的十个整数中正数的个数及其平均值#include<stdio.h>main(){inti,num=0,a;floatsum=0;四、编程实战:.编写程序,求1-3+5-7+--99+101的值.编写程序,输出从公元1600年到2000年所有闰年的年号。每输出5个年号换一行。判断公元年是否为闰年的条件:能被4整除而不能被100整除;或能被400整除练习答案一、选择题1.A2.A3.C4.B5.C6.D7.B8.B9.C10.B11.B12.B13.B二、选择题答案[1]234 [2]fabs(t)>0.00001 [3]s/(2*n+l) [4]4*pi[5]1 16]x=8,y=22练习6:数组一、选择题i.以下程序的输出结果是。main(){inti,a[10];for(i=9;i>=0;i—)a[i]=10-i;printf(w%d%d%dw,a[2],a[5],a[8]);}A)258 B)741C)852D)3692.假定int类型变量占用2个字节,若有定义:intx[10]={0,2,4};,则数组X在内存中所占字节数是 。A)3 B)6C)10D)203.以下定义语句中错误的是 。A)inta[]={1,2};B)chara[3];C)chars[10]=”test”;D)intn=5,a[n];4.以下程序的输出结果是 oA)20 B)21C)22D)23main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+l)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);)5.若有定义:intaa[8]:则以下表达式中不能代表数组元aa[l]的地址的是A)&aa[0]+l B)&aa[l].当调用函数时,实参是一个数组名A)数组的长度C)数组每一个元素的地址.以下数组定义中不正确的是 A)inta[2][3]:C)intc[100][100]={0};.以下程序的输出结果是 。A)18 B)19main(){inta[3][3]={{1,2},{3,4},for(i=l;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];C)&aa[0]++ D)aa+1,则向函数传送的是 。B)数组的首地址D)数组每个元素中的值intb[][3]={0,1,2,3};D)intd[3][]={{1,2},{1,2,3},{1,2,3,4)}20 D)21{5,6}},i,j,s=0;printf("%d\n",s);.以下程序的输出结果是oA)1,5,9 B)1,4,7 C)3,5,7 D)3,6,9main(){inti,x[3][3]={1,2,3,4,5,6,7,8,9);for(i=0;i<3;i++)printf(w%d,n,x[i][2-i]);).以下程序的输出结果是oA)ABCD B)ABCD C)EFG D)EFGHFGH EFG JK IJKLmain(){charw[][10]={“ABCD","EFGH",“IJKL",“MNOP”},k;for(k=l;k<3;k++) printf(a%s\nw,w[k]);二、填空题.若有定义语句:chars[100],d[100];intj=0,i=0;且s中己赋字符串,请填空以实现字符串拷贝。(注意:不能使用逗号表达式)while(s[i]){d[j]= [1];j++;}d[j]=O;.若已定义:inta[10],i;,以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1,2,3,4,5,6,7,8,9,10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1,2,3,4,5,5,4,3,2,lo请填空。fun(inta[]){inti;for(i=0;i<=10;i++) [2] =i;for(i=0:i<5:i++) [3] =a[i]:.若变量n中的值为24,则prnt函数共输出.voidprnt(intn,intaa[]){inti;for(i=l;i<=n;i++){printf( ,aa[i]);.下面程序的运行结果:[6]ointf(inta[],intn){if(n>l) returna[0]+f(&a[l],n-1);elsereturna[0];).若有以下程序main()[4]行,最后一行有【5】数。if(!(i%5))printf(a\nff);}printf(“\n”);main(){intaa[3]={1,2,3},s;s=f(&aa[0],3);printf("%d\n",s);{inta[4][4]={{1,2,-3,-4),{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};inti,j,s=0;for(i=0;i<4;i++){for(j=0;j<4;j++)执行后输出的结果是[7】 。.下列程序段的输出结果是 [8】 。main(){charb[]="Hello,you”;b[5]=0;printf(u%s\n”,b);)三、上机试验:.输入并运行例程,循环输入和输出一维数组元素#include<stdio.h>main(){inta[5],j;printf(aEnter5integer:99);for(j=0;j<5;j++)scanf("%d",a[j]);for(j=0;j<5;j++)printf(w%d\tw,a[j]);}.输入并运行例程,循环输入和输出二维数组的元素值main(){inta[2][3];printf("Enter6integer:9f);for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d”,&a[i]);for(i=0;i<2;i++)for(j=0;j<3;j++)(printf("%dw,a[i]);printf(M\n");.输入并运行例程,求输入的10个数的最大if(a[i][j]<0)continue;if(a[i][j]==0)break;s+=a[i][j];值,以及最大值的个数#include<stdio.h>main(){inti,a[10],max,cnt=0;for(i=0;i<10;i++)scanf("%d”max=a[0];for(i=0;i<10;i++)if(a[i]>max)max=a[i];for(i=0;i<10;i++)if(max==a[i])cnt++;printf(max=%d,cnt=%d\n”,max,ent);).输入并运行例程,给输入的10个数按照从小到大的顺序排序#include<stdio.h>main(){inti,j,a[10],t;for(i=0;i<10;i++)scanf( ,&a[i]);for(i=0;i<9;i++)for(j=i+l;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;)for(i=0;i<10;i++)printf("%dn,a[i]);printf("\n");}.输入并运行例程,将数组中的元素依次向前移动一个位置,第一个元素放在最后面。例如1,2,3,5移动后变为2,3,5,1#include<stdio.h>main(){inta[5]={l,3,5,7,9},i,t;t=a[0];for(i=0;i<4;i++)a[i]=a[i+l];a[4]=t;for(i=0;i<10;i++)printf(a%dw,a[i]);printfC\n");}.输入并运行例程,给二维数组按行排序#include"stdlib.h"main(){inti,j,k,t,a[3][4]:for(i=0;i<3;i++)for(j=0;j<4;j++)a[i][j]=random(10);for(i=0;i<3;i++)for(j=0;j<3;j++)for(k=j+1;k<4;k++)if(a[i][j]>a[i][k]){t=a[i][j];a[i][j]=a[i][k];a[i][k]=t;)for(i=0;i<3;i++){for(j=0;j<4;j++)printf(*%d”,a[i][j]);printf("\n");.输入并运行例程,求数组中奇数的个数并通过形参n返回#include<stdio.h>ent(int*p,int*n){inti;*n=0;for(i=0;i<n;i++)if(p[i]%2!=0)(*n)++;)main(){intn,a[10]={l,9,5,7,-8,6,4,2,3,0};ent(a,n);for(i=0;i<10;i++)printf("%d",a[i]);printf(u\n");printf(w%d”,n);).输入并运行例程,用枇输入输出字符串#include<stdio.h>main(){charstr[5];inti;for(i=0;i<5;i++)scanf(“枇",&str[i]);for(i=0;i<5;i++)printf( ,str[i]);}.输入并运行例程,用%s输入输出字符串#include<stdio.h>mainO{charstr[5];scanf(u%s",str);printf("%s",str);).输入并运行例程,用gets和puts输入输出字符串#include<stdio.h>#include<string.h>main(){charstring[80];printf(Inputastring:");gets(string);puts(string);).输入并运行例程,学习掌握strcpy和strcat的用法^include<string.h>#include<stdio.h>voidmain(){chardestination[25];charblank[]=* ",c□="C++”,turbo□=“Turbo”;strcpy(destination,turbo);strcat(destination,blank);strcat(destination,c);printf("%s\n",destination);).输入并运行例程,学习掌握strcmp和strlen的用法#include<string.h>#include<stdio.h>main()四、编程实战:{charstrl[]="Hello!*,str2[]="Howareyou?”,str[20];intlent,len2,len3;lenl=strlen(strl);len2=strlen(str2);if(strcmp(strl,str2)>0){strcpy(str,strl);strcat(str,str2);}elseif(strcmp(strl,str2)<0){strcpy(str,str2);strcat(str,strl);}elsestrcpy(str,strl);len3=strlen(str);puts(str);printf(wLenl=%d,Len2=%d,Len3二%d\n”,len1,len2,len3);.请编写函数mygets和myputs,其功能分别于gets和puts相同。函数中用getchar和putchar读入和输出字符.请编写函数,判断一个字符串是否是回文。若是回文函数返回1,否则返回0。回文就是顺读和倒读都一样的字符串练习答案一、选择题1.C2.D3.D4.B5.C6.B7.D8.A9.C2.D10.D二、填空题[1]s[i++] [2]a[i-l][3]a[9-i] [4]5 [5]4 [6]6 [7]58[8]Hello

练习7:函数一、选择题.sizeof(fl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论