浙江省计算机C语言程序设计题(不含答案)(5篇)

时间:2019-05-15 04:02:41下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《浙江省计算机C语言程序设计题(不含答案)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《浙江省计算机C语言程序设计题(不含答案)》。

第一篇:浙江省计算机C语言程序设计题(不含答案)

C语言程序设计题库

C语言程序设计第01题 设计程序:

将满足条件pow(1.05,n)<1e6

以格式“%d,%.0f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ float y=1.05;int n=1;FILE *p;

/*

*

*

* 考生在这里添加代码

*

*

*/

fprintf(p,“%d,%.0f”,n,pow(1.05,n));

fclose(p);}

C语言程序设计第02题 设计程序:

将数组a的每1行均除以该行上的主对角元素(第1行同除以a[0][0],第2行同除以a[1][1],...),然后将a数组写入到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};

FILE *p;

/*

*

*

* 考生在这里添加代码

*

*

*/

for(i=0;i<3;i++){

for(j=0;j<3;j++)fprintf(p,“%10.6f”,a[i][j]);

fprintf(p,“n”);

}

fclose(p);}

C语言程序设计第03题 设计程序:求解百鸡问题。

已知公鸡每只5元、母鸡每只3元、小鸡1元3只。求出用100元买100只鸡的解。

将得到的解按公鸡、母鸡和小鸡的只数以“%d,%d,%dn”的格式写入到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;

int cock,hen,chick;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第04题 设计程序:

z=f(x,y)=10*cos(x-4)+5*sin(y-2),若x,y取值为区间[0,10]的整数,找出使z取最小值的x1,y1,并将x1、y1以格式“%d,%d”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){

FILE *p;

int x,y,x1,y1;float z,z1;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第05题 设计程序:

计算字符串s中每个字符的权重值,所谓权重值就是字符在字符串中的位置值与该字符的ASCII码值的乘积。位置值从1开始依此递增。将每个字符的权重值,以格式“%d ”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){

FILE *p;int i,w;

char *s=“we45*&y3r#$1”;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第06题 设计程序:

计算表达式1+2!+3!+...+12!的值,并将计算结果以格式“%ld” 写入到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;long s=1,k=1;int i;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第07题 设计程序:

统计满足条件x*x+y*y+z*z==2000的所有解的个数,并将统计结果以格式“%d”写入到考生目录中Paper子目录下的新建文件design.dat中。说明:若a、b、c是1个解,则a、c、b也是1个解,等等。#include void main(){ FILE *p;int x,y,z,k=0;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第08题 设计程序:

将字符串s中的所有字符按ASCII值从小到大重新排序后,将排序后的字符串写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;char *s=“634,.%@w|SQ2”,c;

int i,j,k,n=strlen(s);

/*

*

*

* 考生在这里添加代码

*

*

*/

for(i=0;i

fclose(p);}

C语言程序设计第09题 设计程序:

对x=1,2,...,10,求函数f(x)=x-10*cos(x)-5*sin(x)的最大值,并将该数以格式“%.3f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;float f(float),max,x;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第10题 设计程序:

x[i],y[i]分别表示平面上1个点的x、y坐标,求下列5点各点间距离总和,并将该数以格式“%.4f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;float s,x[5]={-1.5,2.1,6.3,3.2,-0.7};

float y[5]={7,5.1,3.2,4.5,7.6};int i,j;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第11题 设计程序:

计算数列1,-1/3!,1/5!,-1/7!,1/9!,...的和至某项的绝对值小于1e-5时为止(该项不累加),将求和的结果以格式“%.6”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;float s=1,t=1,i=3;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第12题 设计程序:

z=f(x,y)=(3.14*x-y)/(x+y),若x、y取值为区间[1,6]的整数,找出使z取最小值的x1、y1,并将x1、y1以格式“%d,%d”写入到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;float f(float x,float y),min;

int x,y,x1,y1;

/*

*

*

* 考生在这里添加代码

*

*

*/ } float f(float u,float v){ return(3.14*u-v)/(u+v);}

C语言程序设计第13题 设计程序:

将数组a的每1行均除以该行上绝对值最大的元素,然后将a数组写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};

FILE *p;float x;int i,j;

/*

*

*

* 考生在这里添加代码

*

*

*/

p=fopen(“design.dat”,“w”);

for(i=0;i<3;i++){

for(j=0;j<3;j++)fprintf(p,“%10.6f”,a[i][j]);

fprintf(p,“n”);

}

fclose(p);}

C语言程序设计第14题 设计程序:

在6至5000内找出所有的亲密数对,并将每对亲密数用语句fprintf(p,“%6d,%6dn”,a,b);写到考生目录中Paper子目录下的新建文件design.dat中。

说明:若a、b为1对亲密数,则a的因子和等于b、b的因子和等于a、且a不等于b。如:220、284是1对亲密数,284、220也是1对亲密数。#include void main(){ FILE *p;int a,b,c,k;

p=fopen(“design.dat”,“w”);

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第15题 设计程序:

计算多项式a0+a1*sin(x)+a2*sin(x*x)+a3*sin(x*x*x)+……的值,并将其值以格式“%.6f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){

FILE *p;

int i;float x=2.345,t=1.0,y=0.0;

float a[10]={1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第16题 设计程序:

a、b、c为区间[1,100]的整数,统计使等式 c/(a*a+b*b)=1成立的所有解的个数,并将统计数以格式“%d”写入到考生目录中Paper子目录下的新建文件design.dat中(若a=

1、b=

3、c=10是1个解,则a=

3、b=

1、c=10 也是解)。

#include void main(){ FILE *p;int n=0,a,b,c;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第17题 设计程序:

数列第1项为81,此后各项均为它前1项的正平方根,统计该数列前30项之和,并以格式“%.3f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;float s=0,a=81,i;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第18题 设计程序:

数组元素x[i]、y[i]表示平面上某点坐标,统计10个点中处在圆(x-1)*(x-1)+(y+0.5)*(y+0.5)=25内的点数k,并将变量k的值以格式“%d”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;int i,k=0;

float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第19题 设计程序:

在正整数中找出1个最小的、被3、5、7、9除余数分别为1、3、5、7的数,将该数以格式“%d”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第20题 设计程序: 数组元素x[i]、y[i]表示平面上某点坐标,统计所有各点间最短距离,并将其值以格式“%f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include #define len(x1,y1,x2,y2)sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))void main(){ FILE *p;int i,j;float c,minc;

float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};

minc=len(x[0],y[0],x[1],y[1]);

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第21题 设计程序:

计算多项式a0+a1*x+a2*x*x+a3*x*x*x+...的值,并将其值以格式“%f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;int i;float x=1.279,t=1,y=0;

float a[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第22题 设计程序:

计算多项式a0-a1*x+a2*x*x/2!-a3*x*x*x/3!+...的值,并将其以格式“%f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;int i;float x=1.279,t,y;

float a[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第23题 设计程序:

数列各项为1,1,2,3,5,8,13,21,...,求其前40项之和,并将求和的结果以格式“%d”写到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;long s=0,i,a[40];

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第24题 设计程序:

累加a字符串中各个字符的ASCII码值,然后将累加和以格式“%d”写到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;int s=0,i=0;

char *a=“r235%^%34cdDW,.”;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第25题 设计程序:

在数组x的10个数中求平均值v,找出与v相差最小的数组元素并将其以格式“%.5f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;int i,k=0;float x[10]={7.23,-1.5,5.24,2.1,-12.45,6.3,-5,3.2,-0.7,9.81},d,v=0;for(i=0;i<10;i++)v+=x[i];v=v/10;d=fabs(x[0]-v);

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第26题 设计程序:

计算27的小于1.00001的2n次方根(27的2(n-1)次方根不小于1.00001),将n以格式“%d”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;float x=27;int n=0;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第27题 设计程序:

计算2的平方根、3的平方根、...、10的的平方根之和,要求计算结果具有小数点后10位有效位数,并以格式“%.10fn”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第28题 设计程序:

选出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。计算并输出这些四位自然数的个数cnt及这些数字的和sum到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){

FILE *p;

int cnt,sum;

/*

*

*

* 考生在这里添加代码

*

*

*/

fprintf(p,“%d,%d”,cnt,sum);

fclose(p);}

C语言程序设计第29题 设计程序:

求斐波那契(Fibonacci)数列中大于t的最小的一个数,结果由函数JSValue返回,其中斐波那契数列F(n)的定义为:

F(0)=0,F(1)=1

F(n)=F(N-1)+F(n-2)分别计算当t=1000和t=3000时的结果,将计算结果输出到考生目录中Paper子目录下的新建文件design.dat中。#include int JSValue(int t){

/*

*

*

* 考生在这里添加代码

*

*

*/ } void main(){

FILE *p;

p=fopen(“design.dat”,“w”);

fprintf(p,“%d,%d”,JSValue(1000),JSValue(3000));

fclose(p);}

C语言程序设计第30题 设计程序:

寻找并输出11至999之间的数m,它满足m、m*m、m*m*m均为回文数。

所谓回文数是指各位数字左右对称,例如121、676、94249等。满足上述条件的数如m=11,m^2=121,m^3=1331皆为回文数。

请编制函数int JSValue(long m)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果输出到考生目录中Paper子目录下的新建文件design.dat中。#include #include #include int JSValue(long m){

/*

*

*

* 考生在这里添加代码

*

*

*/ } void main(){

FILE *p;long m;

p=fopen(“design.dat”,“w”);

for(m=11;m<1000;m++)

{

if(JSValue(m)&&JSValue(m*m)&&JSValue(m*m*m))

fprintf(p,“%ld ”,m);

}

fclose(p);}

C语言程序设计第31题 设计程序:

找出1000至9999之间符合条件的自然数。条件是:若一个四位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,以及十位数字上的值小于等于个位数字上的值,并且此四位数是偶数,统计出满足此条件的自然数的个数cnt,以格式“%d”写入到考生目录中Paper子目录下的新建文件design.dat中。

#include void main(){

FILE *p;

int cnt=0;

/*

*

*

* 考生在这里添加代码

*

*

*/

fprintf(p,“%d”,cnt);

fclose(p);}

C语言程序设计第32题 设计程序:

计算500~800区间内素数的个数cnt和素数和sum。请编写函数JSValue()实现程序的要求。最后把cnt和sum写入到考生目录中Paper子目录下的新建文件design.dat中。#include int cnt,sum;void JSValue(){

int i,j,half;

/*

*

*

* 考生在这里添加代码

*

*

*/ } void main(){

FILE *p;

p=fopen(“design.dat”,“w”);

JSValue();

fprintf(p,“%d,%d”,cnt,sum);

fclose(p);}

C语言程序设计第33题 设计程序:

有数列:2/1,3/2,5/3,8/5,13/8,21/13,……求出数列的前40项的和。将结果以格式“%.6f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){

FILE *p;

int i;

float f1=1.0,f2=2.0,t1=2.0,t2=3.0,s;

float f,t;

s=t1/f1+t2/f2;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第34题 设计程序:

x[i],y[i]分别表示平面上一个点的坐标,求下列10个点与点(1.0,1.0)的距离的总和,并将结果以格式“%.6f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){

FILE *p;

int i;

float x[10]={-1.5,2.1,6.3,3.2,-0.7,7.0,5.1,3.2,4.5,7.6};

float y[10]={3.5,7.6,8.1,4.5,6.0,1.1,1.2,2.1,3.3,4.4};

float s=0.0;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第35题 设计程序:

在数组a的10个数中求平均值v,将大于等于v的数组元素进行求和,并将结果以格式“%.5f”写到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;

int i;

float a[10]={7.23,1.5,5.24,2.1,2.45,6.3,5,3.2,0.7,9.81},sum,v=0;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第36题 设计程序:

在整数数组a中找出偶数放到b数组中,对b数组按从小到大的顺序进行排序后以格式“%3d”每行3个数写到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;

int i,j,temp,n=0;

int a[10]={7,6,20,3,14,88,53,62,10,29},b[10];

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第37题 设计程序:

某公司1999年年产量11.5万件,生产能力每年提高9.8%,求出产量能超过x万件的年份,结果由函数Year返回。

分别计算当x=20和x=30时的结果,将计算结果输出到考生目录中Paper子目录下的新建文件design.dat中。#include int Year(int x){

int p=11.5,y=1999;

/*

*

*

* 考生在这里添加代码

*

*

*/ } void main(){

FILE *p;

p=fopen(“design.dat”,“w”);

fprintf(p,“%d,%d”,Year(20),Year(30));

fclose(p);}

C语言程序设计第38题 设计程序:

一个球从100米高度落下,每次落地后都反弹至原高度一半位置,再落下。

