c语言作业求答案

c语言作业求答案,第1张

学生的“程序设计”课程成绩可以因为在大赛上获奖而加分:一等奖加10分,二、三等奖均加五分,其它的不加分。加分后的成绩如果超出100分则按100分计算。编写程序,输入同学的“程序设计”成绩和获奖等级,重新计算该同学的“程序设计”成绩。

#include <stdioh>

int main()

{ int x,j;

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

if(j==1)x+=10;

if(j==2||j==3)x+=5;

if(x>100)x=100;

printf("%d\n",x);

return 0;

}

程序:

/

让用C语言弄一个程序设计大赛N个人

1,输入名、成绩

2,输出冠亚季军

3计算输出N个人的平均成绩

4输出大于平均成绩的学生资料

大于85分 及个人!

/

#include<stdioh>

#define N 100

struct competitor

{

char name[12];

int score;

}com[N];

void main()

{

int i,n,flag=0;

float avg=00;

int max,second;

printf("输入参赛人数:");

scanf("%d",&n);

for(i=0;i<n;i++)//输入名、成绩

{

printf("\n\n输入第%d个参赛者信息\n",i+1);

printf("姓名:");

scanf("%s",com[i]name);

printf("分数:");

scanf("%d",&com[i]score);

avg+=com[i]score;

}

avg=avg/n;

max=com[0]score;

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

if(com[i]score>max){max=com[i]score;flag=i;}

printf("\n\n冠军名字:%s\t冠军分数:%d\n",com[flag]name,com[flag]score);

second=com[0]score;

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

{

if(i==flag)continue;

if(com[i]score>second){second=com[i]score;flag=i;}

}

printf("\n\n亚军名字:%s\t亚军分数:%d\n",com[flag]name,com[flag]score);

printf("\n%d个选手的平均成绩:%2f\n",n,avg);

printf("\n\n大于平均成绩的学生资料\n");

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

{

if(com[i]score>avg)printf("学生名字:%s\t学生分数:%d\n",com[i]name,com[i]score);

}

printf("\n\n大于平85分的学生资料\n");

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

{

if(com[i]score>85)printf("学生名字:%s\t学生分数:%d\n",com[i]name,com[i]score);

}

}

结果:

输入参赛人数:20

输入第1个参赛者信息

姓名:rong

分数:95

输入第2个参赛者信息

姓名:eing

分数:86

输入第3个参赛者信息

姓名:xing

分数:94

输入第4个参赛者信息

姓名:xing2

分数:78

输入第5个参赛者信息

姓名:xingsa

分数:183

输入第6个参赛者信息

姓名:sinx

分数:24

输入第7个参赛者信息

姓名:xinss

分数:96

输入第8个参赛者信息

姓名:xinsss

分数:87

输入第9个参赛者信息

姓名:xinsaq

分数:75

输入第10个参赛者信息

姓名:xinw

分数:71

输入第11个参赛者信息

姓名:xiqw

分数:84

输入第12个参赛者信息

姓名:xiqwe

分数:67

输入第13个参赛者信息

姓名:shi

分数:67

输入第14个参赛者信息

姓名:xisnig

分数:38

输入第15个参赛者信息

姓名:ix

分数:83

输入第16个参赛者信息

姓名:xis

分数:39

输入第17个参赛者信息

姓名:si

分数:76

输入第18个参赛者信息

姓名:singgg

分数:76

输入第19个参赛者信息

姓名:siw

分数:76

输入第20个参赛者信息

姓名:si

分数:94

冠军名字:xingsa 冠军分数:183

亚军名字:xinss 亚军分数:96

20个选手的平均成绩:7945

大于平均成绩的学生资料

学生名字:rong 学生分数:95

学生名字:eing 学生分数:86

学生名字:xing 学生分数:94

学生名字:xingsa 学生分数:183

学生名字:xinss 学生分数:96

学生名字:xinsss 学生分数:87

学生名字:xiqw 学生分数:84

学生名字:ix 学生分数:83

学生名字:si 学生分数:94

大于平85分的学生资料

