c语言练习题 2
c语言程序设计练习2

设a和b均为double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b 的值是__A____。
A、6.000000B、6C、5.500000D、6.500000对以下说明语句 int a[10]={6,7,8,9,10}; 的正确理解是(D)。
A、将5个初值依次赋给a[1]至a[5]B、将5个初值依次赋给a[6]至a[10]C、因为数组长度与初值的个数不相同,所以此语句不正确D、将5个初值依次赋给a[0]至a[4]若调用fputc函数输出字符成功,则其返回值是(D)。
A、1B、EOFC、0D、输出的字符以下叙述中不正确的是(C)。
A、C语言中,随机读写方式不适用于文本文件B、C语言中对二进制文件的访问速度比文本文件快C、C语言中,顺序读写方式不适用于二进制文件D、C语言中的文本文件以ASCⅡ码形式存储数据以下程序的输出结果是 D 。
struct st{ int x;int *y;}*p;int dt[4] = {10, 20, 30, 40};struct st aa[4] = { 50, &dt[0] , 60, &dt[0] , 60, &dt[0] , 60, &dt[0]};main(){ p = aa;pritnf(“%d\n”, ++p -> x);pritnf(“%d\n”, (++p) -> x);pritnf(“%d\n”, ++(*p -> y) );}A、B、C、D、若有定义int a[10],*p=a;,则p+5表示AA、元素a[5]的地址B、元素a[6]的地址C、元素a[6]的值D、元素a[5]的值若执行fopen函数时发生错误,则函数的返回值是(D)。
A、地址值B、1C、EOFD、0若有条件表达式 (exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是(C)。
A、(exp!=1)B、(exp==0)C、(exp!=0)D、(exp==1)判断两个字符串是否相等,正确的表达方式是 DA、while(s1=s2)B、while(s1= =s2)C、while(strcmp(s1,s2)=0)D、while(strcmp(s1,s2)= =0)判断char型变量cl是否为小写字母的正确表达式是(D)。
c语言练习2

练习2一、选择题1.下面关于语句的说法中,正确的是( A B D)。
A、对程序中使用的变量、数组、函数等进行定义、声明的语句属于说明性语句B、表达式后面加;号构成表达式语句C、复合语句中不允许包含另一条复合语句D、对程序执行流程起控制作用的语句属于控制语句2.下面语句中,错误的是( B )。
A、m=x>y>z;B、float x=y=z;C、m=x,m>y;D、{k=m>n;k?:x,y;}3.下面不正确的if语句形式是( A )。
A、if (x=y;) m++;B、if (x<=y) m++;C、if (x-y) m++;D、if ( x ) m++;4.下面不正确的if语句形式是( C )。
A、if (x=y) ;B、if (x==y) m=0,n=1;C、if (x>=y) m=0 else n=1;D、if ( x!=y ) m=n;5.下面程序的运行结果是(A)。
void main(){int x=7,y=8,z=9;if(x>y)x=y,y=z; z=x;printf("x=%d y=%d z=%d\n",x,y,z);}A、x=7 y=8 z=7B、x=7 y=9 z=7 D、x=8 y=9 z=7 D、x=8 y=9 z=86.下面程序的运行结果是(B)。
void main(){int x=6,y=6;if(++x<y++)printf(“%d\n”,x++);elseprintf(“%d\n”,y++);}A、6B、7C、8D、97.下面程序的运行结果是(D)。
void main(){int x=1,y=2,z=3,m=1if(!x)m--;else if(!y)m=2;else if(!z);else m=3;printf(“m=%d\n”,m);}A、0B、1C、2D、38.在下面的if语句中,功能上具有等价关系的两条if语句是(B)。
c语言第二章习题

第二章练习题一、填空题1、在C语言中的实型变量分为两种类型,它们是float型和()型。
2、若有定义:char c='\010';则变量c中包含的字符个数为()3、已知字母a的ASCII码为十进制数97,且设ch为整型变量,则表达式ch='a'+'8'-'3'的值为()4、在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为()个;一个int型数据在内存中所占的字节数为()个。
5、在C语言中,表示逻辑“假”值用数字()表示。
6、C语言中的标识符只能由字母、数字和()三种字符组成。
7、表达式8/4*(int)(2.5)/(int)(1.25*(3.7+2.3))的值为()8、整型常量即整常数。
可用三种形式表示:十进制整数、八进制整数以()开头、十六进制整数以()开关(注:请用小写字母)9、请将75写成C语言八进制和十六进制表示(),()。
10、若有定义:int m=5,y=2;则计算表达式y+=y-=m*=y后的y值是()11、若a是int型变量,则表达式(a=4*5,a*2),a+6的值为()。
12、若a,b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为(),b值为(),c值为()。
13、若a是int型变量,且a的初值为6,则计算表达式a+=a-=a*a后a的值为()14、若a是int型变量,则计算表达式a=25/3%3 后a的值为()15、若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为(),n的值为()16、若有定义:int b=7;float a=2.5,c=4.7;则下面表达式的值为()a+(int)(b/3*(int)(a+c)/2)%417、若有以下定义:int a=2,b=3;float x=3.5,y=2.5;则下面表达式的值为()(float)(a+b)/2+(int)x%(int)y18、若有定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为()(x+y)%2+(int)a/(int)b19、所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为()20、若有定义:int e=1,f=4,g=2;float m=11.29,n=4.0,k;则计算赋值表达式k=(e+f)/g+sqrt(n*1.2/g+m)后k的值是()21、若x为int型变量,则执行以下语句后x的值是()x=7; x+=x-=x+x;22、当a=3,b=2,c=1时,表达式f=a>b>c的值是()23、已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||A<B&&!C>B的值是()24、若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b-c*2的值是()25、若a=1,b=4,c=3,则表达式!(a<b)||!c-3&&!a+c-b的值是( )26、若a=6,b=4,c=3,则表达式a&&b-c-1||!(c-3)的值是( )27、设a=3,b=4,c=5,则表达式a||b+c&&b==c的值是( )28、当m=2,n=1,a=1,b=2,c=3时,执行完d=(m=a!=b)&&(n=b>c)后,n的值为( ),m的值为( )29、有int x,y,z;且x=3,y=-4,z=5,则表达式x-3&&y==(!x-3||z-5)的值为()30、以下程序的运行结果是()main(){if (2*2==5<2*2==4)printf("T");elseprinft("F");}31、若a=1,b=2,c=3,d=4,则表达式a>b?a:c>d?c:d的值为()32、以下程序的运行结果是()#inclue <stdio.h>main( ){ int x=1,y,z:x*=3+2; printf("%d,",x);x*=y=z=5; printf("%d,",x);x=y==z; printf("%d\n",x);}33、若运行时输入:100<回车>时,则以下程序的运行结果是()main(){ int a;scanf("%d",&a);printf("%s",(a%2!=0)?"no":"yes");}34、已有定义int i,j;float x;为将-10赋给i,12赋给j,410.34赋给x;则对应以下scanf函数调用语句的数据输入形式是()scanf("%d,%d,%f",&i,&j,&x);35、在printf函数中,以八进制形式输出整数用%()格式,以十六形式输出整数用%()格式。
C语言程序设计练习题第2部分答案

case‘1’:v1++;
case‘3’: v3++;
case‘2’: v2++;
}
printf (“v1=%d,v2=%d,v3=%d,v4=%d\n”,v1,v2,v3,v4);
}
A) v1=4,v2=2,v3=1,v4=1
for (i=0;i<n;i++)
printf (“%4d”,a[i]);
} 53.下面程序的输出是_____.
main ()
{ char s[]=“12134211”;
int v1=0,v2=0,v3=0,v4=0,k;
for (k=0;s[k];k++)
switch(s[k])
{ default: v4++;
{m=str[i]; str[i]=_str[j-1]_____; str[j-1]=m; } printf(“%s\n”,str); } 51.下面程序的功能是将字符数组 a 中下标值为偶数的元素从小到大排列,其他元素不变, 请填空。
#include<stdio.h> #include<string.h> main() {char a[]=”clanguage”,t; int i,j,k; k=strlen(a); for (i=0;i<=k-2;i+=2) for (j=i+2;j<k;__ j+=2 __) if (_ a[i]>a[j] ___) {t=a[i];a[i]=a[j];a[j]=t;} puts(a); printf(“\n”); }
}
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力通根1保据过护生管高产线中工敷资艺设料高技试中术卷0资配不料置仅试技可卷术以要是解求指决,机吊对组顶电在层气进配设行置备继不进电规行保范空护高载高中与中资带资料负料试荷试卷下卷问高总题中2体2资配,料置而试时且卷,可调需保控要障试在各验最类;大管对限路设度习备内题进来到行确位调保。整机在使组管其高路在中敷正资设常料过工试程况1卷下中安与,全过要,度加并工强且作看尽下护可1都能关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编.工写保况复护进杂层行设防自备腐动与跨处装接理置地,高线尤中弯其资曲要料半避试径免卷标错调高误试等高方,中案要资,求料编技试5写术卷、重交保电要底护气设。装设备管置备4高线动调、中敷作试电资设,高气料技并中课3试术且资件、卷中拒料中管试包绝试调路验含动卷试敷方线作技设案槽,术技以、来术及管避系架免统等不启多必动项要方高案式中;,资对为料整解试套决卷启高突动中然过语停程文机中电。高气因中课此资件,料中电试管力卷壁高电薄中气、资设接料备口试进不卷行严保调等护试问装工题置作,调并合试且理技进利术行用,过管要关线求运敷电行设力高技保中术护资。装料线置试缆做卷敷到技设准术原确指则灵导:活。在。对分对于线于调盒差试处动过,保程当护中不装高同置中电高资压中料回资试路料卷交试技叉卷术时调问,试题应技,采术作用是为金指调属发试隔电人板机员进一,行变需隔压要开器在处组事理在前;发掌同生握一内图线部纸槽故资内障料,时、强,设电需备回要制路进造须行厂同外家时部出切电具断源高习高中题中资电资料源料试,试卷线卷试缆切验敷除报设从告完而与毕采相,用关要高技进中术行资资检料料查试,和卷并检主且测要了处保解理护现。装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
c语言期末考试练习题(2)

