文档库 最新最全的文档下载
当前位置:文档库 › c典型试题100-2

c典型试题100-2

c典型试题100-2
c典型试题100-2

C语言程序设计典型题目

2.5写出解决下列问题的C程序以及执行每一步操作后各存储单元中数据的变化。注意输入输出风格的设计。

(1)把存储单元x和y中的数交换一下,设求解前x中已存放4,y中已存放 6。[答案]

main()

{int t,x,y;

x=4;y=6;

printf("before exchanging: x=%d,y=%d\n",x,y);

t=x; x=y; y=t;

printf("after exchanging: x=%d,y=%d\n",x,y);

}

(2)把存储单元x和y中的数交换一下,设x和y的值从外部输入。[答案]

main()

{int t,x,y;

printf("input x and y:");

scanf("%d%d",&x,&y);

printf("before exchanging: x=%d,y=%d\n",x,y);

t=x; x=y; y=t;

printf("after exchanging: x=%d,y=%d\n",x,y);

}

(3)求s=x+y,设 x、y均从外部得到数据。[答案]

main()

{int s,x,y;

printf("input x and y:");

scanf("%d%d",&x,&y);

s=x+y;

printf("sum=%d\n",s);

}

2.6用一条C语句完成下述要求:[答案]

(1)提示用户输入两个数,提示信息以“冒号、空格”结束,光标定位在空格后;

(2)从键盘读取两个整数并把读入的整数分别存储在整数变量a、b中;

(3)计算变量x、y、z的积,把计算结果赋值给变量result;

(4)打印出“The result is:”并紧接着打印出变量result的值,将光标换到下行行首;

(5)将(3)、(4)合并,用一条语句实现输出x、y、z的积。

2.6

(1)printf("input 2 numbers: ");

(2)scanf("%d%d",&a,&b);

(3)result=x*y*z;

(4)printf("The result is%d",result);

(5)printf("The result is%d\n",x*y*z);

2.7设x=12345。写出下面输出语句的结果。[答案]

(1)printf(“%d\n”,x);

(2)printf(“%10d\n”,x);

(3)printf(“%4d\n”,x);

2.7

(1)12345

(2)XXXXX12345 (左补5个空格)

(3)12345 (宽度不够,突破限制)

2.8设y=12345.678。写出下面输出语句的结果。[答案]

(1)printf(“%f”,y);

(2)printf(“%10.3f”,y);

(3)printf(“%8.3f”,y);

(4)printf(“%8.5f”,y);

2.8

(1)12345.678000(默认6位小数)

(2)X12345.678 (左补一个空格)

(3)12345.678 (宽度不够,突破限制)

(4)12345.67800 (突破限制,按小数位显示)

3.5某工种按小时计工资,每月总工资=每月劳动时间(小时)×每小时工资,总工资中要扣除10% 的公积金,剩余为应发工资。劳动时间和每小时工资由键盘输入,求应发工资。[N-S图][答案]

main()

{int hour; float wage,salary;

printf("输入工时:");

scanf("%d",&hour);

printf("输入工资标准:");

scanf("%f",&wage);

salary=wage*hour*(1-0.1);

printf("应发工资为::%5.2f\n",salary);

}

3.6计算圆的直径、周长和面积。圆的半径从键盘输入,圆周率分别取

3.14、3.14159。[N-S图][答案]

#define PI 3.14159 /*3.14*/

main()

{float area,diameter,radius,perimeter;

printf("input radius:");

scanf("%f",&radius);

diameter=2*radius;

area=PI*radius*radius;

perimeter=2*PI*radius;

printf("diameter is %5.2f\n",diameter);

printf("area is %5.2f\n",area);

printf("perimeter is %5.2f\n",perimeter);

}

3.7输入a,b两个整数,求a除以b得到的商和余数。[N-S图][答案]

main()

{int a,b;

printf("input two numbers:");

scanf("%d%d",&a,&b);

printf("a/b=%d\n",a/b);

printf("a%%b=%d\n",a%b);

}

3.8输入含有5个数字的数,把这个数分解为单个数字并求各位数字的和。例如输入了12345,输出结果为15。[N-S图][答案]

main()

{int n,sum;

printf("输入一个5位数:");

scanf("%d",&n);

sum=0;

sum=sum+n%10;

n=n/10; sum=sum+n%10;

n=n/10; sum=sum+n%10;

n=n/10; sum=sum+n%10;

n=n/10; sum=sum+n%10;

printf("sum=%5d\n",sum);

}

3.9解中国古代的“鸡兔同笼”问题:在一个笼子里养着鸡和兔,但不知鸡有多少只,兔有多少只,只知道鸡和兔的总数是total,鸡与兔的脚数为feet,求鸡、兔各多少只?[N-S图][答案]

/*计算鸡兔问题*/

/*total—鸡兔总数;feet—鸡兔脚的总数*/

/*c–鸡的数量,r—兔子的数量*/

main( )

{int total,feet,c,r;

printf("input the total and the feet quantities of chickens and rabbits:");

scanf("%d%d",&total,&feet);

c=(4*total-feet)/2;

r=(feet-2*total)/2;

printf("chicken = %d, rabbits =%d", c,r);

}

4.1将下列的语义用表达式表示。[答案]

(1)num的值必须是2,3,4。

(2)判断某一年year是否为闰年,已知满足下面条件之一的即为闰年:①该年号可以被4整除,但不能被100整除;②该年号能被400整除。

(3)爱因斯坦数学题。有一条长阶梯,若每步跨2阶,则最后剩1阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨6阶,则最后剩5阶;若每步跨7阶,则最后一阶也不剩。表示阶梯数满足的条件。

4.1

(1) (num==2)||(num==3)||(num==4)

(2) (year%4==0 && year%100!=0) ||(year%400==0)

(3) (step%2==1)||(step%3==2)||(step%5==4)||(step%6==5)||(step%7==0)

4.2输入一个整数,打印它是奇数还是偶数。[答案]

main()

{int x;

printf("input a number:");

scanf("%d",&x);

if (x%2==1)

printf("it's odd number.\n");

else printf("it's even number.\n");

}

4.3输入3个数,将它们按从小到大顺序排列。[N-S图][答案]

main()

{int a,b,c;

if (a>b)

{t=a; a=b; b=t;}

if (a>c)

{t=a; a=c; c=t;}

if (b>c)

{t=b; b=c; c=t;}

printf("%3d%3d%3d\n",a,b,c);

}

4.4输入一个3位正整数,①分离出该数中的每一位数字,按逆序显示输出各位数字;②用分离出的每位数字组成一个最大数和一个最小数,并显示输出。例如,输入186,则输出“186是3位数,按逆序组合的新数字为681,组成的最大数为861,最小数为168”。[N-S图][答案]

main()