学生名字:rong 学生分数:95

学生名字:eing 学生分数:86

学生名字:xing 学生分数:94

学生名字:xingsa 学生分数:183

学生名字:xinss 学生分数:96

学生名字:xinsss 学生分数:87

学生名字:si 学生分数:94

Press any key to continue

一、单选题(共60小题,每题1分,共60分)

1 执行下列程序中的输出语句后,x的值是______。(知识点310)

main()

{int x ;

printf(“%d\n”,(x=56,x2,x+20));}

A)30 B)60 C)50 D)80

2 下列程序的输出结果是_______。(知识点38)

main()

{int x=1,y=0,z;

z=(x<=0)&&(y- ->=0);

printf(“%d %d% d%\n”,z,x,y) ;}

A)0 -1 -1 B)0 -1 0 C)0 1 0 D)0 1 -1

3 在C语言中,下列选项属于合法的长整型常数的是_______。(知识点33)

A)0L B)1234567 C)00234567 D)314159e3

4 下列选项中属于不正确的赋值语句的是_____。 (知识点36)

A)t++; B)n1=(n2=(n3=0)); C)k=i= =j; D)a=b,c=1;

5 若有定义:int a,b;char x,y;并有以下输入数据: 14 22 XxYy (回车)

则能给a赋整数14,给b赋整数22,给x赋字符x,给y赋字符y的正确程序段是________。 (知识点42)

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

x=getchar();y=getchar();

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

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

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

6 下列转义字符不正确的是_______。(知识点3 5)

A)’\\’ B)’\’ C)’\053’ D)’\0’

7 下列选项可作为C语言赋值语句的是_______。(知识点42)

A)x=3,y=5 B)a=b=6 C)i- -; D)y=int(x);

8 当c的值不为0时,下列选项中能正确将c的值赋给变量a、b的是_______。(知识点52)

A)c=b=a; B)(a=c)‖(b=c); C)(a=c)&&(b=c); D)a=c=b;

9 有以下程序:

main()

{ unsigned int a ;

int b=-1;

a=b;

printf(“%u”,a);}

该程序运行后的输出结果是_______。(知识点45)

A)-1 B)65535 C)32767 D)-32768

10 若x、b、m、n均为int型变量,执行下面语句后b的值为_______。(知识点310)

m=20;n=6;

x=(- -m= =n++)?- -m:++n;

b=m++;

A)11 B)6 C)19 D)18

11 有以下程序:

main()

{ int a=111,b=222;

printf(“%d\n”,a,b);

}

该程序运行后的输出结果是_______。(知识点45)

A)错误信息 B)111 C)222 D)111,222

12 以下程序的输出结果是_______。(知识点45)

main()

{ int a=2,c=5;

printf(“a=%%%d,b=%%%d\n”,a,c);}

A) a=%2,b=%5 B) a=2,b=5 C) a=%%%d,b=%%%d D) a=%%d,b=%%d

13 对于浮点型变量f,能实现对f中的值在小数点后第三位进行四舍五入的表达式是_______。(知识点38)

A)f=(f100+05)/1000 B)f=(f100+05)/100

C)f=(int)(f100+05)/1000 D)f=(f/100+05)100

14 设 a=5, b=6, c=7, d=8, m=2, n=2, 执行(m=a>b)&&(n=c>d) 后m,n的值为______。(知识点52)

A) 2,2 B) 2,0 C) 0,2 D) 0,0

15 语句printf(“%d\n”,strlen(“asd\n\x12\1\\”));的输出结果是______。(知识点73)

A) 9 B) 11 C) 7 D) 8

16 有以下程序:

main( )

{

int y=1234;

printf(“y=%6d”,y);

printf(“y=%+06d\n”,y);

}

该程序的运行结果是______。(知识点45)

A) y= 1234y=001234 B) y= 1234y=+01234

C) y=1234y=+01234 D) y= 1234y=1234

17 语句:printf(“%d”, !9);的输出结果是______。(知识点52)

A) 0 B) 1 C) 有语法错误 ,不能执行 D) -9