一、单项选择题(10小题,每小题3分,共30分)1、若有代数式,测不正确的C语言表达式是( )。
A、a/b/c*e*3B、3*a*e/b/cC、3*a* e/b*cD、a * e/c/b * 32、下面4个选项中,是不合法的整型常量的选项是( )A、——0f1B、—0xcdfC、—018D、—0x48eg —0xffff 017 999 —0680011 12,456 5e2 03f3、下面4个选项中,是合法整型常量的选项是( )。
A、160B、—0xcdfC、—01D、—0x48a—0xffff 01a 986.012 2e5011 0xe 0668 0x4、下面4个选项中,是不合法的用户标识符的选项是( )A、AB、floatC、b—aD、_123P_0 la0 goto tempdo _A int INT5、以下C程序的运行结果是( )。
(注:口表示空格)# include <stdio. h>int main( ){ long y=23456;printf("y=%3x\n",y);printf("y= %8x\n",y);printf("y=%#8x\n",y);return 0;}A、y=5ba0y=口口口口5ba0y=口口0x5ba0B、y=口口口Sba0y=口口口口口口口5ba0y=口口0x5ba0C、y=5baoy=5baoy=0x5baoD、y=5ba0y=口口口口5ba0y=# # # # 5ba06、以下程序的运行结果是( )。
# include <stdio.h>int main( ){ int m=5,n=10;printf("%d,%d\n",m++,––n);return 0;}A、5,9B、6,9C、5,10D、6,107、以下程序的输出结果是( )。
(注:口表示空格)# include <stdio.h>int main( ){ printf("\n* s1= %15s*","chinabeijing");printf("\n* s2=% – 5s*","chi");return 0;}A、* s1=chinabeijing口口口*B、*s1=chinabeijing口口口** s2=** chi* *s2=chi口口*C、*s1=*口口chinabeijing*D、*s1=口口口chinabeijing** s2=口口chi* *s2 = chi口口*8、以下不符合C语法的赋值语句是( )。
c语言习题2