{int a,b,c,t,x;

printf("input a number:");

scanf("%d",&x);

/*分解数字*/

a=x%10; /*个位*/

x=x/10;

b=x%10; /*十位*/

c=x/10; /*百位*/

printf("%d%d%d\n",a,b,c);/*逆序输出*/

if (a>b) /*将升序重新排列abc*/

{t=a; a=b; b=t;}

if (a>c)

{t=a; a=c; c=t;}

if (b>c)

{t=b; b=c; c=t;}

printf("%d%d%d\n",c,b,a); /*从大到小输出*/

printf("%d%d%d\n",a,b,c); /*从小到大输出*/

}

4.5输入三角形的三条边,判断其能否构成三角形,若能构成三角形,则:[答案]

(1)利用以下公式求出三角形面积。

)

(

)

(

)

(c

s

b

s

a

s

s

s-

?

-

?

-

?

=,其中2c

b

a

s +

+

=

[N-S图](2)判断它是哪种三角形(等边、等腰、直角、等腰直角或一般三角形)。[N-S图]

#include "math.h"

main()

{

float a,b,c,s;

printf("input 3 edges:\n");

scanf("%f%f%f",&a,&b,&c);

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

{ /*求三角形面积*/

s=(a+b+c)/2;

s=sqrt(s*(s-a)*(s-b)*(s-c));

printf("its area is %6.2f\n",s);

/*判断三角形的类型*/

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

printf("它是等边三角形\n");

else if ( (a==b) || (b==c) || (a==c))

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

printf("它是等腰直角三角形\n");

else printf("它是等腰三角形\n");

else if ( (a*a+b*b==c*c) || (a*a+c*c==b*b) || (b*b+c*c==a*a))

printf("它是直角三角形\n");

else printf("它是一般三角形\n");

}

else printf("它们不能构成三角形\n");

}

4.6(1)写出对下面算法进行检验的过程,测试数据为2000和1900。

[N-S图]

(2)用逻辑表达式的逻辑判断形式改进分支嵌套的结构。[N-S图]

4.7航空公司在不同的时期以及针对不同的订票量对飞机票采用不同的折扣率,如表4-8所示。编写算法,根据输入的旅游时间及订票量计算折扣率。[N-S图1][N-S图2][答案1][答案2]

表4-8飞机票折扣率表

main()

{

int month,num;float rate;

printf("input month:\n");

scanf("%d",&month);

printf("input num:\n");

scanf("%d",&num);

switch(month)

{case 7: case 8: case 9: case 12:

if (num<=20)

rate=0.05;

else rate=0.15;

break;

case 1: case 2: case 3: case 4:

case 5: case 6: case 10: case 11:

if (num<=20)

rate=0.2;

else rate=0.3;

}/*switch end*/

printf("the saleoff is %6.0f%%\n",rate*100);

}

main()

{

int month,num;float rate;

printf("input month:\n");

scanf("%d",&month);

printf("input num:\n");

scanf("%d",&num);

if ((month>=7 && month<=0)|| (month==12))

if (num<=20)

rate=0.05;

else rate=0.15;

else if ((month>=1 &&month<=6)|| (month==10)||(month==11))

if (num<=20)

rate=0.2;

else rate=0.3;

printf("the saleoff is %6.0f%%\n",rate*100);

}

4.8输入一个点的坐标(x,y),判断这个点在哪个象限。[N-S图][答案]

/*用逻辑表达式组织分支*/

/*main()

{int x,y;

printf("input x,y:");

scanf("%d%d",&x,&y);

if (x>0&&y>0)

printf("in 1th quadrant.\n");

if (x<0&&y>0)

printf("in 2th quadrant.\n");

if (x<0&&y<0)

printf("in 3th quadrant.\n");

if (x>0&&y<0)

printf("in 4th quadrant.\n");

} */

/*用嵌套形式组织分支*/

main()

{int x,y;

printf("input x,y:");

scanf("%d%d",&x,&y);

if (x>0)

if (y>0)

printf("in 1th quadrant.\n");

else printf("in 4th quadrant.\n");

else if (y>0)

printf("in 2th quadrant.\n");

else printf("in 3th quadrant.\n");

}

4.9已知一数学函数为:

输入一个自变量(设x为整数),求函数值。分别用双分支[N-S图]和多分支结构实现[N-S图]。[答案]

/*main()

{int x,y;

printf("input a number:");

scanf("%d",&x);

if (x<0)

y=0;

else if (x<10)

y=x;

else if (x<20)

y=x+10;

else if (x<30)

y=-x;

else y=-x-10;

printf("y=%3d\n",y);

}

*/

main()

{int x,y,grade;

printf("input a number:");

scanf("%d",&x);

grade=x/10;

if (x<0) grade=-1;

switch(grade)

{case -1: y=0; break;

case 0: y=x; break;

case 1: y=x+10; break;

case 2: y=-x; break;

default: y=-x-10;

}

printf("y=%3d\n",y);

}

4.10某邮购处销售5种产品,零售价如表4-9所示。输入产品号,查看该产品的零售价,如果输入的产品号有错,则给出提示信息。[N-S图][答案]

表4-9产品价目表

{int num; float y;

printf("input a number:");

scanf("%d",&num);

if ( num>=1 && num<=5)

{switch(x)

{case 1: y=25.5; break;

case 2: y=19.2; break;

case 3: y=5.6; break;

case 4: y=36.95; break;

case 5: y=54; break;

}

printf("y=%5.2f\n",y);

}

else printf("data is infeasible.\n");

}

5.1人们常说计算机的速度很快,那么到底有多快呢?编写一个使用while循环结构的程序,从1加到3000000。每次加到1000000的整数倍时,就把这个数显示在屏幕上。用手表看看每循环一百万次需要多长时间。[答案]

main()

{long int i;

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

if (i%1000000==0)

printf("%ld\n",i);

}

5.2输入n个学生的成绩,如果输入了负数(非法数据)则输入停止,打印相应的出错信息;否则,统计各分数段的人数。[N-S图][答案]

/*count_5至count_9为5个计数器*/

/*如果输入负数,是非法数据,要结束统计,给出错误信息*/

/*如果没有非法数据,输入了N个成绩,则打印统计的结果*/

/*循环由一个复合条件控制*/

#define N 5

main()

{int count_5,count_6,count_7,count_8,count_9,grade,i,score;

count_5=count_6=count_7=count_8=count_9=0;

printf("input score:");

i=0;

do{scanf("%d",&score);

grade=score/10;

switch(grade)

{case 0: case 1: case 2:

case 3: case 4: case 5: count_5=count_5+1;break;

case 6: count_6=count_6+1;break;

case 7: count_7=count_7+1;break;

case 8: count_8=count_8+1;break;

case 9: case 10:

count_9=count_9+1;break;

}/*switch end.*/

i=i+1;

}while (score>0 && i

if (i

printf("data is infeasible.\n");

else

{ printf("<60 :%d\n",count_5);

printf("60-69 :%d\n",count_6);

printf("70-79 :%d\n",count_7);

printf("80-89 :%d\n",count_8);

printf("90-100:%d\n",count_9);

printf("60-70 :%d\n",count_6);

}

}

5.3某比赛由 20 位评委评分,每位参赛者的成绩的计算办法是,在评委的评分中除去一个最高分,除去一个最低分,再计算余下数的平均分。输入20个评分,计算某参赛者的最后得分。[N-S图][答案]

#define N 20

main()

{int i,max,min,sum,x;

printf("input score:"); /*先输入一个成绩,为max、min、sum做初始化*/

scanf("%d",&x);

min=x; max=x; sum=x;

for(i=1;i

{scanf("%d",&x);

if (x>max) max=x;

if (x

sum=sum+x;

}

printf("last score is:%5.2f\n",(sum-max-min)*1.0/(N-2));

}

5.4猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,觉得不过瘾,又多吃了一个;第二天又将剩下的桃子吃了一半,又多吃了一个。以后每天都吃了前一天剩下的一半零一个。到第5天早晨想再吃时,见只剩下一个桃子了。计算第一天共摘了多少桃子。[N-S图][答案]

main()

{int i,num;

num=1; /*第5天的桃子数为1*/

for(i=5;i>1;i=i-1) /*没有到第1天时,计算*/

num=(num+1)*2;

printf("peach number is %d\n",num);

}

5.5回文是指正读和反读都一样的数。例如,121、5555、67776等都是回文。编写一个算法,读取几个整数,打印它们是否是回文。(提示:判断回文的一个方法是将该数字的逆序数与之进行比较。)[N-S图][答案]

#define N 10 /*设检测10个数字是否是回文*/

main()

{int i,number,sum,temp;

printf("input number:");

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

{scanf("%d",&number);

temp=number; /*暂存*/

sum=0;

while(temp!=0)

{sum=sum*10+temp%10;/*求余数,向左移位相加*/

temp=temp/10;

}

if (number==sum)

printf("it's palindrome.\n");

else printf("it's not palindrome.\n");

}

}

5.6求 1-3+5-7+…… -99 + 101。[N-S图][答案]

main()

{int i,sum,s;

s=1; /**/

sum=0;

i=1;

while (i<=101)

{sum=sum+s*i;

s=-s;

i=i+2;

}

printf("sum=%d\n",sum);

}

5.7输入一个8位的二进制数,打印出相应的十进制数。[N-S图][答案]

main()

{int i,s,sum,x;

sum=0;

s=1; /*代表各位权值*/

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

{scanf("%d",&x); /*输入0或1*/

sum=sum+x*s;

s=s*2;

}

printf("the decimal is %d\n",sum);

}

5.8求距离n最近的素数。[N-S图][答案]

#include "math.h"

main()

{int div,i,num_flag,num,prime_flag;

printf("input a number:");

scanf("%d",&num);

num_flag=0; /*num_flag:1表示找到离num最近的素数,0表示没找到*/

while(num_flag==0)

{prime_flag=1; /*prime_flag:1表示num是素数,0表示不是*/

for(i=2; i<=sqrt(num) && prime_flag==1; i=i+1) /*判断num是否是素数*/ if (num%i==0) prime_flag=0;

if (prime_flag==0) /*num不是素数,判断下一个数*/

num=num+1;

else num_flag=1; /*结束查找*/

}

printf("the next prime is %d\n",num);

}

5.9模拟超市的前台收款过程(以几种水果为例),设苹果每斤1.8元,香蕉

每斤2.2元,西瓜每斤1.9元。输入水果的编号和重量,打印应付的钱

数,再输入顾客付款数,打印出应找的钱数。[N-S图][答案]

#define APPLE 1.9

#define BANANA 2.2

#define WATERMELON 2.0

main()

{float apple,banana,peach, price, paid, sum, weight;

int key,flag;

sum=0;

flag=1;

do

{printf("input fruit key:");

scanf("%d",&key);

switch(key)

{case 0: flag=0;break;

case 1: printf("input apples' weight:"); scanf("%f",&weight);break;

case 2: printf("input bananas'weight:"); scanf("%f",&weight); break;

case 3: printf("input watermelon's weight:");

scanf("%f",&weight);

break;

default: if (key!=0)

{printf("no this fruit\n");

flag=0;

}

}

if(flag!=0)

{switch(key)

{case 1: price=weight*APPLE;

printf("it's price is %4.2f * %5.2f = %5.2f\n",APPLE,weight,price);

break;

case 2: price=weight*BANANA;

printf("it's price is %4.2f * %5.2f = %5.2f\n",BANANA,weight,price);break;

case 3: price=weight*WATERMELON;

printf("it's price is %4.2f * %5.2f = %5.2f\n",WATERMELON,weight,price);

}

sum=sum+price;

}

}while (key!=0);

printf("the total price is %5.2f\n",sum);

printf("input the custom paid:");

scanf("%f",&paid);

printf("return to %5.2f\n",paid-sum);

}

5.10利用欧几里德算法(辗转相除法)求两个非负整数m、n的最大公约数。其原理是:设m=na0+r1(0≤r1<n),就是说m是n的a0倍还多r1。那么,m和n的最大公约数与n和r1的最大公约数相同。若r1为0,则n就是m

和n的最大公约数。若r1不为0,再对n和r1重复上面的操作,直到求出r n=0为止。[N-S图][答案]

main()

{int m,n,r,t;

do

{printf("input m,n (m>n>0):");

scanf("%d%d",&m,&n);

}while(m<0 || n<=0);

if (m

{t=m;m=n;n=t;}

r=m%n;

while (r!=0) /*余数不为0时*/

{m=n; /*迭代*/

n=r;

r=m%n;

}

printf("the max common divisor is %d\n",n);

}

5.11有一分数序列:……求这个数列的前20项的和。[N-S图] [答案]

main()

{int a,b,i,n,temp; float sum;

sum=0;

i=1;

a=2; b=1;

sum=0;

while (i<=20)

{sum=sum+a*1.0/b;

temp=a;

a=a+b;

b=temp;

i=i+1;

}

printf("the sum is %6.2f\n",sum);

}

5.12如果自然数M的所有因子(包括1但不包括自身)的和为N,而N的

所有因子之和为M,则称M与N是一对“亲密数”。例如220的所有因子之和为1+2+4+5+10+11+20+22+44+55+110=284,而284的所有因子之和为

1+2+4+71+142=220,因此220与284是一对“亲密数”。输出n以内的所有“亲密数”。[N-S图][答案]

#include "math.h"

main()

{int a,b,count,i,n,sum;

printf("input n:");

scanf("%d",&n);

count=0;

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

{b=1;

for (i=2;i<=sqrt(a);i++) /*求因子时,只判断到即可*/

if (a%i==0)

b=b+i+a/i; /*每次将两个因子相加*/

if (a==b)

{printf("%d is perfect number\n",a); /*是完全数*/

count=count+1;

}

else {if (a<=b) /*控制按升序,不重复输出*/

{sum=1;

for (i=2;i<=sqrt(b);i++)

if (b%i==0)

sum=sum+i+b/i;

}

if (sum==a) /*a与b是亲密数*/

{printf("(%d,%d) is inimate number\n",a,b);

count=count+1;

}

}

}

if (count==0) printf("no perfect or inimate number\n");

}

5.13用公式e=1+求e,当最后一项小于ε(设为10-4)时停止计

算。[N-S图][答案]

main()

{int n; float e,item,epx;

printf("input epx:");

scanf("%f",&epx); /*精度*/

e=1; /*累加和*/

item=1;

n=1;

while (item>=epx)

{e=e+item;

n=n+1;

item=item/n; /*在前一项的基础上除以n*/

}

printf("epx=%.10f, e=%.10f\n",epx,e);

}

5.14编写一个算法,打印出如下的结果。[N-S图][答案]

3 5 7 9

6 8 10 12

9 11 13 15

12 14 16 18

15 17 19 21

main()

{int i,j,num;

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

{num=i*3;

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

{printf("%5d",num);

if (j%4==0)

printf("\n");

num=num+2;

}

}

}

5.15已知y =。设 x=2,分别打印出 n 等于 1,2,3,……10 时 y 的值。[N-S图][答案]

main()

{int i,j,s1;float sum,x;

x=2;

for(i=1;i<=10;i=i+1) /*输出n=1至10时的y*/

{sum=0;

s1=x;

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

{s1=s1*x; /*分子累乘*/

sum=sum+s1*1.0/j; /*每次除以j*/

}

printf("n=%5d,y=%8.2f\n",i,sum);

}

}

5.16打印数字金字塔:[N-S图][答案]

1

1 2 1

1 2 3 2 1

1 2 3 4 3 2 1

……

1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1

/*每行相差的空格数占位与输出每个数字的宽度要一致*/

/*例如,输出%2d,则空格数为N-2i*/

#define N 40

main()

{int i,j;

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

{for(j=1;j<=N-2*i;j=j+1) /*输出每行前的空格*/

printf(" ");

for(j=1;j<=i;j=j+1) /*输出升序部分*/

printf("%2d",j);

for(j=i-1;j>=1;j=j-1) /*输出降序部分*/

printf("%2d",j);

printf("\n");

}

}

5.17直角三角形的三条边可以都是整数,它们之间满足勾股定理,即两条直角边的平方和等于斜边的平方。找出所有满足勾股定理并且各边长不大于500的直角三角形。[N-S图][答案]

main()

{int a,b,c,i;

i=0;

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

for(b=a;b<=50;b=b+1) /*b>=a*/

for(c=b;c<=50;c=c+1) /*c>=b*/

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

{i=i+1;

printf("%2d: a=%2d b=%2d c=%2d\n",i,a,b,c);

}

printf("\n");

}

5.18 题目:用二分法求方程2x3-4x2+3x-6=0的根。

#include

main()

{float x0,x1,x2,fx0,fx1,fx2;

do

{printf("input two numbers:\n");

scanf("%f,%f",&x1,&x2);

fx1=((2*x1-4)*x1+3)*x1-6;

fx2=((2*x2-4)*x2+3)*x2-6;

}while((fx1*fx2)>0);

do

{x0=(x1+x2)/2;

fx0=((2*x0-4)*x0+3)*x0-6;

if((fx1*fx0)<0)

{x2=x0;fx2=fx0;}

else {x1=x0;fx1=fx0;}

}while (fabs(fx0)>=1e-5);

printf("the root is:%f",x0);

}

6.6 编写一个函数,求f(x)=x2-5x+4的值。编写主函数调用此函数,求y1=22-5*2+4,输入x,计算y2=(x+15)2-5(x+15)+4, y3=(sinx)2-

5sinx+4, y4=(x+4)-2-5(x+4)-1 +4。[答案]

/*重点考察如何调用函数,向函数传递参数*/

float f(float x)

{

return((x-5)*x+4);

}

#include "math.h"

main()

{

float x,y1,y2,y3,y4;

printf("input independent variable:");

scanf("%f",&x);

y1=f(2);

y2=f(x+15);

y3=f(sin(x));

y4=f(1/(x+4));

printf("y1=%5.2f\n",y1);

printf("y2=%5.2f\n",y2);

printf("y3=%5.2f\n",y3);

printf("y4=%5.2f\n",y4);

}

6.7 已知e x可以用下面的公式表示:

e x=1+

编写函数求e x,要求最后一项近似到10-4。利用该函数求e、e2、e-0.5。[答案]

/*e是累加和,s1是分子,s2是分母*/

float exp(float x)

{int i;float e,s1,s2,t;

e=1;

s1=x;

s2=1; i=1;

t=s1/s2;

while(t>1e-4)

{e=e+t;

s1=s1*x;

i=i+1;

s2=s2*i;

t=s1/s2;

}

return(e);

}

main()

{

printf("e= %.4f\n",exp(1));

printf("e2= %.4f\n",exp(2));

printf("e-0.5=%.4f\n",exp(-0.5));

}

6.8 找出11~999之间的数m,它满足m、m2、m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121、676、95659等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。判断某数是否是回文数的功能用函数实现。[N-S图][答案]

int ispali(int n)/*pali是palindrome回文的缩写*/

{int sum,temp;

temp=n;

sum=0;

while(temp!=0)

{sum=sum*10+temp%10; /*求余数,向左移位相加*/

temp=temp/10;

}

return(n==sum);

}

main()

{int i;

for(i=11;i<=999;i=i+1)

if( ispali(i) && ispali(i*i) && ispali(i*i*i))

printf("%d %d %d\n",i,i*i,i*i*i);

}

6.9 每个非素数都可以惟一地被分解为若干个素数的乘积,试编写算法对其进行验证。[答案]

#include "math.h"

int isprime(int x) /*判断一个数是否是素数*/

{int i,flag;

flag=1;

for (i=2; i<=sqrt(x) && flag==1; i=i+1)

if (x%i==0) flag=0;

if (flag==1) return(1);

else return(0);

}

int next_prime(int x) /*找与x最近的素数*/

{

x=x+1;

while (isprime(x)==0)

x=x+1;

return(x);

}

main()

{int num,div;

printf("input a number:");

scanf("%d",&num);

while(isprime(num))

{printf("input again:");

scanf("%d",&num);

}

printf("%d=",num);

div=2;

while (num!=1) /*没除到1时,则继续找因子*/

if (num%div==0)

{printf("%d",div);

num=num/div;

if (num!=1) printf("*"); /*输出乘号*/

div=2; /*继续从2开始找因子*/

}

else div=next_prime(div);

printf("\n");

}

6.10 编写一个函数,它能把一个实数舍入到指定的十进制位,其中十进制位用整数n 给出。若n为正,则舍入到小数点右边第 n位;若n为负,则指

C语言试卷2及答案

扬州大学试题纸 系课程 C语言程序设计(A)卷2002—2003学年第2学期 班级_________学号________姓名__________得分___________ 一、选择题(每题分,共30分): 1、已知:char a; int b; float c; double d; 则执行语句:c=a+b+c+d; 后,变量c的类型为。 A. char B. int C. float D. double 2、已有定义int x; float y; 且执行scanf(“%2d%f”,&x,&y);语句时, 从第一列开始输入数据12345 67<回车>,则y的值是。 A. 无定值 B. 345.00000 C. D. 3、设有以下程序段 int x=0; s=0; while (!x!=0) s+=++x; printf(“%d”,s); 则。 A. 运行程序段后输出0 B. 运行程序段后输出1 C. 程序段中的控制表达式是非法的 D. 程序段执行无限次 4、若i为整型变量,则以下循环执行次数是。 for(i=2; i==0;) printf(“%d”, i--); A. 无限次 B. 2次 C. 1次次 5、假设char ch=’a’, *p=&c h; ,以下语句中,有语法错误的是 . A. (*p)++; B. ch+=—‘a’+’A’; C. toupper(ch)=ch; D. ch++; 6、若说明:char *language[ ]={“VFP”,”C”,”VB”,”VC”,”JAVA”}; 则language[2]的值是。 A. 一个字符 B. 一个地址 C. 一个字符串 D. 一个不定值 7、C语言程序中,当调用函数时。 A. 实参和虚参可以共用存储单元 B. 实参和虚参各占一个独立的存储单元 C. 可以由用户指定是否共用存储单元 D. 由计算机系统自动确定是否共用存储单元 8、在程序中要使用语句:printf(“%s\n”, STRING); 输出提示信息:“OK! ”(包括双引号),则应使用宏定义语句。 A. #define STRING “OK!” B. #define STRING “”OK!”” C. #define STRING \”OK!\” D.以上三个答案都是错误的 9、数组和链表都可以用于存储一组数据,以下说法不正确的是_____________。 A. 数组占用连续的一块存储区域,链表可能占用若干不连续的存储区域 B. 数组和链表所占用的存储区域均不能在程序运行期间动态分配 C. 数组中的数据可以随机存取或顺序存取,链表中的数据只能顺序存取 D. 数组的长度是固定的,链表的长度是不固定的。 10、已知语句FIL E *fp; char ch= ‘c’;fp=fopen(“”,”w”);如果需要将ch的值保存到一个磁盘文件中,

C语言试卷及答案

《C语言程序设计》考试试卷(答案) 一、填空题(每小空1分,共10分) 1.C语言程序的三种基本结构是顺序结构、选择结构、循环结构。 2.一个C程序有且仅有一个main( ) 函数。 3.C语言描述“x和y都大于或等于z”的表达式是x>=z && y>=z。 4.C语言可以用来实现循环的结构化语句是while、do while、for。 5.数组名表示数组在内存的首地址。 6.int a=3,*p=&a;*p+2的值是5。 二、单项选择题(每小题2分,共70分) 1.__B___是C语言合法的常量。 (A).45(B)078 (C)25.6e3.4 (D)‘xy’2.一个程序的执行是从 A 。 (A)本程序的main函数开始,到main函数结束 (B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 (C)本程序的main函数开始,到本程序文件的最后一个函数结束。 (D)本程序文件的第一个函数开始,到main函数结束。 3.以下叙述正确的是 C 。 (A)在C程序中,main函数必须位于程序的最前面。 (B)C程序每行中只能写一条语句。 (C)C语言本是没有输入输出语句。 (D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误。 4.以下叙述不正确的是 D 。 (A)逗号运算符的运算级最低。 (B)ABC和abc是两个不同的变量。 (C)若a和b类型相同,在执行a=b后,b的自身值不变。 (D)‘a’和“a”是完全等价的常量。 5.int x=3,y=2;则表达式x+=x*=y+8的值为 C 。 (A)28 (B)30 (C)60(D)17 6.设x=2.7,a=8,y=4.9,算术表达式x+a%3*(int)(x+y)%5/3的值为 B 。 (A)2.7 (B)3.7(C)4.7 (D)4.03 7.执行下面两个语句后,输出的结果为__D___。 char c1=98; printf(“%d %c”,c1,c1-32); (A)97 66 (B)98 b (C)b 66 (D)98 B 8.执行下面语句后的结果为 C 。 y=10;x=y++; (A)x=10,y=10 (B)x=11,y=11 (C)x=10,y=11(D)x=11,y=10 9.Char w;int x;float y;double z;则表达式w*x+z-y值的数据类型是A 。 (A)double (B)char (C)int (D)float 10.C语言中要求操作数必须是整数的运算符是 B 。

嵌入式C语言经典笔试题目

嵌入式c语言经典笔试题目 1 .用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3)意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4)如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 2 .写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B)((A)<= (B) ? (A) : (B)) 这个测试是为下面的目的而设的: 1)标识#define在宏中应用的基本知识。这是很重要的。因为在嵌入(inline)操作符变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。 3)懂得在宏中小心地把参数用括号括起来 4)我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事? least = MIN(*p++, b); 3.预处理器标识#error的目的是什么? 如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。 死循环(Infinite loops) 4.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 这个问题用几个解决方案。我首选的方案是: while(1) { } 一些程序员更喜欢如下方案: for(;;) { } 这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这个作为方案,

C语言练习题(带答案)-绝对经典题目不看后悔

1单选题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键

C语言试题及答案

一、单项选择题 1. 软件危机具有下列表现( d )。 I. 对软件开发成本估计不准确II. 软件产品的质量往往靠不住 III. 软件常常不可维护IV. 软件成本逐年上升 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 2. 软件生命周期一般都被划分为若干个独立的阶段,其中占用精力和费用最多的阶段往往是( A )。 A. 运行和维护阶段 B. 设计阶段 C. 代码实现阶段 D. 测试阶段 3. 下列属于软件的特点的是( D )。 A. 软件是一种逻辑实体,具有抽象性 B. 软件在使用过程中没有磨损、老化的问题 C. 软件不同于一般程序,它的一个显着特点是规模庞大,复杂程度高 D. 以上都正确 4. 软件工程的出现是由于( D )。 A. 软件危机的出现 B. 计算机硬件技术的发展 C. 软件社会化的需要 D. 计算机软件技术的发展 5. 软件开发技术不包含( d )。 A. 软件开发方法学 B. 软件工程环境 C. 软件工具 D. 软件质量度度量 6. 软件工程的课程特点( D )。 I. 学科理论及其知识应用的多维性 II. 工程化 III. 浓厚的方法学色彩 IV. 实践性、指导性强 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 7. 下列属于应用软件的是( b )。 I. 计算机辅助教学软件II. 软件测试工具 III. 办公自动化软件IV. 工程与科学计算软件 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 8. 需求分析阶段最重要的技术文档是( b )。

c语言试题及答案

1、以下正确的说法是( B ) (A) 用户若需要调用标准库函数,调用前必须重新定义 (B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C) 系统根本不允许用户重新定义标准库函数 (D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是( A ) (A) double fun(int x, int y) (B) double fun(int x; int y) (C) double fun(int x, int y); (D) double fun(int x,y); 3、以下正确的函数形式是( D ) (A) double fun(int x, int y) { z=x+y; return z;} (B) fun(int x,y) { int z; return z;} (C) fun(x,y) { int x,y; double z; z=x+y; return z;} (D) double fun(int x, int y) { double z; z=x+y; return z;} 4、以下正确的说法是( A ) 在C语言中 (A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元 (C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A ) 该函数 (A) 没有返回值 (B) 返回若干个系统默认值 (C) 能返回一个用户所希望的函数值 (D) 返回一个不确定的值 6、以下不正确的说法是( B ) C语言规定 (A) 实参可以是常量、变量和表达式 (B) 形参可以是常量、变量和表达式 (C) 实参可以为任意类型 (D) 形参应与其对应的实参类型一致 7、以下正确的说法是( C ) (A) 定义函数时,形参的类型说明可以放在函数体内 (B) return后边的值不能为表达式 (C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 (D) 如果形参与实参的类型不一致,以实参类型为准 8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ) (A) 地址传递 (B) 单向值传递 (C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式

c语言笔试题(答案)(精心整理)

笔试题 一、填空题(每个空4分,共28分) 1)struct tagABC { char name[10]; char sex; long sno; float score[4]; }*pAbc;(四字节对齐) pAbc=NULL; 那么,执行pAbc+=2;之后pAbc的值为(64 ) 2)如下代码,最终value的值是(8) int *p1,*p2; int value; p1=(int*)0×400; p2=(int*)0×408; value = p2-p1; 3)如下代码,printf的结果为(2) #include〈stdio.h〉 #include〈string.h〉 void main(void) { char acNew[20]= “\\0\0”; printf(“%d\n”,strlen(acNew)); } 4) 有如下程序段,运行该程序的输出结果是(33) main () { int y=3,x=3,z=1; printf(“%d%d\n”,(++x,y++),z+2); } 5)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为(2)6)struct tagAAA { Unsigned char ucId:1; Unsigned char ucPara0:2; Unsigned char ucState:6; Unsigned char ucTail:4; Unsigned char ucAvail; Unsigned char unTail2:4; Unsigned long ulData; }AAA_S 问:AAA_S在字节对齐分别为1,4情况下,占用的空间大小分别是多少?( 9)(12 )

大学经典C语言编程试题

1.输入两个正整数,m和n,求其最大公约数和最小公倍数。 #include<> void main() { int hcf(int,int); /*函数声明*/ int lcd(int,int,int); /*函数声明*/ int u,v,h,l; printf("Please inputtwo numbers:\n"); scanf("%d,%d",&u,&v); h=hcf(u,v); printf("",h); l=lcd(u,v,h); printf("",l); } int hcf(int u,int v) { int t,r; if(v>u) {t=u;u=v;v=t;} while((r=u%v)!=0) {u=v;v=r;} return(v); } int lcd(int u,int v,int h) { return(u*v/h); } 2.输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。#include<> int letter,digit,space,others; void main() { void count(char[]); char text[80]; printf("Please inputstring:\n"); gets(text); printf("string:\n"); puts(text); letter=0; digit=0; space=0; others=0; count(text); printf("letter:%d,digit:%d,space:%d,others:%d\n",letter,digit,space,others);

C语言程序设计模拟试题2(附答案)new

《C语言程序设计》模拟试卷二 一、填空题。(每空2分,共30分) 1.设有变量说明语句 int x=1,y=2; 则执行下述printf语句的输出结果是______ _____。 printf("%f\n",1.0+x/y); 2.执行下述程序 #include main() { int x,y; scanf("%2d%*2s%1d",&x,&y); printf("%d\n",x+y); } 若从键盘输入 12345671 则程序的输出结果是________。 3.以下程序的功能是:从键盘上输入若干名学生的成绩(百分制,可带小数,以输入负数或0为结束标志),统计并输出最高成绩和最低成绩。请填空。 #include main() { float x,amax,amin; scanf("%f",&x); amax=x; amin=x; while ( ) { if (x>amax) amax=x; else if (x

} 4.设n 是整型变量,且已具有某正整数值。根据下述数学式 1 1 14131312121+? ++?+?+n n 求s 的值并输出。 可编写如下之程序段实现之。请填空。 int k; double s,d; s=0.0; d=1.0; K=0; do { s=s+d; ___ _________; d=1.0/(k*(k+1)); } while (k<=n); printf("%f\n",s); 5.执行下述程序的输出结果是____ ____。 #inclued main() { int a[6],i; for (i=0;i<6;i++) { a[i]=9*(i-2+4*(i>3))%5; printf("%3d",a[i]); } printf("\n"); } 6.执行下述程序时的输出结果是_________ ________。 #include main() { int a[]={2,4,6,},*ptr=&a[0],x=8,y,z; for (y=0;y<3;y++) z=(*(ptr+y)

(完整版)C语言试题及答案解析

C语言 一、选择题(第题2分,共20分) 1.一个C程序的执行是从 A 。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。 x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 52 3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 C 。 A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647 4.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。 A) float B) char C) int D) double 5. putchar函数可以向终端输出一个 D 。 A) 整型变量表达式 B) 实型变量值 C) 字符串 D) 字符或字符型变量值 6. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 B ;如果字符串长度小于5,则输出按方式 C 。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 7.判断char型变量ch是否为大写字母的正确表达式是 C 。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if(x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 9.以下程序段______C__. x=-1; do{ x=x*x; } while(!x); A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 10.以下正确的描述是___B____. A)continue语句的作用是结束整个循环的执行

