高级程序设计期末习题.docx

上传人:b****0 文档编号:12760802 上传时间:2023-04-21 格式:DOCX 页数:39 大小:23.77KB
下载 相关 举报
高级程序设计期末习题.docx_第1页
第1页 / 共39页
高级程序设计期末习题.docx_第2页
第2页 / 共39页
高级程序设计期末习题.docx_第3页
第3页 / 共39页
高级程序设计期末习题.docx_第4页
第4页 / 共39页
高级程序设计期末习题.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

高级程序设计期末习题.docx

《高级程序设计期末习题.docx》由会员分享,可在线阅读,更多相关《高级程序设计期末习题.docx(39页珍藏版)》请在冰豆网上搜索。

高级程序设计期末习题.docx

高级程序设计期末习题

1.输入用单个字母表示的成绩信息,转换为百分制分数。

说明:

输入A,输出95;输入B,输出85;输入C,输出75;输入D,输出65;输入E,输出65.

#include

main()

{

intscore;

chargrade;

scanf("%c",&grade);

switch(grade)

{

case'A':

printf("95\n");break;

case'B':

printf("85\n");break;

case'C':

printf("75\n");break;

case'D':

printf("65\n");break;

}

printf("\n");

return0;

}

2.根据下面的函数关系,输入X,计算Y,要求输出结果保留两位小数。

(1)当x小于5时,y=0

(2)当x大于5且小于等于10时,y=sin(x)

(3)当x大于10时,y=cos(x)+sin(x)

#include

#include"math.h"

main()

{

floaty,x;

scanf("%f",&x);

if(x<5)

{

y=0;

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

}

elseif(x>5&&x<=10)

{

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

}

elseif(x>10)

{

printf("%.2f\n",y=cos(x)+sin(x));

}

elseprintf(“Nonumber\n”);

}

3.根据下面的函数关系,输入X,计算Y,要求输出结果保留两位小数。

(1)当x小于6时,y等于(1+x)

(2)当x大于等于6且小于10时,y等于(x-2)的平方加1

(3)当x大于等于10时,y等于sin(x)+2x

#include

#include"math.h"

main()

{

floaty,x;

scanf("%f",&x);

if(x<6)

{

printf("%.2f\n",y=1+x);

}

elseif(x>=6&&x<10)

{

printf("%.2f\n",y=(x-2)*(x-2)+1);

}

elseif(x>=10)

{

printf("%.2f\n",y=sin(x)+1);

}

}

4.从键盘输入三个整数,找处其最大和最小的数,并输出。

#include

main()