18 已有定义语句:int x=6,y=4,z=5;执行以下语句后,能正确表示x、y、z值的选项是______。(知识点53)

if(x<y)z=x;x=y ;y=z;

A) x=4,y=5,z=6 B) x=4,y=6,z=6

C) x=4,y=5,z=5 D) x=5,y=6,z=4

19 下列选项中属于正确的switch语句的是______。(知识点54)

A)switch(10) B)swicth(1)

{ case 10 :printf(“A\n”); { case 1 :printf(“A\n”);

case 20 :printf(“B\n”); } case 2 :printf(“B\n”);}

C)switch((int)(10+25)) D)switch(“a”);

{ case 1 :printf(“A\n”); { case “a” :printf(“A\n”);

case 1+2 :printf(“B\n”);} case “b” :printf(“B\n”);}

20 若k为int型变量,以下语句段执行后的输出结果是______。(知识点53)

k=-3;

if(k<=0) printf(“####”)

else printf(“”);

A) #### B) C) #### D) 有语法错误 ,不能执行

21 当a=2,b=3,c=4,d=5时, 执行下面一段程序后x的值为_____。(知识点53)

if(a>b)

if(c<d)x=1 ;

else

if(a<c)

if(b>d)x=2 ;

else x=3 ;

else x=4 ;

else x=5 ;

A)2 B)3 C)4 D)5

22 下列程序的运行结果是________。(知识点63)

main()

{ int y=10;

do { y- - ;} while(- -y);

printf(“%d\n”,y- -);}

A)-1 B)1 C)8 D)0

23 下列程序的运行结果是________。(知识点65)

# include <stdioh>

main()

{

int i ;

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

{ if(i %2)printf(“”);

else continue ;

printf(“#”);

}

printf(“$\n”);

}

A)##$ B)###$ C)###$ D)#$

24 若x是int型变量,且有下面的程序片段: (知识点65)

for(x=5;x<8;x++)

printf((x%2)?(“%d”):(“##%d\n”),x);

该程序片段的输出结果是 _______。

A)5##6 B)##5 C)##56##7 D)5##67

7 6##7

25 有以下程序:

main()

{int a=1,b=0;

switch(a)

{ case 1:switch(b)

{ case 0:printf(“”);break ;

case 1:printf(“####”);break ; }

case 2: printf(“$$$$”);break ; }

该程序的输出结果是________。(知识点54)

A) B)$$$$ C)####$$$$ D) ####$$$$

26 下列程序段的输出结果是_______。(知识点64)

int x=3;

do {printf(“%3d”,x-=2);}

while(!(--x));

A)1 B)3 0 C)1 -2 D)死循环

27 有以下程序,其中x、y为整型变量;

for(x=0,y=0;(x<=1)&&(y= 1);x++,y--);

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

该程序的输出结果是_____。(知识点65)

A)x=2,y=0 B) x=1,y=0 C) x=1,y=1 D) x=0,y=0

28 有以下程序段:

int n=0,p;

do { scanf(“%d”,&p);n++;} while(p!=12345&&n<3);

此处do-while循环的结束条件是_____。(知识点64)

A)p的值不等于12345并且n的值大于3

B)p的值等于12345并且n的值大于等于3

C)p的值不等于12345或者n的值小于3

D)p的值等于12345或n的值大于等于3

29 在下述程序中,if (i>j) 语句共执行的次数是_____。(知识点65)

main()

{ int i=0,j=10,k=2,s=0;

for(;;)

{ i+= k ;

if(i>j)

{ printf(“%d”,s);

break ;

}

s+=i ;

}

}

A)4 B)7 C)5 D)6

30 以下程序的功能是:按顺序读入10名学生和4门课程的成绩,计算出每位学生的平均分进行输出,但运行结果不正确。

main()

{ int n,k;float score,ave;

ave=00;

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

{ for(k=1;k<=4;k++)

{ scanf(“%f”,&score);

ave+=score/4 ;}

printf(“NO%d:%f\n”,n,ave);}

}

造成程序计算结果错误的语句行是_____。(知识点66)

