公共选修课复习题.docx

上传人:b****0 文档编号:10132306 上传时间:2023-05-23 格式:DOCX 页数:26 大小:22.39KB
下载 相关 举报
公共选修课复习题.docx_第1页
第1页 / 共26页
公共选修课复习题.docx_第2页
第2页 / 共26页
公共选修课复习题.docx_第3页
第3页 / 共26页
公共选修课复习题.docx_第4页
第4页 / 共26页
公共选修课复习题.docx_第5页
第5页 / 共26页
公共选修课复习题.docx_第6页
第6页 / 共26页
公共选修课复习题.docx_第7页
第7页 / 共26页
公共选修课复习题.docx_第8页
第8页 / 共26页
公共选修课复习题.docx_第9页
第9页 / 共26页
公共选修课复习题.docx_第10页
第10页 / 共26页
公共选修课复习题.docx_第11页
第11页 / 共26页
公共选修课复习题.docx_第12页
第12页 / 共26页
公共选修课复习题.docx_第13页
第13页 / 共26页
公共选修课复习题.docx_第14页
第14页 / 共26页
公共选修课复习题.docx_第15页
第15页 / 共26页
公共选修课复习题.docx_第16页
第16页 / 共26页
公共选修课复习题.docx_第17页
第17页 / 共26页
公共选修课复习题.docx_第18页
第18页 / 共26页
公共选修课复习题.docx_第19页
第19页 / 共26页
公共选修课复习题.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

公共选修课复习题.docx

《公共选修课复习题.docx》由会员分享,可在线阅读,更多相关《公共选修课复习题.docx(26页珍藏版)》请在冰点文库上搜索。

公共选修课复习题.docx

公共选修课复习题

公共选修课“C语言程序设计”复习题

1.温度转换

背景:

经常出国旅行的驴友都知道,需要时时了解当地的气温状况,但不少国家采用了不同的温度计量单位:

有些使用华氏温度标准(F),有些使用摄氏温度(C)。

现在,请你根据温度转换公式设计一个温度转换程序,可以进行温度转换。

如果输入摄氏温度,显示转换的华氏温度;如果输入华氏温度,显示转换的摄氏温度。

温度转换的公式为:

F=(C×9/5)+32;C=(F-32)×5/9;式中F--华氏温度,C--摄氏温度。

编程:

输入:

第一个数据(1或2)确定转换的类型:

华氏转摄氏

(1);摄氏转华氏

(2);

第二个数据是相应需要转换的温度值。

输出:

相应的转换后的温度值(保留小数点后2位)。

#include

voidmain()

{

intlx;

doublef,c;

scanf("%d",&lx);

if(lx==1){

scanf("%lf",&f);

c=(f-32)*5/9;

printf("TheCentigradeis%.2f\n",c);

}

else{

scanf("%lf",&c);

f=(c*9/5)+32;

printf("TheFahrenheitis%.2f\n",f);

}

}

2.分段函数

有一分段函数,y=f(x)。

当x小于6时,y=x-12;

当x大于等于6且小于15时,y=3x-1;

当x大于等于15时,y=5x+9.

编程:

从键盘上输入一个整数x,输出对应的y值。

#include

voidmain()

{

intx,y;

scanf("%d",&x);

if(x<6)

y=x-12;

elseif(x<15)

y=3*x-1;

else

y=5*x+9;

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

return0;

}

3.整数位数判断

输入一个不多于5位的正整数,要求编写程序:

(1)求它是几位数,并输出;

(2)逆序打印出各位数字。

#include

#include

#defineSIZE5

int

main(void)