计算出第10次落地时小球共经过的距离,并将结果以格式“%.0f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){

FILE *fp;float s=100,h=100;int i;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第39题 设计程序:

利用公式π/4≈1-1/3+1/5-1/7+……公式计算π的近似值,直到某一项的绝对值小于1e-6为止。(π/4的结果不包含此项)

将结果以格式“%.6f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *fp;float n=1,t=1,pi=0;int i;

/*

*

*

* 考生在这里添加代码

*

*

*/ } C语言程序设计第40题 设计程序:

计算多项式a0+a1*sin(x)+a2*sin(x*x)+a3*sin(x*x*x)+……+a9*sin(x*x*x*x*x*x*x*x*x)的值,并将其值以格式“%.6f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){

FILE *p;

int i;float x=2.345,t=1.0,y=0.0;

float a[10]={1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第41题 设计程序:

计算多项式a0+a1*x+a2*x*x+a3*x*x*x+...+a9*x*x*x*x*x*x*x*x*x的值,并将其值以格式“%f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;int i;float x=1.279,t=1,y=0;

float a[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第42题 设计程序:

计算多项式a0-a1*x+a2*x*x/2!-a3*x*x*x/3!+...-a9*x*x*x*x*x*x*x*x*x/9!的值,并将其以格式“%f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;int i;float x=1.279,t,y;

float a[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第43题 设计程序:

求斐波那契(Fibonacci)数列中其前40项之和,其中斐波那契数列的定义为 后一项为前两项之和,并将求和的结果以格式“%d”写到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;long s=0,i,a[40];

/*

*

*

* 考生在这里添加代码

*

*

*/ }

第二篇:C语言程序设计题

【第1题】题目:请编写函数fun,对长度为7的字符串,除首、尾字符外,将其余5个字符按将序排列。例如,雨来的字符串为CEAedca,排序后输出为CedcEAa。Int fun(char *s,int num){ Int i,j;chat t;for(i=1;i=2)&&(b<10)){k--;if((k%13= =0)| |(k%17= =0)){a=a+k;b++;} } Return a;} 【第3题】题目:产生15个[20,80]上的随机整数:用顺序法(比较法)按从小到大排序输出。

void fun(int a[], int n){ int I,j,t;for(i=0;i[j]){t=a[i];a[i]=a[j];a[j]=t;} } 【第4题】题目:请编写函数fun,它的功能是:判断m是否为素数。主函数的功能是:求出100到200之间的素数的个数。int fun(int m){int i,j;int k=1;if(m<=1)k=0;for(i=2;is[k])k=I;return(k=1);{ 【第7题】题目;编写函数fun其功能是:判断一个整数w的各位数字平方之和能否被5整除,可以被5整除则返货1,否则返回0。int fun(int w){ int k,s=0;do {s=s+(w%10)*(w%10);w=w/10;}while(w!=0);if(s%5= =0)k=1;else k=0;return(k);} 【第8题】题目:编写函数fun其功能是:求给定正整数n以内的素数之积。(n<28)long fun(int n){ long i,k;long s=1;for(i=2;i<=n;i++){for(k=2;ka[i])k++;return(k);} 【第13题】题目:用函数将第2个字符串连接到第1个字符串之后,不允许使用strcat函数。

void len_cat(char cl[],char c2[]){ int i,j;for(i=0;c1[i]!=’’;i++);

for(i=0;c2[i]!=’’;i++)cl[i+j]=c2[j];cl[i+j]=’’;} 【第14题】题目:编写函数fun,函数的功能是:找出一批正整数中的最大的偶数。int fun(int a[],int n){ int i,amax=-1;for(i=0;iamax)amax=a[i];return amax;} 【第15题】题目:编写函数fum,函数的功能是:求一个给定字符串中的字母的个数。

int fun(char s[]){ int i,k=o;for(i=0;s[i]!=’’;i++)

if(s[i]>=’a’&&s[i]<=’z’||s[i]>=’A’&&s[i]<=’Z’)k++;return k;} 【第16题】题目:从键盘输入一个大于3的整数,调用函数fun判断其是否素数,然后再mian函数中输出相应的结论信息。int fun(int n){int i;int j;j=1; if(i<0)j=0;for(i=2;i

int fun(char*str,char*substr){ int I,n=0;for(i=0;i<=strlen(str)-2;i++)if((str[i]=substr[0]&&9str[i+1]==substr[1]))n++;return n;} [第24题]题目: 编写函数fun求1!+2!+3!+……+n!的和,在main函数中由键盘输入n值,并输出运算结果.long fun(int n){ int i;long f=1,s=0;for(i=1;i<=n;i++){f=f*i;s=s+f;} return s;} [第25题]题目:从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出.int fun(int x[],int n){ int min,i;min=x[0];for(i=1;i

int i, k=1; if(m<=1)k=0;for(i=2;i

【第28题】题目:程序的功能是:把20个随机数存入一个数组,然后输出该数组中的最大值。其中确定最大值的下标的操作在fun函数中实现,请给出该函数的定义。int fun(int list[],int size){ int i ,max=0;

for(i=1;i

【第29题】题目:函数fun的功能是:求图1所示数列的第n项。数列为:l/a,l/(l+a),l/(l+(1+a)),l/(l+(l+(l+a))),…… float fun(int n){ float a=1;int i;for(i=1;i

if(year%400==0||&&(year%100!=0))flag=1;else flag=0;return(flag);} 【第33题】题目:编写函数fun,函数的功能是:求一个四位数的各位数字的立方和。int fun(int n){ Int d,k,s=0;While(n>0){d=n%10;s+=d*d*d;n/=10;} return s;} 【第34题】题目:求一批数中最大值和最小值的差。Int max_min(int a[],int n){ int i,max,min;max=min=a[0];for(i=1;imax)max=a[i];else if(a[i]a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;} } 【第37题】题目:请编写一个函数fun,函数的功能是:统计出若干个学生的平均成绩,最高分一级最高分的人数。例如,输入10名学生的成绩分别为92.87.68.56.92.84.67.75.92.66.则输出平均成绩77.9。最高92.最高分人数3人。float Max=0;int J=0;float fun(float array[],int n){int i.j=0;float sum=0,ave;max=array[0];for(i=0;i,n;i++){if(Max,array[i])Max=array[i];Sum=sum+array[i];} ave=sum/n;for(i=0;I,n;i++)if(array[i]==max)J++;return(ave);} [第38题]编写函数fun,函数功能是:计算n门功课的平均值,计算结果作为换数值返回。5门成绩92.76.69.58.88,函数的值72..599998。float fun(int a[]int n){ int i; float y=0;

for(i=0;ia[j])k=j;if(k!=i){t=a[i];a[i]=a[k];a[k]=t;} } } 【第42题】 题目:从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出。int fun(int x[],int n){int min,I;min=x[0];for(i=1;i

Int fun(char s[]){ int ik=0;for(i=0;s[i]!=’’;i++)

if(s[i]>=’a&&s[i]<=’z’||s[i]>=’A’&&s[i]<=’Z’)k==;return k;} 【第44题】 题目:编写函数fun,函数的功能是:从字符串s中删除指定的字符c。fun(char s[],char c){int I,k=0;for(i=0;s[i]!=’’;i++)if(s[i]!=c)s[k++]=s[i] s[k]=’’;} 【第45题】题目:函数fun主要功能是:从一个数组中查找出最大值在数组中的位置(从0开始),并把其内存地址返回。

说明:pos保存最大值在数组中的位置:p保存最大值内存地址。int*fun(int *s,int t,int *pos){int I,*p;p=s;for(i=1;i

[第47题目]题目: 编写函数fun,函数的功能是:求1到100之间的偶数之积.double fun(int m){ double y=1;int i;for(i=1;i<=m;i++)if(i%2==0)y*=i;return y;} [第48题]题目: 请编写一个函数fun,函数的功能是:输入一个字符串,过滤此串,只保留串中的字母字符,并统计新生成串中包含的字母个数.例如:输入的字符串为ab234sdf4,新生成的串为abdf.fun(char*ptr){int i,j;for(i=0,j=0;*(ptr+i)!=’’;i++)

if(*(ptr+i)<=’z’&&*(ptr+i)>=’a’||*(ptr+i)<’Z’&&*(ptr+i)>=’A’ {*(ptr+j)=*(ptr+1);j++;} *(ptr+j)=’’;return(j);} [第49题]题目:从键盘输入任意实数,求出其所对应的函数值 z=e的x次幂(x>10)答案: double z;if(x>10)z=exp(x);else if(x>-3)z=log(x+3);else z=sin(x)/(cos(x)+4);return(z);[第50题]题目:功能:在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的积,并在答案:----------------------int sum;int i,j;sum=1;for(i=0;i<3;i++)sum=sum*a[i][i];return sum;[第51题]题目:功能:求1到100之间的偶数之积。答案:----------------------double y=1;int i;for(i=1;i<=m;i++)if(i%2==0)y*=i;return y;[第52题]题目:功能:求出N×M整型数组的最大元素及其所在的行坐标及列坐标(如果最大元素不唯一,选择位置在最答案:----------------------int max,i,j;max=array [0][0];Row=0;Col=0;for(i=0;i='0'&&s[i]<='9'')k++;return k;[第55题]题目:功能:对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。

答案:----------------------int i,j;char t;for(i=1;i0){d=n%10;s+=d*d*d;n/=10;} return s;[第59题]题目:功能:从低位开始取出长整型变量s奇数位上的数,依次构成一个新数放在t中。

答案:----------------------long sl=10;t = s % 10;while(s > 0){ s = s/100;t = s%10*sl + t;sl = sl * 10;[第60题]题目:功能:计算并输出给定整数n的所有因子之和(不包括1与自身)。答案:----------------------int s=0,i;for(i=2;i='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')k++;return k;[第62题]题目:功能:能计算从1开始到n的自然数的和,n由键盘输入,并在main()函数中输出。

答案:----------------------int sum,i;sum =0;for(i=1;i<=n;i++){sum=sum+i;} return(sum);[第63题]题目:功能:请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二答案:----------------------int i,j;for(j=0;jpp[j])pp[j]=tt[i][j];[第64题]题目:功能:求一组数中大于平均值的数的个数。答案:----------------------int i,k=0;float s=0,ave;for(i=0;iave)k++;return k;[第65题]题目:功能:求大于lim(lim小于100的整数)并且小于100的所有素数并放在aa数组中,该函数返回所求 答案:----------------------int n=0;int i,j;for(i=lim;i<=100;i++){for(j=2;j='A' && str[i]<='Z')str[i]=str[i]+32;[第67题]题目:功能:从键盘输入一个大于3的整数,调用函数fun判断其是否素数,然后在main函数中输出相应的答案:----------------------int i;int j;j= 1;for(i=2;i

答案:----------------------char *q=s;for(;*q;q++)if(*q!= c)*(s++)=*q;*s=0;[第69题]题目:功能:对长度为8个字符的字符串,将8个字符按降序排列。答案:----------------------int i,j;char t;for(i=0;i

int i;float sum=0,ave;Max=array[0];for(i=0;i='a'||*(ptr+i)<='Z' && *(ptr+i)>='A'){*(ptr+j)=*(ptr+i);j++;} *(ptr+j)='';return(j);[第77题]题目:.功能:找出一批正整数中的最大的偶数。答案: int i,amax=-1;for(i=0;iamax)amax=a[i];return amax;[第78题]题目:.功能:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是: 将a数的十位和个位

答案:*c=a/10+a%10*100+b/10*10+b%10*1000;

第三篇:《C语言程序设计教程》课后题答案

《C语言程序设计教程》课后题答案

第一章

一选择题

1.A 2.B 3.C 4.D 5.B 6.C 二.填空题 1.程序 2.算法

3.main或主 4.编译 5.编译 6..obj 7.库函数

8.文本或ASCII码

三、编程题

1.参考代码如下: #include void main(){

printf(“金n木n水n火n土n”);} 2.参考代码如下: #include void main(){ int a,b;

scanf(“%d%d”,&a,&b);

printf(“%d+%d=%dn”,a,b,a+b);

printf(“%d-%d=%dn”,a,b,a-b);

printf(“%d*%d=%dn”,a,b,a*b);

printf(“%d/%d=%dn”,a,b,a/b);} 3.参考代码如下: #include void main(){

float a,b,h,s;

scanf(“%f%f%f”,&a,&b,&h);

s=(a+b)*h/2;

printf(“s=%fn”,s);}

第二章

一选择题 答案及分析: 1.B,略

2.A,-8在内存中是以补码(设两个字节)形式存储的 3.A,C语言有32个关键字(参见课本第18页),且C语言标识符是区分大小写字母的 4.A,略

5.D,八进制数据中不能出现数码8 6.B,字符常量应该用单引号括起来,答案D超出了ASCII取值范围(ASCII的取值范围为[0,255])

7.C,该字符串中转义字符有三个:、22和 n,普通字符有三个:a、,和0,所以字符串长度为6 8.C,略

9.D,C语言没有read函数和%D格式符号,且scanf函数第二个形参为地址列表

10.B,根据题意,scanf函数输入数据时分隔符号不应该是逗号,应该是空格或回车符,且输入数据时分一行或几行均可

11.A,scanf函数中不允许出现%8.4,%6.2和%8这样的格式符号

12.C,既要保证5位小数位,还得保证整数位不变,这样数据12345.67800用10列不能完全显示出来,按C语言规定,12345.67800原样输出

13.B,printf函数中格式符号%d,%o,%x表示对应的整型数据分别按十进制,八进制和十六进制输出

14.C,按C语言规定,scanf函数形参双引号中,如果包含非格式符号,在输入数据时要求原样输入 二.填空题 答案及分析:

1.int

float

double(略)

2.65,89,printf函数中如果格式符号是%d,则输出相应字符的ASCII十进制数值

3.a=98,b=765.000000,c=4321.000000,scanf函数中的格式符号%2d%3f%4f,表示将键盘输入的数据9876543210按2,3,4位分割,然后再分别赋给变量a,b,c 4.scanf(“%lf%lf%lf”,&a,&b,&c);double类型的变量对应的格式符号是%lf

三、编程题

1.参考代码如下: #include void main(){

int a=97;

printf(“%cn”,a);

printf(“%dn”,a);

printf(“%on”,a);

printf(“%xn”,a);} 程序分析:通过printf函数中不同的格式符号,即%c(字符),%d(十进制),%o(八进制),%x(十六进制)输出相应的值。2.参考代码如下: #include void main(){

int h,m,minute;

scanf(“%d:%d”,&h,&m);

minute=h*60+m;

printf(“minute=%dn”,minute);} 程序分析:输入形式为10:27,故scanf函数双引号中两个格式符号%d之间必须加入“:”。3.参考代码如下: #include void main(){

float r=6371000,s,v;

s=4*3.1415926*r*r;

v=3.1415926*4/3*r*r*r;

printf(“s=%fnv=%f”,s,v);} 程序分析:C语言中的π不代表3.1415926,可以用各种常量的形式体现出来。4.参考代码如下: #include void main(){

int m100,m50,m20,m10,m5,m1,m;

scanf(“%d”,&m);

m100=m/100;

m50=(m-m100*100)/50;

m20=(m-m100*100-m50*50)/20;

m10=(m-m100*100-m50*50-m20*20)/10;

m5=(m-m100*100-m50*50-m20*20-m10*10)/5;

m1=m-m100*100-m50*50-m20*20-m10*10-m5*5;

printf(“%d元发工资,人名币各票面的张数为:n”,m);

printf(“100元的张数:%dn”,m100);

printf(“50元的张数:%dn”,m50);

printf(“20元的张数:%dn”,m20);

printf(“10元的张数:%dn”,m10);

printf(“5元的张数:%dn”,m5);

printf(“1元的张数:%dn”,m1);} 程序分析:人民币的面值分别为100元,50元,20元,10元,5元和1元,工资4367元除以100后得到的商就为100元张数,余数再除以50,得到的商为50元的张数,余数再除20,„„,以此类推就会得出人民币各面值相应的张数。5.参考代码如下: #include void main(){

float r1,r2,r3,r;

scanf(“%f%f%f”,&r1,&r2,&r3);

r=r1*r2*r3/(r1*r2+r2*r3+r1*r3);

printf(“三个电阻并联后的总电阻为%fn”,r);} 程序分析:首先将计算并联电阻值的公式变换一下;再就是考虑要保留小数位,故变量类型设置为实型,注意格式符号为%f。6.参考代码如下: #include void main(){

int x,a,b,c,d,y;

scanf(“%d”,&x);

a=x%10;

b=x/10%10;

c=x/100%10;

d=x/1000;

y=a*1000+b*100+c*10+d;

printf(“%d逆置各位数后的值为%dn”,x,y);} 程序分析:1234除以10的余数就是4,商再除以10的余数就是3,1234除以100再除以10取余就是2,1234除以1000就是1。也可以用其他的表达式求出各位数值,例如输入数据1234中的4,可以用公式a=x-d*1000-c*100-b*10来计算。7.参考代码如下: #include void main(){

float F,C;

printf(“请输入华氏温度:”);

scanf(“%f”,&F);

C=5.0/9*(F-32);

printf(“华氏温度%f对应的摄氏温度为%fn”,F,C);} 程序分析:5/9的值为0,所以要写成5.0/9,5/9.0或5.0/9.0,还要注意变量类型为实型,且对应的格式符号为%f。8.参考代码如下: #include void main(){

char ch1,ch2,ch3;

printf(“请输入三个数字字符:”);

scanf(“%c%c%c”,&ch1,&ch2,&ch3);

printf(“将数字字符转换为数字%d,%d,%dn”,ch1-'0',ch2-48,ch3-'0');} 程序分析:通过键盘输入三个数字字符时要连续输入,不要加任何分隔符号,例如121等,另外,数字字符输出时遇到格式符号%d将输出相应数字字符的ASCII值,但任何一个数字字符的ASCII值减去字符0的ASCII值,再对应%d格式符号输出时,就是数字字符对应的数字,例如'2'-'0'=2。

9.不能得到指定的输出结果,参考代码如下: void main(){

int a, b, c,x, y;

scanf(“%d%d%d”,&a,&b,&c);

x=a*b;

y=x*c;

printf(“a=%d,b=%d,c=%dn”,a,b,c);

printf(“x=%d,y=%dn”,x,y);}

程序分析:scanf(“%d,%d,%d”,a,b,c);scanf函数第二类形参是地址列表,所以语句改为scanf(“%d,%d,%d”,&a,&b,&c);而这个语句对应的键盘输入形式为2,3,4。为了满足题目要求,scanf语句改为scanf(“%d%d%d”,&a,&b,&c)。另外,printf函数双引号只能出现一对,且双引号中需要在相应的位置上添加a=等这样的字符串才能原样输出;还有整型变量对应格式符号是%d等。

第三章

一选择题

1.A 2.C 3.C 4.D 5.C 6.B 7.C 8.B 9.A 10.A 11.A 12.B 13.D 14.A 15.B 16.C 17.C 18.C 19.C 20.C 21.C 22.B 23.C 24.C 25.A 26.B 27.A 28.A 29.C 30.A 31.C 32.C 二.填空题 1.非零

零 2.passwarm 3.525252 4.fabs(x)>5 5.x%y==0 6.if((1<=x&&x<=10||200<=x&&x<=210)&&x%2==1)printf(“%d”,x);7.k=1 8.Right!1

Right!1 9.$$$ a=0 10.a=2,b=1 11.0

“%f%f”

a=b;13.“%c”,&ch

'A'<=ch&&ch<='Z'

ch 14.死循环 15.345 16.7 3-1 17.x>=0

x

j%3!=0 24.b=i+1 25.8 5 2 26.d=1.0

k++ k<=n

三、编程题

1.参考代码如下: #include void main(void){ float x,y;printf(“Please input the value of x:”);scanf(“%f”,&x);if(x>-5&&x<0)

y=x;else if(x==0)

y=x-1;else if(x>0&&x<10)

y=x+1;printf(“y=%f”,y);} 2.参考代码如下: #include void main(void){

float a,b,c;

printf(“请输入三角形三边的长度:n”);

scanf(“%f%f%f”,&a,&b,&c);

if(a+b>c&&b+c>a&&a+c>b)

if(a==b&&a==c)

printf(“该三角形是等边三角形n”);

else if(a==b&&a!=c)

printf(“该三角形是等腰三角形n”);

else

printf(“该三角形是一般三角形n”);

else

printf(“不能构成三角形n”);} 3.参考代码如下: #include void main(void){

float M,N,menoy;

printf(“请输入购买金额:”);

scanf(“%f”,&M);

if(M<100)

N=0;

else if(M>=100&&M<200)

N=1.5;

else if(M>=200&&M<300)

N=2.5;

else if(M>=300&&M<400)

N=3.5;

else if(M>=400&&M<500)

N=4.5;

else if(M>=500&&M<600)

N=5.5;

else

N=6;

menoy=M*(1-N/100);

printf(“实际支付金额:%f,返还的金额:%fn”,menoy,M-menoy);} 4.参考代码如下: #include void main(void){

float M,N,menoy;

int in;

printf(“请输入购买金额:”);

scanf(“%f”,&M);

in=M/100;

switch(in)

{

case 0:N=0;break;

case 1:N=1.5;break;

case 2:N=2.5;break;

case 3:N=3.5;break;

case 4:N=4.5;break;

case 5:N=5.5;break;

default :N=6;break;

}

menoy=M*(1-N/100);

printf(“实际支付金额:%f,返还的金额:%fn”,menoy,M-menoy);} 5.参考代码如下: #include void main(void){

float x,max;

printf(“Enter a number:”);

scanf(“%f”,&x);

max=x;

while(x>0)

{

printf(“Enter a number:”);

scanf(“%f”,&x);

if(x>max)

max=x;

}

if(max>0)

printf(“The largest number entered was %fn”,max);} 6.参考代码如下: #include void main(void){

float M,N,menoy;

printf(“请输入购买金额:”);

scanf(“%f”,&M);

while(M>0)

{

if(M<100)

N=0;

else if(M>=100&&M<200)

N=1.5;

else if(M>=200&&M<300)

N=2.5;

else if(M>=300&&M<400)

N=3.5;

else if(M>=400&&M<500)

N=4.5;

else if(M>=500&&M<600)

N=5.5;

else

N=6;

menoy=M*(1-N/100);

printf(“实际支付金额:%f,返还的金额:%fn”,menoy,M-menoy);

printf(“请输入购买金额:”);

scanf(“%f”,&M);

} } 7.参考代码如下: #include void main(void){

float number,positivesum=0,negativesum=0,total=0;

int i;

for(i=1;i<=10;i++)

{

scanf(“%f”,&number);

if(number>=0)positivesum+=number;

else negativesum+=number;

total+=number;

}

printf(“positive sum %f,negative sum %f,total %fn”,positivesum,negativesum,total);} 8.参考代码如下: #include void main(void){

int i,sum=0,k=1;

for(i=1;i<=101;i+=2)

{

sum=sum+k*i;

k=-k;

}

printf(“1-3+5-7+...-99+101=%dn”,sum);} 9.参考代码如下: #include void main(void){

float i,sum=0,k=1;

for(i=1;k>=1e-4;i++)

{

sum=sum+k;

k=k/i;

}

printf(“e=%fn”,sum);} 10.参考代码如下: #include void main(void){

float i,sum=0,n=2,d=1,temp;

for(i=1;i<=20;i++)

{

sum=sum+n/d;

temp=n;

n=n+d;

d=temp;

}

printf(“sum=%fn”,sum);} 11.参考代码如下: #include #include void main(void){

float apple,watermelon,pear;

for(apple=1;apple<100;apple++)

for(watermelon=1;watermelon<10;watermelon++)

{

pear=100-apple-watermelon;

if(fabs(apple*0.4+watermelon*4+pear*0.2-40.0)<1e-6)

printf(“apple:%.0f,watermelon:%.0f,pear:%.0fn”,apple,watermelon,pear);

} }

12.参考代码如下: #include void main(void){

int i,j,k;

for(i=1;i<10;i++)

for(j=0;j<10;j++)

for(k=0;k<10;k++)

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

printf(“%dn”,i*100+j*10+k);} 或:

