阅读程序题(共13分)
6.以下程序运行时输出结果是(6 ) 。
#include
#define M 3
#defme N M+1
#define NN N*N/2
main() .
{printf("%d\n",NN);}
7.以下程序运行时输出结果是(7) 。
#include
main()
{char a=256:
int d=a;
prinff("%d",d+1);
} 、
8•有如下程序,假定所用编译系统用两个字节存储一个int型操作数,已知输出结果第一行是FFD2,则第二行应当是( 8)
main()
{int a[10]={1,2,3,4,5,6,7,8,9,0},*p;
P=&a[5];
printf("%X\n",p);printf("%X\n",p-1);
9•以下程序运行时输出结果的第一行是(9) ,第二行是(10)。
int C:
void fl(int x,int *sum)
{static int y;
x++;y++;c=c+y;
*sum=(x+y)/c;
}
main()
{int a,b=100:
for(a=O;a<2;a++)
{f1(a,&b);printf("%d%d%d\n",a,b,c)} ,
10.以下程序运行时输出结果的第一行是___(11)_______,第三行是
______(12)__________
#include
void mat_change(int b[4][4])
{int i,j,m,n,k,c[6][6];
for(i=0;i<6;i++)
for(j=0;j<6;j++) c[i][j]=1;
for(i=1;i<5;i++)
for(j=1;j<5;j++) c[i][j]=b[i-1][j-1];
for(i=1;i<5;i++)
for(j=1;j<5;j++)
{if(c[i][j]==0)
{k=0;
for(m=-1;m<=1;m++)
for(n=-1;n<=1;n++)
if(!(m==O&&n==O))k=k+c[i+m][j+n];
if(k==8)c[i][j]=1;
}
}
for(i=1;i<5;i++)
for(j=1;j<5;j++)
b[i-1][j-1]=c[i][j];
}
main()
{int i,j,a[4][4]={{0,1},{1,1,1,l},{0,1,0,1},{0,1,1,1}};
mat_change(a);
for(i=0;i<4;i++) .
{for(j=0;j<4;j++)printf("%d",a[i][j]);
printf("\n");
}
}
11.以下程序运行时输出结果是(13) 。
#include
void f(int a[],int n,int x,int *c);
main()
{int a[10]={1,3,5,2,3,5,3,7,4,1},t=0;
f(a,10,5,&t);printf("%d",t);
}
void f(int a[],int n,int X,int *c)
{if(n==0)return;
if(a[O]>=x)(*c)++;
f(a+1,n-1,x,c);
}
12.以下程序运行时输出结果的第一行是(14) ,第二行是(15) ,第三行是(16) #include
typedef struct s
{
int index;
int value;
}M;
main()
{static int i,j,k,c[4][4];
M a[10]={{0,1},{3,2},{5,3},{6,4},{9,5},{15,6},{-l,0}},*p=a,
b[10]={{1,1},{3,2},{4,3},{6,4},{lO,5},{13,6},{-1,0}},*q=b;
while(p->index!=-1)
{
i=p->index/4;
j=p->index%4;
c[i][j]=P->value;
p++;
}
while(q->index!=-1)
{
i=q->index/4;
j=q->index%;
c[i][j]+=q->value;
q++;
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf("%d",c[i][j]);
printf("\n");
}
}
13.以下程守运行时输出结果的第一行是__(17)______ ,第二行是
____(18)________ 。
void q(char *s,int left, int right)
{ int i,j;
char x,y;
i=left; j=right;
x=s[(1eft+right)/2];
do
{while(s[i]>x&&i while(s[j] if(i<=j) { y=s[i]; s[i]=s[j]; s[j]=y; i++;j--; } }while(i<=j); } main() {char strl[6]="abcde",str2[7]="25134"; q(strl,0,4);puts(strl); q(str2,1,4);puts(str2); } ●完善程序题(共12分) 7 14.如果一个两位整数是质数,将组成它的两个数字交换位置后形成的整数仍为质数,则称这 样的数为绝对质数。例如,13就是一个绝对质数。以下程序用于找出所有两位绝对质数。 #include int a_prime(int n) {int j,k,m[2]; m[O]=n; m[1]= _____(19)_______ ; for(j=0;j<2;j++) for(k=m[j]/2;k>1;k--) if( (20) )return 0; return 1; } main() {int i; for(i=10;i<100;i++) if(a_prime(i))printf("%d",i); } 20 i 15.计算∑∑n!的值,即求(1!)+(1!+2!)+(1!+2!+3!)+…+(1!+2!+3!+…+20!) i=1 n=1 main() {int i,n;double s=0,t; for(i=1;i<=20;i++) { ________(21)__________ ; for(n=1;_____(22)___________ ;n++) { t=t*n;s=s+t;} } printf("1!+(1!+2!)+…+(1!+2!+…+20 !)=%e\n",s); } . 16.以下程序中函数strmerge的功能是:合并a和b两个有序的字母字符串(字典序)而产生一 个新的字符串,在合并的过程中删除重复出现的字符,合并后的字符串仍然保持原序并保 存到c指向的数组中,函数返回在合并过程中删除的字符个数。main函数中输出合并后 的字符串“copy”以及在合并过程中删除的字符个数3。 include int strmerge(char *a,char *b,char *c) {int i=0,j=0,k=O;char t; while(a[i]!='\0' && ( 22 ) {if(a[i]==b[j]) {t=a[i];i++; ( 24 ); } else if(a[i] t=a[i++]; else t=b[j++]; if(t!=c[k-1]) ( 25 ) =t;。 } while(a[i]) if(a[i]!=c[k-1]) .c[k++]=a[i++]; else i++: while(b[j]) if(b[j]!=c[k-1]) c[k++]=b[j++]; else j++; e[k]='\0'; return ( 26 ) ; } main() {static char s1[10]="ccp",s2[10]="oppy",s3[20];int n; n=strmerge(sl,s2,s3); puts(s3); printf("%d",n); } 17.设某链表上每个结点的数据结构为 typedef struct node {int d; struct node *next; }NODE; 函数NODE *invert(NODE *head)的功能是:将head指向的单链表逆置,即原链表最后一 个结点变为第一个结点,原来倒数第二个结点变成第二个结点,以此类推。在逆置过程中不建 立新的链表。 NODE *invert(NODE *head) {NODE *P,*q,*r; if(head==0|| ( (27) ) return head; P=head; q=P->next; while(q!=0) {r= ( 28 ) ; q->next=p;p=q;q=r; } ( 29 ) =O; head= ( 30 ) ; return head; } (6)6 (7)1 (8)FFD0 (9)021 (10)113 (11)1100 (12)0111 (13)3 (14)1104 (15)3380 (16)0550 (17)edcba (18) 25431 (19)n/10+n%10*10 (20)m[j]%k==0 (21)t=1 (22)n<=i (23)b[j]!=?\0? (24)j++ (25)c[k++] (26) i+j-k (27)head->next==0 (28)q->next (29)head->next (30) p ●阅读程序题(共11分) 6.以下程序运行时输出结果是( 6 ) 。 #define PT 3.14 #define S(x) PT*x*x main() ? {int a=2; printf("%4.1f",6.28/S(a)); } 7.已知int型变量的存储字节数为2,以下程序运行时输出结果是( 7 )。 #include main() {int a=3,b=2,c=7,d=6,e=8; long f=a*10000+b*1000+c*100+d*10+e; printf("%ld",f); } 8.以下程序运行时输出结果是( 8 ) 。 #include main() {char *P="student"; if(P=="student") printf("yes"); else printf("no"); } 9.以下程序运行时输出结果是( 9 )。 #include #include {char *s="23a4"; int k=0,a=0,b=0; do {if(isdigit(s[k])) {if(s[k]%2==0) {a=a+s[k]-'0'; continue; } a=a+s[k]-'0';b=b+s[k]-'0'; } }while(s[k+1]&&++k); printf("%d,%d,%d\n",k,a,b); } 10.以下程序运行时输出结果是(10) 。 #include int f(int a[],int m,int b[],int n,int c[]) {int i,j,k=0,t; for(i=0;i {for(t=1,j=0;j if(a[i]==b[j]) {t=O;break;} if(t) c[k++]=a[i]; } return k; } void main() {int x[]={7,2,3,6,5,4,1},y[]={5,10,7,9,8,6},z[10],w,j; w=f(x,7,y,6,z); for(j=0;j } 11.以下程序运行时输出结果是(11) void fun(int *p1,int *p2); main() {int i,a[6]={1,2,3,4,5,6}; fun(a,a+5); for(i=O;i<5;i++) printf("%2d",a[i]); } void fun(int *pl,int *p2) {int t; if(pl { t=*p1,*pl=*p2;*p2=t; fun(p1+=2,p2-=2); } 12.以下程序运行时输出结果的第一行是( 12 ) ,第二行是( 13 )。 void swap(int *a,int *b) {int c; c=*a; *a=*b;*b=c; } main() {int i,j,a[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0:i<2:i++) for(j=0;j<2-i;j++) if(i==j) swap(&a[i][j],&a[i+2][j+2]); else swap(&a[i][j],&a[i+1][j+1]); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%d",a[i][j]); printf("\n"); } } 13.以下程序运行时输出结果的第一行是( 14 ) ,第二行是( 15 ) ,第三行是(16 ) 提示:函数int toupper(int ch)的功能是:将小写字母字符转换为对应的大写字母字符。 #include #include long fun(char *s) {long n,sign,base=10,t; for(;isspace(*s);s++); sign=(*s=='-')?-1:1; if(*s=='+'||*s=='-')s++; if(*s=='0'&&s++) {if(*s=='x||*s=='X') {base=16;S++;} else base=8; } for(n=0,t=1;t&&(isdigit(*s)||isalpha(*s));s++) switch(base) {case 10:if(isdigit(*s)) n=n*base+*s-'0'; else t=0; break: case 8:if(*s>='0'&&*s<='7')n=n*base+*s-'0'; else t=0: break; default:if(isdigit(*s))n=n*base+*s-'0'; else if(toupper(*s)>='A'&&toupper(*s)<='F') n=n*base+toupper(*s)-'A'+lO; else t=0; } return sign*n: } main() {char c1[]="0x1f",c2[]="0409",c3[]="-33a"; printf("%ld\n%ld\n%ld",fun(c1),fun(c2),fun(c3)); } ●完善程序题(共14分) 14.程序中函数double,mycos(double x)的功能是:根据下列公式计算cos(x)的近似值。 cos(x)=1-x^2/2!+x^4/4!-x^6/6!+....+(-1)^n*(x^2*n/(2*n)!) 精度要求:当通项的绝对值小于等于10^-6时为止。 #include #include< ____(17)____________> . double mycos(double x) . {int n=1; double sum=0,term=1.0; while( ___(18)_________ >=le-6) {sum+=term; term*= ___(19)_________ ; n=n+2: } return sum; } main() {double x; scanf("%lf",&x); printf("fx(%f)=%f,%f\n",x,mycos(x),cos(x)); } 15.main函数内结构数组P中的元素已按结构成员index的值升序排列。以下程序先在P中插入s1和s2两组数据,再将数组的所有元素输出。要求插入数据后数组p中的元素仍按 结构成员index的值升序排列。 #include typedef struct s {int index; char text[10]; }T; int inserttv(T *p,T s,int n) {int k,j; for(k=0;k if( 20 )>s.index) {for(j=n;j>k;j--)p[j]=p[j一1]; break; } ( 21 ) =s; return n+1; } main() {int n; T p[8]={{0,"a",},{5,"t",},{10,"e",},{15,"r"}}; T s1={3,"f"},s2={16,"s"},*q; n=inserttv(p,s2,__________(22)__________ ); for(q=p;q index,q->text); } 16.以下程序的功能是:查找所有满足以下条件的两个整数对:(1)两个整数都是3位数;(2) 组成两个整数各位的数字各不相同并且不出现数字O;(3)第二个数等于第一个数的两倍。例如,134和268就是满足该条件的一个整数对。 main() {int a,b,c,j,k,w,s[6],sum; for(a=1;a<=5;a++) /*a百位,b十位,c个位*/ for(b=1;b<=9;b++) for(c=1;c<=9;c++) {s[o]=a;s[1]=b;s[2]=c; sum= ____(23)_________ ; sum=2*sum; if(sum>999) continue; s[3]= ______(24)_____________ ; s[4]=(sum-s[3]*100)/10; s[5]=sum%10; _____(25)___________________ ; for(j=0;j<5;j++) for(k=0;k<6;k++) if(s[k]==0||j!=k&& ___(26)____________ w=0; if(w) for(k=0;k<2;k++) printf("%d%d%d\n",s[k*3],s[k*3+1],s[k*3+2]); } } 17.设有一个线性单链表的结点定义如下: struct node {int d; struct node next; };. 函数int copy_dellist(struct node *head,int x[])的功能是:将head指向的单链表中存储的所有 整数从小到大依次复制到x指向的整型数组中并撤消该链表;函数返回复制到x数组中的整 数个数。算法:找出链表中数值最小的结点,将其值存储到x数组中,再将该结点从链表中删 除,重复以上操作直到链表为空为止。 int copy_dellist(struct node *head,int x[]) {struct node *pk,*pj,*pm,*pn; int data,k=O; while(head!=0) {pk=head;data=pk->d;pn=pk; while(______(27)_______!=0) {pj=pk->next; if(_____(28)___________ {data=pj->d;pm=pk;pn=pj;} pk=pj; } x[k++]=pn->d;. if( ___29___________)pm->next=pn->next; else head=pn->next; free(pn); } . ____(30)__________________ ; } (6)8.0 (7)-32768 (8) no (9)3, 9, 3 (10)2,3,4,1 (11)6,2,4,3,5,1 (12)9 6 3 (13)8 5 2 (14)31 (15)32 (16)-33 (17) math.h (18)fabs(term) (19)--x*x/(n*(n+1)) (20)p[k].index (21)p[k] (22)inserttv(p,s1,4) (23)a*100+b*10+c (24)sum/100 (25)w=1; (26)s[j]==s[k] (27)pk->next (28)pj->d (29)pn!=head (30)return k ●阅读程序题(共7分) 5.以下程序运行后输出____(6)____ #include int f(char *sl,char *s2) {static int nl,n2; while(*s1++)n1++; while(*s2++)n2++; return n1-n2; } main() {printf("%d",f("c:\\program","\12a\t34\n"));} 6•下列程序执行后,x的值为____(7)______ main() {int x,y; for(x=1,y=1;x<=100;x++) {if(y>=20)break; if(y%3==1){y+=3;continue;} y-=5; } printf("%d\n",x); } 7.以下程序运行时输出_____(8)________ #include #include main() {char s[20]="acef",sl[]="bd"; int i,j,k; for(k=0;sl[k]!='\0';k++) {j=0; while(sl[k]>=s[j]&&s[j]!='\0')j++; for(i=strlen(s);i>=j;i--)s[i+1]=s[i]; s[j]=sl[k]; } puts(s); } 8.以下程序运行时输出结果的第-行是___(9)_____,第二行是____(10)______。 int m=5,n=7,a[10]={0,1,2}; void fl(void); void f2(int m); main() { int i; for(i=0;i<7;i++)fl(); f2(1);printf("\n%d,%d",a[m],a[n]); } void fl(void) {static int n=3; a[n]=a[n-1]+a[n-2]+a[n-3];n++; } void f2(int m) {for(;m<3;m+=2) {int m; for(m=1;m<4;m++) printf("%d,",a[m++]); } } 9.以下程序运行后输出结果的第-行是__(11)_____,第二行是___(12)______ 。 extern int m1,m2; void fun(int n,int *p1,int *p2) {int i; *p1=1;*p2=1; for(i=1;i<=n;i++){*p1+=3;*p2*=3;} m1+=*p1;m2+=*p2; } int m1,m2; main() { int i,k1[4],k2[4]; for(i=0;i<4;i++) fun(i,&k1[i],&k2[i]); for(i=0;i<4;i++) printf(“%d,”,k1[i]); printf(“%d\n”,m1); for(i=0;i<4;i++) printf(“%d,”,k2[i]); printf(“%d”,m2); } 完善程序题(共18分) 10.以下程序中函数encode完成一个字符串的加密功能,将s1字符串中的字符经过变换后保存到s2指向的字符数组中,二维数组cs保存了一个明码密码对照表,第一行是明码字符,第二行是对应的密码字符,加密方法如下:从s1字符串中每取一个字符,均在cs 表第一行中查找有无该明码字符,若找到则将对应的密码字符放入s2中,否则将s1中原来的字符放入s2中。 #include #include char cs[2][10]={“aceghjlnp”,”fonptiude”}; void encode(char *s1, char *s2) { int n,i,j; for(n=0;s1[n]!=?\0?;n++) { for(i=0;i<10&&s1[n]!=cs[0][i];_______(13)____) if(i<10) s2[n]=______(14)_____; else s2[n]=______(15)_______; } s2[n]=?\0?; } main() { char ts[80]=”jntwrnwt”, td[80]; encode(ts,td); puts(td); } 11.以下程序依次输入某单位每位职工的姓名和工资数(整型数),然后计算发放工资时所需 发给每位职工的不同面值的纸币张数,并计算工资总和以及累计所需不同币值的张数#include #include struct{ char name[10]; /*姓名*/ int total; /*工资数*/ int mnum[7]; /*发放工资时所需不同币值的张数*/ }st[21]; int mvalue[7]={100,50,20,10,5,2,1}; main() {FILE *fp; int n=0,i,j,wage; fp=fopen("wage.dat","r"); if(fp= =NULL)exit(1); while(!feof(fp)) {fscanf(fp,"%s%d",st[n].name,&st[n].total); wage=st[n].total; for(j=0;j<7&&wage;j++) {st[n].mnum[j]=___(16)_________; wage= _____(17)______; } _________(18)________; } strcpy(st[n].name,"summary"); for(i=0;i { st[n].total+=st[i].total; for(j=0;j<7;j++) st[n].mnum[j]+=_____(19)_______; } for(i=O;i {printf("\n%s%d=",st[i].name,st[i].total); for(j=0;j<7;j++) printf("%d",st[i].mnum[j]); } 12.以下函数的功能是以十进制字符形式打印出任一int函数 #include "stdio.h" void f(int n) {int i; if(n<0) {putchar('-');____(20)____;} if((_____(21)______)!=0)f(i); putchar(____(22)_______+'0'); } 13.以下程序中函数maxmin的功能是:对于x中存储的一个任意的四位整数,求出:(1)组成以这个整数的四个数字由大到小排列后构成的最大的四位数;(2)组成以这个整数的四个 数字由小到大排列后构成的最小的四位数。 #include void maxmin(int x,int *pmax,int *pmin) {int num[4],i,j,k,temp; *pmax=0;*pmin=0; for(i=0;i<4;i++) {num[i]=x%10;x=_____(23)_____;} for(i=O;i<3;i++) {k=i; for(j=i+1;j<4;j++) if(num[k] if(____(24)_____){temp=num[i];num[i]=num[k];num[k]=temp;} } for(i=0;i<4;i++) {*pmax=*pmax*10+____(25)____; /*生成最大的四位数*/ *pmin=*pmin*10+ _____(26)_______; /*生成最小的四位数*/ } } main() {int n=3169,max=0,min=O; maxmin(n,&max,&min); printf("\n%d%d",max,min); } 14.设某链表上结点的数据结构定义如下: struct node{ int x; struct node *next; } 函数create的功能是:创建一个有序的链表(结点中x的值按升序排序),链表中结点 的个数为参数n的值,函数返回该有序链表的头指针。算法思想如下:每产生一个新的结点,插入到链表中的恰当位置,使得插入新结点以后的链表仍然保持有序_______(27)_______create(int n) { struct node *p,*p1,*p2,*h=NULL; int i=0; if(n<1) return NULL; while(______(28)________) { p=(struct node *) malloc(sizeof(struct node)); scanf(“%d”,&p->x);p->next=NULL; if(h= =NULL)_______(29)____________; else {p1=p2=h; while(p2 &&p->x>=p2->x) {p1=p2;p2=p2->next;} if(p2==h){_____(30)____________;h=p;} else{p->next=p2;p1->next=p;} } i++; } return h; } (6)4 (7)8 (8)abcdef (9)1,3 (10)11,37 (11)1,4,7,10,2 (12)1,3,9,27,40 (13)i++ (14)cs[1][i] (15)s1[n] (16)wage/mvalue[j] (17)wage%mvalue[j] (18)n++ (19)st[i].mnum[j] (20)n=-n (21)i=n/10 (22)n%10 (23)x/10 (24)i!=k (25)num[i] (26)num[3-i] (27)struct node * (28)i 改错题:(20分) 以下程序检查地名登记表,使每个地名只登记一次,并输出登记表内容 函数del_line删除s指向的n行字符串中重复出现的字符串,只保留第一次出现的字符串 若程序正确,运行后输出结果应为:shanghai beijing nanjing 含有错误的源程序如下: #include #include int del_line(char s[10][ ],int n) { int i,j,k; for(i=0;i {j=i; while(j if(strcmp(s[i],s[j])==0) {for(k=j;k s[k][0]=0;n--; } else j++; } return n; } main() { char line[10][10]={“shanghai”,”beijing”,”nanjing”,”shanghai”,”nanjing”}; int k,n=5; n=del_line(line,n); for(k=0;k } 将上述程序录入到文件myf1.c中,然后根据题目的要求以及程序中语句之间的逻辑关系对程序中的错误进行修改。 2•改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译 预处理命令,但不能增加其他语句,也不能删去整条语句。 3.改正后的源程序(文件名myfl.c)必须放在考试软盘的根目录下,供阅卷用,否则不 予评分。 二:编程题(20分) 1. 编写函数int gcd_max(int a[ ],int b[ ],int n),求长度为n的数组a中所有相邻两元素的最大公约数(共n-1个),并将之依次保存到数组b中,函数返回b数组中最大数的下标 2. 编写函数main函数,声明一个数组并用以下测试数据对其初始化,调用函数gcd_max,将求得的所有公约数,最大公约数及其下标写入文件myf2.out中。 例如:输入测试数据3,6,4,16,8,5,15,10,12,18,则输出结果应为: 3,2,4,8,1,5,5,2,6,max1=3,max=8 1.将源文件取名为myf2.c,输出结果文件取名为myf2.out。… 2.数据文件的打开、使用和关闭等操作均用C标准库中缓冲文件系统的文件操作函数实现。 3.源程序文件和运行结果文件均须保存在T:盘的根目录下,供阅卷用。 4.不要将myf2.obj、myf2.exe保存到T:盘中。 改错答案: (1)int del_line(char s[10][ ],int n)修改为: int del_line(char s[ ][10],int n) (2)j=i; 修改为:j=i+1; (3)s[k]=s[k+1] 修改为:strcpy(s[k],s[k+1]);(4)puts(line); 修改为:puts(line[k]); 编程题答案: #include "stdio.h" int gcd_max(int a[ ],int b[ ], int x) { int i,k=0,t,r,m,n; int max,maxk; for(i=0;i { m=a[i];n=a[i+1]; if(m r=m%n; while(r!=0) { m=n;n=r;r=m%n; } b[k++]=n; } max=b[0]; maxk=0; for(i=1;i if(max return maxk; } main() { FILE *fp; int a[10]={ 3,6,4,16,8,5,15,10,12,18},i,k; int b[9]={0}; if((fp=fopen("myf2.out","w"))==NULL) { printf("Create file myf2.out failed!\n"); exit(0); } k=gcd_max(a,b,10); for(i=0;i<9;i++) { printf("%5d",b[i]); fprintf(fp,"%5d",b[i]); } fprintf(fp,"\n"); fprintf(fp,"max1=%d,max=%d\n",k,b[k]); fclose(fp); } 一:改错题(20分) 题目: 函数find_replace的功能是:在s1串中查找s2子串,并用s3子串替换找到的所有s2子串,若s1串中没有出现s2子串,则不做替换并使函数返回0,否则返回1. 例如:若s1子串为”This is a test program and a test data.”,s2子串为”test”,s3子串为”actual”,若程序正确,输出结果应为:”This is a actual program and a actual data.” 含有错误的源程序如下: #include #include int find_replace(char *s1, char *s2, char s3) { int i,j,k=0,t=0; char temp[80]; if(*s1='\0' || *s2='\0') return t; for(i=0;s1[i]!='\0';i++) { for(j=0,k=0;s1[j]= =s2[k];j++,k++); /*比较s2是否在s1中*/ if(s2[k]= ='\0') { strcpy(temp, s1[j]); strcpy(&s1[i],s3); i=i+strlen(s3); strcpy(&s1[i],temp); t=1; } } return t; } main() { char line[80]="This is a test program and a test data.", substr1[10]="test",substr2[10]="actual"; puts(line); if(find_replace(line,substr1,substr2)) puts(line); else printf("not found"); } 编程题目: [题目] 1. 编写函数int encode(int a[ ][4]),对二维数组中左下三角的全部元素(包括对角线上的元素)做如下变换:(1)若该元素不是素数则保持不变(2)若该数是素数,则用大于它的最小素数替换该数,函数返回二维数组左下三角的元素中素数的个数 2. 编写main函数,声明一个二维数组并用以下测试数据给二维数组赋初值。调用encode 函数对该数组作变换,将变换后的数组全部元素(以二维数组形式)及左下三角元素中素数的个数写入文件myf2.out中 测试数据 3 6 4 7 8 5 9 10 12 19 7 20 4 14 21 23 变换后的数据 5 6 4 7 8 7 9 10 12 23 11 20 4 14 21 29 1.将源文件取名为myf2.c,输出结果文件取名为myf2.out。… 2.数据文件的打开、使用和关闭等操作均用C标准库中缓冲文件系统的文件操作函数实现。 3.源程序文件和运行结果文件均须保存在T:盘的根目录下,供阅卷用。 4.不要将myf2.obj、myf2.exe保存到T:盘中。 改错题答案: (1) int find_replace(char *s1, char *s2, char s3) 修改为:int find_replace(char *s1, char *s2, char *s3) (2) if(*s1='\0' || *s2='\0') 修改为:if(*s1= ='\0' || *s2= ='\0') (3) for(j=0,k=0;s1[j]= =s2[k];j++,k++); 修改为:for(j=i,k=0;s1[j]= =s2[k];j++,k++); (4) strcpy(temp, s1[j]); 修改为:strcpy(temp, &s1[j]); 编程题答案: #include #include int prime(int n) /*判断素数算法*/ C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y); }elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x); **********************************考试形式:上机考试(60分钟) 考试题型说明:10个单选题+2个编程题 下面是编程题目的复习题型,期末考试的编程题型及难易程度与此相近,请大家认真复习,强化练习,打下坚实基础,顺利通过考试。 ********************************** 1、编写一计算阶乘的函数fac,在主函数中从键盘输入一个正整数,调用阶乘函数fac计算阶乘并输出计算结果。 2、编写一个求x的y次幂的函数pw,在main函数中从键盘输入a、b的值,然后调用pw函数求a的b次幂,并输出结果。 3、写一函数max,计算三个数中最大数。在主函数中输入三个数,调用该函数求出其中最大数并输出。(要求:三个数为实数) 4、写一个函数计算两个正整数的最大公约数,在主函数中用scanf输入m, n两个正整数,调用函数后,打印函数返回值(即这两个正整数的最大公约数)。 5、编写一个函数,该函数的功能是判断一个整数是不是素数,在main函数中 调用该函数,输出200以内所有的素数。 6、请编一个自定义函数,功能:将给定的字符串中的所有字母改为小写字母。字符串在主函数中从键盘任意输入(容许包含空格) 7、编写一个函数,该函数的功能是判断一个整数是不是素数,在main函数 中输入一个整数,调用该函数,判断该数是不是素数,若是则输出“yes”, 否则输出“no” 8、将1--1000中所有21的倍数存到一个一维数组中,再按每行5个数据输出到屏幕上。 9、在屏幕上打印以下图案:(要求打印N行,N用符号常量定义为7) * ** *** **** ***** ****** ******* 10、输出所有在正整数200和300之间能被6整除、但不能被4整除的数,并统计这样的数有多少个。 11、求S=1/1+1/2+1/3+……+1/100(精确到小数点后三位)。 12、编程计算1到20的平方和,并输出结果。(要求用for循环) 13、编写一个程序从键盘任意个整数,求均值及低于均值的个数,输出到屏幕。 14、编写一个程序从键盘输入10个学生的成绩到数组score中,将最高分、最低分输出,要求将该程序以文件名test1.c保存到K盘根目录。 15、在main()函数中输入一个人的年龄和性别,女士55岁退休,男士60岁退休。编写一个函数根据年龄和性别判断一个人士工作还是退休,若工作,则输出“Working!”,退休则输出“Retired!” 161、编写一个程序从键盘输入10个学生的成绩到数组score中,将最高分、最低分输出。 17、编写一个函数求一个实数的绝对值。然后在main函数中用scanf输入 任意个实数,调用该函数求它的绝对值并输出。 18、编写一个求1——n内的偶数和的函数,在main()函数中输入n,然后 调用该函数求1——n的偶数和并输出。 19、编写一个求1——n内的奇数和的函数,在main()函数中输入n,然后 单选题 1、下列语言中不属于计算机语言的三大类的是(C )。 A.机器语言 B.汇编语言 C.脚本语言 D.高级语言 2、下列说法中不正确的是(C ) A.计算机语言大致可分为三大类,即机器语言、汇编语言和高级语言 语言是一种通用的、过程式的编程语言,具有高效、灵活、可移植等优点 语言属于汇编语言 D.高级语言比汇编语言更贴近于人类使用的语言,易于理解、记忆和使用 3、以下开发工具中不属于主流的开发工具的是(B ) Studio ::Block 4、下列选项是对主流开发工具的介绍,其中错误的是(B ) Studio支持C/C++、C#、F#、VB等多种程序语言的开发和测试 ::Block是一个免费的跨平台IDE,支持C、C++和Fortan程序的开发 是一种被广泛使用的免费跨平台IDE,最初由IBM公司开发 是一款功能非常强大的IDE ( 和其他IDE不同的是,Vim本身并不是一个用于开发计算机程序的IDE,而是一款功能非常强大的文本编辑器,它是UNIX系统上Vi编辑器的升级版。) 5、下列选项中,不属于开发一个C语言应用程序的具体实现步骤的是(A ) A.启动开发工具 B.添加源文件 C.编写代码 D.运行程序 6、下列选项中,关于main()函数叙述不正确的是(C ) A.一个完整的C语言程序中,有且只能有一个main()函数 ()函数是程序的主入口,程序总是从main()函数开始执行 C.如果没有声明main()函数,程序将从第1行开始执行 ()函数可以有返回值,也可以没有返回值 7、下面程序中,合法的选项是(D ) A.#include int main() { printf("hello world\n"); return 0; } B.#include int man() { printf("hello world\n"); return 0; } C.#include int main() { printf("hello world\n") return 0; } D.#include int main() { print("hello world\n"); return 0; } 8、下面程序中,运行结果为“1,2”的是(A ) A.#include int main() { int a = 1; int b = 2; printf("%d %d\n",a,b); return 0; } B.#include int main() { int a = 1; int b = 2; printf("%d,"a); printf("%d\n",b); return 0; } C.#include int main() { int a = 1, b = 2; printf("%d,,%d\n",a,b); return 0; } 程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); } 【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后( #include 单选题 1、关于数组的定义与初始化,下列哪一项是错误的() A.int arr[5] = {1,2,3,4,5}; B.int arr[] = {1,2,3,4,5}; C.int arr[5] = {1,2,3}; D.int arr[5] = {1,2,3,4,5,6}; 2、在定义数组int arr[10]后,下列选项中对arr的引用正确的是() A.arr[10] B.arr[6.3] C.arr(6) D.arr[0] 3、在C语言中,引用数组元素时,其数组下标的数据类型允许是() A.整型常量 B.整型表达式 C.整型常量或整型表达式 D.任何类型的表达式 4、若int arr[5] = {1,2,3}; 则arr[2]的值为() A.1 B.2 C.3 D.null 5、在执行int arr[][3] = {1,2,3,4,5,6}:语句后,arr[1][0]的值为() A.4 B.1 C.2 D.5 6、关于二维数组,下列选项能正确定义并赋初值的是() A.int n = 5,b[n][n]; B.int a[1][2] = {{1},{3}}; C.int c[2][] = {{1,2},{3,4}}; D.int a[3][2] = {{1,2},{3,4}}; 7、阅读下列程序段: char s[18] = "a book!"; printf("%.4s\n", s); 其输出结果为() A.a book! B.a book C.a bo D.a 8、阅读下列程序: int a[4][4] = { { 1, 3, 5, }, { 2, 4, 6 }, { 3, 5, 7 } }; printf("%d%d%d%d\n", a[0][0], a[1][1], a[2][2], a[3][3]); 一、填空 1. break 语句通常用于switch // 循环中。 2. C 语言对数组下标的引用一般从0 开始。 3. C 语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。 4. C 标准库函数中,字符串的处理函数包含在string.h 头文件中,数学函数包含在 math.h 头文件中。 5. C 程序的运行需要经过编译和链接两步进行。 6. C 程序中用/**/ 括起来的内容是程序的注释语句。 7. C 语言函数是由函数首部和函数体两部分组成。其中,函数首部包括函数类型、函数 名和函数参数。 8. C 语言提供的三种逻辑运算符是& ,// ,!。 9. C 语言源程序经过编译后,生成文件的后缀名是.c 。 10. C 语言源程序经过连接后,生成文件的后缀名是.exe 。 11. C 语言中,关系表达式和逻辑表达式的值是1//0 。 12. C 语言中的标识符只能由三种字符组成,他们是字母,数字,下划线。 13. C 语言中的每条基本语句以;作为结束符,每条复合语句以} 作为结束符。 14. C 语言中函数返回值的类型是由函数类型决定的。 15. C 源程序的基本单位是函数。 16. int a = 2, b = 3; 表达式 a > b ? a ++ : ++ b 的值为 4 。 17. int x=1,y=1,z=1; x+=y+=z; 则表达式x 【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。#include "stdio.h" #include "conio.h" main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k); } getch(); } ============================================================== 【程序2】题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 #include "stdio.h" #include "conio.h" main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0. 1; bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15; if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; else if(i<=400000) bonus=bonus2+(i-200000)*0.05; else if(i<=600000) bonus=bonus4+(i-400000)*0.03; else if(i<=1000000) bonus=bonus6+(i-600000)*0.015; else bonus=bonus10+(i-1000000)*0.01; printf("bonus=%d",bonus); getch(); } ============================================================== 【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析: #include "math.h" #include "stdio.h" #include "conio.h" main() { long int i,x,y,z; for (i=1;i<100000;i++) { x=sqrt(i+100); /*x为加上100后开方后的结果*/ y=sqrt(i+268); /*y为再加上168后开方后的结果*/ 阅读程序题 【2.1】以下程序的输出结果是。 main(D ) { float a; printf("%g",a); } A) 0.00000e+00 B) 0.0 C) 1.00000e-07 D) 0 【2.2】下面程序的输出结果是B____。 #include { unsigned int n; int i=-521; n=i; printf("n=%u\n",n); }//变量i中的负号传送给变量n后,因n是无符号数,已不作为负号处理。 【2.4】以下程序的输出结果是。 main(D ) { int x=10, y=10; printf("%d %d\n", x――, ――y); } A) 10 10 B) 9 9 C) 9 10 D) 10 9 【2.5】以下程序的输出结果是___B。 main() { int n=1; printf("%d %d %d\n",n,n++,n--); } // C语言在执行printf()时,对函数中的表达式表列的处理顺序是从后向前,即先处理n- -,再处理n++,最后处理n, A) 1 1 1 B) 1 0 1 C) 1 1 0 D) 1 2 1 【2.6】以下程序的输出结果是____。 main() { int x=0x02ff,y=0x0ff00; 实验报告三 (四学时) 2.1 实验目的 (1)掌握函数的定义和调用; (2)了解函数间的参数传送; 2.2 基础实验 【题目3-1】编写函数实现将输入的字母转换成大写字母(若输入小写则转换,大写字母直接输出,其他字符请输出提示“请输入字母”)。 算法分析: 1、输入:通过键盘接收一个字符; 2、条件判断:调用判别函数 3、函数功能为:蒋所输入字符进行判别处理,若输入小写则转换,大写字母直接输出,其他字符请输出提示“请输入字母” 4、程序结束。 【实验3-1】代码及运行结果: 【题目3-2】从键盘输入若干个同学计算机课程期末考试成绩(学生人数可由用户输入),求该课程的期末成绩的平均分并输出。 函数功能要求:实现若干(例如5名)同学的的期末成绩输入,并统计出平均分。 算法分析: 1、输入:通过键盘接收同学个数; 2、调用求平均分函数 3、输出平均成绩 4、程序结束。 【实验3-2】代码及运行结果: 【题目3-3】请用函数编写程序实现:计算3 到100 之间所有素数的平方根之和,并输出。s=148.874270。 算法分析: 1、编写函素数判别函数,确定返回标记,如果是素数返回1,否则返回0 2、编写主函数,用一重循环遍历100以内所有数据 2.1、通过素数判别函数对循环的数据进行是否为素数的判别 2.2、返回判别为真的整数,并输出 3、程序结束。 【实验3-3】代码及运行结果: #include 《C程序设计》练习题 一、单项选择题 导读:单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。在完成习题的过程中,不但要选出正确的答案,而且要清楚不正确的选项错在何处,以加深对概念的理解。对于掌握不准的问题,应该通过上机实验来检验。(注:选用普通整型数据占用2个字节的c编译器。如Turbo C 2.0 、Win-TC、Turbo C++ 3.0) 【1.1】以下不正确的C语言标识符是____。 A) int B) a_1_2 C) ab1exe D) _x 【1.2】以下是正确的C语言标识符是____。 A) #define B) _123 C) %d D) \n 【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。 ??? A) print B) iam C) Pxq D) str_l ??? _3d one_half My->book Cpp ??? oodbs tart$it line# pow ??? aBc 3pai His.age while 【1.4】下面各选项组中,均是C语言关键字的组是。 A) auto,enum,include B) switch,typedef,continue C) signed,union,scanf D) if,struct,type 【1.5】下列不属于C语言关键字的是。A) default B) register C) enum D) external 【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。 A) 程序文件的开始B) 程序文件的最后 C) 它所调用的函数的前面D) 程序文件的任何位置 【1.7】下列关于C语言的叙述错误的是____ A) 大写字母和小写字母的意义相同 B) 不同类型的变量可以在一个表达式中 C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义 【1.8】在C语言中,错误的int类型(长度为2字节)的常数是。 A) 32768 B) 0 C) 037 D) 0xAF 【1.9】执行语句printf("%x", -1); (int类型长度为2字节)屏幕显示____。 A) -1 B) 1 C) -ffff D) ffff 【1.10】已知long i=32768; 执行语句printf("%d", i); 屏幕显示____。 A) -1 B) -32768 C) 1 D) 32768 【1.11】已知long i=65539; 执行语句printf("%d", i); 屏幕显示____。 A) 65539 B) -3 C) 3 D) 程序不能执行 【1.12】在C语言中,整数-8在内存中的存储形式是。 1、求100之内自然数中最大的能被17整除的数。 2、已知a,b,c都是1位整数,求当三位整数abc、cba的和为1333时a、b、c的值。 3、计算并输出200-400之间不能被3整除的整数的和。 4、从键盘输入10个数,统计非负数的个数,并计算非负数的和 5、求100之内自然数中偶数之和。 6、输入5个数,求和并输出。要求编写求和的函数。 7、编程计算1*2*3+3*4*5+5*6*7+……+99*100*101的值。 8、编写程序,将用户输入的字符串中所有的字符a用*代替,然后输出。 9、编写程序,将一个一维数组的元素逆序存放并输出。例如,原顺序为1,2,3,4,5,逆序后为5,4,3,2,1。 10、求3行3列矩阵a[3][3]={1,2,3,4,5,6,7,8,9}非对角线上元素之和。 11、编程判断输入的整数的正负性和奇偶性。如果为正数,输出z;如果为负数,输出f;如果为偶数,输出o;如果为奇数,输出j 12、计算并输出1-200之间不能被5整除的整数的和。 13、从键盘输入n和a的值,计算a+aa+aaa+……+aa……a(n个a)的值。 14、输入5个数,求它们中最大值和平均值并输出。 15、输出所有200-400之间能被3整除且个位数字为6的整数 16、编写程序,将用户输入的字符串中所有的字符a去掉,然后输出剩余的字符。 17、计算并输出200-400之间不能被7整除的整数的和。 18.计算并输出200-400之间不能被5整除的整数的和 19、从键盘输入10个数,统计非正数的个数,并计算非正数的和 20、输入一串字符,将其中的大写字母变成对应的小写字母并输出。 21、打印所有的水仙花数。所谓水仙花数是指一个三位数,其各位数字的立方和等于该数。例如,153就是一个水仙花数,因为153=1*1*1+5*5*5+3*3*3。 22、一个皮球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求当它第10次落地时,共经过了多少米,第10次反弹多高? 23、输出所有0-200之间能被3整除且个位数字为6的整数。 24、输入一个正整数,输出它的阶乘。 25、编写程序,判断从键盘输入的字符中数字字符的个数、大写字母的个数、小写字母的个数及其它字符的个数,以*作为字符输入结束标志。 26、编写程序,使用循环结构输出下列图形: * * * * * * * * * * * * * * * * * * * * 27、输入一串字符,逆序输出。要求使用数组实现。 28、求1-1/2+1/3-1/4+……+1/99-1/100的值。 29、输入3个学生4门课的成绩{(60,70,65,75),(75,80,75,90),(95,75,90,65)},计算每个学生的总分和平均成绩并输出,结果保留一位小数。 30、求两个正整数的最大公约数。 31、求100之内自然数中奇数之和。 32、输出所有200-400之间能被3整除且个位数字为7的整数。 33、编程计算1*2*3+4*5*6+……+97*98*99的值 1.编程求出1000到3000之间能被7、11、17同时整除的整数的平均值,并输出(结果保留两位小数)。 2.用选择结构的嵌套实现:判断一个数是否同时是5和7的倍数 3.在给定的含n(不超过100)个整数的数组中查找某个数m,若找到则打印在数组中第几个元素,若 不在该数组中则打印“无此数”。 4.编程判断输入的正整数是否既是5又是7的整倍数。若是,输出yes,否则输出no。 5.歌唱比赛有10个评委,分别给出1~100分,除去一个最高分,再除去一个最低分,剩余8个人的给 分的平均值作为选手的最终得分。请编写该程序。 6.输入一个正整数n(1 一、判断题 1、所谓常量,就是在程序运行过程中其值可以改变的量。() 2、一个C程序可以由多个源程序文件构成,但其中只能有一个main()函数。() 3、在C语言中do-while 语句和for循环均是先执行循环体语句,再判断表达式。() 4、在函数调用中将变量的地址作为实参传递给对应形参时,实现的是单向的值传递。() 5、C语言中所有字符串都是以‘\0’结束的。() 6、do-while构成的循环语句中的循环体最少执行1次。() 7、数组名在C语言中表示的是数组的首地址。() 8、使用gets()函数输入字符串时可以在字符串中输入空格。() 9、算术运算符中‘/’的优先级高于‘%’。() 10、char a[5];该语句表明数组a中的第五个元素为a[5]。() 11、C语言源程序文件的扩展名均为.c。() 12、char a[5];数组a中有a[1]、a[2]、a[3]、a[4]、a[5]共5个元素。() 13、C语言程序区分大小写,字符常量必须定义为大写。() 14、若int i=10,j=2;则执行i*=j+8;后i的值为28。() 15、若int x=100,y=200;则语句printf("%d",(x,y));输出结果为100。() 16、c语言中的标识符只能由字母,数字和下划线三种字符组成。() 17、函数getchar()的作用是:输出一个字符。() 18、一个C语言程序总是从第一个函数开始执行。() 19、在c语言中,char型数据在内存中是以ASCII码形式存储的。() 20、在C语言中switch语句必须使用break语句。() 二、选择题 1、以下说法正确的是()。 A、C语言程序总是从第一个函数开始执行。 B、C语言程序中要调用的函数必须在main()函数中定义。 C、C语言程序总是从main()函数开始执行。 C语言程序设计-----阅读程序题库及答案 集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY- 阅读程序题 【】以下程序的输出结果是。 main(D ) { float a; printf("%g",a); } A) +00 B) C) D) 0 【】下面程序的输出结果是B____。 #include <> main( ) { int x=10; { int x=20; printf ("%d,", x); } printf("%d\n", x); } A) 10,20 B) 20,10 C) 10,10 D) 20,20 【】以下程序的输出结果是___B_。 main() { unsigned int n; int i=-521; n=i; printf("n=%u\n",n); }s",s); } A) a book! B) a book!<四个空格》 C) a bo D) 格式描述错误,输出不确定 【】下面程序的输出结果是____。 main() { int a,b; scanf("%2d%3d",&a,&b); printf("a=%d b=%d\n",a,b); } A) a=12 b=34 B) a=123 b=45 C) a=12 b=345 D) 语句右错误 【】以下程序段的输出结果是。 int a=10,b=50,c=30; if(a>b) a=b; b=c; c=a; printf("a=%d b=%d c=%d\n",a,b,c); A) a=10 b=50 c=10 B) a=10 b=30 c=10 C) a=50 b=30 c=10 D) a=50 b=30 c=50 【】以下程序的输出结果是。 main() { int a=0,b=1,c=0,d=20; if(a) d=d-10; else if(!b) if(!c) d=15; else d=25; printf("d=%d\n",d); } A) d=10 B) d=15 C) d=20 D) d=25 【】下面程序的输出结果为。 main() 《C语言程序设计》复习题 一、判断题(本大题共60个小题) 1.C程序执行的入口是main()函数,所以main函数必须放在程序的开头。 2.定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现。 3.注释内容太多会影响程序的执行效率。 4.变量要“先定义,后使用”。 5.字符常量'a'与字符串常量"a"没有区别。 6.数学公式y=-6xz+5[2(a-5)+3]写成C语言表达式是y=-6*x*z+5*[2*(a-5)+3]。 7.数学公式y=|x|+ab-c写成C语言表达式是y=fabs(x)+a*b-c。 8.表达式5/2+5.0/2+7%6 的值为5.5。 9.设int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/2*(int)(a+c)/2)%4 的值为:4.5。 10.设int a=12; 则表达式a/=a+a的值是0.5。 11.在C语言中,运算符!比&&的优先级高。 12.在C语言中,运算符的优先级最小的是逗号运算符。 13.scanf("%d,%d",&x,&y);的输入格式:3,4<回车>。 14.以下程序运行结果是:1,7,0 void main() { int x=1,y=1,z=10; if(z< 0) if(y> 0) x=3; else x=5; printf(" %d," ,x); if(z=y< 0) x=3; else if(y==0) x=5; else x=7; printf(" %d,%d" ,x,z); } 15.该程序运行结果是:BCother void main() { char x=‘B’; switch(x) { case ‘A’: printf(“A”); case ‘B’: printf(“B”); case ‘C’: printf(“C”); default: printf(“other”); } } 16.下面程序段运行时输出结果是a=2,b=8 void main() { int x=1,y=1,a=2,b=7; switch(x) { case 1: switch(y) { case 0: a++;break; case 1: b++;break; } case 2: a++;b++;break; case 3: a++;b++; } printf("a=%d,b=%d\n",a,b); } 17.下面程序,当输入为:"abc?" 时,执行结果是:abc void main() { char c; c=getchar(); while (c!='?' ) { putchar(c); c=getchar();} } 1.编程实现求三个数的平均值,三个数可以在定义时初始化,也可以在声明后 赋值,自行选择合适的数据类型。输出时加上恰当的信息。 2.输入一个三位正整数,然后将其转换为倒序输出,如输入248,输出842. 3.Fibonacci数列如下:1,1,2,3,5,8......,即从数列的第三项开始,每项的值是其 前两项之和,编程输出该数列的前20项。 4.编程求n!,要求从键盘输入n的值,然后计算出结果并在显示器上显示出来。 5.水仙花数是指3位数的各位数字的立方和等于这个三位数本身,试编程输出 所有的水仙花数。如153=1*1*1+5*5*5+3*3*3。 6.输入20个学生的某门课程的成绩,求出其中大于平均成绩学生的人数,并 对成绩按从高到低进行排序。 7.寻找能满足被3整除余2,被5整除余3,被7整除余4的最小整数w,要 求用do-wihle循环。 8.输入一个不大于6位的整数,将其逆序输出。例如输入123456,则输出为 654321 9.编写函数:求出一个整数各位的数字之和,例如2345各位数字之和为 2+3+4+5=14。 10.输入任意大小的3个整数,判断其中是否有两个奇数一个偶数,若是则输出 YES,不是则输出NOT。 11.百钱买百鸡问题:一百元钱买一百只鸡了,小鸡一元钱3只,母鸡三元钱一 只,公鸡5元钱一只,问可买小鸡、母鸡、公鸡各多少只。 12.编写子函数void change_data(int* a,int* b)将主调函数传来的两个整数进行交 换,并将交换结果在主函数中输出。 13..编程打印如下图形,输出行数n由键盘输入,要求使用循环实现。 ***** **** *** ** * 14输出指定行数的杨辉三角。C语言程序设计第三版习题库答案
c语言编程 题目及答案
C语言程序设计教程第一章练习题题目
C语言程序设计程序填空题库及答案
C语言程序设计期末考试试题(含答案)
(完整版)C语言程序设计教程第五章练习题题目
C语言程序设计 复习题库
C语言经典程序100题(完整版)
C语言程序设计阅读程序题库及答案
c语言编程例题及答案
《C语言程序设计》练习题
C语言编程题(带答案)
C语言编程题练习
C语言程序设计考试题库
C语言程序设计-----阅读程序题库及答案
C语言程序设计复习题
C语言编程练习题