c语言笔试题目及答案

c语言笔试题目及答案 C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面是c语言笔试题目及答案,请参考。 c语言笔试题目及答案 一、选择题((1)~(10)每小题2分,(11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选 项涂写在答题卡相应位置上,答在试卷上不得分。 (1)数据的存储结构是指________。 A)存储在外存中的数据 B)数据所占的存储空间量 C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示 答案:D 评析:数据的逻辑结构在计算机存储空间中的存放形式形式称为数据的存储结构(也称数据的物理结构)。 (2)下列关于栈的描述中错误的是________。 A)栈是先进后出的线性表

B)栈只能顺序存储 C)栈具有记忆作用 D)对栈的插入与删除操作中,不需要改变栈底指针 答案:B 评析:栈是一种特殊的线性表,又称先进后出表(FILO—First In Last Out)。 (3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是 ________。 A)冒泡排序为n2 B)冒泡排序为n C)快速排序为n D)快速排序为n(n一1)/2 答案:D 评析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2。快速排序法的最坏情况比较次数也是n(n-1)/2。 (4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为________。 A)log2n B)n/2 C)n D)n+l 答案:C 评析:顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或者元素不在线性表中,则需要与线性表中所有的元素进行比较。对长度为n的线性表进行顺序查找,在最坏情况下需要比较