#include void main(void){

int a,b,c,i;

for(i=100;i<1000;i++)

{

a=i/100;

b=i/10%10;

c=i%10;

if(i==(a*a*a+b*b*b+c*c*c))

printf(“%dn”,i);

} } 13.参考代码如下: #include void main(void){

int a,b,c,d;

for(a=1;a<10;a++)

for(b=0;b<10;b++)

for(c=0;c<10;c++)

for(d=0;d<10;d++)

if(a*1000+b*100+c*10+d==(a*10+b+c*10+d)*(a*10+b+c*10+d))

printf(“%dn”,a*1000+b*100+c*10+d);} 或:

#include void main(void){

int a,b,c,d,i;

for(i=1000;i<10000;i++)

{

a=i/1000;

b=i/100%10;

c=i/10%10;

d=i%10;

if(i==(a*10+b+c*10+d)*(a*10+b+c*10+d))

printf(“%dn”,i);

} } 14.参考代码如下: #include void main(void){

int i,j;

for(i=1;i<=4;i++)//先控制打印前4行

{

for(j=1;j<=4-i;j++)

printf(“ ”);

for(j=1;j<=2*i-1;j++)

printf(“*”);

printf(“n”);

}

for(i=1;i<=3;i++)//再控制打印后3行

{

for(j=1;j<=i;j++)

printf(“ ”);

for(j=1;j<=2*(4-i)-1;j++)

printf(“*”);

printf(“n”);

} }

第四章

一选择题