一、填空共18题(共计60分)第1题(2.0分)以下程序的输出结果是【1】.main(){ int a=0a+=(a=8);printf("%d\n",a);}答案:=======(答案1)=======16第2题(2.0分)有以下程序:main(){ char c;while((c=getchar())!='?') putchar(--c);}程序运行时,如果从键盘输入:Y?N?<回车>,则输出结果为【1】答案:=======(答案1)=======X第3题(2.0分)有以下定义和语句struct date{ int day;int month;int year;union{ int share1;float share2;}share;}a;则sizeof(a)的值是【1】.答案:=======(答案1)=======10第4题(2.0分)有以下语句段int n1=10,n2=20;printf("【1】",n1.n2);要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空.n1=10n2=20答案:=======(答案1)=======n1=%d\nn2=%d第5题(2.0分)执行下面的程序段,写出运行后的输出结果为【1】. main(){int i;for (i=0;i<3;i++)switch(i){case 0:printf("%d",i);case 2:printf("%d",i);default:printf("%d",i);}}答案:=======(答案1)=======000122第6题(2.0分)以下程序运行后的输出结果是【1】.main( ){ char c; int n=100;float f=10; double x;x=f*=n/=(c=50);printf("%d %f\n",n,x);}答案:=======(答案1)=======2 20.0第7题(2.0分)以下程序运行后的输出结果是【1】.#include <string.h>void main(){ char ch[]="abc",x[3][4];int i;for(i=0;i<3;i++)strcpy(x[i],ch);for(i=0;i<3;i++)printf("%s",&x[i][i]); printf("\n");}答案:=======(答案1)=======abcbcc第8题(2.0分)以下循环体的执行次数是【1】.main(){int i,j;For(i=0,j=1;i<=j+1; i+=2,j--)Printf("%d\n",i);}答案:=======(答案1)=======1第9题(2.0分)有以下程序main( ){int t=1, i=10;for(; i>=0; i--) t*=i;printf("%d\n",t);}执行后输出结果是【1】答案:=======(答案1)=======第10题(4.0分)下面程序的功能是:使一个字符串按逆序存放,请填空. #include <string.h>main ( ){ char m,str[10];int i,j;gets(str);for(i=0,j=strlen(str);i【1】 ;i++,j--){ m=str[i];str[i]=【2】 ;str[j-1]=m;}printf("%s\n",str);}答案:=======(答案1)=======<j=======(答案2)=======str[j-1]第11题(4.0分)以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果.请填空.int fun( int n){ int m=0,f=1,i;for(i=1; i<=n; i++){ m+=i*f;f=【1】 ;}return m;}main(){ printf("m=%d\n", 【2】 ); }答案:=======(答案1)=======-f=======(答案2)=======fun(10) 第12题(4.0分)下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请填空.main(){ int a,max= 0;scanf ("%d",&a);while(【1】){ if (【2】) max= a;scanf("%d",&a);}printf("%d" ,max );}答案:=======(答案1)=======a=========或=========a!=0=======(答案2)=======max<a第13题(4.0分)下面程序的功能是从键盘输入的10个整数中,找出第一个能被7整除的数.若找到,打印此数后退出循环;若未找到,打印 " not exist " .请填空.main( ){int i, a;for (i=1; i<=10; i++){scanf("%d",&a);if(【1】) {printf("%d", a); break;}}if(【2】) printf(" not exist \n");}答案:=======(答案1)=======a%7 = = 0=======(答案2)=======i>10第14题(4.0分)下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环.请填空.main(){long int num;scanf("%ld",&num);do{ if(【1】) printf("%ld",num);scanf("%ld",&num);}while(【2】);}答案:=======(答案1)=======num/100%10==3=======(答案2)=======num第15题(4.0分)以下fun函数把ch中的大写字母转换成字母序列中的下一个大写字母,字母Z转换成字母A,其它字符不变,返回转换后的字母或其它字符.请填空. char fun(char ch){if(ch= ='Z') ch=【1】;else if(ch>='A'&&ch<='Y') ch=【2】;return ch;}答案:=======(答案1)======='A'=======(答案2)=======ch+1第16题(6.0分)设有以下程序main(){ int i,j,a[][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)for(j=i+1;j<3;j++) a[j][i]=0;for(i=0;i<3;i++){ for(j=0;j<3;j++) printf("%2d ",a[i][j]); printf("\n");}}运行以上程序,输出3行结果.问:第1行的输出为【1】; 第2行的输出为【2】;第3行的输出为【3】.答案:=======(答案1)=======1 2 3=======(答案2)=======0 5 6=======(答案3)=======0 0 9第17题(6.0分)下面程序的功能是将从键盘输入的一对数,由小到大排序输出.当输入一对相等数时结束循环,请填空.#include <stdio.h>main(){ int a,b,t;scanf("%d%d",&a,&b);while(【1】){ if (【2】){ t=a;a=b;b=t;} printf("%d,%d",a,b);【3】;}}答案:=======(答案1)=======a!=b=========或=========b!=a=======(答案2)=======a>b=========或=========b<a=======(答案3)=======scanf("%d%d",&a,&b)第18题(6.0分)以下程序运行后的输出结果第1行是【1】第2行是【2】第3行是【3】main(){ int i,j,a[][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)for(j=i+1;j<3;j++) a[j][i]=0;for(i=0;i<3;i++){ for(j=0;j<3;j++) printf("%d ",a[i][j]);printf("\n");}}答案:=======(答案1)=======1 2 3=======(答案2)=======0 5 6=======(答案3)=======0 0 9二、单项选择共20题(共计40分)第1题(2.0分)以下能对二维数组a进行正确初始化的语句是________. A:int a[2][]={{1,0,1},{5,2,3}};B:int a[][3]={{1,2,3},{4,5,6}};C:int a[2][4]={{1,2,3},{4,5},{6}};D:int a[][3]={{1,0,1},{},{1,1}};答案:B第2题(2.0分)已知有预处理命令#include<stdio.h>和声明 char s[10]= "Thank you"; int i;,要求输出字符串"Thank you",以下选项中不能达到要求的语句是________.A:puts(s);B:printf("%s" , s[10]) ;C:for(i=0; s[i]!= '\0' ; i++) printf("%c" , s[i]);D:for(i=0; s[i]!= '\0' ; i++) putchar(s[i]); 答案:B第3题(2.0分)语句while(!E )中的表达式!E等价于( )A:E= =0B:E! =0C:E! =1D:E= =1答案:A第4题(2.0分)表达式"(a=4*5, b=a*2), b-a, a+=2"的值是( ). A:2B:20C:22D:42答案:C第5题(2.0分)下列程序执行后的输出结果是( ).main( ){int x='f';printf("%c \n",'A'+(x-'a'+1));}A:GB:HC:ID:J答案:A第6题(2.0分)以下程序输出的结果是( ).main(){ int i,sum=0;for(i=1; i<=10; i++) ;sum=sum+i;printf("%d",sum);}A:55B:10C:11D:以上皆非答案:C第7题(2.0分)以下程序段循环执行的次数是( ).int k=0;while(k = 1) k++;whileA:无限次B:有语法错,不能执行C:一次也不执行D:执行1次答案:A第8题(2.0分)有关下述语句输出的判断中,正确的是( ).Char x='\x66';Printf("%d",x);A:赋值非法B:输出值不确定C:输出值为66D:输出值为102答案:D第9题(2.0分)若函数f的定义如下:void f(void){ printf(("That's great!"); )则调用函数f的正确形式是( ).A:f;B:f( );C:f(void);D:f(1);答案:B第10题(2.0分)设有:int c1=1,c2=2,c3; 则执行c3=c1/c2后,c3的值是( ).A:0B:1/2C:0.5D:1答案:A第11题(2.0分)printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列.如果字符串长度大于5,则输出按方式( ).A:从左起输出该字串,右补空格B:按原字符长从左向右全部输出C:右对齐输出该宇串,左补空格D:输出错误信息答案:B第12题(2.0分)以下叙述正确的是( ).A:do-while语句构成的循环不能用其它语句构成的循环来代替.B:do-while语句构成的循环只能用break语句退出.C:用do-while语句构成的循环,在while后的表达式为非零时结束循环.D:用do-while语句构成的循环,在while后的表达式为零时结束循环.答案:D第13题(2.0分)下列叙述中不正确的是( ).A:每个C程序文件中都必须有一个main()函数B:在C程序中main()函数的位置是固定的C:C程序可以由一个或多个函数组成D:在C程序的函数中不能定义另一个函数答案:B第14题(2.0分)以下程序运行时输出的结果是( ).int x=1;main( ){ printf("%d",f(x)); }#define x 2;int f(int y){ return x+y; }A:1B:2C:3D:4答案:C第15题(2.0分)程序执行后的输出结果是( ).main( ){ int i,n=0;for(i=2;i<5;i++){ do{ if(i%3) continue;n++;} while(!i);n++;}printf("n=%d\n",n);}A:n=5B:n=2C:n=3D:n=4答案:D第16题(2.0分)以下选项均以fun函数定义的头部,其中错误的是________. A:int fun(int x, int y[ ])B:int fun(int x, int y[x])C:int fun(int x, int y[3])D:int fun(int x, int *y)答案:B第17题(2.0分)设有:int i=8;j=10; m=i++;n=++j;执行printf("%d, %d, %d, %d",i ,j,m,n);后,屏幕上显示( )A:8,11,9,10B:9,11,8,11C:9,11,8,10 D:8,10,9,11答案:B第18题(2.0分)以下程序的输出结果是( ).main(){ int i=0,a=0;while(i<20){ for(;;){ if((i%10)==0) break;else i--;}i+=11; a+=i;}printh("%d\n",a);}A:21B:32C:33D:11答案:B第19题(2.0分)若程序中已有相应的声明,下列语句中错误的是________. A:printf(i= =4 ? "%6d\n" : "%6d" , i);B:i= =4 ? printf("%6d\n" , i) : printf("%6d" , i); C:for(i=10; ; i--) if(i = =1) break;D:for(i=10; ; i--) if(i --); break;答案:D第20题(2.0分)以下程序的输出结果是( ).main(){int m=6;If(m++>6)printf("%d\n",m);elseprintf(%d\n",--m);}A:7B:6C:5D:4答案:B一、填空共18题(共计60分)第1题(2.0分)以下函数的功能是:求x的y次方,请填空.double fun( double x, int y){ int i;double z;for(i=1, z=x; i<y; i++) 【1】 ;return z;}答案:=======(答案1)=======z*=x第2题(2.0分)设a=2,b=3,x=3.5,y=2.5 求表达式(float)(a+b)/2+(int)x%(int)y的值【1】.答案:=======(答案1)=======3.5第3题(2.0分)执行语句:for(i=10 ; i++<4 ; );后,变量 i的值是:【1】. 答案:=======(答案1)=======11第4题(2.0分)若有声明"int a=5,b=2;",则表达式"b+=(float)(a+b)/2"运算后b的值为【1】.答案:=======(答案1)=======5.5第5题(2.0分)以下程序运行时,输出结果是【1】.#include <stdio.h>void fun(int x){ if(x/2>0) fun(x/2);printf("%d",x%2);}main ( ){ fun(20); putchar('\n'); }答案:=======(答案1)=======10100第6题(2.0分)以下程序运行后的输出结果是【1】#define N 2#define M N+1#define NUM 2*M+1int fib(int n){return ( n<3 ? 2 : fib(n-1)+fib(n-2) );}main( ){printf("%5d%5d\n",NUM,fib(5));}答案:=======(答案1)=======6 10 第7题(2.0分)以下程序运行后的输出结果是【1】.main( ){ int a=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=t;printf("%d%d%d ",a,b,c);}答案:=======(答案1)=======4 5 99第8题(2.0分)下列程序的输出结果是【1】.Main(){double d=3.2;Int x,y ;X=1.2;Y=(x+3.8)/5.0;Printf("%f\n",d*y);}答案:=======(答案1)=======第9题(2.0分)设y是int型变量,请写出判断y为奇数的关系表达【1】. 答案:=======(答案1)=======y%2==1第10题(4.0分)表达式-7/2的结果是【1】表达式7%-2的结果是【2】答案:=======(答案1)=======-3=======(答案2)=======1第11题(4.0分)下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请填空.#include "stdio.h"main(){ int m=0,n=0;char c;while((【1】)!='\n'){ if(c>='A' && c<='Z') m++ ;if(c>='a' && c<='z') n++;}printf("%d\n",【2】? n:m);}答案:=======(答案1)=======c=getchar( )=======(答案2)=======m<n=========或=========n>m第12题(4.0分)题号:948下面程序的功能是:计算1到10之间奇数之和及偶数之和,请填空.main(){ int a, b, c, i;a=c= 【1】 ;for(i=0;i<10;i+=2){ a+=i;【2】 ;c+=b;}printf("偶数之和=%d\n",a);printf("奇数之和=%d\n",c);}答案:=======(答案1)==============(答案2)=======b=i+1第13题(4.0分)设有以下程序int x1=30,x2=40;main(){ int x3=10,x4=20;sub(x3,x4);sub(x2,x1);printf("%d,%d\n%d,%d\n",x3,x4,x1,x2);}sub(int x,int y){x1=x;x=y;y=x1;}运行后,第一行的结果是【1】,第二行的结果是【2】.答案:=======(答案1)=======10,20=======(答案2)=======40,40第14题(4.0分)#include<stdio.h>main(){int j,k,s,m;for(k=1;k<10;k++){s=1;m=k+2;for(j=k;j<m;j++,k++)s+=j;} printf("s=%d,k=%d",s,k); }程序输出结果【1】,【2】.答案:=======(答案1)=======S=16=======(答案2)=======k=10第15题(4.0分)下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变,请填空.main(){ char a[]="clanguage",t;int i, j, k;k=strlen(a);for(i=0; i<k-2; i+=2)for(j=i+2; j<k; 【1】 )if( 【2】 ){ t=a[i]; a[i]=a[j]; a[j]=t; }puts(a);printf("\n");}答案:=======(答案1)=======j+=2=======(答案2)=======a[i]>a[j]第16题(6.0分)设有以下程序ff(int k){ static int i=1;int j=0;return ++i+k+j++;}main(){ int i,n=0;for(i=0;i<3;i++){ n+= ff(i); printf("%d\n",n); }}运行以上程序,输出3行结果.问:第1行的输出为【1】; 第2行的输出为【2】;第3行的输出为【3】.答案:=======(答案1)=======2=======(答案2)=======6=======(答案3)=======12第17题(6.0分)设有以下程序main( ){ int a[3][3],i,j;for(i=0; i<3; i++)for(j=0; j<3; j++)scanf("%d",&a[i][j]);for(i=0; i<3; i++)for(j=0; j<3; j++)a[i][j]=a[(a[i][j]+1)%2+1][(a[j][i]+2)%2+1];}若输入的数据为:1 3 5 7 9 2 4 6 8 执行程序后,a[0][0]=【1】, a[1][1]=【2】, a[2][2]=【3】.答案:=======(答案1)=======2=======(答案2)=======2=======(答案3)=======6第18题(6.0分)阅读以下程序main(){ char *str[3]={"Fortrain ","Prolog","Pascal "};char **p;int i;p=str;for(i=0;i<3;i++,p++)printf("%c\n ",(*(*p+3)+1));}该程序第1行、第2行及最后一行的输出分别为【1】、【2】和【3】.答案:=======(答案1)=======u=======(答案2)=======m=======(答案3)=======d二、单项选择共20题(共计40分)第1题(2.0分)一个C语言程序是由________.A:一个主程序和若干子程序组成B:函数组成C:若干过程组成D:若干子程序组成答案:B第2题(2.0分)若有声明"float f=123.45678;",则执行语句"printf("%.3f",f);"后,输出结果是________.A:1.23e+02 B:123.457C:123.45678D:1.234e+02答案:B第3题(2.0分)已知函数fun的定义如下:void fun(int x[ ], int y ){ int k;for(k=0; k<y; k++)x[k]+=y;}若main函数中有声明int a[10]={10};及调用fun函数的语句,则正确的fun函数调用形式是________.A:fun(a[ ], a[0]);B:fun(a[0 ], a[0]);C:fun(&a[0], a[0]);D:fun(a[0], &a[0]);答案:C第4题(2.0分)为了判断两个字符串s1和s2是否相等,应当使用( ). A:if (s1= =s2)B:if (s1=s2)C:if ( strcpy (s1,s2) )D:if ( strcmp( s1,s2)= =0 )答案:D第5题(2.0分)关于函数返回值,以下叙述中正确的是( ).A:函数返回值的类型由函数体函数体内return语句包含的表达式的类型决定B:函数返回值的类型由函数头部定义的函数类型决定C:若函数中有多个return语句,则函数的返回值是排列在最后面的return语句中表达式的值D:若函数中没有return语句,则函数没有返回值答案:B第6题(2.0分)以下程序的输出结果是( ).main( ){int a=4,b=5,c=0,d;d=!a&&!b||!c;printf("%d\n",d);}A:1B:0C:非0的数D:-1答案:A第7题(2.0分)以下叙述正确的是( ).A:一个用C语言编写的程序在运行时总是从main函数开始逐条执行B:main函数是系统库函数C:main函数中每行只能出现一条语句D:main函数必须出现在所用其它函数之前答案:A第8题(2.0分)设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是 ( )A:a&&bB:a<=bC:a||b+c&&b-cD:!((a<b)&&!c‖1)答案:D第9题(2.0分)若有声明"int x=2, y=1, z=0;",则下列关系表达式中有语法错误的是________.A:x>y=2B:z>y>xC:x>y==1D:x==(x=0, y=1, z=2)答案:A第10题(2.0分)运行下面程序,输出的结果是( ).main (){ int u=24,v=16,w;while(v){ w=u%v; u=v; v=w; }printf("%d\n",u);}A:6B:7C:8D:9答案:C第11题(2.0分)在以下各组标识符中,均可以用作变量名的一组是( ). A:a01,Int tB:table_1,a*.1C:0_a,W12D:for,point答案:A一、单选题1、有如下程序main(){int a=5,b=-3,c=4;Printf("%d%d\n",(++a,b++),c-2);}运行该程序的输出结果是( ).A) -42 B) -22C) -4 2D) -2 2答案:B2、设 int x=1, y=1; 表达式(!x||y--)的值是( ).A) 0B) 1C) 2D) -1答案:D3、以下程序段fun(int x, int y, int *z){ *z=x*x+y*y; }main(){ int a=20;fun(3,4,&a);printf("%d",a);}其输出结果是( ).A) 0B) 20C) 25D) 无定值答案:C4、如果a=1,b=2,c=3,d=4, 则条件表达式a>b?a:c>d?c:d 的值为( ).A) 1B) 2C) 3D) 4答案:D。
C语言2基本语法规则练习题2