经典练习C语言编程的题目及答案整理

1.逆序输出正三位数 #include int main() { int input,output= 0; scanf("%d",&input); while(input != 0) { output = output*10 + input%10; input /= 10; } printf("%d\n",output); return 0; } 2.百元找零函数 #include int main() { int amount=100; int price=0; printf("请输入金额(元)"); scanf("%d",&price); printf("请输入票面"); scanf("%d",&amount); int change=amount-price; printf("找您%d元。\n",change); return 0; } 3.求平均数 #include int main() { int a,b; scanf("%d %d",&a,&b);

double c=(a+b)/2.0; /* scanf("%d",&amount); 这是注释,我随便放的,没意义 int change=amount-price;*/ printf("%d和%d的平均值是%f\n",a,b,c); return 0; } 4.写出程序的输出: int i=1; switch ( i/3 ) { case 0: printf("zero"); case 1: printf("one"); case 2: printf("two"); } 正确答案是:zeroonetwo。 5.水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例如:153 = 13 + 53+33。本题要求编写程序,计算所有N位水仙花数。 输入格式: 输入在一行中给出一个正整数N(3<=N<=7)。 输出格式: 按递增顺序输出所有N位水仙花数,每个数字占一行。 输入样例: 3 输出样例: 153 370 371 407