1.A,如果没有给s[1]赋值,按C语言规定,s[1]下标变量中的数据是一个随机数

2.C,“China”字符串末尾还有一个,故占6个字节

3.D,scanf函数中格式符号若是%c,则把输入的第一个字符'1'赋给变量c,然后遇到格式符号%d,则把后续的23(遇到空格结束)赋值给变量i,遇到格式符号%s,则把后续的字符串“456”(遇到空格结束)赋值给变量s

4.D,C语言规定,数组在定义时就已经分配好了所占内存空间,所以int x[5]在内容中占的字节数为4*5=20

5.B,内层循环变量j每次都从0开始,使得在外层循环变量i每取一个值时,n[0]和n[1]的值都得重新计算

6.B,这是求十进制数18对应二进制数的程序,将每次18除以2得到的余数依次放到数组a[0]到a[4]中,最后按a[4]到a[0]这样的顺序输出

7.B,第一个for循环给a[0]到a[9]赋值为0到9,第二个for循环给p[0]到p[2]赋值为0,2,6,第三个for循环使k=k+p[0]*2+p[1]*2+p[2]*2=5+4+12=21

8.D,C语言规定,定义二维数组时不能省略第二维下标值,但可以省略第一维下标值

9.B,略

10.A,每行的第4列元素的值都为0

11.C,略

12.D,C语言规定,字符数组不能用s=“abcd”这样的赋值语句赋值

13.C,float类型的变量对应格式符号通常为%f,不是%d

14.A,每行的第3列元素的值均为0

15.D,略

16.C,A这种赋值形式无法放置字符串末尾的,B和D不符合C语言规定,即字符数组不能用s=“good”这样赋值语句赋值

17.A,这是字符数组str初始化的形式,str[0]到str[5]分别为字符s,t,r,i,n,g,str[6]到str[11]的值均为,函数strlen是统计字符串包含字符的个数,遇到(不包括)结束,所以str长度为6

18.C,x数组比y数组多了一个字符

19.A,数组名就是数组第一个元素的地址,所以scanf(“%s”,&s);中得删除数组名前面的& 20.D,puts和putchar函数只有一个参数,printf函数中格式符号%s应该对应的是数组名

21.D,程序功能是输出第2和第3个字符串

22.A,双层循环完成的功能是求s的值,s=(((a[0][0]*10+a[0][2])*10+a[1][0])*10+a[1][2]=(((6*10+3)*10+8)*10+5=6385 二.填空题 1.a=1234 b=5 答案分析:C语言规定,使用scanf函数通过键盘输入数据时,除了格式符号和转义字符,其他符号要原样输入。

2.Hello 答案分析:b[5]=0等于b[5]= '',是因为字符的ASCII值就是0,而printf(“%sn”,b);的功能是输出字符串,但遇到空格或等字符时结束输出,所以答案为Hello。

3.j<3;b[j][i]=a[i][j];i<3 答案分析:通过两个数组下标变量位置的变换来完成程序功能。

4.a[age]++ i=18;i<=25 答案分析:用数组a来存储每个年龄段的人数,并通过a[age]++来实现。5.c[i]=n%base;b[d] 答案分析:十进制整数转换为n进制采用的是除以n取余法,使用变量base存放某个进制的值,c数组存放每次计算的余数。最后一个for循环输出不同进制所对应的数码符号。6.break;i>=8 答案分析:如果找到某个数,则通过break语句终止循环。7.-850,2,0 答案分析:程序功能是查找并输出二维数组中最小值及其下标值。8.a[i]>b[j] i<3 j<5 答案分析:数组a和b的长度可以相等或不等,通过i<3或j<5来看哪个数组的值还没有放进c数组中。

9.a[i][j]

j=0;j<4;j++ j==3 printf(“n”);

答案分析:用数组a最后一列,即第4列来保存每行的和,通过printf(“n”);语句来控制按3行来输出。10.fi

答案分析:略 11.GDABC 答案分析:略 12.s[i++] 答案分析:while(s[i])表示当s[i]中的字符不为时进入循环体,否则退出while循环。

13.ahAMa 答案分析:通过scanf(“%s”,a);给字符数组赋值时遇到空格或回车符号将终止输入。程序功能是将字符串中的字符a,大写变成小写,小写变成大写,其他字符保持不变。14.LBLMNP 答案分析:执行strcat(a,b);语句后,a数组的值为“ABLMNP”,b数组的值为“LMNP”;在执行while(a[j++]!=0)b[j]=a[j];时,b[j]中的j值是前面a[j++]中j++执行后的值,即while循环首先执行b[1]=a[1]= 'B',然后是b[2]=a[2]= ' L',b[3]=a[3]= 'M',„„,b[0]中的字符保持不变,仍是' L'。15.'' i++ 答案分析:因为while(str[i])是通过字符串末尾的来判断字符串是否读取结束,所以字符数组str最后要有一个字符串结束符号。16.b[j]=a[j][0];b[j]=a[j][k]

答案分析:用b数组存储每行中的最大字符,最终b[0]存放第一行字符中的最大字符,b[1] 存放第一行字符中的最大字符,„„。b[j]=a[j][0]的作用是在查找一串字符中最大字符前,先把这串字符第一个字符放到b[j]中,然后通过循环和条件判断来实现最大字符的查找。17.a[k++]=a[j] 答案分析:略

三、编程题

1.参考代码如下: #include void main(void){

int array[31],total=0;

int i,j=1;

for(i=0;i<30;i++)

{

array[i]=2*j;

j++;

total=total+array[i];

}

array[30]=total/30;

for(i=0;i<31;i++)

printf(“%d,”,array[i]);} 答案分析:由于平均值要放在数组array的末尾,所以在定义数组时要多定义一个元素,即array[31]。另,为了保持数组类型一致性,故平均值也只取整数值。2.参考代码如下: #include #include #include void main(){

int i,j,k,a[20],temp;

srand(time(NULL));

for(i=0;i<20;i++)

{

a[i] = rand()% 101;//产生[0,100]之间的随机数,取整后赋给a[i]

printf(“%d ”,a[i]);

}

printf(“n”);

for(i=0;i<19;i++)

{

k=i;

for(j=i+1;j<20;j++)

if(a[j]

if(k!=i)temp=a[i],a[i]=a[k],a[k]=temp;

}

for(i=0;i<20;i++)

printf(“%d ”,a[i]);} 程序分析:略

3.参考代码如下: #include #include #include void main(){

int i,maxi,a[30];

srand(time(NULL));

for(i=0;i<30;i++)

{

a[i] = rand()% 101;

//产生[0,100]之间的随机数,取整后赋给a[i]

printf(“%d ”,a[i]);

}

printf(“n”);

maxi=0;

for(i=1;i<30;i++)

if(a[maxi]

for(i=maxi+1;i<30;i++)//将最大数后边的数据依次前移一个位置

a[i-1]=a[i];

for(i=0;i<29;i++)

printf(“%d ”,a[i]);} 程序分析:略

4.参考代码如下: #include void main(){

int i,n=0,a[30],x;

scanf(“%d”,&x);//输入要转换的数据

do

{

a[n]=x%2;//取余数

n++;

x=x/2;

//整除

}while(x!=0);

for(i=n-1;i>=0;i--)//输出

printf(“%d”,a[i]);} 程序分析:利用十进制数除以2取余数的方法计算对应的二进制数。5.参考代码如下: #include #include void main(){

int right[17]= {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2},s=0,i,y;

char num[18],check[11]= {'1','0','X','9','8','7','6','5','4','3','2'};

printf(“请输入身份证号码的前17位:”);

gets(num);

//输入身份证号码

for(i=0;i<17;i++)

//对前17位数字的权求和

s=s+(num[i]-'0')*right[i];

y=s%11;

//计算模

printf(“last number is %cn”,check[y]);} 程序分析:身份证前17位是以字符串的形式输入的,利用表达式num[i]-'0'可以得到每个字符对应的数字;然后算出y值,再将对应的验证码输出即可,例如若y=10,则输出字符2。6.参考代码如下: #include void main(){

int a[20][20]= {0},i,j,n;

scanf(“%d”,&n);

//输入要打印的杨辉三角形的行数