A)ave=00; B)for(n=1;n<=10;n++)

C)ave+=score/4 ; D)printf(“NO%d:%f\n”,n,ave);

31 若有以下定义:char s[10]={‘a’,’b’,’c’,’0’,’\0’,’2’,’\x32’,’\0’};执行语句printf(“%d”,strlen(s));的结果是_____。(知识点73)

A)3 B)4 C)8 D)10

32 设有数组定义:char array[ ]=“abcdef”;则数组array所占的空间为_____。(知识点73)

A)4个字节 B)5个字节 C)6个字节 D)7个字节

33 有以下程序:

main()

{ char str[ ][10]={“China”,“Beijing”},p=str;

printf(“%s\n”,p+10);}

该程序运行后的输出结果是_____。(知识点104)

A)China B)Beijing C)ng D)ing

34 阅读下面程序,该程序段的功能是_____。(知识点71)

#include <stdioh>

main()

{ int c[ ]={23,1,56,234,7,0,34},i,j,t;

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

{ t=c[i];j=i-1;

while(j>=0&&t>c[j]) { c[j+1]=c[j];j- - ;}

c[j+1]=t;}

for(i=0;i<7;i++)printf(“%d ”,c[i] );

putchar(’\n’);

}

A)对数组元素的升序排列 B)对数组元素的降序排列

C)对数组元素的倒序排列 D)对数组元素的随机排列

35 下列程序的输出结果是_____。(知识点72)

main()

{ int n[3][3],i,j;

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

for(j=0;j<3;j++)n[i][j]=i+j;

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

for(j=0;j<2;j++)n[i+1][j+1]+= n[i][j];

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

}

A)14 B)0 C)6 D)值不确定

36 下列函数调用语句中含有______个参数。(知识点83)

func((f1,f2),(f2,f3,f4),f5)

A)3 B)4 C)5 D)6

37 下列程序的运行结果是_______。(知识点73)

#include <stringh>

main()

{ char p1,p2,ch[20]=“ABCDEFabcdef”;

p1=“1234”;p2=“abcd”;

strcpy(ch+1,p2+1);strcpy(ch+3,p1+3);

pintf(“%s\n”,ch);}

A)Abc4EFabcde B)Abc4EF C)AbcdEF D)Abc4

38 下列程序的运行结果是_______。(知识点86)

# include <stdioh>

int f(int a)

{ switch (a)

{ case 0:return 0;

case 1:case 2:return 1;

}

return(f(a-2)+f(a-3));

}

main()

{ int b;

b=f(10);

printf(“b=%d\n”,b);

}

A) 12 B)10 C)9 D)8

39 有以下程序:

fun(int n)

{ if(n= =1|| n= =2)return 2;

return s=n-fun(n-2);}

main()

{printf(“%d\n”,fun(7));}

该程序运行后的输出结果是_____。(知识点86)

A) 1 B)2 C)3 D)4

40 下列程序中函数sort的功能是对a数组中的数据进行由大到小的排序:

void sort(int a[ ],int n)

{ int i,j,t;

for(i=0;i<n-1;i++)

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

if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}

}

main()

{ int aa[10]={1,2,3,4,5,6,7,8,9,10 },i;

sort(&aa[3],5);

for(i=0;i<10;i++)printf(“%d,”,aa[i]);

printf(“\n”);

}

该程序运行后的输出结果是_____。(知识点84)

A)1,2,3,4,5,6,7,8,9,10, B)10,9,8,7,6,5,4,3,2,1,

C)1,2,3,8,7,6,5,4,9,10, D)1,2,10,9,8,7,6,5,4,3,

41 下列程序的运行结果是_____。(知识点83)

main()

{ int a=3,y;

y=fn(a,a++);

printf(“%d”,y);}

int fn(x,c)

{ int b;

if(x<c)b=1;

else if(x= =c)b=0;

else b=-1 ;

return(b);

}

A)3 B)-1 C)1 D)0

42 下列程序的运行结果是_____。(知识点73)

main()