c语言试题及答案 (2)

C语言部分 一、选择题(每小题2分,共10分) (下在各小题,分别有一个或多个正确答案,请将所有正确答案的编号,填写在该小题题干后的括号内。错选或漏选均不得分)。 1、若定义:int a[2][3]{0,2,4,6,8,10};以下描述正确的有( A,C,D, E ) A、*(a+1)为元素6的地址 这里a+1=a[1]的地址;*(a+1)的值是6,故A正确。 B、*(a[1]+1)的值为2 为8,故B不正确 C、**(a+1)+2的值为8 这里a+1是一个指针,指向的是a[1]. *(a+1)为a[1],a[1]指向的是a[1][0]. **(a+1)为6,加2得8,故C正确; D、a[0]与a相同 因二者都是指针,指针的地址都是指向数组中的第一个元素的地址,故D正确。 E、a[1][2]的值为10 它是指第二行的第三个元素,为10,正确 2、对函数的正确使用方法描述( A,C,D )。 A、用数组做函数参数时,必须在主调函数和被调函数中分别定义数组 B、实参数组元素和形参数组元素类型可以不一致 C、形参数组长度可以不指定 D、形参数组长度可以大于实参数组长度 E、数组名做参数属于值传递 3、对静态变量的正确描述( A,B,D,E ) A、静态局部变量在静态存储区内分配单元() B、静态外部变量可以赋初值,也可以不赋初值 C、静态外部变量的作用与外部变量相同 D、静态局部变量在函数调用结束时,仍保存其值,不会随着消失。 E、静态局部变量只赋一次初值 4、下列描述正确的是( A ,C)。 A、由main 函数及其参数argc和* argv[]可以实现命令行方式 B、使用fclose关闭文件时,先释放文件指针,再写缓冲区数据到文件中 //先写缓冲区数据到文件中,再释放文件指针 C、字符数组并不要求它的最后一个字符是‘\0’ //是的,以字符指针指向的字符串才要求,因为只有这样,才能知道字符串的长度,而在字符数组中,不用\0,一样可以知道到哪里是字符数组的结尾。 D、‘A’和“A”都是字符串常量 E、若char*S=“\ta\017bc”;则指针变量S指向的字符串所占的字节数是7 5、在缓冲文件系统中用于读写的函数有( A,B,D ) A、putchar () B、fread() C、rewind () D、purw() E、fseek() 二、程序阅读,并给出运行结果(共10分,每题5分)。 (1)main() { unsigned a,b,x int n; a=0x763 输出结果:

C语言全部题目及答案

C语言全部题目及答案 SANY GROUP system office room 【SANYUA16H-

C语言全部题目及答案 Exercise 1: Programming Environment and Basic Input/Output 1.Write a program that prints “This is my first program!” on the screen. (a)Save this program onto your own disk with the name of e2-1a; (b)Run this program without opening Turbo C; (c)Modify this program to print “This is my second program!”, then save it as e2-1b. Please do not overwrite the first program. 2.Write a program that prints the number 1 to 4 on the same line. Write the program using the following methods: (a)Using four “printf” statements. (b)Using one “printf” statement with no conversion specifier(i.e. no ‘%’). (c)Using one “printf” statement with four conversion specifiers 3.(a) Write a program that calculates and displays the number of minutes in 15 days. (b) Write a program that calculates and displays how many hours 180 minutes equal to. (c) (Optional) How about 174 minutes?

C语言笔试题带答案

一、选择题(1)~(10)每小题2分,? (11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)在数据结构中,从逻辑上可以把数据结构分为_______。 A)动态结构和静态结构??? ??B)紧凑结构和非紧凑结构 C)线性结构和非线性结构??? D)内部结构和外部结构 答案:C 评析:逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间一对一的关系,非线性结构表示数据元素之间一对多或多对一的关系。 (2)若进栈序列为l,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是_______。 A)1,4,3,2??? B)2,3,4,l C)3,1,4,2 ???D)3,4, 2,1 答案:C 评析:栈是一种后进先出表,选项c中,先出栈的是3,说明此时栈内必然有1,2,由于l先于2进栈,所以l不可能在2之前出栈,故选项C这种出栈序列是不可能的。 (3)排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为_______。 A)希尔排序??? B)冒泡排序??? C)插入排序??? D)选择排序 答案:A 评析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。 (4)在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为_______。 A)2??? ??B)3?????? C)4 ???????D)5 答案:C