for(i=0;i

//对第一列和对角线元素赋值

a[i][0]=a[i][i]=1;

for(i=2;i

//求对角线以下、第一列右边的元素值

for(j=1;j

a[i][j]=a[i-1][j]+a[i-1][j-1];

for(i=0;i

//打印杨辉三角形

{

for(j=0;j<=i;j++)

printf(“%8d”,a[i][j]);

printf(“n”);

} } 程序分析:杨辉三角形数据矩阵的第一列和对角线上数值均为1,通过for(i=0;i

7.参考代码如下: #include #include #include void main(){

int a[5][6],i,j,max,min;

srand(time(NULL));

for(i=0;i<5;i++)

{

for(j=0;j<6;j++)

{

a[i][j]=rand()%51;产生[0,50]之间的随机数,取整后赋给a[i][j]

printf(“%4d”,a[i][j]);

}

printf(“n”);

}

max=min=a[0][0];

for(i=0;i<5;i++)

for(j=0;j<6;j++)

{

if(max

max=a[i][j];

if(min>a[i][j])

min=a[i][j];

}

printf(“max=%d,min=%dn”,max,min);} 程序分析:先产生30个随机整数放到二维数组a中,然后假设第一个数即是最小数也是最大数,再通过双重循环和条件判断来找到这30个整数的最大值和最小值。8.参考代码如下: #include #include #include void main(){

int a[20][20],i,j,n;

srand(time(NULL));

printf(“请输入n(n*n)的值:”);

scanf(“%d”,&n);

for(i=0;i

for(j=0;j<=i;j++)

{

a[i][j]=rand()%51;产生[0,50]之间的随机数,取整后赋给a[i][j]

a[j][i]=a[i][j];

}

for(i=0;i

{

for(j=0;j

printf(“%4d”,a[i][j]);

printf(“n”);

} } 程序分析:通过for(j=0;j<=i;j++)来控制只遍历数值方阵的下三角数据(包括主对角线上的数据),通过a[j][i]=a[i][j];语句完成与下三角对应位置的上三角数组元素的赋值,从而形成对称矩阵。

9.参考代码如下: #include void main(){

char str[80],c;

int i=0;

while((c=getchar())!='n')//接受从键盘输入的字符,直到遇到回车

{

str[i]=c;

//将接受到的字符存入字符数组中

i++;

}

str[i]='';

puts(str);

//检验以上程序的结果是否正确 } 程序分析:gets函数功能是从键盘输入字符串,遇到回车符号结束输入,所以通过while((c=getchar())!='n')来决定键盘输入的每一个字符是否放在数组str中。最后通过str[i]='';语句来添加字符串的结束标志''。10.参考代码如下: #include void main(){

char str[80],temp;

int i,j;

gets(str);

for(i=0;str[i];i++);

//测试字符串长度

i--;

//i为最后一个字符所在下标

for(j=0;j

//对换对称位置的字符

temp=str[i],str[i]=str[j],str[j]=temp;

puts(str);

//输出处理好的字符串 } 程序分析:略

11.参考代码如下: #include void main(){ char month[12][20]= {“****”,“January”,“February”,“March”,“April”,“May”,“June”,“July”, “August”,“September”,“October”,“November”,“December”};

int a,b,c,d,e,number;

printf(“请输入3位正整数,0或负数结束:”);

scanf(“%d”,&number);

while(number>0)

{

a=number/100;

b=number/10%10;

c=number%10;

d=a+b+c;

e=d%12;

if(e==0)printf(“%d=%d+%d+%d=%d,%d%%%d=%d,%sn”,number,a,b,c,d,d,12,e,month[e]);

else printf(“%d=%d+%d+%d=%d,%d%%%d=%d,%sn”,number,a,b,c,d,d,12,e,month[e]);

scanf(“%d”,&number);

} } 程序分析:按照题意先给month数组赋初值,再通过公式把一个3位整数的每位数值提取出来,计算这三个数的和d,然后d除以12取余数,最后输出余数作为下标的对应month数组的数组元素即可。12.参考代码如下: #include void main(){

char str[80];

int i;

gets(str);

for(i=0;str[i]!='';i++)

;

printf(“字符串的长度为%dn”,i);程序分析:通过for(i=0;str[i]!='';i++);中变量i值的递增来遍历数组,最终i的值就是字符串的长度。

第五章

一.选择题

1-5 DDBCB

6-10 BACAA

11-15DBBCD 二.填空题 1.How does she 2.*(p+i*4+j)

printf(“n”)3.*(++p)4.num+1 q

*q>max

*q

n++

b[n]= ''

三、编程题

1.参考代码如下: #include #include #include void main(){

int i,a[20],b[20],*pa,*pb,temp;

srand(time(NULL));

for(i=0;i<20;i++)

{

a[i] = rand()% 101;

b[i] = rand()% 101;

}

printf(“数组a:”);

for(i=0;i<20;i++)

printf(“%d ”,a[i]);

printf(“n”);

printf(“数组b:”);

for(i=0;i<20;i++)

printf(“%d ”,b[i]);

printf(“n”);

pa=a;

pb=b;

for(i=0;i<20;i++)//对换数组a和数组b相同位置的元素

{

temp=*pa;

*pa=*pb;

*pb=temp;

pa++;

pb++;

}

printf(“对换后n”);

printf(“数组a:”);

for(i=0;i<20;i++)

printf(“%d ”,a[i]);

printf(“n”);

printf(“数组b:”);

for(i=0;i<20;i++)

printf(“%d ”,b[i]);} 2.参考代码如下: #include main(){

char str1[80],str2[80],*p1,*p2;

int j;

printf(“input two kinds of string:n”);

gets(str1);

gets(str2);

for(p1=str1,p2=str2;*p1&&*p2;p1++,p2++)/*比较每一对字符,直到出现'',退出循环 */

{

if(*p1!=*p2)break;

/* 若某一对字符不同,则已分出大小,退出循环*/

}

j= *p1-*p2;

/*j为结束比较时那对字符的ASCII码差值 */

if(j>0)

printf(“%dn”,1);

else if(j<0)

printf(“%dn”,-1);

else

printf(“%dn”,0);} 3.参考代码如下: #include int main(){

int a[4][4],temp;

int(*p)[4];

int i,j;

p=a;

//为行指针p赋初值

printf(“Enter array elements:n”);

for(i=0;i<4;i++)

//输入数组元素的值

for(j=0;j<4;j++)

scanf(“%d”,*(p+i)+j);

for(i=0;i<4;i++)

for(j=0;j

{

temp=*(*(p+i)+j);

*(*(p+i)+j)= *(*(p+j)+i);

*(*(p+j)+i)=temp;

}

//转置矩阵

for(i=0;i<4;i++)

//输出数组元素的值

{

for(j=0;j<4;j++)

printf(“%4d”,p[i][j]);

printf(“n”);

}

return 0;} 4.参考代码如下: #include int main(){

char str[80],*sp;

int count[26]= {0},i,a;

gets(str);

for(sp=str;*sp;sp++)//用指针访问字符串

{

a=*sp-97;

//将a字符的个数统计在数组count下标为0的单元,依次类推

count[a]++;

}

for(i=0;i<26;i++)

if(count[i]!=0)

printf(“%c=%d ”,i+97,count[i]);

return 0;} 5.参考代码如下: #include int main(){

char str[80],*spf,*spr;

int flag=1;

gets(str);

for(spr=str;*spr;spr++)

//让指针spr指到字符串的末尾

;

spr--;

//用指针spr指到字符串最后一个字符

for(spf=str;spf

if(*spf!=*spr)

flag=0;

if(flag)

printf(“YESn”);

else

printf(“NOn”);

return 0;} 6.参考代码如下: #include #include int main(){

char name[5][15];

char *p[5];//定义指针数组

char *temp;

int i,j,k;

printf(“Enter 5 strings:n”);

for(i=0;i<5;i++)

{

gets(name[i]);//读入5个字符串

p[i]=name[i];//指针数组元素指向字符串

}

for(i=0;i<4;i++)//用选择排序法排序

{

k=i;

for(j=i+1;j<5;j++)

if(strcmp(p[j],p[k])<0)k=j;

if(k!=i)

{

temp = p[i];

p[i]=p[k];

p[k]=temp;//改变指针的指向

}

}

printf(“nThe sorted result:n”);

printf(“------------------------n”);

for(i=0;i<5;i++)

puts(p[i]);//按指针指向顺序输出

return 0;}

第六章

一.选择题

1-5 CBCDA

6-10 AADBB

11-15BBDBD

16-20 AABAA 二.填空题 1.四

auto, register, static, extern 2.5 6 3.8,17 4.1 2 6 24 120 5.return 1 return n+sum(n-1)

三、编程题

1.参考代码如下: #include #include int prime(int m){

int i,k;

if(m==1)return 0;

else

{

k=sqrt(m);

for(i=2;i<=k;i++)

if(m%i==0)

break;

if(i<=k)return 0;

else return 1;

} } int main(){

int i;

for(i=101;i<200;i+=2)

if(prime(i))

printf(“%d ”,i);} 2.参考代码如下: #include #include float fun(float x){

float y;

if(x>-5&&x<0)

y=x;

else if(x==0)

y=x-1;

else if(x>0&&x<10)

y=x+1;

return y;} void main(){

float x;

printf(“请输入x的值:”);

scanf(“%f”,&x);

printf(“%fn”,fun(x));} 3.参考代码如下: void tran(int x){ int i,s[20]={0};for(i=0;x;i++){

s[i]=x%8;

x/=8;} i--;for(;i>=0;i--)

printf(“%d”,s[i]);printf(“n”);} void main(){

int dec;

printf(“请输入一个十进制数:”);

scanf(“%d”,&dec);

tran(dec);} 4.参考代码如下: #include void swap(int a[],int n){

int *pf,*pr,temp;

for(pf=a,pr=a+n-1;pf

{

temp=*pf;

*pf=*pr;

*pr=temp;

} } void main(){

int array[20],n,i;

printf(“请输入要处理的数据的个数:”);

scanf(“%d”,&n);

printf(“请输入%d个数:”,n);

for(i=0;i

scanf(“%d”,&array[i]);

swap(array,n);

printf(“对换后的数据为:”);

for(i=0;i

printf(“%d ”,array[i]);} 5.参考代码如下: #include void swap2w(int a[][5]){

int i,j,temp;

for(i=0;i<2;i++)

for(j=0;j<5;j++)

{

temp=a[i][j];

a[i][j]=a[5-i-1][j];

a[5-i-1][j]=temp;

} } void main(){

int a[5][5],n,i,j;

for(i=0;i<5;i++)

for(j=0;j<5;j++)

scanf(“%d”,&a[i][j]);

swap2w(a);

printf(“对换后的数据为:n”);

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

printf(“%d ”,a[i][j]);

printf(“n”);

} } 6.参考代码如下: #include int huiwen(char str[]){

char *spf,*spr;

int flag=1;

for(spr=str;*spr;spr++)

//让指针spr指到字符串的末尾

;

spr--;

//用指针spr指到字符串最后一个字符

for(spf=str;spf

if(*spf!=*spr)

flag=0;

return flag;}

int main(){

char str[80];

gets(str);

if(huiwen(str))

printf(“YESn”);

else

printf(“NOn”);

return 0;} 7.参考代码如下: #include int delch(char str[],char ch){

int i,j;

for(i=0;str[i];i++)

if(ch==str[i])

for(j=i+1;str[j];j++)

//删除字符

str[j-1]=str[j];

str[j-1]=str[j];

//移动字符串末尾的'' }

int main(){

char str[80],c;

gets(str);

scanf(“%c”,&c);

delch(str,c);

puts(str);

return 0;} 8.参考代码如下: #include int he(int n){

if(n==1)

return 1;

else

return n+he(n-2);} int main(){

int i,s=0;

for(i=1;i<=19;i+=2)

s=s+he(i);

printf(“%dn”,s);

return 0;} 9.参考代码如下: #include int feb(int n){int f;

if(n==1||n==0)

return 1;

else

{

f=feb(n-1)+feb(n-2);

return f;

} } int main(){

int n;

scanf(“%d”,&n);

printf(“%d”,feb(n));

return 0;}

第七章

一.选择题

1-5BDDCC

6-10 BBDCB

11-15BBDCB

16-18 DBB 二.填空题 1.30

2.ARRAY a,b,c;3.2 3 4.a c 5.p->name &p->post_code

struct communication *

p->post_code

三、编程题

1.参考代码如下: #include #define N 4 /*结构体类型定义*/ struct student {

char no[10];

char name[10];

float score[3];

float total;};//主函数 int main(){

struct student stu[N];//定义结构体数组,存储4个学生信息

struct student temp;

//定义结构体变量,用于交换数据的临时存储空间

int i,j,k;/*从键盘输入学生信息*/