{

inta,b,c,max,min;

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

max=a;

min=a;

if(a>b)

{min=b;

if(b>c)

min=c;

elseif(c>a)

max=c;}

elseif(b>a)

{

min=a;

max=b;

if(c>b)

max=c;

if(c

min=c;

}

printf("max=%d,min=%d",max,min);

}

5.输入一个3位的正整数,判定该正整数是否为一个回文数。

(所谓回文数是指正读和反读都相同的数,例如131)。

#include

main()

{

intx;

printf("请输入一个三位数\n");

scanf("%d",&x);

if(x/100==x%10)

printf("该数为回文数\n");

else

printf("该数不是回文数\n");

}

6.从键盘输入三个整数a、b、c,输出其中最大的数。

#include

main()

{

inta,b,c,max;

printf("输入三个整数\n");

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

max=a;

if(b>a&&b>c)

max=b;

if(c>a&&c>b)

max=c;

printf("Thebigestnumis:

%d\n",max);

}

7.从键盘输入任意一个字母,如果其为大写字母,则转为小写字母;如果其为小写字母,请转换为大写字母;其他情况保持不变,计算并输出。

#include

intmain()

{

chartmp;

scanf("%c",&tmp);

if(tmp>=65&&tmp<=90)

{

tmp=tmp+32;

printf("%c",tmp);

return0;

}

if(tmp>=97&&tmp<=122)

{

tmp=tmp-32;

printf("%c",tmp);

return0;

}

}

8.从键盘读入一个实数,对其进行四舍五入处理,要求精确到到小数点后两位。

例如输入12.345,其结果为12.35;输入12.341,其结果为12.34。

#include

main()

{

floata;

intb;

printf("inputanum\n");

scanf("%f",&a);

b=a*100+0.5;

a=b/100.0;

printf("thenumis:

%.2f\n",a);

}

9.从键盘输入一个三位整数,计算其上下边界,例如123,其下边界为100,上边界为199,依此类推

#include

main()

{

inta,up,down;

scanf("%d",&a);

up=a/100*100;

down=a/100*100+99;

printf("up=%d,down=%d\n",up,down);

}

10.从键盘输入一个三位纯小数,计算其上下边界,例如0.123,其下边界为0.100,上边界为0.199,依此类推

#include

voidmain()

{

floata,up,down,i;

printf("请输入三位小数\n");

scanf("%f",&a);

for(i=0;i<1;i=i+0.1)

if(i<=a&&(i+0.1)>=a)

{

down=i;

up=i+0.1-0.001;

}

printf("下边界%.3f,上边界%.3f\n",down,up);

}

11.根据下面的函数关系,对输入的每个x值,计算出相应的y值并输出结果。

(1)当x小于1时,y等于2+cos(x)

(2)当x大于等于1且x小于2时,y等于x的平方加上sin(x)

(3)当x大于等于2时,y等于(x-2)的平方根;

要求:

按格式输出x和y的值,要求小数点后保留2位。

#include

#include"math.h"

main()

{

floaty,x;

scanf("%f",&x);

if(x<1)

{

printf("%.2f\n",y=2+cos(x));

}

elseif(x>=1&&x<2)

{

printf("%.2f\n",y=x*x+sin(x));

}

elseif(x>=2)

{

printf("%.2f\n",y=sqrt(x-2));

}

}

12.从键盘输入国际货币表示的商品价格,请转换为人民币。

要求:

仅仅考虑美元($)和欧元€,汇率分别6和8。

例如输入$100,输出600,输入E100,输出800

#include

main()

{

chara;

intb;

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

switch(a)

{

case'E':

printf("¥%d\n",8*b);break;

case'$':

printf("¥%d\n",6*b);break;

}

}

13.从键盘读入一个自然数,判定其是否为素数,如果是,输出Yes,否则输出No

#include

#include

main()

{

inti,a,k;

printf("Pleaseinputanum:

\n");

scanf("%d",&a);

k=(int)sqrt(a);

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

if(a%i==0)

{

break;

}

if(i>k)

{

printf("YES\n");

}

else

{

printf("NO\n");

}

}

14.输出公元1000至今的所有闰年的数量

#include

main()

{

intyear,i;

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

{

if(i%4==0&&i%100!

=0)

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

if(i%400==0)

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

}

}

15.计算1-1/2+1/3-1/4+…+1/n的和,在主函数输入n,计算输出结果。

#include

main()

{

inti,n,j=1;

doublesum=0.0;

printf("Pleaseinputanum:

\n");

scanf("%d",&n);

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

{

sum+=1.0/i*j;

j=-j;

}

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

}

16.从键盘输入一个自然数,判定其是否为完数,如果是,输出Yes,否则输出No。

完数是指一个整数的所有因子之和等于其自身的数,例如6=1+2+3。

#include

main()

{

inta,i,s=0;

scanf("%d",&a);

for(i=1;i

{

if(a%i==0)

s+=i;

}

if(a==s)

printf("YES\n");

else

printf("No\n");

}

17.计算分数序列:

2/1,-3/2,5/3,-8/5,13/8,-21/13,…,的前10项之和并输出。

#include

main()

{

inti;

floats=0.0,a=2.0,b=1.0,k=0.0,j=1.0;

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

{

s+=a/b*j;

j=-j;

k=a;

a=b+a;

b=k;

}

printf("S=%f\n",s);

}

18.计算Fibonacci数列中前5项的和。

提示:

Fibonacci数列F(n)的定义为:

F(0)=0,F

(1)=1,F(n)=F(n-1)+F(n-2)。

#include

main()

{

inta[5],s=0,i;

a[0]=0;

a[1]=1;

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

{

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

}

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

{

s+=a[i];

}

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

}

19.计算全部水仙花数的和(提示:

“水仙花”数是指一个三位数,其各位数字的立方和等于该数本身,例如:

153).

#include

main()

{

inta,b,c,s=0,i;

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

{

a=i%10;

b=i/100;

c=i/10-b*10;

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

s+=i;

}

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

}

20.计算S=1-1/12+1/12-1/12+1/12……-1/102的值,并输出

21.计算1/1+1/(1+2)+1/(1+2+3)+…+1/(1+2+…n)的,要求小数点后保留6位

#include

voidmain()

{

doublesum=0;

intn,i,j=0;

scanf("%d",&n);

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

{

j+=i;

sum+=1.0/j;

}

printf("%lf\n",sum);

}

22.由x,y二个数字组成二位数xy和yz,且xy+yz=102。

如果有解,输出所有解,否则输出无解

#include

main()

{

intx,y,z,count=0;

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

{

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

{

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

{

if(x*10+y+y*10+z==102)

{

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

count++;

}

}

}

}

if(!

count)

{

printf("无解\n");

}

}

23.由x,y二个数字组成二位数xx和yz,且xy+yz=124。

如果有解,输出所有解,否则输出无解

#include

main()

{

intx,y,z,count=0;

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

{

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

{

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

{

if(x*10+x+y*10+z==124)

{

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

count++;

}

}

}

}

if(!

count)

{

printf("无解\n");

}

}

24.计算1/2,2/3,3/5,5/8,8/13,13/21,……的前10项和,并输出结果。

#include

main()

{

floatsum=0.0,j=1.0,k=2.0,m;

inti,n;

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

{

sum+=j/k;

m=k;

k=j+k;

j=m;

}

printf("%f\n",sum);

}

25.编写函数astrcat(char*t,char*s)将字符串s中的全部大写字符连接到字符串t的尾部,要求在主函数中定义数组存储字符串信息,调用函数实现链接后,输出结果。

#include

#include

astrcat(char*t,char*s);

voidmain()

{

chars1[40],s2[40],*s,*t;

t=s1;

s=s2;

printf("Inputstring1:

\n");

gets(s1);

printf("Inputstring2:

\n");

gets(s2);

astrcat(s1,s2);

printf("Thestringis:

%s\n",s1);

}

astrcat(char*t,char*s)

{

inti,j=0,n,m;

m=strlen(t);

n=strlen(s);

for(i=0;i

{

if(s[i]>='A'&&s[i]<='Z')

{

t[m+j]=s[i];

j++;

}

t[m+j]='\0';

}

}

26.编写函数clear(char*t)将字符串t中的非英文字母删除,要求在主函数中定义数组存储字符串信息,调用函数实现链接后,输出结果。

#include

#include

voidclear(char*t);

voidmain()

{

char*t,s1[40];

t=s1;

printf("Inputthestring:

\n");

gets(t);

clear(s1);

printf("Thestringis:

%s\n",s1);

}

voidclear(char*t)

{

intn,i,j=0;

n=strlen(t);

for(i=0;i

{

if(t[i]>='a'&&t[i]<='z'||t[i]>='A'&&t[i]<='Z')

{

t[j]=t[i];

j++;

}

}

t[j]='\0';

}

27.已知一有序序列1,2,4,6,12,14,要求从键盘输入一个整数,将此整数插入到此有序序列中。

要求输出原始数组和插入之后的数组。

要求编制函数insert(int*p,intd)实现此功能,在主函数调用此函数。

提示:

例如输入整数位7,首先要找到7在整个序列中的位置,然后将7插入到当前位置。

#include

#include

voidinsert(int*p,intd)

{

inti,j,n=6;

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

{

printf("%d.",p[i]);

}

printf("\n");

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

{

if(d

{

j=i;

break;

}

}

for(i=5;i>=j;i--)

{

p[i+1]=p[i];

}

p[i+1]=d;

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

printf("%d.",p[i]);

printf("\n");

}

main()

{

int*p,s1[7]={1,2,4,6,12,14},d;

p=s1;

printf("Inputanum:

\n");

scanf("%d",&d);

insert(s1,d);

return0;

}

28.从键盘读入一整数,判断其在数组3,23,-7,8,9,10中是否存在,假设此数组中不存在重复的数字。

若存在,则删除此数;否则,提示此数不存在。

要求:

编制函数remove(double*p,doubled)实现数据的清理工作,并输出原始数据和删除后的数据。

#include

voidmremove(double*p,doubled)

{

inti,j=0;

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

{

printf("%lf\n",p[i]);

}

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

{

if(d==p[i])

{

j=i;

break;

}

elseif(d!

=p[i])

{

j=7;

break;

}

}

if(j!

=7)

{

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

p[i-1]=p[i];

p[5]='\0';

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

printf("%lf\n",p[i]);

}

else

printf("此数不存在\n");

}

main()

{

double*p,d,s1[10]={3,23,-7,8,9,10};

printf("Inputanum\n");

scanf("%lf",&d);

p=s1;

mremove(s1,d);

return0;

}

29.从键盘读入一字符c,判断其在字符串"English"中是否存在,假设此数组中不存在重复的字符。

若存在,则删除此数;否则,提示此数不存在。

要求:

编制函数del(char*p,charc)实现数据的清理工作,并输出原始数据和删除后的数据。

#include

#include

voiddel(char*p,charc);

main()

{

char*p;

charc;

chars1[]="English";

p=s1;

scanf("%c",&c);

del(p,c);

return0;

}

voiddel(char*p,charc)

{

intn,i,j=0;

n=strlen(p);

printf("%s\n",p);

for(i=0;i

{

if(p[i]==c)

{

j=1;

for(i=i;i

{

p[i]=p[i+1];

}

printf("%s\n",p);

}

}

if(j==0)

printf("不存在\n");

}

30.编写函数mstrcat(char*t,char*s)将字符串s中的全部英文字符连接到字符串t的尾部。

#include

#include

voidmstrcat(char*t,char*s);

voidmain()

{

char*t,*s,s2[40],s1[40];

t=s1;

s=s2;

printf("Inputthestring1:

\n");

gets(t);

printf("Inputthestring2:

\n");

gets(s);

mstrcat(s1,s2);

printf("Thestringis:

%s\n",s1);

}

voidmstrcat(char*t,char*s)

{

intn,m,i,j=0;

n=strlen(t);

m=strlen(s);

for(i=0;i

{

if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')

{

t[n+j]=s[i];

j++;

}

}

t[n+j]='\0';

}

31.编写函数itoa(intn,char*p)实现将整数n转换为字符串存储到p中。

要求在主函数中输入整数n,调用itoa函数,并将结果输入到字符串。

#include

itoa(char*p,intn)

{

inti=0,j;

charc;

while(n!

=0)

{

p[i]=n%10+'0';

i++;

n/=10;

}

p[i]='\0';

j=--i;

while(j-i

{

c=p[j-i];

p[j-i]=p[i];

p[i]=c;

i--;

}

}

voidmain()

{

char*p,s1[10];

intn;

p=s1;

scanf("%d",&n);

itoa(p,n);

printf("%s\n",s1);

}

32.编写函数mstrcpy(char*t,char*s,intm)字符串s中的第m个字符开始的全部字符复制成另一个字符串t。

要求在主函数中初始化字符串s,从键盘读入m的值,输出字符串s和复制的字符串t。

#include

#include

voidmstrcpy(char*t,char*s,intm)

{

intn,i,a=0;

n=strlen(t);

for(i=m-1;i<100;i++)

{

t[n+a]=s[i];

a++;

}

printf("%s\n",t);

}

main()

{

cha

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

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1