c语言试题 谭浩强
- 格式:doc
- 大小:28.50 KB
- 文档页数:8
C语⾔程序设计-谭浩强运输公司对⽤户计算运费。
路程(以s表⽰,单位为km)越远,每千⽶运费越低。
标准如下:s<250 没有折扣250≤s<500 2%折扣500≤s<1000 5%折扣1000≤s<2000 8%折扣2000≤S<3000 10%折扣3000≤s 15%折扣设每吨每千⽶货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费f的计算公式为f=p*w*s*(1-d)编⼀程序⽤于计算总运费。
要求⽤switch语句来实现#include<stdio.h>int main(){int s,c;float p,d,w,f;scanf("%f%f%d", &p, &w, &s);if (s >= 3000)c = 12; //要使⽤⼀个整形变量来决定switch语句选择,不能直接赋值会造成下⾯运算错误elsec = s / 250;switch (c){case 0:d = 0; break;case 1:d = 0.02; break; //除以最低标准算有⼏倍余数不要case 2:case 3:d = 0.05; break;case 4:case 5:case 6:case 7:d = 0.08; break;case 8:case 9:case 10:case 11:d = 0.1; break;}f = p*w*s*(1 - d);printf("freight=%.2f\n", f);return 0;}。
C程序设计谭浩强第四版试卷试卷及答案Last updated on the afternoon of January 3, 2021一、单项选择题(20题,每题2分,共40分)1.一个C语言程序是由组成的。
A.主程序B.子程序C.函数D.过程2.判断char型变量c1是否为小写字母的最简单且正确的表达式为。
A.'a'<=c1<='z'B.(c1>=a)&&(c1<=z)C.('a'<=c1)||('z'>=c1)D.(c1>='a')&&(c1<='z')3.为了判断两个字符串s1和s2是否相等,应当使用。
(s1==s2)(s1=s2)(strcpy(s1,s2))(strcmp(s1,s2)==0)4.设a,b都是int型变量,则表达式:(a=2,b=5,a>b?a++:b++,a+b)的值为。
5.设x、y和t均为int型变量,则以下语句:t=x;x=y;y=t;的功能是。
A.把x和y按从大到小排列?B.把x和y按从小到大排列C.无确定结果?D.交换x和y中的值6.下面标识符中,合法的用户标识符为。
#Ad?7.循环语句while(!E);中的表达式!E等价于。
!=0?!=1?==0?==18.设有以下语句,则不是对a数组元素的正确引用,其中0≤i<10。
inta[10]={0,1,2,3,4,5,6,7,8,9};int*p=a;供选择的答案是:[p-5]B.*(&a[i])[i]D.*(a+i)9.若用数组名作为函数调用的实参,传递给形参的是。
A.数组的首地址B.数组第一个元素的值C.数组中全部元素的值D.数组元素的个数10.下面四段程序中,不是死循环的程序段是。
──────—───┬───────────────A.inti=100;k=0;while(1)do{++k;{i=i%100+1;}while(k>=0);if(i>100)───────────────break;s=3379;}│while(s);──────────┤s++;(;;);──────────┴───────────────11.在一个文件中定义的全局变量的作用域为。
谭浩强c语言试题及答案解析1. 选择题A. 以下哪个选项是C语言中合法的变量名?A) 123abcB) intC) _myVarD) my-var答案:C2. 填空题A. 在C语言中,定义一个整型变量的关键字是______。
答案:int3. 判断题A. C语言中,数组的索引是从0开始的。
答案:正确4. 简答题A. 请简述C语言中指针的概念。
答案:指针是C语言中的一种数据类型,它存储了另一个变量的内存地址。
通过指针,程序可以间接访问和操作变量。
5. 编程题A. 编写一个C语言程序,实现求两个整数的和。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个整数的和是:%d\n", sum); return 0;}```6. 阅读程序题A. 阅读以下C语言程序,并回答问题:```c#include <stdio.h>int main() {int a = 10, b = 20;printf("%d\n", a + b);return 0;}```问题:程序的输出结果是什么?答案:程序的输出结果是30。
7. 改错题A. 以下C语言程序有错误,请找出并改正。
```c#include <stdio.h>int main() {int a = 5;printf("a的值是:%d", a);return 0;}```错误:printf函数中缺少换行符。
改正:```c#include <stdio.h>int main() {int a = 5;printf("a的值是:%d\n", a);return 0;}```8. 综合题A. 请编写一个C语言程序,实现以下功能:1. 从键盘输入一个字符串。
谭浩强C语言试题库(完整版)谭浩强C语言试题库一、单项选择第一章 C语言概述(1) 一个C程序的执行是从A、本程序的MAIN函数开始,到MAIN 函数结束.B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束.C、本程序的MAIN函数开始,到本程序的最后一个函数结束.D、本程序文件的第一个函数开始,到本程序的MAIN函数结束.(2) 以下叙述正确的是A、在C程序中,MAIN函数必须位于程序的最前面.B、 C程序的每行中只能写一条语句.C、 C语言本身没有输入输出语句.D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误.(3) C语言规定,在一个源程序中,MAIN主函数的位置是在:A、必须在最前面.B、必须在系统调用的库函数的后面C、可以在任意位置.D、必须在最后面(4) 一个C程序是由:A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成(5) 以下叙述不正确的是:A、一个C源程序可由一个或多个函数组成B、一个C源程序必须包含一个MAIN函数C、 C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面第二章数据类型、运算符与表达式(1) 若x, i, j, k都是int型变量,则计算下面表达式后,x的值为x =( i=4, j=16, k=32)A、4B、16C、32D、52(2) 下列四组选项中,均不是C语言键字的选项是A、define , IF, typeB、getc, char, printfC、include, scanf, caseE、 if, struct, type(3) 下面四个选项中,均是不合法的用户标识符的选项是A、A,P_0,doB、float,1a0, _AC、b-a, goto, intD、_123, temp, INT(4) 若有代数式3ae/bc,则正确的C语言表达式是A、a/b/c*e*3B、3*a*e/bcC、3*a*e/b*cD、a*e/c/b*3(5) 已知各变量的类型说明如下:int k, a, b;unsinged long w=5;double x=1.42;则以下不符合C语言语法的表达式是A、x%(-3)B、w+=-2;C、k=(a=2,b=3,a+b)D、a+=a-=(b=4)*(a=3)第三章简单C程序设计(1)putchar函数可以向终端输出一个A、整型变量表达式值B、实型变量值C、字符串D、字符或字符型变量值(2)若x,y均定义为int型,z定义为double 型,以下合法的scanf 函数调用语句是A、scanf(“%d%lx,%le”,&x,&y,&z);B、scanf(“%2d*%d%lf”,&x,&y,&z);C、sc anf(“%x%*d%o”,&x,&y,&z);D、scanf(“%x%o%6.2f”,&x,&y,&z);(3)当输入数据的形式为:25,13,10<回车>时,以下程序的输出结果为main(){int x,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%d\n”,x+y+z);}A、x+y+z=48B、x+y+z=35C、x+z=35D、不确定值(4) 以下能正确的定义整型变量a,b和c,并对它们赋初值为5的语句是A、int a=b=c=5;B、int a, b, c=5;C、a=5, b=5, c=5;D、a=b=c=5;(5) 若有以下定义,则正确的赋值语句是int a,b; float x;A、a=1, b=2;B、b++;C、a=b=5;D、b=int(x);第四章选择结构程序设计(1)能正确表示“当x的值在[1,10]和[200,210]的范围为真,否则为假”的表达式是A、(x>=1)&&(x<=10)&&(x.>=200)&&(x<=210)B、(x>=1)││(x<=10) ││(x.>=200) ││(x<=210)C、(x>=1) &&(x<=10) ││(x.>=200) &&(x<=210)D、(x>=1)││(x<=10)&& (x.>=200) ││(x<=210)(2)以下程序的运行结果是#include “stdio.h”main(){int a,b,d=241;a=d/100%9;b=(-1)&&(-1);printf(“%d,%d”,a,b);}A、6,1B、2,1C、6,0D、2,0(3)请阅读以下程序:main(){int a=5 , b=0 , c=0;if (a+b+c) printf(“* * *\n”); else printf(“$ $ $\n”); }以上程序 .A) 有语法错误不能通过编译B) 可以通过编译但不能直接通过连接C) 输出* * *D) 输出$ $ $(4)以下程序的运行结果是 .main(){int m=5;if(m++>5)printf(“%d\n”,m);else printf(“%d\n”,m——);}A) 4B) 5C) 6D) 7(5) 为了避免在嵌套的条件语句中if-else中产生二义性,c语言规定:else子句总是与相配对.A)缩排位置相同的ifB)其之前最近的ifC)其之后最近的ifD)同一行上的if第五章循环控制(1)设有程序段int k=10while (k=0) k=k-1则下面描叙正确的是 .A) while (k=0) k=k-1;B) 循环是无限循环C) 循环体语句一次也不执行D) 循环体语句执行一次(2)下面程序段的运行结果是 . int n=0;while(n++<=2); printf(“%d”,n);A) 2B) 3C) 4D) 有语法错(3)C语言中while和do-while循环的主要区别是 .A) do-while的循环体至少无条件执行一次B) while 的循环控制条件比do-while的循环控制条件严格C) do-while允许从外部转到循环体内D) do-while允许从外部转到循环体内(4)以下能正确计算1*2*3*…*10的程序段是 .A) do {i=1;s=1;s=s*i;i++;}while(I<=10);B) do {i=1;s=0;s=s*i;i++;}while(I<=10);C) i=1;s=1;do {s=s*i;i++;}while(I<=10);D) i=1;s=0;do {s=s*i;i++;}while(I<=10);第六章数组(1)在c语言中,引用数组元素时,其数组下标的数据类型允许是____.A) 整型常量B) 整型表达式C) 整型常量或整型表达式D) 任何类型的表达式(2)以下能对二维数组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}};)(3)若有说明:int a[3][4]={0};则下面正确的叙述是____.A) 只有元素a[0][0]可得到初值0B) 此说明语句不正确C) 数组a中各元素都可得到初值,但其值不一定为0D) 数组a中每个元素均可得到初值0(4)下面程序___(每行程序前面的数字表示行号).1 main()2 {3 float a[10]={0};4 int i5 for(i=0;i<3;i++) scanf(“%d”,&a[i];6 for(i=1;i<10;i++) a[0]=a[0]+a{i};7 printf(“%f\n”,a[0]);8 }A) 没有错误B) 第3行有错误C) 第5行有错误D) 第7行有错误(5)若二维数组a有m列,则计算机一元素a[i][j]在数组中位置的公式为____.(假设a[0][0]位于数组的第一个位置上.)A) i*m+jB) j*m+iC) i*m+j-1D) i*m+j+1第七章函数(1)以下正确的函数定义形式是 .A)double fun(int x,int y)C) double fun(int x;int y)D) double fun(int x,int y)E) double fun(int x,y);(2) 以下正确的函数形式是 .A) double fun(int x,int y){z=x+y; return z;}B) fun(int x,y){int z;return z;}C) fun(x,y){int x,y; double z;z=x+y;return z;}D) double fun(int x,int y){double z;z=x+y;return z;}(3) C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是A)地址传递B)单向值传递C)由实参传给形参,再由形参传回给实参D)传递方式(4)C语言允许函数值型缺省定义,此时该函数值隐含的类型是 .A)float型B)int型C)long型D)double型(5)下面函数调用语句含有实参的个数为. func((exp1,exp2),(exp3,exp4,exp5));A)1B)2C)4D)5第八章编译预处理命令(1)请读程序:#define ADD(x) x+xmain(){int m=1,n=2,k=3;int sum=ADD(m+n)*k;printf(“sum=%d”,sum);}上面程序的运行结果是 .A) sum=9B) sum=10C) sum=12D) sum=18(2) 以下程序的运行结果是 . #define MIN(x,y) (x)<(y)? (x)+(y) main(){int I=10,j=15,k;k=10*MIN(I,j); printf(“%d\n”,k);。
一选择题(24分,每小题2分)1.已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是()。
A 存放读入数据项的存储区B 存放读入数据的地址或指向此地址的指针C 一个指向所读文件的文件指针D 一个整形变量,代表要读入的数据项总数2.以下程序的输出结果为()。
main( ){int i=010,j=10;printf("%d,%d\n",i++,j--);}A 11,9B 9,10C 8,10D 9,93.设a为int型变量,执行下列赋值语句后,a的取值分别是()。
a=125.534;a=20.0/3;a=(int)125.521%4;a=5<<2;A 125,6,31,1B 125,6,1,20C 125,6.666666,31,20D 125.534,6.666666,2,204.设i和k都是int类型,则for循环语句()。
for(i=0,k=-1;k=1;i++,k++)printf("****\n");A 循环结束的条件不合法B 循环体一次也不执行C 循环体只执行一次D 是无限循环5.以下程序的输出结果为()。
main( ){char c;int i;for(i=65;i<68;i++){c=i+32;switch(c){case 'a':case 'b':case 'c':printf("%c,",c);break;default:printf("end");}}}A a,b,c,endB a,a,a,endC a,a,a,D a,b,c,6.函数调用语句:fseek(fp,-10L,2);的含义是()。
A 将文件位置指针从文件末尾处向文件头的方向移动10个字节B 将文件位置指针从当前位置向文件头的方向移动10个字节C 将文件位置指针从当前位置向文件末尾方向移动10个字节D 将文件位置指针移到距离文件头10个字节处7.以下程序的输出结果为()。
D4Z4#include <stdio.h>void main(){int a=3,b=4,c=5;float x=1.2,y=2.4,z=-3.6;unsigned int u=51274;long n=128765;char c1='a',c2='b';printf("a=%2d b=%2d c=%2d\n",a,b,c);printf("x=%f,y=%f,z=%f\n",x,y,z);printf("x+y=%5.2f y+z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x);printf("u=%6u n=%9ld\n",u,n);printf("c1=\"%c\" or %d(ASCII)\n",c1,c1);printf("c2=\"%c\" or %d(ASCII)\n",c2-32,c2);}D4Z8#include <stdio.h>#define PI 3.1415926void main(){float r,h;float c,s,s1,v,v1;scanf("%f,%f",&r,&h);c=2*PI*r;s=PI*r*r;s1=4*PI*r*r;v=4.0/3*PI*r*r*r;v1=s*h;printf("c=%.2f,s=%.2f,s1=%.2f,v=%.2f,v1=%.2f\n",c,s,s1,v,v1); }D5Z5#include <stdio.h>void main(){int x,y;scanf("%d",&x);if(x<1)y=x;else if(x>=10)y=3*x-11;elsey=2*x-1;printf("y=%d\n",y);}D5Z6#include <stdio.h>void main(){int d;scanf("%d",&d);if(d>=0&&d<=100){if(d>=90)printf("A");else if(d>=80)printf("B");else if(d>=70)printf("C");else if(d>=60)printf("D");elseprintf("E");}elseprintf("input error!!!\n"); }D5Z7#include <stdio.h>void main(){long d;int g,s,b,q,w;scanf("%ld",&d);w=d/10000;q=d%10000/1000;b=d%1000/100;s=d%100/10;g=d%10;if(w>0){printf("5\n");printf("%d,%d,%d,%d,%d\n",w,q,b,s,g);printf("%d,%d,%d,%d,%d\n",g,s,b,q,w);}else if(q>0){printf("4\n");printf("%d,%d,%d,%d\n",q,b,s,g);printf("%d,%d,%d,%d\n",g,s,b,q);}else if(b>0){printf("3\n");printf("%d,%d,%d\n",b,s,g);printf("%d,%d,%d\n",g,s,b);}else if(s>0){printf("2\n");printf("%d,%d\n",s,g);printf("%d,%d\n",g,s);}else if(g>=0){printf("1\n");printf("%d\n",g);printf("%d\n",g);}}D6Z2#include <stdio.h>void main(){char c;int WordCount=0,BlankCount=0,NumberCount=0,OtherCount=0;while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')WordCount++;else if(c==' ')BlankCount++;else if(c>='0'&&c<='9')NumberCount++;elseOtherCount++;}printf("WordCount=%d,BlankCount=%d,NumberCount=%d,OtherCount=%d\n",Word Count,BlankCount,NumberCount,OtherCount);}D6Z4#include <stdio.h>void main(){double jc=1,sum=0;int i;for(i=1;i<=20;i++){jc*=i;sum+=jc;}printf("%lf\n",sum);}D6Z6#include <stdio.h>void main(){int i,j,k;for(i=1;i<=9;i++)for(j=0;j<=9;j++)for(k=0;k<=9;k++)if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)printf("%d\n",i*100+j*10+k);}D6Z8#include <stdio.h>void main(){int fz=2,fm=1,i,t;float sum=0;for(i=0;i<20;i++){sum+=fz*1.0/fm;t=fz;fz=fz+fm;fm=t;}printf("%f\n",sum);}12.28.c++d7zsy2#include <stdio.h>main(){int a[11]={10,20,30,40,50,60,70,80,90,100},n,i,j,t; scanf("%d",&n);for(i=0;i<10;i++)if(n<a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=n;for(i=0;i<11;i++)printf("%3d ",a[i]);}d7zsy3#include <stdio.h>main(){int a[4][4],b[4][4],c[4][4]={0};int i,j,k;printf("input A matrix:\n");for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);printf("input B matrix:\n");for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d",&b[i][j]);for(i=0;i<4;i++)for(k=0;k<4;k++)for(j=0;j<4;j++)c[i][k]+=a[i][j]*b[j][k];printf("Output C matrix:\n");for(i=0;i<4;i++){for(j=0;j<4;j++)printf("%3d ",c[i][j]);printf("\n");}}D7ZSY5#include <stdio.h>main(){inta[10][10]={{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0}}; int i,j;for(i=1;i<9;i++)for(j=1;j<9;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i<9;i++){for(j=0;j<=i;j++)printf("%4d",a[i][j]);printf("\n");}}D7ZSY13#include <stdio.h>#include <string.h>main(){char c1[20],c2[20],c3[40],i,k;gets(c1);gets(c2);for(i=0;c1[i]!=0;i++)c3[i]=c1[i];for(k=0;c2[k]!=0;k++)c3[i++]=c2[k];c3[i]=0;puts(c3);}D7ZSY15#include <stdio.h>#include <string.h>main(){char s1[80],s2[80],i;gets(s2);for(i=0;s2[i]!=0;i++)s1[i]=s2[i];s1[i]=0;puts(s1);}D8ZSY1#include <graphics.h>#include <conio.h>#include <dos.h>#include <math.h>#define PI 3.1415926void DrawFlower(int color,int sx,int sy,int r,int c,float d) {double p,st,x,y;int px,py,i;setcolor(color);for(st=0;st<=2*PI;st+=0.01){p=cos(st*c);x=p*cos(st+d);y=p*sin(st+d);px=sx+x*r;py=sy-y*r;putpixel(px,py);}}void main(){int gdriver,gmode;int i=1;float d;gdriver=VGA;gmode=VGAHI;initgraph(&gdriver,&gmode,"c:\\tc3");for(d=0;d<=2*PI;d+=0.02){DrawFlower(i%14+1,320,240,i*9%200,3,d);delay(50);DrawFlower(0,320,240,i*9,3,d);i+=2;}getch();closegraph();}d8zsy2#include <stdio.h>int findday(int year,int month,int day){int i,sum=0;int MonDay[12]={31,28,31,30,31,30,31,31,30,31,30,31}; if((year%4==0&&year%100!=0)||year%400==0)MonDay[1]++;for(i=0;i<month-1;i++)sum+=MonDay[i];sum=sum+day;return sum;}main(){int year,month,day;int sum;scanf("%d-%d-%d",&year,&month,&day);sum=findday(year,month,day);printf("sum=%d\n",sum);}d8zsy3#include <stdio.h>void HexToDec(){int c;scanf("%x",&c);printf("%d",c);}main(){HexToDec();d8zsy5#include <stdio.h>#include <string.h>void Ver(char c[]){int i,t,l;l=strlen(c);for(i=0;i<=l-1-i;i++){t=c[i];c[i]=c[l-1-i];c[l-1-i]=t;}}main(){char a[80];gets(a);Ver(a);puts(a);}d8zsy7#include <stdio.h>#include <string.h>void find(char c[],char d[]){int i,l,j=0;l=strlen(c);for(i=0;i<l;i++){if(c[i]=='a'||c[i]=='o'||c[i]=='e'||c[i]=='i'||c[i]=='u'||c[i]=='A'||c[i]== 'O'||c[i]=='E'||c[i]=='I'||c[i]=='U'){d[j++]=c[i];}}d[j]=0;main(){char a[80],b[80];gets(a);find(a,b);puts(b);}d8zsy10#include <stdio.h>#include <string.h>void findmaxlen(char c[],char d[]){int i,l,j,k=0,lmax=0;l=strlen(c);for(i=0;i<l;i++){if(c[i]>='a'&&c[i]<='z'||c[i]>='A'&&c[i]<='Z') {k++;if(lmax<k){lmax=k;for(j=0;j<k;j++)d[j]=c[i-k+1+j];d[j]=0;}}elsek=0;}}main(){char a[80],b[80];gets(a);findmaxlen(a,b);puts(b);}d10zsy1#include <stdio.h>void input(int *p){int i;for(i=0;i<10;i++)scanf("%d",p++);}void output(int *p){int i;for(i=0;i<10;i++)printf("%d ",*p++); }void xch(int *p){int i,max,j=0,t;max=*p;for(i=1;i<10;i++){if(max<*(p+i)){max=*(p+i);j=i;}}t=p[j];p[j]=p[9];p[9]=t;}main(){int a[10];input(a);xch(a);output(a);}d10zsy2#include <stdio.h>#include <math.h>void findarea(double *a,double *b,double *c,double *area) {double s;s=0.5*(*a+*b+*c);*area=sqrt(s*(s-*a)*(s-*b)*(s-*c));}main(){double a,b,c,area;scanf("%lf,%lf,%lf",&a,&b,&c);findarea(&a,&b,&c,&area);printf("area=%lf\n",area);}d10zsy3#include <stdio.h>#include <string.h>void StrCopy(char *from,char *to,int start){while(*(from+start))*to++=*((from++)+start);*to=0;}main(){char c1[80],c2[80];int s;gets(c1);scanf("%d",&s);StrCopy(c1,c2,s);puts(c2);}d10zsy4#include <stdio.h>void MatMul(int (*p1)[3],int (*p2)[3],int (*p3)[3],int n) {int *a,*b,*c,i,j,k;a=*p1;b=*p2;c=*p3;for(i=0;i<n;i++)for(k=0;k<n;k++)for(j=0;j<n;j++)*(c+i*n+k)+=*(a+i*n+j) * *(b+j*n+k); }main(){int a[4][4],b[4][4],c[4][4]={0};int i,j,k;printf("input A matrix:\n");for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);printf("input B matrix:\n");for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d",&b[i][j]);MatMul(a,b,c,4);printf("Output C matrix:\n");for(i=0;i<4;i++){for(j=0;j<4;j++)printf("%3d ",c[i][j]);printf("\n");}}d10zsy16#include <stdio.h>#include <string.h>void findNum(char *p1,char *p2){for(;*p1!=0;p1++)if(*p1>='0'&&*p1<='9')*p2++=*p1;*p2=0;}main(){char c1[80],c2[80];gets(c1);findNum(c1,c2);puts(c2);}期末复习题(1) 执行下面的程序段后,变量k中的值为A) 不定值 B) 33 C) 30 D) 10int k=3, s[2];s[0]=k; k=s[1]*10;(2) 若已定义:int a[ ]={0,1,2,3,4,5,6,7,8,9}, *p=a,i;其中0≤i≤9, 则对a数组元素不正确的引用上A) a[p-a] B) *(&a[i]) C) p[i] D) a[10](3) 下列程序执行后的输出结果是A) 6 B) 7 C) 8 D) 9void func(int *a,int b[]){ b[0]=*a+6; }main(){ int a,b[5];a=0; b[0]=3;func(&a,b); printf("%d \n,b[0]);}(4) 下列程序执行后的输出结果是A) 3 B) 6 C) 9 D) 随机数main(){ int a[3][3], *p,i;p=&a[0][0];for(i=p; i<9; i++) p[i]=i+1;printf("%d \n",a[1][2]);}(5) 设有数组定义: char array [ ]="China"; 则数组array所占的空间为A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节(6) 下列程序的输出结果是A) 4 B) 6 C) 8 D) 10int b=2;int func(int *a){ b += *a; return(b);}main(){ int a=2, res=2;res += func(&a);printf("%d \n",res);}(7) 若有以下调用语句,则不正确的fun函数的首部是A) void fun(int m, int x[]) B) void fun(int s, int h[41]) C) void fun(int p, int *s) D) void fun(int n, int a)main(){ …int a[50],n;…fun(n, &a[9]);…}(8) 下列程序执行后的输出结果是A) you&me B) you C) me D) errmain(){ char arr[2][4];strcpy(arr,"you"); strcpy(arr[1],"me");arr[0][3]='&';printf("%s \n",arr);}(9) 下列程序执行后的输出结果是A) hello B) hel C) hlo D) hlmvoid func1(int i);void func2(int i);char st[]="hello,friend!";void func1(int i){ printf("%c",st[i]);if(i<3){i+=2;func2(i);}}void func2(int i){ printf("%c",st[i]);if(i<3){i+=2;func1(i);}}main(){ int i=0; func1(i); printf("\n");}(10) 执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是A) 123,456,789 B) 1,456,789C) 1,23,456,789 D) 1,23,456main(){ char s[100]; int c, i;scanf("%c",&c); scanf("%d",&i); scanf("%s",s);printf("%c,%d,%s \n",c,i,s);}(11) 下面函数用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。
一、选择题1、一个C程序由若干个C函数组成,各个函数在文件中的位置顺序为:()A、任意B、第一个函数必须是主函数,其他函数任意C、必须完全按照执行的顺序排列D、其他函数可以任意,主函数必须在最后2、下列四个叙述中,正确的是:( )A、C程序中的所有字母都必须小写B、C程序中的关键字必须小写,其他标示符不区分大小写C、C程序中的所有字母都不区分大小写D、C语言中的所有关键字必须小写3、下列四个叙述中,错误的是:( )A、一个C源程序必须有且只能有一个主函数B、一个C源程序可以有多个函数C、在C源程序中注释说明必须位于语句之后D、C源程序的基本结构是函数4、下面不是C语言合法标识符的是:()A、abcB、5nC、_4mD、x35、以下叙述不正确的是:( )A. 分号是C语句的必要组成部分B。
C程序的注释可以写在语句的后面C。
函数是C程序的基本单位D。
主函数的名字不一定非用main来表示6、C语言中允许的基本数据类型包括:( )A. 整型、实型、逻辑型B. 整型、实型、字符型C。
整型、字符型、逻辑型 D. 整型、实型、逻辑型、字符型7、C语言中能用八进制表示的数据类型为:( )A、字符型、整型B、整形、实型C、字符型、实型、双精度型D、字符型、整型、实型、双精度型8、下列属于C语言合法的字符常数是:( )A、’\97’B、”A”C、’\t’D、”\0”9、在C语言(VC环境)中,5种基本数据类型的存储空间长度的排列顺序为:( )A、char<int〈=long int 〈=float〈doubleB、char=int<long int 〈=float〈doubleC、char〈int<long int=float=doubleD、char=int=<long int <=float<double10、若有以下定义语句char c1=’b’, c2=’e’;printf(“%d,%c\n",c2-c1,c2-‘a’+’A');则输出结果是:()A、2,MB、3,EC、2,ED、输出项与相应的格式控制不一致,输出结果不确定11、以下合法的赋值语句是:( )A、x=y=100B、d-—;C、x + yD、c = int(a+b);12、在以下一组运算符中,优先级最高的是:()A、〈=B、==C、%D、&&13、下列能正确表示a≥10或a≤0的关系表达式是:()A、a〉=10 or a〈=0B、a<=10 || a>=0C、a〉=10 || a〈=0D、a〉=10 && a<=014、下列只有当整数x为奇数时,其值为“真"的表达式是:( )A、x%2==0B、!(x%2==0)C、(x—x/2*2)==0D、!(x%2)15、设a为整型变量,不能正确表达数学关系10<a<15的C语言表达式是:( )A、1 0< a < 15B、!(a〈=10 || a〉=15)C、a>10 && a〈15D、!(a<=10) && !(a>=15)16、已知x=43, ch='A',y=0;则表达式(x>=y&&ch<’B’&&!y)的值是:()A、0B、语法错C、1D、“假”17、表达式17%4 /8的值为:( )A、0B、1C、2D、318、一个可执行的C程序的开始执行点是:()A. 程序中的第一个语句 B。
目录重要次重要重复或欲删除基础第一章 C语言概述1.1 选择题1.2 填空题第二章数据类型、运算符与表达式2.1 选择题2.2 填空题第三章最简单的C程序设计3.1 选择题3.2 填空题第四章逻辑运算和判断选取控制4.1 选择题4.2 填空题4.3 编程题第五章循环控制5.1 选择题5.2 填空题5.3 编程题第六章数组6.1 选择题6.2 填空题6.3 编程题第七章函数7.1 选择题7.2 填空题7.3 编程题第八章编译预处理8.1 选择题8.2 填空题8.3 编程题第九章指针9.1 选择题9.2 填空题第一章 C语言概述1.1 选择题*1.1一个C程序的执行是从。
A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束参考答案:A参考分析:C语言总是从main函数开始,main函数结束。
但是C语言中存在一个exit(0)函数,它可以使得程序在任何时候、任何位置结束程序的运行。
如果不考虑exit(0)等函数的特殊作用,C则总是在main函数结束。
*1.2以下叙述正确的是。
A)在C程序中,main函数必须位于程序的最前面B)在C程序的每一行只能写一条语句C)C语言本身没有输入输出语句D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误参考答案:C参考分析:C程序对main函数的位置没有任何要求;其书写格式自由,一行可以写多条语句,一条语句(多关键字语句)可以写在多行;C语言忽略注释,把注释看作是一个空格,不会对注释中的内容进行语法检查。
因此,如果注释中存在错误,系统是不可能发现的。
另外,C语言的I/O操作均通过函数实现,系统本身未提供相应的语句。
1.3以下叙述不正确的是。
A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数C)C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面参考答案:D参考分析:C语言中,注释语句的位置是任意的,当然,它不能破坏标识符的完整性。
C语言期末考试试题(谭浩强版) 2011-7-8 20:552011-7-8 21:23 最佳答案 C语言期末考试试题2008年04月12日星期六 00:22一选择题(24分,每小题2分)1.已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是()。
A 存放读入数据项的存储区B 存放读入数据的地址或指向此地址的指针C 一个指向所读文件的文件指针D 一个整形变量,代表要读入的数据项总数2.以下程序的输出结果为()。
main( ){int i=010,j=10;printf("%d,%d\n",i++,j--);}A 11,9B 9,10C 8,10D 9,93.设a为int型变量,执行下列赋值语句后,a的取值分别是()。
a=;a=3;a=(int)%4;a=5<<2;A 125,6,31,1B 125,6,1,20C 125,,31,20D ,,2,204.设i和k都是int类型,则for循环语句()。
for(i=0,k=-1;k=1;i++,k++)printf("****\n");A 循环结束的条件不合法B 循环体一次也不执行C 循环体只执行一次D 是无限循环5.以下程序的输出结果为()。
main( ){char c;int i;for(i=65;i<68;i++){c=i+32;switch(c){case 'a':case 'b':case 'c':printf("%c,",c);break;default:printf("end");}}}A a,b,c,endB a,a,a,endC a,a,a,D a,b,c,6.函数调用语句:fseek(fp,-10L,2);的含义是()。
A 将文件位置指针从文件末尾处向文件头的方向移动10个字节B 将文件位置指针从当前位置向文件头的方向移动10个字节C 将文件位置指针从当前位置向文件末尾方向移动10个字节D 将文件位置指针移到距离文件头10个字节处7.以下程序的输出结果为()。
main( ){int i=0,j=0;while(s1[i]!='\0')i++;while(s2[j]!='\0')s1[i++]=s2[j++];s1[i]=0;printf("%s\n",s1);}A sideB countryC sidetryD countryside8.下列说法不正确的是()。
A 主函数main中定义的变量在整个文件或程序中有效B 不同函数中,可以使用相同名字的变量C 形式参数是局部变量D 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效9.在下列程序段中,枚举变量 c1的值是()。
enum color { red,yellow,blue=4,green,white}c1;c1=yellow;c1=white;A 1B 3C 5D 610.设有说明 int (*ptr)();其中标识符ptr是()。
A 是一个指向整形变量的指针B 是一个指针,它指向一个函数值是int的函数C 是一个函数名D定义不合法11.定义由n个指向整形数据的指针组成的数组p,其正确的方式为()。
A int p;B int (*p)[n];C int *p[n];D int (*p)( );12.具有相同类型的指针类型变量p与数组a,不能进行的操作是()。
A p=a;B *p=a[0];C p=&a[0];D p=&a;二判断对错,对的划“√”,错的划“×”(20分,每小题2分)1.参加位运算的数据可以是任何类型的数据。
( )2.若有定义和语句:int a;char c;float f;scanf("%d,%c,%f",&a,&c,&f);若通过键盘输入:10 A 12 5则a=10,c=‘A’,f=。
( )3.C语言把文件看作是一个字符(字节)的序列。
( )4.若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义,所以此宏定义是错误的。
( )5.在Turbo C中,下面的定义和语句是合法的:file *fp;fp=fopen("","r"); ( )6.若有定义:char s[ ]="china";则Turbo C系统为数组s开辟6个字节的内存单元。
( )7.若有定义和语句:int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++)sum+=a[i][2-i];则sum=21。
( )8.若有定义和语句:struct student{int num;char name[10];float score;}s[5]={{1,"lili",},{9,"xiaohua",66}},*p=s;printf("%d",*p++);输出结果是1。
( )9.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。
( )10.在Turbo C中,此定义和语句是合法的:enum aa{ a=5,b,c}bb;bb=(enum aa)5; ( )三写出下列程序的运行结果(36分,每小题6分)1.main( ){int i=29,j=6,k=2,s;s=i+i/j%k-9; main( ){int x=31,y=2,s=0;do{s-=x*y;x+=2;y-=3;}while(x%3==0); main( ){int a[6]={10,20,30,40,50,60},i;invert(a,0,5);for(i=0;i<6;i++)printf(“%d,”,a[i]);printf(“\n”);}invert(int s[ ],int i,int j) #include <>main(){char str[ ]="The C program",c;int i;for(i=2;(c=str[i])!='\0';i++){switch(c){case 'g': ++i; break; struct w 马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马各多少匹?main( ){int hb,hm,hl,n=0;for(hb=0;hb<=100;hb+=(1))for(hm=0;hm<=100-hb;hm+=(2)){hl=100-hb- (3) ;if(hb/3+hm/2+2*(3)==100){n++;printf("hb=%d,hm=%d,hl=%d\n",hb/3,hm/2,2*hl);}}printf("n=%d\n",n);}2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。
#define N 10char str[N];void main(){int i,flag;for(flag=1;flag==1;){scanf("%s",str);flag=0;printf("\n");}sort(___(4)___);for(i=0;i<N;i++){printf("%c",str[i]);}printf("\n");}sort(char str[N]) 下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。
(本程序中二阶矩阵用一维数组来表示。
)例如,矩阵为:3 0 0 32 5 7 31 0 4 2则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。
add(int m,int n,int arr[]){for(i=0;i<m;i=i+m-1)for(j=0;j<n;j++)sum=sum+____(7)____;for(j=0;j<n;j=j+n-1)for(i=1;____(8)____;i++)sum=sum+arr[i*n+j];return(sum);}4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。
#define N 10main(){void maxmin(int arr[],int *pt1,int *pt2,int n);int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;p1=&a;p2=&b;maxmin(array,p1,p2,N);printf("max=%d,min=%d",a,b);}void maxmin(int arr[],int *pt1,int *pt2,int n){int i;*pt1=*pt2=arr[0];for(i=1;i<n;i++){if(arr[i]>*pt1)____(9)____ ;if(arr[i]<*pt2)____(10)____ ;}}答案一选择题(24分,每小题2分)1.( B )2.( C )3.( B )4.( D )5.( D )6.( A )7.( D ) 8.( A ) 9.( D )10.( B ) 11.( C ) 12.( D )二判断对错,对的划“√”,错的划“×”(20分,每小题2分)1.(×)2.(√)3.(√)4.(×)5.(×)6.(√)7.(√) 8.(×)9.(√) 10.(√ )三写出下列程序的运行结果(36分,每小题6分)=20=35 y=-4 s=-29,50,40,30,20,10,C pr*amvalue:1234China! H w lhigh byte:12low byte:34word value:1274the result:3ca8四阅读下列程序,在处填入适当内容,使程序完整(20分,每个空2分)1.(1) 3 (2) 2 (3)hm hl2.(4) str (5) str[i]=str[i+1] (6) str[i+1]=t3.(7) arr[i*n+j] (8) i<m-14.(9) *ptr1=arr[i] (10) *ptr2=arr[i]赞同1| 评论(1)。