puts(“Enter students' info:”);

for(i=0;i

{

printf(“student #%d:n”,i+1);

gets(stu[i].no);

//输入学号

gets(stu[i].name);

//输入姓名

scanf(“%f%f%f”,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);

//输入3门课的成绩

getchar();

//接收输入缓冲区的字符

stu[i].total=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];//计算总成绩

}

/*用选择排序法,对学生成绩进行排序*/

for(i=0;i

{

k=i;

for(j=i+1;j

{

if(stu[j].total>stu[k].total)k=j;

else if(stu[j].total==stu[k].total)//若总成绩相等,按英语成绩排序

{

if(stu[j].score[2]>stu[k].score[2])

k=j;

}

}

/*交换学生信息*/

if(k!=i)

{

temp=stu[i];

//结构体变量赋值

stu[i]=stu[k];

stu[k]=temp;

}

} //输出排好序的学生信息

printf(“nThe sorted list:n”);printf(“%-12s%-22s%-10s%-10s%-10s%-10sn”,“no”,“name”,“course1”,“course2”,“course3”,“Total”);

for(i=0;i

{

printf(“%-12s%-22s”,stu[i].no,stu[i].name);

printf(“%-10.1f %-10.1f%-10.1f”,stu[i].score[0],stu[i].score[1],stu[i].score[2]);

printf(“%-10.1fn”,stu[i].total);

}

return 0;} 2.参考代码如下: #include #define N 45 /*结构体类型定义*/ struct student {

char no[10];

char name[20];

int age;

float score;};//主函数 int main(){

struct student stu[N];//定义结构体数组,存储45个学生信息

int maxi=0;

//存储成绩最高的学生信息的下标

int i;

/*从键盘输入学生信息*/

puts(“Enter students' info:”);

for(i=0;i

{

printf(“student #%d:n”,i+1);

gets(stu[i].no);

//输入学号

gets(stu[i].name);

//输入姓名

scanf(“%d%f”,&stu[i].age,&stu[i].score);

//输入年龄和一门课的成绩

getchar();

//接收输入缓冲区的字符

if(stu[maxi].score

maxi=i;

} //输出成绩最高的学生信息

printf(“nThe highest score is:n”);

printf(“%-12s%-22s%-10s%-10sn”,“no”,“name”,“age”,“course”);

printf(“%-12s%-22s”,stu[maxi].no,stu[maxi].name);

printf(“%-10d %-10.1f%”,stu[maxi].age,stu[maxi].score);

return 0;} 3.参考代码如下: #include /*共用体类型定义*/ union cch {

unsigned int a;

char b[4];};//主函数 int main(){

union cch x;//定义共用体类型变量

scanf(“%u”,&x.a);

printf(“%cn”,x.b[0]);//低字节

printf(“%cn”,x.b[1]);

printf(“%cn”,x.b[2]);

printf(“%cn”,x.b[3]);

return 0;} //测试数据:1431989597 4.参考代码如下: #include #define N 3 struct person {

char name[15];//姓名

char job[30];//职业

char addr[30];

union

{

float score;//班级编号

char title[10];//职称

} cate;};struct person per[N];//定义结构体数组,存储人员信息 /*人员数据录入函数input()*/ void input(){

int i;

for(i=0;i

{

printf(“Enter name: ”);

gets(per[i].name);

// getchar();

printf(“Enter job,if teacher,first character should be 't',if student,should be 's': ”);

gets(per[i].job);

// getchar();

if(per[i].job[0]=='s')

{

printf(“Enter student's score: ”);

scanf(“%f%*c”,&per[i].cate.score);

}

else if(per[i].job[0]=='t')

{

printf(“Enter teacher's title: ”);

gets(per[i].cate.title);

}

printf(“Enter address: ”);

gets(per[i].addr);

} } /*人员数据打印函数print()*/ void print(){

int i;

printf(“name

job

addr

score/titlen”);

printf(“------------------n”);

for(i=0;i

{

printf(“%-10s”,per[i].name);

printf(“%-15s”,per[i].job);

printf(“%-15s”,per[i].addr);

if(per[i].job[0]=='s')

printf(“%fn”,per[i].cate.score);

else if(per[i].job[0]=='t')

printf(“%sn”,per[i].cate.title);

} } void sort(){

int i,j,k;

struct person temp;

for(i=0;i

{

k=i;

for(j=i+1;j

if(strcmp(per[k].name,per[j].name)>0)

k=j;

if(k!=i)

{

temp=per[i];

per[i]=per[k];

per[k]=temp;

}

} } //主函数 int main(){

input();

sort();

print();}

第八章

一.单选题

1-5 BABAD

6-10 DDDCD

D 二.填空题 1.二进制 文本

2.pf=fopen(“D:zk04data xfile.dat”,“w”)3.二进制 文本

文件结束符 非0值

三、编程题

1.参考代码如下: #include FILE *fopenfun(char *file,char *model){

FILE *fp;

if((fp = fopen(file, model))== NULL)

{

printf(“Cannot open file of %s.n”,file);

exit(0);

}

else return fp;} main(){

FILE *fp;

char c;

int digcou=0,capcou=0,smacou=0,othercou=0;

/* 定义整型变量为计数器并初始化为0 */

fp = fopenfun(“file.txt”,“r”);/* 打开文件 */

while((c = fgetc(fp))!=EOF)/* 从文件中读字符 */

{

if(c>='0' && c<='9')

digcou++;

/* 统计数字字符 */

else if(c>='A' && c<='Z')

capcou++;

/* 统计大写字母 */

else if(c>='a' && c<='z')

smacou++;

/* 统计小写字母 */

else

othercou++;

/* 统计其它字符 */

}

printf(“数字字符有%d个n”,digcou);

/* 输出字符个数 */

printf(“大写字母有%d个n”,capcou);

printf(“小写字母有%d个n”,smacou);

printf(“其它字符有%d个n”,othercou);

fclose(fp);/* 关闭文件 */ } 2.参考代码如下: #include FILE *fopenfun(char *file,char *model){

FILE *fp;

if((fp = fopen(file, model))== NULL)

{

printf(“Cannot open file of %s.n”,file);

//打开文件出错显示提示信息

exit(0);

//调用exit函数终止程序运行

}

else return fp;} #define SIZE 10 struct student /* 定义结构体*/ {

long num;

char name[10];

int age;

char address[10];} stu[SIZE], out;/* 存盘函数:将学生的信息以数据块形式写入文件 */ void fsave(){

FILE *fp;

int i;

fp=fopenfun(“student.dat”,“wb”);

for(i=0;i

if(fwrite(&stu[i], sizeof(struct student), 1, fp)!= 1)

printf(“File write error.n”);

/* 写过程中的出错处理 */

fclose(fp);

/* 关闭文件 */ } //主函数 main(){

FILE *fp;

int i;

for(i=0;i

/* 从键盘读入学生的信息*/

{

printf(“Input student %d:”, i+1);

scanf(“%ld%s%d%s”,&stu[i].num, stu[i].name, &stu[i].age, stu[i].address);

}

fsave();

/* 调用函数保存学生信息 */

fp = fopenfun(“student.dat”, “rb”);

printf(“ No.Name

Age

Addressn”);

while(fread(&out, sizeof(out), 1, fp))

/*读入数据块*/

printf(“%8ld %-10s %4d %-10sn”, out.num, out.name, out.age, out.address);

fclose(fp);/* 关闭文件 */ } 3.参考代码如下: #include FILE *fopenfun(char *file,char *model){

FILE *fp;

if((fp = fopen(file, model))== NULL)

{

printf(“Cannot open file of %s.n”,file);

//打开文件出错显示提示信息

exit(0);

//调用exit函数终止程序运行

}

else return fp;} #define SIZE 5 struct student /* 定义结构体*/ {

long num;

char name[10];

float score[5];

float aver;} stu[SIZE], out;/* 存盘函数:将学生的信息以数据块形式写入文件 */ void fsave(){

FILE *fp;

int i;

fp=fopenfun(“student.dat”,“wb”);

for(i=0;i

if(fwrite(&stu[i], sizeof(struct student), 1, fp)!= 1)

printf(“File write error.n”);

/* 写过程中的出错处理 */

if(fwrite(&out, sizeof(struct student), 1, fp)!= 1)/*写入5门课的平均成绩 */

printf(“File write error.n”);

fclose(fp);

/* 关闭文件 */ } //主函数 main(){

FILE *fp;

float average[5]={0},t;

int i,j;

for(i=0;i

/* 从键盘读入学生的信息*/

{

printf(“Input student %d:”, i+1);

scanf(“%ld%s”,&stu[i].num, stu[i].name);

for(j=0,t=0;j<5;j++)

{scanf(“%f%*c”,&stu[i].score[j]);

t=t+stu[i].score[j];

average[j]+=stu[i].score[j];

}

stu[i].aver=t/5;

}

out.num=0;strcpy(out.name,“5course'ave”);

for(j=0;j<5;j++)

out.score[j]=average[j]/SIZE;

fsave();

/* 调用函数保存学生信息 */

fp = fopenfun(“student.dat”, “rb”);

printf(“ No.Name

course1 course2 course3 course4 course5n”);

while(fread(&out, sizeof(out), 1, fp))

/*读入数据块*/

{printf(“%8ld %-12s”, out.num, out.name);

for(j=0;j<5;j++)

printf(“%8.2f”, out.score[j]);

printf(“n”);

}

fclose(fp);/* 关闭文件 */ } 4.参考代码如下 #include FILE *fopenfun(char *file,char *model){

FILE *fp;

if((fp = fopen(file, model))== NULL)

{

printf(“Cannot open file of %s.n”,file);

//打开文件出错显示提示信息

exit(0);

//调用exit函数终止程序运行

}

else return fp;} #define SIZE 5 struct warehouse /* 定义结构体*/ {

char KNO[10];

int KNOM };//主函数 main(){

FILE *fpr,*fpw;

struct warehouse t;

fpr=fopenfun(“CK.txt”,“r”);

fpw=fopenfun(“XK.txt”,“w”);

while(!feof(fpr))

{

fscanf(fpr,“%s%d”,t.KNO,&t.KNOM);

if(t.KNOM>100)

fprintf(fpw,“%s %dn”,t.KNO,t.KNOM);

}

fclose(fpr);/* 关闭文件 */

fclose(fpw);/* 关闭文件 */ }

第九章

1.(1)30(2)3(3)9(4)29 2.(1)1(2)1(3)1(4)7(5)15(6)6 3.参考代码如下 #include void main(){

char a,b;

a='C';

b=a&0125;

//0125的二进制为01010101

printf(“%dn”,b);} 4.参考代码如下 #include void main(){int i,bit;

/* 定义循环变量i和位1/0标志变量bit */ unsigned int n,mask;

/* 定义欲转换的整数n和屏蔽字变量mask */ mask=0x80000000;

/* 初始屏蔽字,从左边最高位开始检查 */ printf(“Enter a integer of Hexadecimal :”);scanf(“%x”,&n);

/* 输入要转换的整数 */ printf(“binary of %x is:”,n);for(i=0;i<32;i++)

/* 循环检查32位,并输出结果 */ { if(i%8==0&&i!=0)printf(“,”);/*习惯上二进制每8位用“,”分隔以便查看*/

bit=(n&mask)?1:0;

/* n&mask非0,该位为1;否则该位为:0 */

printf(“%1d”,bit);

/* 输出1或0 */

mask=mask>>1;

/* 右移1位得到下一个屏蔽字 */

}

printf(“n”);} 5.参考代码如下 #include void main(){

unsigned int value,res;

int n1,n2;

printf(“请输入一个整数:n”);

scanf(“%u”,&value);

printf(“输入n1、n2:n”);

scanf(“%d”,&n1);

scanf(“%d”,&n2);

if(n1>=n2||n2>32)

printf(“输入有误!n”);

res =((value <<(n1-1))>>(31-n2+n1))<<(32-n2);

//先向左移n1-1位,再将结果向右移n1-1+32-n2,再将结果左移32-n2位。

printf(“%un”,res);}

第十章

编程题

1.参考代码如下: #include #define rem(a,b)(a)%(b)void main(){

int x,y,z;

scanf(“%d%d”,&x,&y);

z=rem(x,y);

printf(“%dn”,z);} 2.参考代码如下: #include #define cube(x)(x)*(x)*(x)#define judge(x,y)(x)*(y)<50?1:0 void main(){

int x,y,z;

scanf(“%d%d”,&x,&y);

z=cube(x);

printf(“%d,%dn”,z,judge(x,y));} 3.参考代码如下: #include #define calc(year)(year)%4==0&&(year)%100!=0||(year)%400==0 #define judge(year)calc(year)?1:0 void main(){

int year;

scanf(“%d”,&year);

if(judge(year))

printf(“%d is leap year!n”,year);

else

printf(“%d is not a leap year!n”,year);} 4.参考代码如下: #include #define judge(a,b,c)a+b>c&&b+c>a&&a+c>b #define s(a,b,c)(a+b+c)/2 #define area(a,b,c)sqrt(s(a,b,c)*(s(a,b,c)-a)*(s(a,b,c)-b)*(s(a,b,c)-c))void main(){

float a,b,c;

scanf(“%f%f%f”,&a,&b,&c);

if(judge(a,b,c))

printf(“The triangle area is %f!n”,area(a,b,c));

else