{ char arr[2][4];

strcpy(arr,“you”);strcpy(arr[1],“me”);

printf(“%s\n” ,arr);}

A)you me B)you C)me D)arr

43 下列程序的输出结果是_____。(知识点88)

int f()

{ static int i=0;

int s=1;

s+=i;i++;

return s;}

main()

{ int i , a=0;

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

printf(“%d\n”,a);}

A)20 B)24 C)25 D)15

44 程序中对fun函数有如下说明:

void fun();

此说明的含义是_____。(知识点106)

A) fun函数无返回值

B) fun函数的返回值可以是任意的数据类型

C) fun函数的返回值是无值型的指针类型

D) 指针fun指向一个函数,该函数无返回值

45 设有下列定义:static int x,p=&x,q;

scanf(“%d,%d”,p,q);

若输入3,4,则x的值为_____。(知识点88)

A)3 B)4 C)0 D)无法确定

46 设有以下程序:

int fun(char s)

{ int n=0;

while(s){ n++;s++ ;}

return n ;}

main()

{char y[ ]=“this_is_an_example。”;

printf(“%d\n”,fun(&y[6]));

}

该程序的输出结果是_____。(知识点:104)

A)12 B)13 C)14 D)16

47 下列程序的功能是_____。(知识点:104)

int fun(char a)

{ char b=a;

while(b)b++;

{return b-a ;}

}

A) 比较两个字符串的大小 B)字符串的复制

C) 计算字符串的长度 D) 字符串的连接

48 下列程序的输出结果是_______。(知识点102)

main()

{

int k=3,m=5,n=7;

int pk=&k,pm=&m,p;

(p=&n)=pk(pm);

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

}

A)5 B)7 C)15 D)21

49 下列程序的执行结果是_______。(知识点103)

main()

{ char a[10]={9,8,7,6,5,4,3,2,1,0},p=a+5;

printf(“%d”,--p);}

A)非法 B)a[4]的地址 C)5 D)4

50 以下函数返回a所指的数组中最小值所在的下标值:

fun(int a, int n)

{ int i , j=0 , p ;

p=j ;

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

if(a[i]<a[p]) _______ ;

return(p);}

在下划线处应填入_______。(知识点102)

A)i=p B)a[p]=a[i] C)p=j D)p=i

51 下列程序的运行结果是_______。(知识点102)

void fun(int a,int b)

{ int k;

k=a;a=b;b=k;}

main()

{ int a=3,b=6,x=&a,y=&b;

fun(x,y);

printf(“%d %d”,a,b);

}

A)6 3 B)3 6 C)编译出错 D)0 0

52 有如下程序:

#define f(x)xx

main()

{ int i ;

i=f(4+4)/(2+2);

printf(“%d\n”,i);}

该程序执行后的输出结果是_______。(知识点91)

A)28 B)21 C)16 D)4

53 下列程序的输出结果是_______。(知识点114)

struct tt;

{ int n1;char n2;float n3;

union uu{int u1[2];char u2[2];}su;

};

main()

{printf(“%d\n”,sizeof(struct tt));}

A)11 B)12 C)7 D)9

54 下列程序的输出结果是_______。(知识点116)

struct LH

{ int n;struct LH m;}p[4];

main()

{ int i;

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

{p[i]n=i;p[i]m=&p[i+1];}

p[i]m=p;

printf(“%d,%d\n”,(p[1]m)->n,p[3]m->n);

}

A)1,2 B)1,3 C)2,0 D)程序出错

55 下列程序的输出结果是_______。(知识点116)

struct st

{ int x;int y;}p;

int dt[4]={10,20,30,40};

struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};

main()

{ p=aa;

printf(“%d ”,++p->x);

printf(“%d ”,(++p)->x);

printf(“%d ”,++(p->y));}

A)10 20 20 B)50 60 21 C)51 60 21 D)60 70 31

56 字符0的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的执行结果是_______。(知识点118)

#include <stdioh>

main()

{ union

{ int i[4];

long k;

char c[6];

}a,s=&a ;

s->i[0]=0x39;

s->i[1]=0x38;

printf(“%c\n”,s->c[0]);

}