评析:二分法查找是用关键码与线性表的中间元素比较,然后根据比较结果来判断是结束查找,还是在左边或者右边子表按相同的方法继续查找。本题中,与 ll比较的关键码分别为15,8,10,12四个。 (5)对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为_______。 A)n-1??? B)n??? C)n+l ?????D)2n 答案:C 评析:在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。 (6)在软件开发过程中,软件结构设计是描述_______。 A)数据存储结构?? ??B)软件体系结构??? C)软件结构测试??? D)软件控制过程 答案:B 评析:从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。概要设计(又称结构设计)将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。 (7)模块本身的内聚是模块独立性的重要性度量因素之一。在7类内聚中,具有最强内聚??? 的一类是_______。 A)顺序性内聚? ???B)过程性内聚? ????C)逻辑性内聚??? D)功能性内聚 答案:D 评析:内聚性是一个模块内部各元素间彼此结合的紧密程度的度量。内聚共有7类,它们之间的内聚性由弱到强排列顺序为:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚和功能内聚。 (8)数据存储和数据流都是_______,仅仅是所处的状态不同。 A)分析结果??? B)事件??? C)动作??? D)数据 答案:D 评析:数据流图有4种成分:源点或终点、处理、数据存储和数据流。数据存储是处于静止状态的数据,数据流是处于运动中的数据。 (9)数据的完整性是指数据的正确性、有效性和_______。 A)可维护性??? B)独立性??? C)安全性??? D)相容性