C语言2基本语法规则练习题2第二章基本语法规则2.1数据类型、运算符、表达式一、选择题1.C语言中确定数据存储的格式、范围与有效位数的依据是A.数据正负B.数据范围C.数据类型D.数据大小2.一般说在C语言中字符型数据、整型数据、单精度浮点型及双精度浮点型数据的存储长度分别为A.2、4、8、1B.4、2、1、8D.1、4、2、8B.竖向跳格D.换行C.1、2、4、83.转义字符“\\t”表示A.横向跳格,即跳到下一个输出区C.退格4.以下叙述不正确的是A.C语言中的常量分别为整型常量、浮点常量、字符常量、符号常量B.整型常量在C语言中有十进制、八进制和十六进制等3种不同形式C.C语言中,变量必须先定义后使用D.变量被定义后,变量名是固定的,变量的值在程序运行过程中是不可以随时被改变的5.以下叙述不正确的是A.C语言中的字符常量是用一对单引号('')括起来的单个字符B.字符串常量是用一对双引号(““)括起来的字符序列C.字符型数据与整型数据之间不可以通用。
D.为了便于判断字符串是否结束,系统会自动在最后一个字符后面加上一个转义字符(\\0)6.在赋值语句中用来将运算表达式的值赋给变量的“=”称为A.等号B.赋值运算符C.关系运算符D.逻辑运算符7.设a=12,n=3,则执行表达式a%=n+3后a的值为A.3B.0C.6D.12D.3D.4D.1198.设,A=0,B=1表达式!A&&B的值是A.1B.0C.29.在16位PC机环境下,字符串“A”应占的字节数为A.2B.1C.010.采用十进制数为表示方法,则077是A.77B.112C.6311.设某为float型变量,y为double型变量,a为int型变量,b 为long型变量,c为char型变量,则表达式某+y某a/某+b/y+c计算结果的类型为A.intB.longC.doubleD.char12.设a,c为int型变量,进行a=(c=5,c+5,c/2)运算后的结果为A.2B.5C.2.5D.013.在C语言中,表示逻辑“真”和“假”的值分别是A.0、1B.1、2C.1、014.C语言中表示a小于b或小于c的表达式为A.ac&&b>cB.a>c||b>cC.a>b||b>cD.a>b&&b>c16.a和b中有一个小于c的表达式为A.aB.aD.0和3D.1和1D.2D.35D.2、117.若有a=2,b=3,c=4,则表达式a==3和a=3的值分别为A.0和0B.1和3C.3和318.表达式!(1<3)||(2>5)和!(4<=8)&&(7>=3)的值分别为A.1和0B.0和0C.0和1某19.设a=4,计算表达式a=1,a+5,a++的值为A.1B.5C.1020.设某=4,y=8,计算表达式y=(某++)某(--y)的值为A.28B.32C.4021.设有语句chara=`\\72`;则变量包含的字符数为A.3B.2个C.1D.422.设有说明语句:chara='\\123abc';则变量a包含的字符数为A.4B.6C.5D.723.下列叙述正确的是A.赋值语句中的“=”是表示左边变量等于右边表达式B.赋值语句中左边的变量值不一定等于右边表达式的值C.赋值语句是由赋值表达式加上分号构成的D.某+=y;不是赋值语句24.下列选项中,可以作为C语言标识符的是A.3tuB.#tuC.tu3D.tu.3D.tudent3D.13.8eD.chard;25.下列选项中,不可以作为C语言标识符的是A.numB.turbo_cC.print26.下列选项中,不可以作为C语言常量的是A.”abc”B.1/2C.M27.下列选项中,正确的一组语句是A.chara;B.charb;C.charc;a=M;b=55;c=”M”;d=”55”;28.已知字母b的ASCII码值为98,如ch为字符型变量,则表达式ch=b+5-2的值为A.eB.dC.102D.10029.下列不是字符串常量的是A.“1818\B.“aad”C._abdcD.“a”30.在C语言中,int、char和hort三种类型数据所占用的内存是A.均为2个字节B.由用户定义C.是任意的D.由所用机器的机器字长决定31.设int类型的数据长度为2个字节,则unignedint类型数据的取值范围是A.0至255C.-32768至3276732.以下是不正确的转义字符是A.\\\\B.\\B.0至65535D.-256至255C.\\081D.\\0D.反码33.在C语言中,char型数据在内存中的存储形式是A.原码B.补码C.ASCII码某34.若某为unignedint变量,则执行以下语句后的某值为。
C语言练习题 之2