A)5 B)3 C)6 D)9

57 下列程序的运行结果是_______。(知识点122)

main()

{ unsigned c1=0xff,c2=0x00;

c1=c2|c1>>2;c2=c1^0236;

printf(“%x,%x\n”,c1,c2);

}

A)0x3f,0XA1 B)3f,A1 C)ffff,61 D)3f,a1

58 若有运算符<<,sizeof,^,&=,则它们按优先级由高至低的排列次序正确的是_______。(知识点38)

A)sizeof,&= , <<, ^ B)sizeof,<<, ^,&=

C)^,<<,sizeof, &= D)<<,^,&=,sizeof

59 有以下程序:

#include <stdioh>

void fun(char fname,char st)

{ FILE myf;int i;

myf=fopen(fname,“w”);

for(i=0;i<strlen(st);i++)fputc(st[i],myf);

fclose(myf);

}

main()

{ fun(“testt”,“new world”);fun(“testt”,“hello,”);}

执行该程序后,文件testt中的内容是_______。(知识点134)

A)hello, B)new worldhello, C)new world D)hello,rld

60 有以下程序:

#include <stdioh>

main()

{ FILE fp;int i=20,j=30,k,n;

fp=fopen(“d1dat”,“w”);

fprintf(fp,“%d\n”,i);fprintf(fp,“%d\n”,j);

fclose(fp);

fp=fopen(“d1dat”,“r”);

fscanf(fp,“%d%d”,&k,&n);printf(“%d %d\n”,k,n);

fclose(fp);}

该程序运行后的输出结果是_______。(知识点134)

A)20 30 B)20 50 C)30 50 D)30 20

竞赛规则 本次大赛提供大赛专用考试系统。参赛选手必须按各分赛区规定的时间参加大赛,分赛区统一开赛,准时交卷。 大赛采用封闭集中的组织方式,在各赛区制定考点进行。比赛期间,选手需独立完成比赛任务。总决赛在北京集中进行。 奖项设置 1 选拔赛 (1)参赛选手奖 选拔赛每个组别设置一、二、三等奖及优胜奖,其中三等奖及以上获奖比例为实际参赛人数的50%,另根据考试成绩,设置一定比例的优胜奖。选拔赛一、二等奖选手获得直接进入全国总决赛资格。 所有获奖选手均可获得由工业和信息化部人才交流中心及大赛组委会联合颁发的获奖证书,三等奖及以上获奖比例为实际参赛人数的50%。 (2)指导教师奖 选拔赛中获奖的参赛选手的指导教师,将获得“全国软件专业人才设计与开发大赛(XX 赛区)优秀指导教师”称号。 (3)参赛学校奖 参赛组织工作表现突出、经审批符合相关条件的单位,将获“全国软件专业人才设计与开发大赛(XX 赛区)优秀组织单位”称号; 参赛选手成绩优异、经审批符合相关条件学校,将获“全国软件专业人才设计与开发大赛(XX赛区) 优胜学校”称号。 2 总决赛 全国总决赛按参赛项目和成绩,为获奖学生、教师和组织单位颁发相应证书和奖励。其中: (1)参赛选手奖 JAVA软件开发、C语言程序设计大赛根据相应组别分别设立特、一、二、三等奖及优胜奖。 在决赛奖项设置中,每个组别设置特等奖一名,一等奖不高于5%,二等奖占20%,三等奖不低于25%,优胜奖50%。 所有获奖选手均可获得由工业和信息化部人才交流中心及大赛组委会联合颁发的获奖证书及奖品,并可参加由大赛主办单位组织的名企招聘会,享受名企优先录用待遇。 总决赛三等奖及以上选手,如果获得本校免试推研资格,将获得北京大学软件与微电子学院的面试资格,并优先录取为该院普通硕士研究生。 (2)指导教师奖 所有获奖选手的指导教师,均可获得“全国软件专业人才设计与开发大赛优秀指导教师”证书,大赛组委会还将为决赛二等奖及以上选手指导教师颁发相应奖金。 特等奖选手指导教师:奖金5000元/人; 一等奖选手指导教师:奖金2000元/人; 二等奖选手指导教师:奖金1000元/人。 (3)参赛学校奖 参赛组织工作成绩突出、经审批符合相关条件的单位,获“全国软件专业人才设计与开发大赛优秀组织单位”称号; 参赛选手成绩优异、经审批符合相关条件的学校获“全国软件专业人才设计与开发大赛优胜学校”称号。