C语言习题及解答-2-1

C语言概述 一.选择题 1.下列选项中,合法的C语言关键字是 A) VAR B) cher C) integer D) default 2.请选出可用作C语言用户标识符的一组标识符____ A) Void define WORD B) a3_b3 _123 IF C) For -abc Case D) 2a Do sizeof 3.C语言提供的合法的数据类型关键字是____ A) Double B) short C) integer D) Char 4.在下列字符中,不可用作C语言标识符的是 A) water B) price C) a>b D) a12 5.一下叙述正确的是 A) C语言比其他高级高级 B) C语言可以不用编译就能被计算机识别执行 C) C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 D) C语言出现的最晚、具有其他语言的一切优点 6.在一个C语言程序中 A) main函数必须出现在所有函数之前 B) main函数可以在任何地方出现 C) main函数必须出现在所有函数之后 D) main函数必须出现在固定位置 7.下列符号不属于C语言保留字的是 A) if B) then C) static D) for 8.下列说法正确的是 A) 主函数名main是由程序设计人员按照“标识符”的命名规则来选取的 B) 分号和回车符都可以作为语句的结束符号 C) 在程序清单的任何地方都可以插入一个或多个空格符号 D) 程序的执行总是从主函数main()开始的 参考答案 1.D 2.B 3.B 4.C 5.C 6.B 7.B 8.D 数据类型与表达式 一.选择题 1. 下列字符序列中,不可用作C语言标识符的是()。 A)abc123 B)no.1 C)_123_ D)_ok 2. 正确的C语言标识符是()。 A)_buy_2 B)2_buy C)?_buy D)buy?

c语言试题及答案 ()

第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由

主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 37 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。

c语言常见笔试题总结

c语言常见笔试题总结 此句出自北宋诗人林逋的七律《山园小梅》,原诗为“众芳摇落独暄妍,占尽风情向小园。疏影横斜水清浅,暗香浮动月黄昏。霜禽欲下先偷眼,粉蝶如知合断魂。幸有微吟可相狎,不须檀板共金尊。” 【1 使用宏】 1.1 #ifdef NDEBUG now i will introduce myself briefly. i am 21 years old. i was born in heilongjiang province, northeast of china. i am a senior student at beijing xx university. my major is packaging engineering. and i will receive my bachelor degree after my graduation in june. in the past 4 years, i spend most of my time on study. i have passed cet4/6 with an ease. and i have acquired basic knowledge of packaging and publishing both in theory and in practice. besides, i have attended several packaging exhibition held in beijing. this is our advantage study here. moreover, i have taken a tour to some big factory and company. through these i have a deeply understanding of domestic packaging industry. 勤思考研解析:此题考查了初中生出现反抗心理的原因,有三个:自我意识高涨;独立意识增强;中枢神经系统的兴奋性过强,因此答案是C。 #define TRACE(S) S #else #define TRACE(S) printf(“%s;\n”, #S); S #endif 问:以上TRACE()宏的作用是什么? 1.2 #error的作用? 1.3 定义一个宏,求出给定数组中的元素的个数 人员绩效考评的成对比较法中,管理者只有在对每个员工与其他所有员工进行成对比较之后,才能得出对其业绩的总的评价结果。如某部门有五名员工,用该方法所需的总的成对比较次数为

C语言考试题库及答案,推荐文档(2)

C 语言理论上机考试选择题部分(共200 题) 1、下面程序的输出是___D ______ #include void main() { int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); } A) k=11,k=12,k=11 B) k=11,k=13,k=13 C) k=11,k=013,k=0xb D) k=11,k=13,k=b 2、在下列选项中,不正确的赋值语句是__D _______ A) ++t; B) n1=(n2=(n3=0)); C) k=i=j; D) a=b+c=1; 3、下面合法的C 语言字符常量是_______ A ____ . A) '\t' B) "A" C) 65 D) A 4、表达式: 10!=9 的值是________ D ___ . A) true B) 非零值C) 0 D) 1 5、C 语言提供的合法的数据类型关键字是 B . A) Double B) short C) integer D) Char 6、字符(char) 型数据在微机内存中的存储形式是 __D__. A) 反码B) 补码C) EBCDIC 码D) ASCII 码 7、 C 语言程序的基本单位是 ____ C _____ . A) 程序行B) 语句C) 函数D) 字符 &设int a=12,则执行完语句a+=a-=a*a后,a的值是 ___ D ___ A) 552 B) 264 C) 144 D) -264 9、执行下面程序中的输出语句后,输出结果是B__. #include void main() {int a; printf("%d\n",(a=3*5,a*4,a+5)); } A) 65 B) 20 C) 15 D) 10 10 、下面程序的输出是____ B _____ . {int x=023; printf("%d\n",--x); } A) 17 B) 18 C) 23 D) 24 11 、下面程序的输出的是_____ C ___ . #include void main() {int x=10,y=3; printf("%d\n",y=x/y); } A) 0 B) 1 C) 3 D) 不确定的值 12、已知字母A 的ASCII 码为十进制的65,下面程序的输出是_____ A ____ . #include void main() {char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2); } A) 67,D B) B,C C) C,D D) 不确定的值 13、若要求在if 后一对圆括号中表示a 不等于0 的关 系,则能正确表示这一关系的表达式为_______ D__. A) a<>0 B) !a C) a=0 D) a 14、以下程序的输出结果是____ D _____. #include void main() { int x=10,y=10; printf("%d %d\n",x--,--y); } A) 10 10 B) 9 9 C) 9 10 D) 10 9 15、设有如下定义: int x=10,y=3,z; 则语句 printf("%d\n",z=(x%y,x/y)); 的输出结果是____ D ____ . A) 1 B) 0 C) 4 D) 3 16、为表示关系x > y > z,应使用C语言表达式 ___A___. 17、 C 语言中非空的基本数据类型包括_____ B ___ . A) 整型,实型,逻辑型B) 整型,实型,字符型 C) 整型,字符型,逻辑型 D) 整型,实型,逻辑型,字符型 #include void main() A) (x>=y)&&(y>=z) C) (x>=y>=z) B) (x>=y)AND(y>=z) D) (x>=y) & (y>=z)

相关文档