printf(“It's not a triangle!n”);}

第十一章

一.单选题

1-5 CBBDD

D 二.填空题

1.struct link *next;2.①struct student * ②tail->next ③head 3.Answer:3 4.①break ②(struct data *)malloc(struct data)③while(1)④p!=NULL ⑤p=p->link 5.①x ②p ③s

三、编程题

1.参考代码如下:

#include

#include

#include

#define N 3

typedef struct

{

char no[11];

char name[15];

float score[N];

float sum;} studdatatype;typedef struct z1

{

studdatatype studdata;

struct z1 *next;} STUDENT;/*以下是函数原型*/ STUDENT *create();

void print(STUDENT *head);

main(){

STUDENT *head;

head=create();

print(head);

/*I/O函数*/

/*动态内存分配函数及其他函数说明*/

/*字符串函数*/

/*定义常数*/

/*学生数据类型*/

/*定义结点数据类型*/

/*创建链表*/

/* 显示所有记录*/

/*定义链表头指针*/

} /*创建链表*/ STUDENT *create(){

STUDENT *head,*p,*listp;

char no[11];

head=(STUDENT *)malloc(sizeof(STUDENT));//建立头结点

head->next=NULL;

listp=head;//当前指针指到头结点

printf(“输入一个学生信息(学号(* 结束)、姓名,三门课成绩:”);

scanf(“%s”,&no);

while(no[0]!='*')

{

p=(STUDENT *)malloc(sizeof(STUDENT));//建立新结点

strcpy(p->studdata.no,no);

//将输入的数据存储到新结点的数据域

scanf(“%s”,p->studdata.name);scanf(“%f%f%f”,&p->studdata.score[0],&p->studdata.score[1],&p->studdata.score[2]);

p->studdata.sum=p->studdata.score[0]+p->studdata.score[1]+p->studdata.score[2];

p->next=NULL;

//将新结点的指针域置为空

listp->next=p;

//将新结点连接到当前指针的后面

listp=p;

//将新结点作为当前结点

printf(“输入一个学生信息(学号(* 结束)、姓名,三门课成绩:”);

scanf(“%s”,&no);

//输入下一个学生的成绩

}

return head;} /*输出链表中结点信息*/ void print(STUDENT *head){

int i=0;

/* 统计记录条数*/

STUDENT *p;

/*移动指针*/

system(“cls”);

/*清屏*/

p=head->next;

/*初值为第一个结点的指针*/

printf(“nnn*******************************STUDENT********************n”);

printf(“| rec| no

|

name

| sc1| sc2| sc3|

sum |n”);

printf(“|----|----------|---------------|----|----|----|--------|n”);

while(p!=NULL)

{

i++;

printf(“|%4d|%-10s|%-15s|%4.0f|%4.0f|%4.0f|%8.2f|n”,i,p->studdata.no, p->studdata.name,p->studdata.score[0],p->studdata.score[1],p->studdata.score[2],p->studdata.sum);

p=p->next;

}

printf(“********************************end***********************n”);}

2.参考代码如下:

/*查找成绩最高的学生信息*/ void searchmaxscore(STUDENT *h){

STUDENT *p,*pmax;

p=pmax=h->next;

while(p!=NULL)/*当指针不为空时,循环继续*/

{

if(pmax->studdata.sum

studdata.sum)

pmax=p;

p=p->next;

/*移动指针,指向下一结点*/

}

printf(“nnnThe highest total score of the students' information :n”);

printf(“*******************************STUDENT********************n”);

printf(“| no

|

name

| sc1| sc2| sc3|

sum |n”);

printf(“|----------|---------------|----|----|----|--------|n”);

printf(“|%-10s|%-15s|%4.0f|%4.0f|%4.0f|%8.2f|n”, pmax->studdata.no, pmax->studdata.name,pmax->studdata.score[0],pmax->studdata.score[1],pmax->studdata.score[2],pmax->studdata.sum);

printf(“********************************end***********************n”);}

3.参考代码如下:

/*用插入法按由大到小排序函数*/ STUDENT *sort(STUDENT *h){

STUDENT *p,*q,*t,*h1;

/*定义临时指针*/

h1=h->next->next;

/*从原表的第二个学生结点开始处理*/

h->next->next=NULL;

/*将原表的第一个学生结点作为有序表的第一个结点*/

while(h1!=NULL)

/*当还有元素没有插入到有序表时,进行排序*/

{

t=h1;

/*取未排序的第一个结点*/

h1=h1->next;

/*h1指针后移*/

p=h->next;

/*设定移动指针p,从第一个结点开始*/

q=h->next;

/*设定移动指针q做为p的前驱,指向第一个结点*/

while(p!=NULL && t->studdata.sum < p->studdata.sum)/*作总分比较*/

{

q=p;

/*待排序点值小,则有序表指针后移*/

p=p->next;

}

if(p==q)

/*p==q,说明待排序点值大,应排在首位*/

{

t->next=p;

/*待排序点的后继为p*/

h->next=t;

/*新头结点为待排序点*/

}

else

/*待排序点应插入在中间某个位置q和p之间,如p为空则是尾部*/

{

t->next=p;

/*t的后继是p*/

q->next=t;

/*q的后继是t*/

}

}

printf(“sort sucess!!n”);

return h;

}

/*排序成功*/ /*返回头指针*/

第四篇:C语言程序设计考试题答案

1、已知int i, x[3][4];则不能将x[1][1]的值赋给变量i的语句是______(分数:2 分)

A.i=*(*(x+1))B.i=x[1][1] C.i=*(*(x+1))D.i=*(x[1]+1)标准答案是:A。

2、当c的值不为0时,在下列选项中能够将c的值赋给变量a、b的是______.(分数:2 分)

A.a=c=b;B.(a=c)&&(b=c);C.c=b=a;D.(a=c)||(b=c);标准答案是:B。

3、函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。能正确执行此功能的函数是______。(分数:2 分)

A.fund(int *x, int *y){ *x=*x+*y;*y=*x-*y;*x=*x-*y;} B.funb(int x, int y){ int t;t=x;x=y;y=t;} C.funa(int *x, int *y){ int *p;*p=x;*x=*y;*y=*p;} D.func(int *x, int *y){ *x=*y;*y=*x;} 标准答案是:A。

4、若x=2,y=3则x||y的结果是______(分数:2 分)

A.0 B.3 C.1 D.2 标准答案是:C。

5、已知int a[10];则对a数组元素的正确引用是______(分数:2 分)

A.a[10] B.a[3.5] C.a[10] D.a(5)标准答案是:C。

二、多选

1、若定义:int a【2】【3】{0,2,4,6,8,10};以下描述正确的有______(分数:3 分)A.*(a+1)为元素6的地址 B.*(a【1】+1)的值为2 C.**(a+1)+2的值为8 D.a【0】与a的相同 标准答案是:ABCD。

2、在缓冲文件系统中用于读写的函数有______(分数:3 分)A.putchar()B.fread()C.rewind()D.purw()标准答案是:ABD。

3、指出下面合法的标识符______(分数:3 分)A.3ab B.ABC C.a_3 D._stu2 标准答案是:ABC。

4、指出下面哪些是合法的用户定义的标识符______(分数:3 分)A.P-S B._908 C.wind D.x y 标准答案是:BC。

6、这段程序中的常量有:#define PI 3.14;void main(){ int sum;sum = 10 + 15;printf(“sum=%dn”,sum);printf(“result is 25n”);}这段程序中常量有______(分数:3 分)A.10 B.sum C.15 D.PI 标准答案是:ACD。

1、说明语句int *(*p)();的含义是______(分数:2 分)

A.p是一个指向int型数组的指针 B..p是指针变量,它构成了指针数组

C.p是一个指向函数的指针,该函数的返回值是一个整型

D.p是一个指向函数的指针,该函数的返回值是一个指向整型的指针 标准答案是:D

2、已知int a, *p=&a;则下列函数调用中错误的是______(分数:2 分)

A.scanf(”%d”, &a);B.scanf(”%d”, p);C.printf(”%d”, a);D.printf(”%d”, p);标准答案是:D。

3、在C语言中,字符型数据在内存中的存储形式是______(分数:2 分)

A.原码 B.补码 C.反码 D.ASCII码 标准答案是:D。

4、已定义以下函数:fun(int *p){ return *p;}该函数的返回值是______(分数:2 分)

A.不确定的值

B.形参p所指存储单元中的值 C.形参p中存放的值 D.形参p的地址值 标准答案是:D。

5、()已知char b[5],*p=b;,则正确的赋值语句是(分数:2 分)A.b=“abcd”;B.*b=“abcd”;C.p=“abcd”;D.*p=“abcd”;标准答案是:C。

二、多选

1、如果要把常量327存入变量a中,a可以定义成哪些类型?______(分数:3 分)A.int B.char C.long D.float 标准答案是:ACD。

2、下面哪些写法是对的,而且是常量?______(分数:3 分)A.125 B.-0.456 C.1.25E+20 D.'AB' 标准答案是:AC。

3、指出下面错误的表达式______(分数:3 分)A.a+b=5 B.56=a11 C.i=i++ D.5.6+6.2%3.1 标准答案是:ABD。

4、若变量f已说明为float类型,i为int类型,则下面哪些表达式(或语句)能够实现将f中的数值保留小数点后两位,第三位进行四舍五入的运算?______(分数:3 分)A.f=(f*100+0.5)/100.0 B.i=f*100+0.5,f=i/100.0;C.f=(int)(f*100+0.5)/100.0;D.f=(f/100+0.5)*100.0;标准答案是:BC。

5、已知a为整型变量,那么与表达式a!=0真假值情况相同的表达式有哪些?______(分数:3 分)A.a>0||a<0 B.a C.!a==0 D.!a 标准答案是:ABC。

1、()若有以下定义:char s[20]= “programming”,*ps=s;则不能代表字符g的表达式是(分数:2 分)A.ps+3 B.s[3] C.ps[3] D.ps+=3,*ps 标准答案是:B。

2、()当对两个字符串进行比较时,应该使用的函数是(分数:2 分)A.strcat B.strcmp C.strcpy D.strlen 标准答案是:B。

3、()strlen 11.若i为整型变量,则以下循环的次数是for(i=2;i==0;)printf(“%d”,i--);(分数:2 分)A.无限次 B.0次 C.1次 D.2次

标准答案是:B。

4、()以下关于数组的描述正确的是(分数:2 分)A.数组大小固定,但是可以有不同类型的数组元素 B.数组大小可变,但是所有数组元素的类型必须相同 C.数组大小固定,所有元素的类型必须相同 D.数组大小可变,可以有不同类型的数组元素 标准答案是:C。

5、()以下能正确定义数组并正确赋初值的语句是(分数:2 分)A.int N=5,b[N][N];B.int a[1][2]={{1},{3}};C.int c[2][]= {{1,2},{3,4}};D.int d[3][2]={{1,2},{34}};标准答案是:D。

二、多选

1、程序的结构可分为哪几类______(分数:3 分)A.顺序结构 B.循环结构 C.程序结构 D.选择结构

标准答案是:ABD。

2、已知a为整型变量,那么与表达式a!=0真假值情况相同的表达式有哪些?______(分数:3 分)A.a>0||a<0 B.a C.!a==0 D.!a 标准答案是:ABC。

3、已知a为整型变量,那么与表达式a!=0真假值情况相同的表达式有哪些?______(分数:3 分)A.a B.!a==0 C.!a D.a>0||a<0 标准答案是:ABD。

4、指出下面错误的表达式______(分数:3 分)A.a=5,b=6,c=7 B.i=i++ C.5.6+6.2%3.1 D.56=a11 标准答案是:BD。

5、下面哪些写法是对的,而且是常量?______(分数:3 分)

A.125 B.2.5E+21 C.AB' D.n'123 标准答案是:BD。

1、()选择正确的输入语句()。:(其中:char string[20];)使得string的内容为“I am student”.数:2 分)

A.scanf(“%s”, string);B.scanf(“%c”, &string);C.scanf(“%s”, &string);D.gets(string);标准答案是:D。

2、()对以下说明语句 int a[10]={6,7,8,9,10};的正确理解是(分数:2 分)A.将5个初值依次赋给a[6]至a[10] B.将5个初值依次赋给a[0]至a[4] C.因为数组长度与初值的个数不相同,所以此语句不正确 D.将5个初值依次赋给a[1]至a[5] 标准答案是:B。

3、()以下标识符中可以作为用户函数名的是(分数:2 分)A.struct B.int C.union D.go_to 标准答案是:D。

4、源程序要正确地运行,必须要有什么函数?______(分数:2 分)A.printf函数 B.自定义的函数 C.main D.不需要函数 标准答案是:C。

5C语言程序由什么组成?______(分数:2 分)A.子程序

B.主程序和子程序

(分C.函数 D.过程

标准答案是:C。

二、多选

1、下面哪些是合法的用户定义的标识符______(分数:3 分)A._908 B.*par C.sheep!D.wind 标准答案是:AD。

2、下面合法的标识符______(分数:3 分)A.ABC B.a_3 C.sum.a D._stu2 标准答案是:ABD。

3、C语言的主要特点有哪些?______(分数:3 分)A.简洁、紧凑,使用方便、灵活,易于学习和应用。B.C语言是面向结构化程序设计的语言。

C.C语言允许直接对位、字节和地址进行操作。D.数据类型丰富。标准答案是:ABCD。

4、已定义c为字符型变量,则下列语句中错误的是______(分数:3 分)A.c='97' B.:c=“97” C.c=97;D.c=“a” 标准答案是:ABD。

5下列选项中是C语言合法标志符的有______(分数:3 分)A.good_morning B.main C.stdio.h D.8abc 标准答案是:AB。

1、一个C程序的执行是从______(分数:2 分)

A.本程序的main函数开始,到main函数结束

B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C.本程序的main函数开始,到本程序文件的最后一个函数结束 D.本程序文件的第一个函数开始,到本程序main函数结束 标准答案是:A。

2、以下叙述正确的是______(分数:2 分)

A.在C程序中,main函数必须位于程序的最前面 B.C程序的每行中只能写一条语句 C.C语言本身没有输入输出语句 D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误 标准答案是:C。

3、以下叙述不正确的是。______(分数:2 分)

A.一个C源程序可由一个或多个函数组成 B.一个C源程序必须包含一个main函数 C.C程序的基本组成单位是函数

D.在C程序中,注释说明只能位于一条语句的后面 标准答案是:D。

4、语言规定:在一个源程序中,main函数的位置______(分数:2 分)

A.必须在最开始

B.必须在系统调用的库函数的后面 C.可以任意 D.必须在最后 标准答案是:C。

5、一个C语言程序是由______(分数:2 分)

A.一个主程序和若干子程序组成 B.函数组成 C.若干过程组成 D.若干子程序组成 标准答案是:B。

二、多选

1、指出下面合法的标识符:______(分数:3 分)A.3ab B.ABC C.a_3 D._stu2 标准答案是:BCD。

2、指出下面哪些是关键字:______(分数:3 分)A.char B.abc C.printf D.float 标准答案是:AD。

3、指出下面哪些是合法的用户定义的标识符?______ A.P-S B.put11 C.printf D.Int 标准答案是:BD。

4、C语言的基本类型哪些:______(分数:3 分)A.整型 B.枚举型 C.数组型 D.指针型 分)(分数:标准答案是:AB。

5这段程序中的常量有:(#define PI 3.14;void main(){ int sum;sum = 10 +15;printf(“sum=%dn”,sum);printf(“result is 25n”);}这段程序中常量有______(分数:3 分)A.10 B.15 C.25 D.PI 标准答案是:ABD。1、75的十六进制写法为___,八进制写法为______(分数:2 分)A.0x4b 0113 B.0165 117 C.61 0x3d D.0x4b 61 标准答案是:A。2、0x75的八进制写法为___,十进制写法为___。(分数:2 分)A.0165 117 B.0x4b 0113 C.61 0x3d D.0x4b 61 标准答案是:A。3、075的十进制写法为___,十六进制写法为___。(分数:2 分)A.0x4b 0113 B.0165 117 C.61 0x3d D.0x4b 61 标准答案是:C。

4、下面哪个表达式的值为4______(分数:2 分)A.(float)11/3 B.2016/11/3 星期四上午 12:00:00 C.11.0/3 D.(int)(11.0/3+0.5 标准答案是:D。

5已知整型变量a=6,b=7,c=1,则下面表达式的值为多少?a+3______(分数:2 分)A.9 B.2 C.1 D.65 标准答案是:A。

二、多选

1、C语言中整形常量按进制划分,有以下几种:______(分数:3 分)A.十六进制常量 B.十进制常量 C.八进制常量 D.二进制常 标准答案是:ABC。

2、如果要把常量327存入变量a中,a可以定义成哪些类型?______(分数:3 分)A.int B.char C.float D.long 标准答案是:ACD。

3、下面哪些写法是对的,而且是常量?______(分数:3 分)A.125 B.-0.456 C.56 D.452.2 标准答案是:AB。

4、指出下面错误的表达式:______(分数:3 分)A.56=a11 B.a+b=5 C.i=i++ D.5.6+6.2%3.1 标准答案是:ABD。

5若变量f已说明为float类型,i为int类型,则下面哪些表达式(或语句)能够实现将f中的数值保留小数点后两位,第三位进行四舍五入的运算?______(分数:3 分)A.f=(f*100+0.5)/100.0 B.i=f*100+0.5,f=i/100.0 C.f=(int)(f*100+0.5)/100.0 D.f=(f/100+0.5)*100.0 标准答案是:BC。

1、在C语言中,要求运算数必须是整型的运算符是_____(分数:2 分)

A./ B.++ C.!= D.% 标准答案是:D。

2、若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是______(分数:2 分)A.2.500OO B.2.7500OO C.2.3600OO D.2.0OO 标准答案是:B。

3、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为______(分数:2 分)A.int B.float C.double D.不确定 标准答案是:C。

4、在C语言中, char型数据在内存中的存储形式是:______(分数:2 分)

A.补码 B.反码 C.原码 D.ASCII码 标准答案是:D。

5、若有以下说明语句:char s='092';则下面哪一项是正确的______(分数:2 分)

A.使s的值包含2个字符 B.说明语句不合法

C.使s的值包含6个字符 D.使s的值包含4个字符 标准答案是:B。

二、多选

1、下面哪些是非法的C语言转义字符?_______(分数:2 分)A.'t' B.'8' C.'xaf' D.'' 标准答案是:BC。

2、请从下面的选项中选出正确的C语言的转义字符______(分数:2 分)A.''' B.'t' C.'n' D.'xaa' 标准答案是:ABCD。

3、以下符合C语言语法的赋值表达式是______(分数:2 分)A.d=9+e+f=d+9 B.d=9+e,f=d+9 C.d=9+e,e++,d+9 D.d=9+e++=d+7 标准答案是:BC。

4、sizeof(float)是______(分数:2 分)A.一个双精度型表达式 B.一个整型表达式 C.一种函数调用

D.一个不合法的表达式 标准答案是:AB。

5C程序的结构可分为哪几类?______(分数:2 分)A.顺序结构 B.循环结构 C.程序结构 D.选择结构 标准答案是:AB。

1、putchar函数可以向终端输出一个:______(分数:2 分)

A.整型变量表达式值 B.字符串 C.实型变量值 D.字符或字符型变 标准答案是:D。

2、printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式______(分数:2 分)A.从左起输出该字串,右补空格 B.按原字符长从左向右全部输出 C.右对齐输出该字串,左补空格 D.输出错误信息 标准答案是:B。

3、已知static int a[2][3]={2,4,6,8,10,12};正确表示数组元素地址的是______(分数:2 分)

A.*(a[1]+2)B.a[1]+3 C.*(a+1)D.a[0][0] 标准答案是:C

4、函数调用strcat(strcpy(str1, str2), str3)的功能是______(分数:2 分)

A.将串str1复制到串str2中,然后再连接到str3之后

B.将串str2复制到串str1中,然后再将串str3连接到串str1之后 C.将串str2复制到串str1中,再将串str1连接到str3之后 D.将串str1连接到串str2之后,再复制到str3之中 标准答案是:B。

5、已知int a[10];则对a数组元素的正确引用是______(分数:2 分)

A.a[10] B.a[3.5] C.a(5)D.a[10] 标准答案是:D。

二、多选

1、若a,b,c,d都是int型变量且初值为0,以下选项中正确的赋值语句是______(分数:3 分)

A.a=b=c=d=100 B.d++;C.c+b;D.d=(c=22)-(b++)标准答案是:ABD。

2、以下描述正确的是______(分数:3 分)

A.使用while和do-while循环时,循环变量初始话的操作应在循环体语句之前完成 B.while循环是先判断表达式,后执行循环语句

C.do-while和for循环均是先执行循环语句,后判断表达式 D.for,while和do-while循环中的循环体均可以由空语句构成 标准答案是:ABD。

3、以下4个选项中,可以看作是一条语句的有______(分数:3 分)A.{;} B.a=0,b=0,c=0;C.if(a>0)D.if(b==0)m=1;n=2;标准答案是:ABC。

4、以下叙述正确的是______(分数:3 分)A.C语言严格区分大小写英文字母 B.C语言用“;”作为语句分隔符

C.C程序书写格式自由,一行内可以写几个语句,一个语句也可以写在几行上 D.可以使用/*…*/对C程序中的任何部分作注释 标准答案是:ABCD。

5下列对逻辑运算符两侧的运算对象的数据类型描述不正确的是______(分数:3 分)A.只能是0或1 B.只能是0或非0正数 C.可以是整型或字符型数据 D.可以是任何类型的数据 标准答案是:ABD。

1、在C语言的if语句中,用作判断的表达式为______(分数:2 分)

A.关系表达式 B.逻辑表达式 C.算术表达式 D.任意表达式 标准答案是:D。

2、若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数表达式的值为“假”。则以下不能满足要求的表达式是______(分数:2 分)A.A%2= =1 B.!(A%2 = =0)C.!(A%2)D.A%2 标准答案是:C。

3、已知char s[20]= ”programming”, *ps=s;则不能引用字母o的表达式是______(分数:2 分)A.ps+2 B.s[2] C.ps[2] D.ps+=2, *ps 标准答案是:A。

4、已知char b[5], *p=b;则正确的赋值语句是。______(分数:2 分)

A.b=”abcd” B.*b=”abcd”;C.p=”abcd”;D.*p=”abcd”;标准答案是:C。

5、已知int a[]={1,2,3,4,5,6,7,8,9,10,11,12}, *p=a;则值为3的表达式是______(分数:2 分)

A.p+=2, *(p++)B.p+=2, *++p C.p+=3, *p++ D.p+=2, ++*p 标准答案是:A。

二、多选

1、以下不符合C语言语法的实型常量是______(分数:3 分)A.1.2E0.5 B.3.14.159E C.0.005 D.E15 标准答案是:ABD。

2、以下叙述中正确的是______(分数:3 分)A.一个C源程序可由一个或多个函数组成 B.一个C源程序必须包含一个main()函数 C.C源程序的基本组成单位是函数

D.在C源程序中,注释说明只能位于一条语句的最后 标准答案是:ABD。

3、以下正确的if语句形式是______(分数:3 分)A.if(x>y && x!=y)B.if(x==y)x+=y C.if(x!=y)scanf(“%d”,&x)else scanf(“%d”,&y);D.if(x

4、以下选项中不是C语言合法整数的是______(分数:3 分)A.10110 B.386 C.0Xffa D.x2a2 标准答案是:BD。

5以下关于数组描述错误的是______(分数:3 分)

A.数组的大小是固定的,但可以有不同的类型的数组元素 B.数组的大小是可变的,但所有数组元素的类型必须相同 C.数组的大小是固定的,所有数组元素的类型必须相同 D.数组的大小是可变的,可以有不同的类型的数组元素 标准答案是:ABD。

1、设有定义:int x=12,n=5;则表达式x%=(n%2)的值为______(分数:2 分)

A.2 B.3 C.5 D.0 标准答案是:D。

2、针对下列程序段回答问题().for(t=1;t<=100;t++){scanf(“%d”,&x);if(x<0)______(分数:2 分)

A.x>=0时什么也不输出

B.最多允许输出100个非负整数 C.printf函数永远也不执行 D.当x<0时整个循环结束 标准答案是:B。

3、已知char b[5],*p=b;,则正确的赋值语句是______(分数:2 分)

A.b=“abcd”;B.*b=“abcd”;C.p=“abcd”;D.*p=“abcd”;标准答案是:C。

4、在C语言中,十进制数47可等价地表示为______(分数:2 分)

A.2f B.02f C.57 D.57 标准答案是:D。

5、有两个整型变量dog和cat,若要从磁盘文件把数据读到其中,正确的形式是______(分数:2 分)

A.fscanf(dog ,2,1,fp);B.fscanf(fp,“%d%d”,&dog ,&cat);C.fscanf(dog ,cat,2,1,fp);D.fscanf(fp,“%d”,&dog ,&cat);标准答案是:B。

二、多选

1、下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空:#indude “stdio.h”main(){int m=0,n=0;char c;1;while((_____)!='n'){ if(c>='A' && C<='Z')m++ if(c>='a' && c<='z')n++;}printf(“%dn”, m A.c=getchar()B.getchar()C.c=getchar()D.scanf(“%c”,c)标准答案是:AC。

2、以下选项中,合法的字符常量是______(分数:3 分)A.'t' B.'17' C.“n” D.'xaa' 标准答案是:ABD。

3、以下用户标识符,其中合法的是______(分数:3 分)A.return B.f2_G3 C.A3-3 D.abc 标准答案是:BD。

4、以下可以定义为用户标识符的有______(分数:3 分)A.scanf B.short C._3com_ D.int 标准答案是:AC。

5以下选项中合法的表达式是______(分数:3 分)A.0<=x<100 B.i=j==0 C.(char)(65+3)D.x+1=x+1 标准答案是:ABC。简答题

1#include void main(){ int i=0,j=1;for(i=2;i<=10;i++){ j*=i;} printf(“%d”,j);return 0;} 21.定义文件指针 2.打开文件,判断是否成功打开,若打开失败,程序退出运行状态 3.对文件进行读写操作 4.关闭文件

名词解释 1条件语句

2条件语句否定分支(与 if 连用)论述题 1限制|调试

第五篇:《C语言程序设计》2011-2012-2A答案

河南理工大学学期 《C语言程序设计》笔试试卷(A卷)

一、单项选择题(每题1分,共50分)

1.B2.A3.D4.A5.C6.C7.C8.C9.C10.A

11.B12.B13.D14.D15.D16.C17.C18.C19.D20.A

21.C22.C23.A24.C25.B26.A27.B28.C29.D30.A

31.B32.D33.A34.D35.C36.C37.C38.A39.A40.C

41.C42.C43.D44.C45.B46.C47.C48.B

二、填空题(每空2分,10个空,共20分)。

51.目标文件52.float53.354.共用体

56.ASCII值57.strcpy58.函数59.15

三、程序阅读试题(共10题,每题3分,共30分)

61.20,10

62.**0****2**

63.v1=4, v2=7, v3=5, v4=8

64.2870

65.21

66.3

67.*prt1= 7,*prt2=5

a=7,b=5

68.10,9,8,7,6,5,4,3,2,1,69.8,17

70.123,0

《C语言程序设计》答案第1页(共1页)49.B50.D55.060.#

下载浙江省计算机C语言程序设计题(不含答案)(5篇)word格式文档
下载浙江省计算机C语言程序设计题(不含答案)(5篇).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    《C语言程序设计》2011-2012-2B答案

    河南理工大学学期 《C语言程序设计》笔试试卷(B卷) 一、单项选择题(每题1分,共50分) ,在每小题列出的四个选项中只有一个选项是符合题目要求的,请在答案卡上将正确答案所对应选项......

    计算机等级《二级C语言程序设计》押题卷

    计算机等级《二级C语言程序设计》预测试卷(一) 一、单项选择题(共40题,合计40分) 1以下能正确定义一维数组的选项是()。 A.int a[5]={0.1,2.3.4,5); B.char a口={0,1,2,3,4,5); C.char a={'A’,'......

    C语言程序设计

    1. Problem A: Hello world! Description Xiao_ming有两个哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放学回家,父母分别跟他们打招呼。 Input 无 Output 请输出: Hello Da_min, He......

    C 语言程序设计

    《C 语言程序设计》主要在计算机软件、计算机网络、计算机应用、通信技术、智能电子、电子信息工程、多媒体以及核工程与核技术等专业中开设,是电子信息类、机械类等工科专业......

    2018年 C语言程序设计A卷答案

    一、选择题答案 1、B 2、C 3、D 4、B 5、B 6、A 7、B 8、C 9、B 10、D 11、C 12、B 13、C 14、D 15、B 二、填空题答案 1、n=%dn m=%dn 2、i=5;i>=1;--i 3、1.0/(i*i) 4、......

    应数计算机程序设计(C语言)实验

    问题 A: 问候世界 时间限制: 1 Sec 内存限制: 2 MB 题目描述 输出:Hello world 输入 无 输出 Hello world 样例输入 样例输出 Hello world 提示 Append Code #include #inc......

    C语言程序设计习题试题(编程题)

    C语言程序设计习题(编程类) 1、从键盘输入任意的字符,按下列规则进行分类计数。第一类 '0','1','2','3','4','5','6','7','8','9' 第二类 '+','-','*','/','%�......

    C语言程序设计心得

    C语言教学心得交流 通过本次教师发展在线的C语程培训中,我受益匪浅,几位教授的精彩演讲,让我找到了自己的不足和日后教学中的改革方向和内容。同时,也让我感觉到了,有今天各位教......