华科2013年C语言程序设计试卷-A卷及参考答案
华科2013年C语言程序设计试卷-A卷及参考答案(正式用卷)
计算机学院2012-2013学年第2学期C语言程序设计考试试卷A卷(或B卷): A卷闭卷(或开卷):闭卷考试时间:2013年 7 月 5 日专业班级学号学生姓名题号一二三四五六七总分核对人题分10 10 10 10 20 20 20 100得分注意:试卷后面附有运算符的优先级和结合性表。
一、单项选择题(在下面每小题的A、B、C、D四个选项中,只有一个选项得分评卷人是正确的,请选择正确的选项并填写到括号内,选择正确得分。
本大题共10小题,每小题1分,共10分。
)1、以下为正确的标识符是【】A、forB、u.3C、3cD、DO2、以下为合法的整型常量是【】A、-1UB、01111001BC、ffffD、01383、下列数据中属于字符串常量的是【】A、'a'B、"a"b"c"C、'123'D、"a\"b\"c"4、表达式-a+++b中记号(token)的个数是【】A、3个B、4个C、5个D、6个5、 -3的16位补码是【】A、0xfffdB、0x1011C、0x7ffdD、0x00036、以下为正确的转义字符是【】A、'\'B、'\\'C、'\0x12'D、'\0f1'7、设有声明:enum {U,V,W=0,X,Y=0,Z} a; 则值为1的枚举常量的个数是【】A、1个B、2个C、3个D、4个8、设有声明: 【】union U{ long a; short b; char c; char s[20];} v={0x01020304},*p=&v;则下列选项正确的是A、printf("%d\n",sizeof(v))输出4B、printf("%d\n",p->s[0])输出4C、printf("%d\n",v.c)输出1D、printf("%x\n",v.b)输出1029、设有声明和语句:FILE *fp; fp=fopen("c:\\abc.dat","r+"); 【】则下列选项正确的是A、打开文件的文件名为\abc.datB、打开的是二进制文件C、打开的是文本文件D、打开的文件只能进行读操作10、设有如下代码片段:【】int a[]={1,2,3,4,5},i;char *p=(char *)a;for(i=0;i<3;i++)printf("%d ",*((p+=sizeof(int))-sizeof(int)));printf("\n");则该代码片段的输出结果是A、1 2 3 4 5B、1 2 3C、1 1 1D、2 3 4二、 多项选择题(下面每小题的A 、B 、C 、D 备选项中,有两个或两个以上的选项是正确的,请选择正确的选项并填写到括号内。
华中科技大学级C语言程序设计考试经典试卷复习资料
华中科技大学10级《C语言程序设计》考试试卷课程性质:必修使用范围:本科考试时间:年月日考试方式:闭卷学号______________专业_______班级____姓名___________成绩____一、选择题(每小题2分,共20分)( A )(1)若x、y、j和k都是int型变量,则计算表达式x=( k=32,j=6, i=4)后,x的值为。
A)4 B)16 C)32 D)52( B )(2)C语言中标识符只能由字母、数字和下划线组成,且第一个字符。
A)必须为字母 B)必须为字母或下划线C)必须为下划线 D)可以是字母、数字和下划线中任一种字符( D )(3)下面四个选项中,均是正确的数值常量或字符常量的选项是。
A)0.0 0f 8.9e '&' B)"a" 3.9e-2.5 1e1 '\"'C)'3' 011 0xFF00 0a D)+001 0xabcd 2e2 50( B )(4)已知各变量的类型说明如下:int i=8,k,a,b;unsigned long w=5;double x=1.42,y=5.2;则以下符合C语言语法的表达式是。
A)a=a*3=2 B)a+=a-=(b=4)*(a=3)C)x+y=-3*a D)y=float(i)( A )(5)若以下变量均是整型,且num=sum=5;则计算表达式num++,sum++,++num后num的值为。
A)7 B)8 C)9 D)10( B )(6)在C语言中,引用数组元素时,其数组下标的数据类型允许是。
A)整型常量 B)整型常量或整型表达式C)整型表达式 D)任何类型的表达式( C )(7)以下能对一维数组a进行正确初始化的语句是。
A)int a[10]={0,0,0,0,0} B)int a[10]={ };C)int a[ ]={0}; D)int a[10]={10*1};/*各元素值为1*/( B )(8)下面程序(注:每行程序前面的数字表示行号)。
华中科技大学标准C语言程序设计及应用习题答案
第二章一.选择题1.C2.B D3.A4.A5. D6.C7.D8.C9.A 10.D11.B 12.D 13.C 14.D 15.A16.B 17.A 18.B 100011 001111二.判断题1.错2.错3.错4.错三.填空题1. B 662. n1=%d\nn2=%d\n3. 0四.计算1(1)x|y = 0x002f(2)x^y = 0x0026(3)x&y = 0x0009;(4)~x+~y = 0xffc6(5)x<<=3 0x0068(6)y>>=4 0x00022(1)6(2)50(3)1(4)–16(5)1(6)203(1)0(2)1(3)1(4)4(5)8(6)14(1)12(2)0(3)1(4)27(5)1(6)6(7)24(8)27(9)–295(1)0(2)1(3)1(4)–3(5)2五.程序分析题程序1b=20 a=3600程序2第三章一.填空题1.s=62.963.(1) scanf("%c",&c);(2) c-32 更好的答案:c-('a'-'A')2.1main(){int a,b;printf("please input a & b:");scanf("%d%d",&a,&b);printf("\nmax is %d\n",(a>b)?a:b);}2.2int max(int x,int y);main(){int a,b,c,max;printf("please input a & b & c:");scanf("%d%d%d",&a,&b,&c);max=a>b?a:b;max=c>max?c:max;printf("\nmax is %d\n",max);2.3main(){int i=0,sum=0;while(i<=100){sum+=i;i++;}printf("1+2+3+......+100=%d\n",sum);}2.4main(){int i;int a=10,b=-3;int c;printf("%6d%6d",a,b);for(i=2;i<10;i++){c=3*b+a;printf("%6d",c);a=b;b=c;}printf("\n");}2.5main(){int i;while(1){printf("please input a data(0:exit):");scanf("%d",&i);if(i==0)break;if(i%2==0)printf("the data %d is a even number.\n",i);elseprintf("the data %d is a odd number.\n",i); }}#include <stdio.h>main(){int i;int a=8,b=1;int sum=0;for(i=0;i<10;i++){b+=3;sum += a;a+=b;printf("a%8d b:%8d\n",a,b);}printf("The Sum Of Is:%d\n",sum);}2.7#include <stdio.h>main(){float x,y;printf("please input x:");scanf("%f",&x);if(x<1.0)y=x;else if(x<10)y=2*x-1;elsey=3*x-11;printf("y=%f\n",y);}2.8#include <stdio.h>main(){long a,i,b,a1;while(1){printf("please input data(1-99999):");scanf("%ld",&a);printf("a:%ld\n",a);if(a<=0||a>=100000)break;i=0;a1=0;while(a!=0){b=a%10;printf("%8d",b);a/=10;i++;a1=a1*10+b;}printf("\n i:%ld a1:%ld\n",i,a1);}}2.9#include <stdio.h>#include <time.h>#include <stdlib.h>main(){int a,b,i,k=0;randomize();a=random(1001);/*create a random data(0-1000)*/ for(i=0;i<20;i++){printf("please guess a number:");scanf("%d",&b);if(a>b){k++;printf("\n%d:Smaller,guess again!\n",k);}else if(a<b){k++;printf("\n%d:Bigger,guess again!\n",k);}else{printf("\nYou guess right,congraturation!") ;printf("\nYou have guessed %d times",k);break;}}if(k==20)printf("\nsorry,you failed!");}2.10#include <stdio.h>main(){int a,b,c;int num;for(a=0;a<10;a++){for(b=0;b<10;b++){for(c=1;c<10;c++){num=a*100+b*10+c;if((num%3==0)&&(a==5||b==5||c==5))printf("%8d",num);}}}printf("\n\n\n");}2.11#include <stdio.h>main(){int i;int a,b;printf("please input a,b:");scanf("%d%d",&a,&b);for(i=a<b?a:b;i>0;i--){if(a%i==0&&b%i==0){printf("The max=%d",i);break;}}for(i=a>b?a:b;i>0;i++){if(i%a==0&&i%b==0){printf("\nThe min=%d",i);break;}}2.12#include <stdio.h>main(){int a,k=0;printf("please input data:");scanf("%d",&a);while(a%2==0){a=a/2;k++;}printf("\nthe number of factor(2) is %d",k); }2.13main(){long i,t=1;long sum=0;for(i=1;i<=10;i++){t*=i;sum+=t;printf("%ld!=%ld\n",i,t);}printf("sum:%ld\n",sum);}2.14#include <stdio.h>void main(){int i,x=0;for(i=9;i>=1;i--){x=2*(x+1);}printf("The first day:%d",x);}2.15#include <stdio.h>#define PI 3.141593main(){float r,h;float v;printf("please input r,h:");scanf("%f%f",&r,&h);v=1.0/3*PI*r*r*h;printf("V=%.2f",v);}2.16#include<stdio.h>#include<math.h>main(){long int sn=0;long int m=0,t=0;int a,n,i;printf("please input a n:");scanf("%d%d",&a,&n);for(i=0;i<n;i++){m=m*10+a;sn+=m;}printf("a+aa+aaa+...+aa...a=%ld\n\n",sn); }2.17#include <stdio.h>main(){int k;printf("please input k:");do{scanf("%d",&k);if(k>=0&&k<=6)break;}while(1);switch(k){case 0:printf("Sunday.\n");break;case 1:printf("Monday.\n");break;case 2:printf("Tuesday.\n");break;case 3:printf("Wednesday.\n");break;case 4:printf("Thursday.\n");break;case 5:printf("Friday.\n");break;case 6:printf("Saturday.\n");break;}}2.18#include <stdio.h>main(){int i;double x,a,b=1,sum=1;printf("please input x:");scanf("%lf",&x);a=x;for(i=1;a/b>=1e-6;i++){sum=sum+a/b;a=a*x;b=(i+1)*b;}printf("\nsum=%lf",sum);}2.19#include <stdio.h>#include <math.h>main(){float a,x1,x2;printf("input a:");scanf("%f",&a);x1=1.0;while(1){x2=1.0/2*(x1+a/x1);if(fabs(x2-x1)<1e-5)break;x1=x2;}printf("sqrt(a)=%f",x2);}第四章写出下列程序输出结果1.no 1 a=1no 1 a=0no 1 a=1no 1 a=02.a=0 b=0 c=0a=1 b=0 c=0a=2 b=0 c=03.main:x=5,y=1,n=1func:x=6,y=21,n=11main:x=5,y=1,n=11func:x=8,y=31,n=21第五章1.D2.D3.C4.65.CDABC6.(1)j+=2(2)a[i]<a[j]7.(1)s[i++]!='\0'(2)s[i-1]8.D9.B10.6(同题4)11.s[i]>='0'&&s[i]<='9'12. (1)'\0' (2)str1[i]-str2[i]5.1#include<stdio.h>int fun();int fun(){int a[3][3],sum;int i,j;sum=0;/*error*/for(i=0;i<3;i++){for(j=0;j<3;j++)scanf("%d",&a[i][j]);/*error*/}for(i=0;i<3;i++)sum=sum+a[i][i];printf("sum=%d\n",sum);}void main(){fun();}5.2#include <stdio.h>void main( void ){float Num[10];float Input,GetNum[11];int i,j;float a=6;for(i=0; i<10; i++){Num[i]=a;a=a+7.5;}Loop1: printf("Please input a Number(0-80) Input=");scanf("%f",&Input);if((Input<0)||(Input>70)==1)goto Loop1;for(i=0; i<10; i++ ){if(Input<Num[i])goto Loop2;}Loop2: for(j=0; j<i; j++ )GetNum[j]=Num[j];GetNum[j]=Input;for(j=i; j<=10; j++,i++)GetNum[j+1]=Num[i];for(j=0; j<11; j++ )printf("%3.3f ",GetNum[j]);}5.3#include "stdio.h"#include "stdlib.h"main(){int a1,a2,a3,a4,a5,a6,a7,a8,a9;int a[3];int i;for(;;){for (i=0;i<3;i++){a[i]=rand()%3;}while((a[0]!=a[1]) && (a[0]!=a[2]) && (a[1]!=a[2]))/*get three different numbers 0,1,2*/{a1=a[0]+1;/*divide 1~9 into three groups,a1~a3,a4~a6,a7~a9*/a2=a[1]+1;a3=a[2]+1;a4=a1+3;a5=a2+3;a6=a3+3;a7=a1+6;a8=a2+6;a9=a3+6;/* make sure that each line and each row is made up with three members in different group.*//* such as: a9 a1 a5a2 a6 a7a4 a8 a3 */if(((a1+a5+a9) == (a2+a6+a7)) && ((a1+a5+a9) == (a3+a4+a8))&& ((a1+a6+a8) == (a5+a7+a3)) && ((a1+a5+a9) == (a2+a4+a9))){printf("%d %d %d\n%d %d %d\n%d %d %d\n",a9,a1,a5,a2,a6,a7,a4,a8,a3);return;}}}}5.4#include <stdio.h>void main(void){char input1[100],input2[100],input3[100];int i,Eng=0,eng=0,num=0,blank=0,other=0;printf("Input 3 rows of character,each row don't exceed 80 characters:\n");gets(input1);printf("The second row:\n");gets(input2);printf("The third row:\n");gets(input3);/*test the first row*/for(i=0; i<100; i++){if(input1[i]=='\0')goto Loop1;else if(('A'<=input1[i])&&(input1[i]<='Z')==1)Eng++;else if(('a'<=input1[i])&&(input1[i]<='z')==1)eng++;else if(('0'<=input1[i])&&(input1[i]<='9')==1)num++;else if(input1[i]==32)blank++;else other++;}/*test the second row*/Loop1: for(i=0; i<100; i++){if(input2[i]=='\0')goto Loop2;else if(('A'<=input2[i])&&(input2[i]<='Z')==1)Eng++;else if(('a'<=input2[i])&&(input2[i]<='z')==1)eng++;else if(('0'<=input2[i])&&(input2[i]<='9')==1)num++;else if(input2[i]==32)blank++;else other++;}/*test the third row*/Loop2: for(i=0; i<100; i++){if(input3[i]=='\0')goto Loop3;else if(('A'<=input3[i])&&(input3[i]<='Z')==1)Eng++;else if(('a'<=input3[i])&&(input3[i]<='z')==1)eng++;else if(('0'<=input3[i])&&(input3[i]<='9')==1)num++;else if(input3[i]==32)blank++;else other++;}Loop3: printf("Upper english character:%d\nLower english character:%d\nNumber:%d\nBlank:%d\nOther characters:%d\n",Eng,eng,num,blank,other);}5.5#include <stdio.h>void main(void){char str1[80],str2[40];int i,j,k;/*Input two string*/printf("Please input the first string\n str1=");gets(str1);printf("Please input the second string\n str2=");gets(str2);/*Get the end of str1*/for(i=0; i<80; i++){if(str1[i]=='\0')break;}/*Copy str2 to str1*/for(j=i,k=0; str2[k]!='\0';k++,j++)str1[j]=str2[k];str1[i+k]='\0';puts(str1);}5.6#include <stdio.h>struct student{char name[20];int score;}stu[5],stu1;void main(void){ int i,j;printf("Input student's score and name(5),seperate using the character of ',' :\n");for(i=0; i<5; i++)scanf("%d,%s",&stu[i].score,&stu[i].name);/*sorting*/for(i=0; i<5; i++)for(j=0; j<4-i; j++)if(stu[j].score>stu[j+1].score){stu1=stu[j];stu[j]=stu[j+1];stu[j+1]=stu1;}printf("After sotred,score and name:\n");for(i=0; i<5; i++)printf("%d,%s\n",stu[i].score,stu[i].name);}5.7#include<stdio.h>main(){ int a[3][3],i,j,m,n,o,p;printf("Please input a 3*3 shuzu:\n");for (i=0;i<=2;i++)for (j=0;j<=2;j++)scanf("%d",&a[i][j]);for (i=0;i<=2;i++){ m=(a[i][0]>a[i][1])? a[i][0]:a[i][1];n=(m>a[i][2])? m: a[i][2];}for (j=0;j<=2;j++){ o=(a[0][j]<a[1][j])? a[0][j]:a[1][j];p=(o<a[2][j])? o: a[2][j];}if (n==p)printf("Andian is %d\\n",p);elseprintf("There is no andian.\\n"); }5.8#include <stdio.h>void main(void){ int a[4][3],b[3][4],i,j;for(i=0; i<4; i++){ for(j=0; j<3; j++)scanf("%d",&a[i][j]);}for(i=0; i<4; i++){printf("\n");for(j=0; j<3; j++)printf("%5d ",a[i][j]);}for(i=0; i<4; i++){for(j=0; j<3; j++)b[j][i]=a[i][j];}printf("\n");for(i=0; i<3; i++){printf("\n");for(j=0; j<4; j++)printf("%5d ",b[i][j]);}}5.9#include <stdio.h>#include<math.h>void main(void){ char str[6];int i,j=0,m=0,n=0;gets(str);while(str[j]!='\0') j++;for(i=j-1;i>=0;i--){m=(str[i]-'0')*(pow(8,j-i-1));n+=m;}printf("shijinzhi %d",n);}5.10#include <stdio.h>void main(void){char input1[100];int i,num=0,blank=0;printf("Please input a row character:\n");gets(input1);/*test the first row*/for(i=0; i<100; i++){if(input1[i]=='\0')goto Loop;else if(('A'<=input1[i])&&(input1[i]<='Z')==1)num++;else if(('a'<=input1[i])&&(input1[i]<='z')==1)num++;else if (input1[i]==32)blank++;}Loop: printf("Character:%d\nBlank:%d\n",num,blank);}第六章一、选择题1.D :p中记录的是a的地址,*p访问地址a的值2.D :指针数组3.D:指针可以进行是否相等判断,空指针可以进行指针变量初始化,指针可以偏移;4.C:5.C、D:a[5]不存在,若*&a[4]则正确;C,D正确;6.D:7.B:8.B:二、填空题1.*(p+3) 2 222.cdefgbcdefgabcdefg73.6385三、程序分析题1.p = s[0] ;错误,应改为:p = s;或p = &s[0];2.int x , *p;错误,应改为:double x, *p;3.*p = x ;错误,应改为:p = &x ;4.声明顺序错误;应该改为:void main(void){int a;int *p = &a;a = 10;printf(“%d\n”,*p);}2.3 #include <stdio.h>#include <string.h>main(){char ch[2][5] = {"6937","8254"},*p[2]; int i,j,s=0;for(i=0;i<2;i++)p[i] = ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s = 10*s + p[i][j] - '0';printf("%d\n",s);}4.1#include <stdio.h>#include <string.h>main(){int count = 0;char str1[100],str2[100];char *p1,*p2;printf("please enter string 1:");gets(str1);printf("please enter string 2:");gets(str2);printf("str1:%s\n",str1);printf("str2:%s\n",str2);p1 = str1;p2 = str2;while(*p1!='\0'&&*p2!='\0'){if(*p1++==*p2++)count++;}printf("count:%d\n",count);}4.2#include <stdio.h>#include <string.h>main(){int i,j,k;int a[3];int temp;printf("please enter array a[3]:"); scanf("%d%d%d",&a[0],&a[1],&a[2]);for(i=0;i<2;i++){k = i;for(j= i+1;j<3;j++){if(a[j]<a[i])k = j;}if(k!=i){temp = a[i];a[i] = a[k];a[k] = temp;}}for(i=0;i<3;i++)printf("%d\t",a[i]);printf("\n");}4.3#include <stdio.h>#include <string.h>#define N 100main(){char s1[N], s2[N],*p;int m;printf("please enter string1:");gets(s1);p = s1;printf("enter m:");scanf("%d",&m);strcpy(s2,p+m);printf("string2:%s\n",s2);}4.4#include <stdio.h>#include <string.h>main(){char s[100]="iuiui012asdd90k890y098kkkk1234",*p; char data[100][100]={{0}};int count=0;int i;p = s;/*printf("please enter a string:");gets(p);*/printf("sssss:%s\n",s);while(*p!='\0'){i=0;while(*p>='0'&&*p<='9'){data[count][i] = *p;i++;p++;}if(i!=0)count++;p++;}printf("count:%d\n",count);for(i=0;i<count;i++)printf("%s\n",data[i]);}4.5#include <stdio.h>#define SIZE 4main(){int data[SIZE][SIZE],i,j,d;int max,m=0,n=0;for(i=0;i<SIZE;i++){for(j=0;j<SIZE;j++){scanf("%d",&data[i][j]);}}for(i=0;i<SIZE;i++){for(j=i+1;j<SIZE;j++){d = data[i][j];data[i][j] = data[j][i];data[j][i] = d;}}max = data[0][0];for(i=0;i<SIZE;i++){printf("\n");for(j=0;j<SIZE;j++){printf("%4d",data[i][j]);if(data[i][j]>=max){max = data[i][j];m = i;n = j;}}}printf("\nmax:%4d m:%d n:%d\n",max,m,n);}4.6#include <stdio.h>#include <string.h>main(){char *p[] = {"test","capital","index","large","small"}; char **pstr = p;int a,b,n = 5;char *temp;for(a=0;a<n-1;a++){for(b=a+1;b<n;b++){if(strcmp(pstr[a],pstr[b])>0){temp = pstr[a];pstr[a] = pstr[b];pstr[b] = temp;}}}for(a=0;a<n;a++)printf("%s\n",pstr[a]);}4.7#include <stdio.h>#include <string.h>main(){char s[100],temp;char *p = s;int i,length;printf("please enter a string: ");gets(s);while(*p++!='\0');length = p - s -1;printf("string length:%d\n",length);for(i=0;i<length/2;i++){temp = s[i];s[i] = s[length-i-1];s[length-i-1] = temp;}printf("%s\n",s);}第七章一,选择题1.A2.D3.B4.D5.C6.A7.B二.程序填空题1.(1) a[k](2) a[k](3) a[k]2.(1) a[i](2) j(3) i+1或6三.改错题1.#include<stdio.h>#include<string.h>void swap(char *,char *); /*此处有错误,函数声明时要加分号*/main(){char a[80],b[80],c[80];scanf("%s%s%s",a,b,c); /*此处有错误,a,b,c分别为数组a[80],b[8],c[80]的首地址*/ if(strcmp(a,b)>0) swap(a,b); /*此处有错误,字符串比较应该使用strcmp函数*/if(strcmp(b,c)>0) swap(b,c); /*此处有错误,原因同上*/if(strcmp(a,b)>0) swap(a,b); /*原算法不能实现排序,需要添加此语句*/printf("%s\n%s\n%s\n",a,b,c);}7.3.1#include <stdio.h>#include <string.h>void swap(char *pstr1,char *pstr2){char p[80];strcpy(p,pstr1);strcpy(pstr1,pstr2);strcpy(pstr2,p);}main(){char a[80]="ccc",b[80]="bbb",c[80]="aaa";/* scanf("%s%s%s",a,b,c); */if(strcmp(a,b)>0)swap(a,b);if(strcmp(b,c)>0)swap(b,c);if(strcmp(a,b)>0)swap(a,b);printf("%s\n%s\n%s\n\n\n",a,b,c);}7.4.1#include <stdio.h>int SquSum(int,int);main(){int a,b;int c;printf("enter 2 integer:");scanf("%d%d",&a,&b);c = SquSum(a,b);printf("a=%d b:%d a2+b2=%d\n",a,b,c); }int SquSum(int x,int y){int z;z = x*x+y*y;return z;}7.4.2#include <stdio.h>int GongYueShu(int,int);int GongBeiShu(int,int);main(){int a,b;int gbs,gys;printf("enter 2 integer:");scanf("%d%d",&a,&b);gys = GongYueShu(a,b);gbs = GongBeiShu(a,b);if(gys<0)printf("There has not gong yue shu!!!!!!\n"); elseprintf("max gong yue shu:%d\n",gys); printf("min gong bei shu:%d\n",gbs);}int GongYueShu(int x,int y){int i,gys=-1,min;min = x;if(x>y)min = y;for(i=2;i<=min;i++){if((x%i==0)&&(y%i==0))gys = i;}return gys;}int GongBeiShu(int x,int y){int i,gbs,max;max = x;if(y>x)max = y;for(i=max;i<=x*y;i++){if((i%x==0)&&(i%y==0)){gbs = i;break;}}return gbs;}7.4.4#include <stdio.h>#include <string.h>void Delete_Ch(char *,char);main(){char str[80],ch;printf("please a string:");gets(str);printf("please a char:");scanf("%c",&ch);Delete_Ch(str,ch);printf("%s\n\n",str);}void Delete_Ch(char *p,char ch){while(*p){if(*p==ch){strcpy(p,p+1);}elsep++;}}7.4.5#include <stdio.h>int Is_ShuShu(int); /* return 0:shushureturn -1:no shushu*/ main(){int a,ret;printf("pls enter a integer:");scanf("%d",&a);ret = Is_ShuShu(a);if(ret==0)printf("%d is a shushu!!!\n",a);elseprintf("%d is not a shushu\n",a); }int Is_ShuShu(int x){int i;for(i=2;i<x/2;i++){if(x%i==0)return -1;}if(i>=x/2)return 0;}7.4.6#include <stdio.h>#include <string.h>void StrCat(char *s1,char *s2){while(*s1!='\0')s1++;while(*s2!='\0'){*s1 = *s2;s1++;s2++;}*s1='\0';}main(){char a[200]="123456789",b[100]="ABCDEFG";printf("pls enter string 1:");gets(a);printf("pls enter string 2:");gets(b);StrCat(a,b);printf("%s\n\n",a);}7.4.7#include <stdio.h>#include <string.h>void Stat(char *s,int *ch,int *dig,int *spa,int *oth){while(*s!='\0'){if(((*s>='a')&&(*s<='z'))||((*s>='A')&&(*s<='Z')))(*ch)++;else if((*s>='0')&&(*s<='9'))(*dig)++;else if(*s == ' ')(*spa)++;else(*oth)++;s++;}}main(){char a[200];int ch=0,dig=0,spa=0,oth=0;printf("pls enter a string :");gets(a);Stat(a,&ch,&dig,&spa,&oth);printf("ch:%d dig:%d spa:%d oth:%d",ch,dig,spa,oth); }7.4.8#include <stdio.h>#include <string.h>void reverse(char *s) {if(*s){}main(){char s[] = "abcde"; reverse(s);puts(s);}7.4.9#include <stdio.h>#include <string.h>paixu(int *p,int n,int flag) {int i,j,m;int temp;for(i=0;i<n-1;i++) {m = i;for(j=i+1;j<n;j++){if(flag == 1){if(p[j]>p[m])m = j;}else{if(p[j]<p[m])m = j;}}if(m!=i){temp = p[i];p[i] = p[m];p[m] = temp;}}}main(){int a[20];int n,i;int flag;printf("please enter n(<20):"); scanf("%d",&n);getchar();printf("please enter array a:");for(i=0;i<n;i++)scanf("%d",&a[i]);getchar();printf("please enter paixu flag:\n"); printf("\t1:degression\n");printf("\t0:increasion\t:");scanf("%d",&flag);paixu(a,n,flag);printf("array a is:");for(i=0;i<n;i++)printf("%4d",a[i]);printf("\n\n");}。
C语言习题答案2013年新版——第二章至第七章[1]
习题答案习题2(参考答案)一、选择题二、填空题习题 3 (参考答案)1.编程实现:用字符输入/输出函数输入3个字符,将它们反向输出。
参考代码(尽量运用本章所学知识)#include <stdio.h>main( ){ char c1,c2,c3;c1=getchar(); c2=getchar(); c3=getchar();putchar(c3); putchar(c2); putchar(c1);}2.编程实现:用格式输入/输出函数输入3个字符,将它们反向输出并输出它们的ASCII值。
参考代码(尽量运用本章所学知识)#include <stdio.h>main( ){ char c1,c2,c3;scanf ("%c%c%c", &c1, &c2, &c3) ;printf("%c %d,%c %d,%c %d ", c3,c3,c2,c2,c1,c1) ;}3.变量k为float 类型,调用函数:scanf("%d", &k);不能使变量k得到正确数值的原因是:scanf("%d", &k);中的格式控制类型与变量k的定义类型不匹配,应将%d改为%f.4. (略)习题4答案一选择题1-20 DBDCA CBDDA ACABC BCBBC二、写出下列程序的运行结果1. z=362. 20 03. 124. 48,485. 136. 02三编程题(参考答案)1.输入4个整数a,b,c,d,编写程序,将它们按从大到小顺序输出。
#include<stdio.h>main(){ int a,b,c,d,t;scanf("%d%d%d%d",&a,&b,&c,&d);if(a<b) {t=a;a=b;b=t;}if(a<c) {t=a;a=c;c=t;}if(a<d) {t=a;a=d;d=t;}if(b<c) {t=b;b=c;c=t;}if(b<d) {t=b;b=d;d=t;}if(c<d) {t=c;c=d;d=t;}printf("%4d%4d%4d%4d",a,b,c,d);}2.据所输入的3条边长值,判断它们能否构成三角形,如能构成,再判断是等腰三角形、直角三角形还是一般三角形?源程序:#include<stdio.h>#include "math.h"main(){float a,b,c,s,area;scanf("%f%f%f",&a,&b,&c);if((a+b>c)&&(a+c>b)&&(b+c>a)&&(fabs(a-b)<c)&&(fabs(a-c)<b)&&(fabs(b-c )<a)){if(a==b&&b==c)printf("等边三角形");else if(a==b||b==c||a==c)printf("等腰三角形");else if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))printf("直角三角形");else printf("一般三角形");}else printf("不能组成三角形");}3.输入一个整数,如果能被3,4,5同时整除,则输出“YES”,否则输出“NO”。
2013年c程序设计自考试题及答案
2013年c程序设计自考试题及答案一、单项选择题(每题1分,共10分)1. 下列关于C语言的描述中,不正确的是()。
A. C语言是一种高级语言B. C语言可以直接在计算机上运行C. C语言具有结构化的特点D. C语言具有丰富的数据类型答案:B2. 在C语言中,用于定义一个结构体的关键字是()。
A. structB. unionC. enumD. typedef答案:A3. 下列关于数组的描述中,正确的是()。
A. 数组下标从0开始B. 数组下标从1开始C. 数组的下标可以是负数D. 数组的大小在运行时确定答案:A4. 在C语言中,用于表示逻辑“与”操作的运算符是()。
A. &&B. ||C. !D. &答案:A5. 下列关于指针的描述中,不正确的是()。
A. 指针可以存储地址B. 指针可以存储数据C. 指针可以作为函数的参数D. 指针可以作为函数的返回值答案:B6. 在C语言中,用于定义一个函数的关键字是()。
A. functionB. defC. intD. void答案:C7. 下列关于循环的描述中,正确的是()。
A. for循环只能用于计数循环B. while循环不能用于无限循环C. do-while循环至少执行一次D. for循环和while循环不能嵌套答案:C8. 在C语言中,用于表示逻辑“或”操作的运算符是()。
A. &&B. ||C. !D. &答案:B9. 下列关于函数的描述中,不正确的是()。
A. 函数可以返回值B. 函数可以没有返回值C. 函数可以没有参数D. 函数的返回值类型不能是数组答案:D10. 在C语言中,用于表示逻辑“非”操作的运算符是()。
A. &&B. ||C. !D. &答案:C二、填空题(每题2分,共20分)1. C语言中,用于声明一个整型变量的关键字是______。
答案:int2. 在C语言中,表示字符常量的数据类型是______。
2013秋C语言试卷标准答案(A卷)-20130114
一、单项选择题,每题 2 分,共 15 题。
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. D. 具有前述三个特征 B. _123 C. C. D. D. 80 A. a[10]=2; C. &a[i]和 a[i] C. b=fun(a); D. 嵌套调用和递归调用均可。 B. 地址 C. int *(q[5]); 3.0 x>10&x<20 else 总是与其之前最近的 if 配对
(共 35 题。
1.答案:m/10%10*100+m/100*10+m%10 2.答案:0 3.答案:36 4.答案:11 5. 答案:3
(共 15 分)
四、程序改错题, 每题 5 分。
(共 10 分)
注:共 4 题,每题中存在 5 个错误。限选 2 题。题目间评分不累计。 1.题目:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
a=0; //改为:sum=0; //改为: for(i=0;i<3;i++) //改为:scanf(“%d”,&a[i][j]); //改为:sum=sum+a[i][i]; 或 sum+=a[i][i]; //改为:printf("sum=%d\n",sum);
for(i=0;i<3;i++);
#define N=11
//改为:#define N 11 // 改为:for(i=N-2;i>=0;i--)
for(i=N-1;i>=0;i--)
a[i]=a[i-1];//改为:a[i+1]=a[i]; exit;}//改为:break;} for(i=0;i<=N;i++) //改为:for(i=0;i<N;i++)
c语言真题-试卷答案及解释(2013年3月)
c语言真题-试卷答案及解释(2013年3月)一、选择题(1)B 【解析】N-S图是由Nassi 和Shneiderman 提出的一种符合程序化结构设计原则的图形描述工具。
它的提出是为了避免流程图在描述程序逻辑时的随意性上灵活性。
(2)D 【解析】结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化及限制使用goto语句,总的来说可使程序结构良好、易读、易理解、易维护。
(3)B【解析】模块的独立程度可以由两个定性标准度量:耦合性和内聚性。
耦合性是衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚性是衡量一个模块内部各个元素彼此结合的紧密程度。
一般来说,要求模块之间的耦合尽可能地低,而内聚性尽可能地高。
(4)D 【解析】需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。
选项A)软件开发方法是在总体设计阶段需完成的任务;选项B)软件开发工具是在实现阶段需完成的任务;选项C)软件开发费用是在可行性研究阶段需完成的任务。
(5)A 【解析】算法具有5个特性:①有穷性:一个算法必须(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有限时间内完成,即运行时间是有限的;②确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生歧义;③可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现;④输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合;⑤输出:一个算法有一个或多个输出。
(6)D 【解析】在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都为n(n-1)/2,堆排序需要的比较次数为nlog2n。
(7)B 【解析】由栈"后进先出"的特点可知:A)中e1不可能比e2先出,C)中e1不可能比e2先出,D)中栈是先进后出的,所以不可能是任意顺序。
2013-2014-2C语言A卷包含答案版
青岛高新职业学校2004—2005学年度第二学期期末考试A卷2013—2014学年第2学期《计算机程序设计C(2-2)》期末考试试卷专业班级姓名学号开课系室计算机应用技术系考试日期2014年6月22日题号一二三总分得分阅卷人页脚内容0一、程序阅读题(每空2分,共20分)1.又是一年一度的毕业季,马上要离开校园踏上工作岗位的同学们在拍摄完照片之后,大家有了一个共同的想法——那就是在毕业前互换礼物。
到了约定的日子,同学们带来的礼物琳琅满目,都不知道该如何交换了。
于是,在经过讨论后一致决定,大家将n个礼物放在一起统一编号为1,2,……,n,并同时对该礼物的拥有者进行相同编号。
交换的规则是:1号同学与n号同学的礼物互换,2号同学与n-1号同学的礼物互换,以此类推。
请阅读下面程序并完成填空。
#includ e<stdio.h>#d efineN120+1intmain(){inta[N]={0},n,i,j,t;scanf("%d",&n);for(i=1;i<=n;i++){【1】;}for(i=1,【2】;【3】;i++,j--){t=a[i];a[i]=a[j];a[j]=t;页脚内容1}for(i=1;i<=n;i++){printf("%d",a[i]);}printf("\n");return0;}2.下面函数的功能是统计字符串substr在字符串str中出现的次数,请阅读下面程序段并完成填空。
intcount(charstr[],charsubstr[]){inti,j,k,num=0;for(i=0;str[i]!='\0';i++){【4】;for(j=0;substr[j]!='\0';k++,j++){if(【5】){break;页脚内容2}}if(substr[j]=='\0'){num++;}}【6】;}3.在Windows操作系统中的“复制-粘贴-重命名”功能,可以实现将文件从一个位置复制粘贴到另外一个位置。
C语言程序设计试题及答案完整版
C语言复习资料5元必须清楚的:1)程序结构是三种: 顺序结构, 循环结构(三个循环结构), 选择结构(if 和switch)2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。
3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址.4)bit是位是指为0 或者1。
byte 是指字节, 一个字节= 八个位.5)一定要记住二进制如何划成十进制。
概念常考到的:1、编译预处理不是C语言的一部分,不再运行时间。
C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。
2、每个C语言程序中main函数是有且只有一个。
3、在函数中不可以再定义函数。
4、算法的是一定要有输出的,他可以没有输入。
5、break可用于循环结构和switch语句。
6、逗号运算符的级别最低。
第一章1)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。
有其它元素就错了。
并且第一个必须为字母或则是下划线。
第一个为数字就错了。
关键字不可以作为用户标识符号。
main define scanf printf 都不是关键字。
迷惑你的地方If是可以做为用户标识符。
因为If中的第一个字母大写了,所以不是关键字。
2)实型数据的合法形式:2.333e-1 就是合法的,且数据是2.333×10-1。
考试口诀:e前e后必有数,e后必为整数。
.3)字符数据的合法形式::'1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。
'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。
4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节:考试时候一般会说,在16位编译系统,或者是32位系统。
碰到这种情况,不要去管,一样做题。
掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。
2013-2014-2C语言A卷包含答案版
A卷2013—2014学年第2学期《计算机程序设计C(2-2)》期末考试试卷专业班级姓名学号开课系室计算机应用技术系考试日期 2014年6月22日题号一二三总分得分阅卷人一、程序阅读题(每空2分,共20分)1.又是一年一度的毕业季,马上要离开校园踏上工作岗位的同学们在拍摄完照片之后,大家有了一个共同的想法——那就是在毕业前互换礼物。
到了约定的日子,同学们带来的礼物琳琅满目,都不知道该如何交换了。
于是,在经过讨论后一致决定,大家将n个礼物放在一起统一编号为1,2,……,n,并同时对该礼物的拥有者进行相同编号。
交换的规则是:1号同学与n号同学的礼物互换,2号同学与n-1号同学的礼物互换,以此类推。
请阅读下面程序并完成填空。
#include <stdio.h>#define N 120 + 1int main( ){int a[N] = {0},n,i,j,t;scanf("%d",&n);for( i = 1; i <= n; i++ ){【1】;}for( i = 1, 【2】 ; 【3】 ; i ++, j-- ){t = a[i];a[i] = a[j];a[j] = t;}for( i = 1; i <= n; i ++ ){printf("%d ",a[i]);}printf("\n");return 0;}2.下面函数的功能是统计字符串substr在字符串str中出现的次数,请阅读下面程序段并完成填空。
int count(char str[], char substr[]){int i,j,k,num=0;for (i = 0; str[i] != '\0'; i ++){【4】;for(j = 0; substr[j] != '\0'; k ++,j ++){if(【5】){break;}}if(substr[j] == '\0'){num ++;}}【6】;}13.在Windows操作系统中的“复制-粘贴-重命名”功能,可以实现将文件从一个位置复制粘贴到另外一个位置。
【免费下载】13级大学计算机基础试卷A卷加答案
华中科技大学文华学院课程考试试卷A 2013~2014 学年度第一学期课程名称:大学计算机基础考试类型:正常考试课程性质:(必修)使用范围:本/专科考试时间:2013 年 12月 21 日考试方式:闭卷学生姓名 学号 专业班级 题号一二三四五总分得分一、单选择题(每小题1分,共30分。
请在括号内填上正确答案标号A、B、C、或D) ( )1. 计算机发展阶段的划分标志是A.程序设计语言B.存储器C.逻辑元件D.运算速度( )2. 一个完整的计算机系统应包括A.系统硬件和系统软件B.硬件系统和软件系统C.主机和外部设备D.主机、键盘、显示器和辅助存储器( )3. 从第一代电子计算机到第四代计算机的体系结构都是相同的,都是由运算器、控制器、存储器以及输入输出设备组成的,称为A.艾伦·图灵体系结构B.罗伯特·诺依斯体系结构C.比尔·盖茨体系结构D.冯·诺依曼体系结构( )4. 微型计算机能处理的最小数据单位是A. ASCII码B. 字节C. 字符串D. 比特( )5. 断电后会使得所存储的数据丢失的是A.ROM B.RAM C.磁盘D.光盘( )6.显示器显示图像的清晰度,主要取决于显示器的A.对比度B.亮度C.尺寸D.分辨率( )7.微型计算机的主机和显示器加电后,如果显示器屏幕不亮,其原因是A.主机坏了B.软件坏了C.显示器坏了D.显示器信号线坏了( )8.下面说法中正确的是A.一个完整的计算机系统是由微处理器、存储器和输入/输出设备组成B.计算机区别于其他计算工具的最主要特点是能存储程序和数据C.电源关闭后,ROM中的信息会丢失D.16位字长计算机能处理的最大数是16位十进制( )9.对计算机软件正确的认识应该是A.计算机软件不需要维护B.计算机软件只要能复制得到就不必购买C.计算机软件不必有备份D.受法律保护的计算机软件不能随便复制( )10.下列叙述中,错误的是A.计算机要经常使用,不要长期闲置不用B.计算机用几小时后,应关机一会儿再用C.计算机应避免频繁开关,以延长其使用寿命D.在计算机附近,应避免强磁场干扰( )11.在Windows 的"回收站"窗口中,进行了"清空回收站"操作后A."回收站"被清空,其中的文件或文件夹被恢复到删除时的位置,硬盘可用空间保持不变。
2013年c语言期末考试试题及答案
2013年c语言期末考试试题及答案在2013年的C语言期末考试中,试题涵盖了C语言的基础知识、数据类型、控制结构、函数、数组、指针、结构体、文件操作等多个方面。
以下是部分试题及其答案,供参考:1. 请写出C语言中的基本数据类型,并说明它们各自的特点。
C语言中的基本数据类型包括整型(int)、字符型(char)、浮点型(float和double)。
整型用于存储整数,字符型用于存储单个字符,浮点型用于存储小数。
它们的特点分别是:整型占用的存储空间较小,但只能表示整数;字符型占用的存储空间最小,但只能表示单个字符;浮点型可以表示小数,但占用的存储空间较大。
2. 请写出C语言中的控制结构,并说明它们的功能。
C语言中的控制结构包括顺序结构、选择结构和循环结构。
顺序结构是按照代码的顺序依次执行;选择结构是根据条件判断执行不同的代码块,如if语句和switch语句;循环结构是重复执行某段代码,直到满足特定条件,如for循环、while循环和do-while循环。
3. 请写出C语言中函数的定义格式,并说明函数的作用。
函数的定义格式为:返回值类型函数名(参数列表){函数体}。
函数的作用是将一段代码封装成一个独立的模块,可以重复调用,提高代码的复用性和可读性。
4. 请写出C语言中数组的定义格式,并说明数组的特点。
数组的定义格式为:数据类型数组名[数组大小]。
数组的特点是可以存储多个相同类型的数据,并且可以通过下标访问和修改数组中的元素。
5. 请写出C语言中指针的定义格式,并说明指针的作用。
指针的定义格式为:*指针名 = &变量名。
指针的作用是存储变量的内存地址,可以通过指针间接访问和修改变量的值。
6. 请写出C语言中结构体的定义格式,并说明结构体的作用。
结构体的定义格式为:struct 结构体名 {成员列表};结构体变量名 = {成员1, 成员2, ...}。
结构体的作用是将多个不同类型的数据组合成一个整体,方便管理和使用。
C++程序设计期末试卷2012-2013-1-A(参考答案)
{
cout<<"体积:"<<volume<<",表面积:"<<area<<endl;
}
};
void main()
{
Boxobj1(4),obj2;
obj2.seta(10);
obj1.getvolume();
obj1.getarea();
cout<<"obj1=>";
obj1.disp();
#include<iostream.h>
class Box
{
float a;
float volume;
float area;
public:
Box(){}
Box(floatr){a=r;}
void getvolume(){volume=a*a*a;}
void getarea(){area=6*a*a;}
obj2.getvolume();
obj2.getarea();
cout<<"obj2=>";
obj2.disp();
}
cout<<endl; //输出换行符
}
}
2、设计一个立方体类Box,它能计算并输出立方体的体积和表面积。
Box类包含三个私有数据成员a(立方体边长)、volume(体积)和area(表面积),另有两个构造函数以及seta()(设置立方体边长)、getvolume()(计算体积)、getarea()(计算表面积)和disp()(输出结果)。写出Box类的定义及主函数对该类进行测试。
(完整版)C语言程序设计2013期末试题(含答案)
厦门大学《C语言程序设计》课程试卷信息科学与技术学院系2013 年级专业主考教师:_______ 试卷类型:(A卷)已经反复修改调试过了,应该没问题了。
如果对答案有什么疑问可以直接私戳我 _______qq553915228 李添锐一、写出下列程序段的运行结果(1. ( 4 分)int i=1, j=2, k=4;prin tf("%f,", i-(float)(j/k));prin tf("%d, ", j<3<k);k+=(i+k)/10+0.5 ;prin tf("%d,",k);prin tf("%d", (j=1)?2:0);输出:1.000000,1,(此处有空格)2. (4 分)char a=0x12303F; prin tf("%d,",a); a二'a'-'B'+'E';prin tf("%c",--a);输出:63,c3. (4 分)int i = 3, j = 2;if (!i&&i--)i+=2;i++;prin tf("%d,", i);do{j+=i;i/=2;if(j>8) break;} while(i=3);prin tf("%d\n", j);输出:4,9(此处需要换行即\n)40分)4. ( 4 分)intp[7]={11,13,15,17,18,20,23},i=0,k=0;for (;p[i]%2;){switch(p[i]%5)4,2 {case 1: k+=p[i++]; break;case 3: k+=p[i];default: i++;}}prin tf("%d,%d",i,k);输出:4,245. ( 4 分)char s[]="1234", *p;for (p=s+3; p>s; p--){prin tf("%s,", p);}输出:4,34,234,6. ( 4 分)int f(){static int j=1; int k=1;return ((++j)+(++k));}int mai n()*(u.a+1)=3; u.a[2]=4; printf("%d,%d", u.s.a, u.s.b);return 0;}输出 0,3 9.( 4 分)int s[3][3]= {1,2,3,4,5,6,7,8,9}; int sum;sum = *(s[0]) + *(s[1]+1) + *(s[2]+2); printf("%d", sum); return 0; 输出:1510.(4 分)FILE *fp; int e; long len; char c;fp=fopen("pi.tmp","w"); fputs("3.1415926", fp);fclose(fp); fp=fopen("pi.tmp","r");fscanf(fp,"%d%c",&e,&c); len=ftell(fp); fseek(fp, -1L, SEEK_END); len = ftell(fp)-len;printf("%ld",len); 输出:6已知数据文件“ c:\data.dat ”以二进制方式存有 300个整数,函数 readDat( )把这 些数存入数组 a 中,函数 fun( )的功能是:依次从数组 a 中取出一个数,若该数 连续大于它之前的五个数且该数是偶数 (若之前不满五个数, 则不统计),统计满 足此条件的个数 cnt ,并把这些数按从大到小的顺序存入数组 b 中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4. 用完全等效的新代码段替代以下代码,要求新代码段中不得使用转移语句。 for (i=2; i*i<=n; i++) if (!(m = n % i)) break;
5.设 p 是长度为 3 的函数指针数组,该数组中元素的类型为指向无参字符指针函数的指针。请 写出相应的声明语句。
C 语言程序设计试卷 共 14 页
2、 请写出下面程序的运行结果。 #include "stdio.h" int s(int *p,int n); int main(void){ int a[3]={1,2,7}; printf("the result is %d\n",s(a,3)); return 0; } int s(int *p,int n){ if(n==0) return 0; else return (*p + s(p+1,n-1)); }
得分
评卷人
C 语言程序设计试卷 共 14 页
第 2页
char c[20]; char *pc; struct T *next; } t2={2,“final exam.”,t2.c,NULL},t1={1,“This is the”,t1.c,&t2}, *p=&t1; 【 】6、t1.i 【 】7、p->c[0] 【 】8、t1.next->i 【 】9、*++p->pc 【 】10、p->next->next=p,t2.next->i 四、 判断改错题 (先判断下面各题中是否存在错误;如果存在错误,请改 正之;否则不必改。本大题共 5 小题,每小题 2 分,共 10 分。 ) 1、本小题的程序段如下: char s1[20]="abcde",s2[20]; s2=s1; 得分 评卷人
4、请写出下面程序的运行结果。 #include<stdio.h> void f(char * s,int c[]){ char ch; while(ch=*(s++)){ if('a'<=ch && ch<='z') c[ch-'a']+=1; else if ('A'<=ch && ch<='Z') c[ch-'A']+=1; } } int main(void){ char a[]="Keep on going never give up"; static int count[26],i; f(a,count); for(i=0;i<26;i++) if(count[i]>2) printf("%c\t",'A'+i); return 0; }
得分
评卷人
五、简答题(本大题共 5 小题,每小题 4 分,共 20 分)
1. 写一个表达式,判断字符变量 ch 的值是否是字母。
2. 写一个表达式,将 unsigned short int 型数 x 的高低字节对调。
3. 定义一个带参的宏 ABS(e), 用来求表达式 e 的绝对值。 表达式 e 的类型可以是 char、 short、 int 或 long,宏调用表达式的值为 e 的绝对值。
5、下面程序希望计算并输出2 。例如输入2,程序输出4;输入3,程序输出8。 #include "stdio.h" int f(void); int main(void) { int i,n; scanf("%d",&n);
n
C 语言程序设计试卷 共 14 页
第 3页
for(i=1;i<n;i++) f(); printf("2 的%d 次方是: %d\n",n,f()); return 0; } int f() { int f=1; return f*=2; }
第 4页
得分
评卷人
ቤተ መጻሕፍቲ ባይዱ
六、 阅读程序并写出其运行结果(本大题共 5 小题, 每小题 4 分, 共 20 分。 )
1、请写出下面程序的运行结果。 #include<stdio.h> int f(int m){ switch(m){ case 0:break; case 1:m++; case 2:m--; } return m; } int main(void){ int i=0,a[]={2,1,0},m; while(m=f(a[i])){ i++; printf("%d ",m); } return 0; }
2、以下代码段接受从键盘输入的字符串,并输出: char *p; gets(p); printf("%s",p);
3、定义一个带参的宏 THR (x),它求 x 的三次方,#define THR(x) (x)*(x)*(x)
4、输出2维数组元素m[1][2]的代码片段如下: int m[3][4], (*p)[4]=m; p=p+1; printf("%d", *p[2]);
计算机学院 2012-2013 学年第 2 学期 C 语言程序设计考试试卷
A 卷(或 B 卷) : A卷 专业
题号 题分 得分 注意:试卷后面附有运算符的优先级和结合性表。 得分 评卷人 一、 单项选择题(在下面每小题的 A、B、C、D 四个选项中,只有一个选项 是正确的,请选择正确的选项并填写到括号内,选择正确得分。本大题 共 10 小题,每小题 1 分,共 10 分。 ) 1、 以下为正确的标识符是 【 】 A、 for B、u.3 C、3c D、DO 2、以下为合法的整型常量是 【 】 A、-1U B、01111001B C、ffff D、0138 3、下列数据中属于字符串常量的是 【 】 A、'a' B、"a"b"c" C、'123' D、"a\"b\"c" 4、 表达式-a+++b 中记号(token)的个数是 【 】 A、3 个 B、4 个 C、5 个 D、6 个 5、 -3 的 16 位补码是 【 】 A、0xfffd B、0x1011 C、0x7ffd D、0x0003 6、 以下为正确的转义字符是 【 】 A、'\' B、'\\' C、'\0x12' D、'\0f1' 7、 设有声明: enum {U,V,W=0,X,Y=0,Z} a; 则值为 1 的枚举常量的个数是 【 】 A、1 个 B、2 个 C、3 个 D、4 个 8、 设有声明: 【 】 union U{ long a; short b; char c; char s[20];} v={0x01020304},*p=&v; 则下列选项正确的是 A、printf("%d\n",sizeof(v))输出 4 B、printf("%d\n",p->s[0])输出 4 C、printf("%d\n",v.c)输出 1 D、printf("%x\n",v.b)输出 102 9、 设有声明和语句: FILE *fp; fp=fopen("c:\\abc.dat","r+"); 【 】 则下列选项正确的是 A、打开文件的文件名为\abc.dat B、打开的是二进制文件 C、打开的是文本文件 D、打开的文件只能进行读操作 10、 设有如下代码片段: 【 】 int a[]={1,2,3,4,5},i; char *p=(char *)a; for(i=0;i<3;i++) printf("%d ",*((p+=sizeof(int))-sizeof(int))); printf("\n"); 则该代码片段的输出结果是 A、1 2 3 4 5 B、1 2 3 C、1 1 1 D、2 3 4 一 10
C 语言程序设计试卷 共 14 页
第 5页
3、请写出下面程序的运行结果。 #include "stdio.h" #include "math.h" int f(int n); int main(void){ int i,a[3]={3,10,7},*p=a; for(i=0;i<3;i++) if(f(p[i])) printf("%d\t",*(p+i)); printf("\n"); return 0; } int f(int n){ int i,m,flag=0; for (i=2; i<=sqrt(n); ++i) if(!(m = n % i)) break; if (m) flag=1; return flag; }
闭卷(或开卷) :闭卷 学号
三 10 四 10 五 20
考试时间:2013 年 7 月 5 日 学生姓名
六 20 七 20 总分 100 核对人
班级
二 10
C 语言程序设计试卷 共 14 页
第 1页
二、 多项选择题(下面每小题的 A、B、C、D 备选项中,有两个或两个以上 的选项是正确的, 请选择正确的选项并填写到括号内。 本大题共 5 小题, 每小题 2 分,共 10 分。 ) 1、 设有声明:char s[]="abcdefg",*p=s,ch;则运算结果为’e’的选项有 【 】 A、ch=s[4]; B、*(p+4); C、*(s+4); D、*s 2、 设有声明:int x=10,y=20,*p=&x;下面选项中非法的表达式有 【 】 A、y+=*p; B、*p+1=y; C、y+1=x; D、x=y+=10; 3、设有声明: int a=5,b=10,t;则下面各表达式功能及结果都相同的有 【 】 A、a+=b,b=a-b,a-=b B、a*=b,b=a/b,a/=b C、a^=b,b^=a,a^=b D、t=b,b=a,a=t 4、 设 part.exe 程序带形如 int main (int argc,char *argv[]) {...}的 【 】 main 函数。则输入命令行:part.exe abc.dat def.dat xyz.dat uvw.dat 时下面选项正确的有 A、printf("%d\n",argc)输出 5 B、printf("%d\n",argc)输出 4 C、printf("%s\n",argv[1])输出 abc.dat D、printf("%c\n",argv[2][2])输出 f 5、设有以下说明: 【 】 struct T { unsigned short a : 1; unsigned short b : 2; unsigned short c : 3; unsigned short d : 4; unsigned short e : 6; } x,*p=&x; 则下面对字段变量各成员赋值正确的有 A、x.a = 2 B、p->b = 3 C、*p.c = 4 D、x.d = 5 三、 填空题(本大题共 10 小题,每小题 1 分,共 10 分。 ) 本大题的第 1 题至第 5 题请参考下面的说明, 请计算出表达式的值和类型并 填入各题前面的括号中,各题的表达式相互无关。 以下程序假设在 32 位机上运行。 char c1=’A’, c2; unsigned short i=65535,j=2; short int m=4, n=1; float x=7.34, y=7.0; 【 】 1、c2=c1+j 【 】 2、m=i 【 】 3、m^=n<<j 【 】 4、n<m&&(int)x==(int)y 【 】 5、sizeof(int)+sizeof(c1) 本大题的第 6 小题至第 10 小题请参考下面的说明, 请计算出表达式的值并填入各题前面的 括号中,各题的表达式相互无关。 struct T{ int i; 得分 评卷人