求**这块面积是吧

首先进行一个判断

L/H>=d/D,那么顶面完全黑暗;然后开始着手部分被照亮的情况。

已经知道的是圆柱体侧面积为DpiH;

顶部面积为 D^2/4pi

阴影部分面积:d^2/4pi(H/(H-L))^2        前提L/H <= d/D

我先带入算一下是不是284:

侧面积=DpiH=276;

顶部面积=D^2/4pi=50;

阴影部分面积:d^2/4pi(H/(H-L))^2=42;

经过计算276+50-42=284;理论正确之后我们开始加入代码:

#include&lt;stdioh&gt;

#include&lt;mathh&gt;

#define pi 314

struct circle

{

int H,D,d,L;//定义好4个数据

int Bigarea();//顶部圆面积

int smallarea();//阴影面积

int cearea();//圆柱侧面积

bool barea();//直接测试阴影是否全部挡住了顶部

circle()

{

H=0;D=0;d=0;L=0;

}//构造函数

void setcircle(int,int,int,int);

};

int main()

{

circle A;//创建类A

int H,D,L,d;

printf("请输入圆柱体的高H:");

scanf("%d",&amp;H);

while(!(H&lt;1001&amp;&amp;H&gt;0))

{

printf("圆柱体的高必须是0到1001之间,请重新输入:");

scanf("%d",&amp;H);

}

printf("请输入圆柱体的直径D:");

scanf("%d",&amp;D);

while(!(D&lt;1001&amp;&amp;D&gt;0))

{

printf("圆柱体的直径必须是0到1001之间,请重新输入:");

scanf("%d",&amp;D);

}

printf("请输入绳子长度L:");

scanf("%d",&amp;L);

while(!(L&lt;1001&amp;&amp;L&gt;0&amp;&amp;L&lt;H))

{

printf("绳子的长度必须是0到1001之间,并且比大圆的高H要小请重新输入:");

scanf("%d",&amp;L);

}

printf("请输入小圆直径d:");

scanf("%d",&amp;d);

while(!(d&lt;1001&amp;&amp;d&gt;0&amp;&amp;d&lt;D))

{

printf("圆环半径必须是0到1001之间,并且比大圆D要小请重新输入:");

scanf("%d",&amp;d);

}

printf("确认:您输入的数据为:圆柱高度%d,底面直径:%d, 绳子长度:%d ,小圆直径:%d\n",H,D,L,d);

Asetcircle(H,D,d,L);

if ( Abarea())

{

int mianji=ABigarea()+Acearea()-Asmallarea();

printf("您输入的数据处理结果为:%d",mianji);

}

else

{

printf("您输入的数据处理结果为:顶部完全被阴影所遮挡住了!\n");

}

}

int circle::Bigarea()

{

return (D/2)(D/2)pi;

}

int circle::smallarea()

{

return (d/2)(d/2)piHH/(H-L)/(H-L);

}

int circle::cearea()

{

return piDH;

}

void circle::setcircle(int a,int b,int c,int d)

{

H=a;D=b;this-&gt;d=c;L=d;

}

bool circle::barea()

{

if(L/H &lt; d/D)

return true;

else

return false;

}本来想在修改一下,结果已经提交的代码不能改,你先复制过去运行一下看看,我都已经注释了、

以上就是关于c语言作业求答案全部的内容,包括:c语言作业求答案、C语言高手来解答!、第五届全国ITAT教育工程就业技能大赛C语言程序设计预赛试题及答案谁有啊 请各位帮帮忙啊,急急急!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9871639.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存