{

intbit_count;//位数

longintinput_num;//输入数

intresult[SIZE];//存放各个位的数

inti;

scanf("%ld",&input_num);

if(input_num<0||input_num>99999){

printf("Invalidinput\n");

exit

(1);

}

for(bit_count=0;input_num;++bit_count){

result[bit_count]=input_num%10;

input_num/=10;

}

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

for(i=0;i

printf("%d",result[i]);

printf("\n");

exit(0);

}

4.四位数拆分

编程:

输入一个四位数,判断千位、百位、十位和个位数字之和是否为偶数,如果是,则输出Yes,如果不是,则输出No;如果不是四位数,则输出Invaliddata。

#include

voidmain()

{

intx,a,b,c,d,e;

scanf("%d",&x);

if(x/1000<1||x/10000>=1)

printf("Invaliddata\n");

else{

a=x/1000;

b=x%1000/100;

c=x%1000%100/10;

d=x%1000%100%10;

e=(a+b+c+d)%2;

if(e==0)

printf("Yes\n");

else

printf("No\n");

5.花多少钱买衣服

周末商场促销呢,某品牌服装既可以买套装,也可以买单件。

若买的不少于50套,每套80元;不足50套的每套90元,只买上衣每件60元,只买裤子每条45元。

编写程序,输入计划购买的上衣数量a和裤子的数量b,计算并输出应该付的款m。

#include

voidmain()

{

inta,b,y;

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

if(b<=a&&b<50)

y=90*b+(a-b)*60;

if(b<=a&&b>=50)

y=80*b+(a-b)*60;

if(a

y=90*a+(b-a)*45;

if(a=50)

y=80*a+(b-a)*45;

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

}

6.到邮局去寄包裹

你去邮局给朋友寄礼物。

发现邮局对邮寄包裹的费用是这样规定的:

如果包裹长宽高任意一个尺寸超过1米,或重量超过30千克,不予邮寄;对可以邮寄的包裹每件收手续费0.2元,不同重量的邮资按下表计算:

重量(千克)

收费标准(元)

小于10

0.80

大于等于10但不超过20

0.75

大于等于20但不超过30

0.70

编写程序,输入包裹的长、宽、高尺寸和重量,输出所需的邮资(输出结果中包含两位小数即可),超出尺寸或重量的输出"Error”.

#include

voidmain()

{

floata,b,c,m,y;

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

if(a>1||b>1||c>1||m>30)

printf("Error\n");

else{

if(m<10)

y=0.80*m+0.2;

elseif(m<20)

y=0.75*m+0.2;

else

y=0.70*m+0.2;

printf("%.2f\n",y);

}

}

7.输出星期几的英文表示

输入用数字(1--7)表示的星期几,输出星期几的英文表示,输入的数字有误,输出单词"Error(回车)"。

#include

voidmain()

{

inta;

scanf("%d",&a);

switch((int)(a))

{

case1:

printf("Monday\n");break;

case2:

printf("Tuesday\n");break;

case3:

printf("Wednesday\n");break;

case4:

printf("Thursday\n");break;

case5:

printf("Friday\n");break;

case6:

printf("Saturday\n");break;

case7:

printf("Sunday\n");break;

default:

printf("Error\n");

}

}

8.输出一行星号

编写程序在一行中输出N个星号。

输入:

N值

输出:

一行中N个星号

#include

intmain()

{

intn,i;

scanf("%d",&n);

for(i=0;i

putchar('\n');

return0;

}

9.最大公约数

输入两个正整数m和n,求它们的最大公约数和最小公倍数

比如,输入m和n的值分别为14和21,则最大公约数为7,最小公倍数为42。

#include

voidmain()

{

intm,n,i,j;

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

for(i=m;i>=1;i--)

{

if(n%i==0&&m%i==0)

{printf("thegreatestcommondivisoris%d\n",i);break;

}

}

for(j=m;;j++)

{

if(j%m==0&&j%n==0)

{printf("theleastcommonmultipleis%d\n",j);break;

}

}

}

10.水仙花数

输出所有的水仙花数。

所谓的水仙花数是指一个3位数,其各位数字立方和等于该数本身。

例如153是一水仙花数,因为153=13+53+33

输出语句:

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

#include

voidmain()

{

intn,i,j,k;

for(n=100;n<=999;n=n+1)

{

i=n/100;//取出n的百位数

j=(n/10)%10;//取数n的十位数

k=n%10;//取出n的个位数

if(n==i*i*i+j*j*j+k*k*k)

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

}

}

11.完数

一个数如果恰好等于它的因子之和,这个数就称为完数。

例如,6的因子为1,2,3,且6=1+2+3,因此6是完数,从键盘上输入一个正整数,判断其是否为完数。

如果是,则按照如下格式输出。

比如,输入6,则输出Yes,itsfactorsare123;如果输入8,则输出No

#include

#include

intmain()

{

intn,i,c,sum=0;

scanf("%d",&n);

for(i=1;i

{

if(n%i==0)

sum=sum+i;

}

if(n==sum)

{

printf("Yes,itsfactorsare");

for(c=1;c

{

if(n%c==0)

printf("%d",c);

}

printf("\n");

}

else

printf("No\n");

}

12.素数

输入两个正整数m和n,求出[m,n]区间的所有素数

#include

#include

voidmain()

{intm,n,i,j,k;

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

for(i=m;i

{k=sqrt(i);

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

if(i%j==0)

break;

if(j>k)

printf("%d",i);

}

printf("\n");

}

13.找出最大素数

素数是指一个只能被1和它本身整除的数,在数论中占有重要的研究地位,在当代密码学中也被广泛应用。

输入:

取值范围

输出:

该范围内的最大素数

#include

intmain()

{

inta,i,j;

scanf("%d",&a);

for(i=a;i>1;i--)

{

for(j=2;j

{

if(i%j==0)

break;

}

if(j==i)

{

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

break;

}

}

}

选做5.18求亲密数

若正整数A的全部约数(包括1,不包括A本身)之和等于B;且整数B的全部约数(包括1,不包括B本身)之和等于A,则A、B为亲密数。

编程,输入正整数A,输出亲密数A,B(A<=B),若不存在亲密数,则输出Nooutput。

例如:

220和284就是一对亲密数。

220的约数是:

1、2、4、5、10、11、20、22、44、55、110,约数之和是284;284的约数是:

1、2、4、71、142,约数之和是220。

#include

#include

intmain()

{

intn,a,b=0,c=0;

scanf("%d",&n);

for(a=1;a

{

if(n%a==0)

{

b=a+b;

}

}

for(a=1;a

{

if(b%a==0)

{

c=c+a;

}

}

if(n==c)

{

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

}

else

{

printf("Nooutput\n");

}

return0;

}

选做5.19高次方的尾数

输入2个正整数m和n,求mn后三位数。

比如输入m和n的值分别为13和13,则1313的后三位数字为253。

#include

#include

intmain()

{

intm,n,a,b=1,c;

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

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

{

b=b*m;

b=b%1000;

}

printf("Thelast3digitsof%d**%dis:

%d\n",m,n,b);

return0;

}

选做5.20阶乘尾数零的个数

输入一个正整数n,求其阶乘尾数0的个数。

比如,输入n的值为100,则其阶乘尾数0的个数为24。

#include

#include

intmain()

{

intn,a,b,c;

scanf("%d",&n);

a=n/25;

b=n/5;

c=a+b;

printf("Thenumberof0intheendof%d!

is:

%d.\n",n,c);

return0;

}

14.看看是谁做的好事

某四位同学中有一个做了好事,不留名,表扬信来了,校长问是谁做的好事.以下四个人中有三个人说的是真话.

A说:

不是我

B说:

是C

C说:

是D

D说:

他说的不对!

编写程序:

输出是谁做的好事,只输出对应的大写字母,输出格式printf("%c\n",ch); 。

#include

#include

intmain()

{

charch;

for(ch='A';ch<='D';ch++)

{

if(ch=='A'&&ch=='C'&&ch=='D'&&ch!

='D')

printf("%c\n",ch);

if(ch!

='A'&&ch!

='C'&&ch=='D'&&ch!

='D')

printf("%c\n",ch);

if(ch!

='A'&&ch=='C'&&ch!

='D'&&ch!

='D')

printf("%c\n",ch);

if(ch!

='A'&&ch=='C'&&ch=='D'&&ch=='D')

printf("%c\n",ch);

}

}

选做5.26抓疑犯

某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:

(1)A、B至少有一人作案;

(2)A、E、F三人中至少有两人参与作案;

(3)A、D不可能是同案犯;

(4)B、C或同时作案,或与本案无关;

(5)C、D中有且仅有一人作案;

(6)如果D没有参与作案,则E也不可能参与作案。

试编一程序,将作案人找出来。

输出格式为(以下结果不是最终答案):

A:

不是罪犯

B:

是罪犯

C:

是罪犯

D:

不是罪犯

E:

不是罪犯

F:

是罪犯

#include

#include

intmain()

{

intA,B,C,D,E,F;

for(A=0;A<=1;A++)

for(B=0;B<=1;B++)

for(C=0;C<=1;C++)

for(D=0;D<=1;D++)

for(E=0;E<=1;E++)

for(F=0;F<=1;F++)

if(A+B>=1&&A+E+F>=2&&A+D==1&&(B+C==0||B+C==2)&&C+D==1&&(D+E==0||D+E==2))

{

if(A==1)

printf("A:

是罪犯\n");

if(A==0)

printf("A:

不是罪犯\n");

if(B==1)

printf("B:

是罪犯\n");

if(B==0)

printf("B:

不是罪犯\n");

if(C==1)

printf("C:

是罪犯\n");

if(C==0)

printf("C:

不是罪犯\n");

if(D==1)

printf("D:

是罪犯\n");

if(D==0)

printf("D:

不是罪犯\n");

if(E==1)

printf("E:

是罪犯\n");

if(E==0)

printf("E:

不是罪犯\n");

if(F==1)

printf("F:

是罪犯\n");

if(F==0)

printf("F:

不是罪犯\n");

}

return0;

}

抓交通肇事犯

一辆卡车违反交通规则,撞人后逃跑。

现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。

甲说:

牌照的前两位数字是相同的;乙说:

牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:

四位的车号刚好是一个整数的平方,请根据以上线索求出车号。

#include

#include

intmain()

{

inta,b,c,n;

for(a=0;a<=9;a++)

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

if(a!

=b)

{

n=1100*a+11*b;

for(c=30;c<1000;c++)

if(n==c*c)

printf("Thelicenseplateis:

%d\n",n);

}

return0;

}

15.计算SUM的值

已知公式:

SUM=1+1/2+1/3+1/4+...+1/n

输入:

n

输出:

表达式sum的值。

结果保留6位小数

#include

intmain()

{

inti,n;

floats=0.0,t;

scanf("%d",&n);

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

{

t=1.0/i;

s+=t;

}

printf("sum=%.6f\n",s);

return0;

}

16.迭代法

用迭代法求.求平方根的迭代公式为:

要求前后两次求出的x的差的绝对值小于10-5。

#include

#include

intmain()

{

doublex1,x2,a;

scanf("%lf",&a);

{

x2=1.0;

do

{

x1=x2;

x2=0.5*(x1+a/x1);

}

while(fabs(x2-x1)>=1e-5);

printf("Thesquarerootof%.2fis%.5f\n",a,x2);

}

return0;

}

17.谁能出线

背景:

电视台举办“超级学生”才艺大赛,由于报名人数狂多,所以要先进行分组预赛。

按规定,每10名学生为一个预赛小组,评委打出分数(0~100分),各小组第一名可以进入下一轮;如果有多名学生得分相同都是第一名,则可同时进入下一轮。

输入:

按顺序给出一个小组10个人的最后得分(int)。

输出:

能够出线的学生序号(0~9)。

#include

#defineN10

intmain()

{

inta[N];

inti,max;

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

{

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

}

max=a[0];

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

{

if(max

{

max=a[i];

}

}

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

{

if(max==a[i])

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

}

return0;

}

18.冒泡法排序

冒泡排序(BubbleSort)的基本概念是:

依次比较相邻的两个数,将小数放在前面,大数放在后面。

即在第一趟:

首先比较第1个和第2个数,将小数放前,大数放后。

然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。

至此第一趟结束,将最大的数放到了最后。

在第二趟:

仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。

如此下去,重复以上过程,直至最终完成排序。

  由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。

编写程序,对输入的十个数按照从小到大排序

#include

intmain()

{

inta[10];

inti,j,t;

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

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

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

{

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

if(a[i]<=a[i+1])

{

t=a[i];

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

a[i+1]=t;

}

printf("%d",a[i]);

}

printf("\n");

}

19.存储并输出一个矩阵

编程,输入n,存储并输出如下例(n=5)所示的图形。

12345

11234

11123

11112

11111

#include

#defineM100

intmain()

{

inta[M][M];

inti,j,n;

scanf("%d",&n);

for(i=0;i

for(j=0;j

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2