C 语言练习题之二
1.在一个 C 语言源程序中,必不可少的是___________ 。 2.下列叙述中正确的是__________ 。 A.main 函数必须出现在其他函数之前 B.main 函数中至少必须有一条语句 C.C 程序总是从 main 函数的第一条语句开始执行 D.C 程序总是在执行完 main 函数的最后一条语句后结束 3.以下标识符中不能用做变量名或自定义函数名的是_______。 A.main B._123 C._float D.sizeof B.1UL C. '0x41' D.0xfe 4.下列表示中,不可作为常数的是_______ 。A.020 A. value=value-'0'; #define d 2
18.若有声明“float f=123.45678;”,则执行语句“printf("%.3f",f);”后,输出结果是_____ 。 B.123.457 19. 已 知 程 序 中 有 声 明 “int a; long b;” , 若 需 要 接 收 从 键 盘 输 入 的 电 话 号 码 字 符 串
5.设有声明“int value='5';”,则执行下列选项的赋值语句后,value 的值不等于 5 的是___。 B. value=value-0x30;C. value=value-49; D. value=value-'\060'; 6.设有定义和声明如下: int x=5;float y=3.83;char c='d'; 以下表达式中有语法错误的是____。 A.x++ B.y++ C.c++ D.d++ 7.若有声明和初始化“int x=32767;”,则 x+1 的值为___________。 8.若有声明和初始化“long x=32767;”,则 x+1 的值为___________。 9.已有声明“int a=3,b=3,c=2;”,以下选项中值为 0 的表达式是________ 。 A. !a && !b && c A.2 ___ 。 12. 若有声明 “int i=7;float x=3.1416;double y=3;” ,表达式 i+'a'*x+i/y 值的类型是 _________ 型。 13.设有声明“float a=l.23456;int i;”,欲将 a 中的数值保留小数点后两位, 第三位进行四舍五 入运算,能实现该功能的表达式是_________。 A. i=a*100+0.5,a=i/100.0 B.a=(a*100+0.5)/l00.0C. a=((int)a*i00+0.5)/100.0 D.a=(a/100+0.5)/100.0 14.若有声明“int a=15,b=20,c=25,e;”,则执行语句“e=a>b?--c:++c;”后变量 e 的值是_____。 15.以下 C 语言的运算符中,其中优先级最高的运算符是________ 。 B.!a ||!b ||c B.3 C.a==b &&b>=c C.4 D.a>=b&& b>c D.5 10.若有声明“int x=4,y=3;”,则表达式“x<y?x++:y++”的值是________。 11. 设有声明 “int a=3,b=4;float x=4.5,y=3.5;” ,则表达式 “(float)(a+b)/2+(int)x%(int)y” 的值是
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1停车场收费问题一个停车场的标准收费是3小时之内收5元,超过3小时,每增加1小时加收2元;如果时间不是整数,按比例收取,例如:如果输入为3.6小时,则费用为5 + (3.6-3)*2 = 6.2 元。
最高收费为40元。
假设任何车辆的停车时间都不超过24小时。
编写程序,计算每辆车的停车费。
(注意输出结果小数点后保留两位)输入#include<stdio.h>int main(){double m,x;printf("输入停车时间x:");scanf("%lf",&x);if(x<=24){if(x<3.0){m=5.0;printf("%lf\n",m);}else if(x>3.0){ m=5.0+2.0*(x-3.0);if(m<=40)printf("%lf\n",m);}}elseprintf("输出停车费用40元\n");return 0;2.#include<stdio.h>int main(){ double x,m;printf("输入停车时间(x):");scanf("%lf",&x);if(x<=24){if(x<=3.0)printf("停车费用5元\n");if(x>3)m=5.0+2.0*(x-3.0);if(m<=40)printf("%6.2f\n",m);}elseprintf("停车费用40元\n");}}2 计算细菌数量一种细菌的繁殖速度是每天成倍增长。
例如:第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,……。
现在给出第一天的日期和细菌数目,要你写程序求出到某一天的时候,细菌的数目。
3 计算邮资计算邮资:用户输入:邮件的重量,以及是否加快计算规则:重量在1克以内(包括1克), 基本费0.8元。
超过1克的部分,按照0.5元/克的比例加收超重费。
如果用户选择加快,多收2元。
#include<iostream>using namespace std;int main(){double x,sum;char exp;while(cin>>x>>exp){if(x<=1&&exp=='n')sum=0.8;if(x<=1&&exp=='y')sum=2.8;if(x>1&&exp=='n')sum=0.8+(x-1)*0.5;if(x>1&&exp=='y')sum=0.8+(x-1)*0.5+2;cout<<sum<<endl;}return0;}#include <iostream>using namespace std;int main(){int x,y; //变量定义,此处假设需要定义两个变量,均定义为整型while(cin>>x>>y){你对一组输入的一次处理过程代码}return 0;}C:#include <iostream>using namespace std;int main(){int x,y; //变量定义,此处假设需要定义两个变量,均定义为整型while(scanf(%x %y",&x,&y)!=EOF){你对一组输入的一次处理过程代码}return 0;}注意:考虑以下几点,然后直接套用模版就行了:i) 变量定义。
ii) 有几个变量需要输入,在while中cin相应的变量。
iii) 开始考虑主程序代码,在“{}”中写一次处理过程的代码即可。
4学分绩点计算北京大学对本科生的成绩施行平均学分绩点制(GPA)。
既将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。
公式如下:实际成绩绩点90——100 4.085——89 3.782——84 3.378——81 3.075——77 2.772——74 2.368——71 2.064——67 1.560——63 1.060以下 01.一门课程的学分绩点=该课绩点*该课学分2.总评绩点=所有学科绩点之和/所有课程学分之和现要求你编写程序求出某人A的总评绩点(GPA)。
#include<stdio.h>int main(){int str1[10],str2[10],n,i;//定义两个数组分别表示每门课的学分,所得绩点double h,GPA,sum=0,s=0;//定义双精度变量h表示学分,GPA总评绩点,sum表示所有学科绩点之和,s表示所有课程学分之和。
scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&str1[i]);s=s+str1[i];}for(i=0;i<n;i++){scanf("%d",&str2[i]);if(str2[i]<=100&&str2[i]>=90)h=4.0;else if(str2[i]<=89&&str2[i]>=85)h=3.7;else if(str2[i]<=84&&str2[i]>=82)h=3.3;else if(str2[i]<=81&&str2[i]>=78)h=3.0;else if(str2[i]<=77&&str2[i]>=75)h=2.7;else if(str2[i]<=74&&str2[i]>=72)h=2.3;else if(str2[i]<=71&&str2[i]>=68)h=2.0;else if(str2[i]<=67&&str2[i]>=64)h=1.5;else if(str2[i]<=63&&str2[i]>=60)h=1.0;elseh=0;sum=sum+h*str1[i];GPA=sum/s;}printf("%.2f\n",GPA);return 0;}5一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。
已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物#include<stdio.h>int main(){int a,min,max,s;scanf("%d",&s);while(s>=1){scanf("%d",&a);if(a%2==1){min=0;max=0;}elseif(a%4==0){min=a/4;max=a/2;}else{min=(a-2)/4+1;max=a/2;}printf("%d %d\n",min,max);s--;}return 0;}5通过指针变量访问整型变量#include<stdio.h>int main(){int a=100,b=10; //定义整型变量a,b并初始化int*pointer_1,*pointer_2; //定义指向整型数据的指针变量pointer_1,pointer_2;pointer_1=&a; //把变量a的地址赋给指针变量pointer_1 pointer_2=&b; //把变量b的地址赋给指针变量pointer_2printf("a=%d,b=%d\n",a,b); //输出变量a和b的值printf("*pointer_1=%d,*pointer_2=%d\n",*pointer_1,*pointer_2);//输出变量a和b 的值return 0;}6输入a和b两个整数,按先大后小的顺序输出a和b#include<stdio.h>int main(){int *pointer_1,*pointer_2,*pointer_3,a,b;//*pointer_1,*pointer_2的类型是指向整型的指针变量printf("please enter two integer numbers:");scanf("%d,%d",&a,&b);//输入两个整数pointer_1=&a;//使p1指向变量apointer_2=&b;//使p2指向变量bif(a<b) //如果a<b{pointer_3=pointer_1;//将p1,p2的值互换pointer_1=pointer_2;pointer_2=pointer_3;}printf("a=%d,b=%d\n",a,b);//输出a,bprintf("max=%d,min=%d\n",*pointer_1,*pointer_2);//输出p1,p2所指向变量的值return 0;}7,函数嵌套调用输入3个整数,要求由大到小输出,用函数调用。
#include<stdio.h>int main(){void exchange(int *q1,int *q2,int *q3);int a,b,c,*p1,*p2,*p3;printf("please enter three numbers:");scanf("%d,%d,%d",&a,&b,&c);p1=&a;p2=&b;p3=&c;exchange(p1,p2,p3);printf("the older is\n: ");return 0;}void exchange(int *q1,int *q2,int *q3){void swap(int *pt1,int *pt2);if(*q1<*q2) swap(q1,q2);if(*q1<*q3) swap(q1,q3);if(*q2<*q3) swap(q2,q3);}void swap(int *pt1,int *pt2){int temp;temp=*pt1;*pt1=*pt2;*pt2=temp;}8,改写大小写,要求从键盘输入大写字母,从显示器上输出小写字母#include<stdio.h>int main(){char c1,c2;c1=getchar();c2=c1+32;putchar(c2);putchar('\n');return 0;}9输入三个数,a,b,c要求按由小到大顺序输出。