最新沈工大C语言程序设计复习题Word文档下载推荐.docx
- 文档编号:20949327
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:15
- 大小:21.62KB
最新沈工大C语言程序设计复习题Word文档下载推荐.docx
《最新沈工大C语言程序设计复习题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《最新沈工大C语言程序设计复习题Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
printf(“\n”);
for(i=1;
10-I;
j++)
if(a[j]<
a[j+1])
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
Printf(“Thesortednumbersis:
printf(“%5d”,a[j]);
3.设计一个实用程序,为比赛选手评分。
要求:
从十名评委的评分中扣除一个最高分,扣除一个最低分,然后统计总分,并除以8,最后得到这个选手的最后得分(打分采用百分制)。
(实验教程P37)
分析:
定义一个一维数组用来存放10名评委为选手所给的成绩,从键盘上输入10名评委所给的成绩,计算成绩的总和,然后减掉最高分和最低分,再除以8,就可以得到选手的最后得分。
程序清单:
intscore[10];
/*定义数组存放10个评委的成绩*/
floatmark;
inti;
intmax=0;
/*最高分*/
intmin=0;
/*最低分*/
intsum=0;
/*10评委的总和*/
for(i=0;
i++)/*输入10个评委的成绩*/
printf(“PleaseEntertheScoreofNo.%d:
”,i+1);
scanf(“%d”,&
score[i]);
sum=sum+score[i];
/*将10个成绩求和*/
i++)/*查找最高分*/
if(scanf[i]>
max)
max=score[i];
i++)/*查找最低分*/
if(score[i]<
min)
min=score[i];
mark=(sum-max-min)/8.0;
/*计算平均成绩*/
printf(“Themarkoftheplayeris%.2f\n”,mark);
4.在主函数中输2~100之间的整数,调用函数判断其是否为素数,在主函数中输出这些素数。
(实验教程P60)
提示:
在第四章中的4.4.5中第2题给出了判断素数的方法。
还有一种方法就是:
如果一个整数能被小于它的某一个整数出尽,该数一定不是素数。
for(i=2;
a;
if(a%i==0)
return(0);
return
(1);
intj;
for(j=2;
100;
if(is_prime(j))
5.使用递归方法,利用碾转相除法,求两个正整数的最大公约数,并在主函数调用该函数,输出计算结果。
(实验教程P64)
Intgcd(inta,intb)
if(a%b==0)
returnb;
else
returngcd(b,a%b);
/*递归调用*/
intx,y,t;
printf(“Pleaseinput2number(x,y):
scanf(“%d%d”,&
x,&
y);
while(x<
0||y<
0)/*如果是负数重新输入*/
printf(“ERROR!
Pleaseinput2number(x,y):
scanf(“%d%d”,&
t=gcd(x,y);
/*函数调用*/
printf(“G,C,D(%d,%d)=%d\n”,x,y,t);
6.使用递归调用的方法计算n阶勒让德多项式的值。
(实验教程P66)
n阶勒让德多项式的递推公式为:
=
1(n=0)
fn(x)
X(n=1)
((2n-1)xfn-1(x)-(n-1)fn-2(x)/n(n>
1)
floatfun(intn,intx);
/*定义递归函数*/
intt;
if(n==0)/*如果n=0返回1*/
return
(1);
elseif(n==1)/*如果n=1返回x*/
return(x);
else/*否则递归计算*/
return(((2*n-1)*x*fun((n-1),x)-(n-1)*fun((n-2),x))/n;
intx,n;
printf(“Pleaseinputnandx:
n,&
x);
printf(“Theresultis:
%f\n”,fun(n,x));
7.编写程序,利用子函数实现计算字符串的长度。
(实验教程P92)
程序代码如下:
intlength(char*s);
chara[100];
printf(“Pleaseinputthestring:
gets(a);
i=length(a);
printf(“\nThelengthofstringis%d”,i);
intlength(char*s)
char*p=s;
while(*p)
p++;
return(p-s);
8.编写程序,利用字符串实现两个字符串的合并。
(实验教程P93)
#include“stdio.h”
char*link(char*p1,char*p2);
charstr1[100],str2[100];
printf(“Pleaseinputthefirststring:
gets(str1);
printf(“nPleaseinputthesecondstring:
gets(str2);
link(str1,str2);
printf(“\nThelinkedresultis:
puts(str1);
char*link(char*p1,char*p2)
char*p;
p=p1;
while(*p1)
pl++;
while(*p2)
*p1=*p2;
P1++;
P2++;
*p1=’\0’;
return(p);
9.将一个整数字符串转换为一个整数,如“-1234”转换为-1234。
(实验教程P98)
string.h>
intchnum(char*p);
chars[6];
intn;
gets(s);
if(*s==’-’)
n=-chnum(s+1);
printf(“%d\n”,n);
chnum(char*p)
intnum=0,k,len,j;
len=strlen(p);
for(;
*p!
=’\0’;
p++)
k=*p-‘0’;
j=(--len);
while(j-->
0)
k=k*10;
num=num+k;
Return(num);
10.编写计算个人所得税的程序输入一个纳税人的个人月收入,计算应纳的个人所得税。
(程序设计教程P65)
纳税是每个公民的义务。
我国的个人所得税税率表如下表所示:
级数
应纳税金额(月收入-1600)
税率%
1
不超过500元
5
2
500元~2000元
10
3
2001~5000元
15
4
5001~20000元
20
20001~40000元
25
6
40001元~60000元
30
7
60001元~80000元
35
8
80001元~100000元
40
9
超过100000元
45
源程序清单如下:
#include”stdio.h”
doublesalary,s,tax;
printf(“pleaseinputyoursalaryonemonth:
”);
scanf(“%lf”,&
salary);
s=salary-1600;
if(s<
=500)
tax=s*0.05;
elseif(s<
=2000)
tax=(s-500)*0.1+500*0.05;
=5000)
tax=(s-2000)*0.15+1500*0.1+500*0.05;
=20000)
tax=(s-5000)*0.2+3000*0.15+1500*0.1+500*0.05;
=40000)
tax=(s-20000)*0.25+15000*0.2+3000*0.15+1500*0.1+500*0.\05;
=60000)
tax=(s-40000)*0.3+20000*0.25+15000*0.2+3000*0.15+1500*\0.1+500*0.05;
=80000)
tax=(s-60000)*0.35+20000*0.3+20000*0.25+15000*0.2+3000\*0.15+1500*0.1+500*0.05;
=100000)
tax=(s-80000)*0.4+20000*0.35+20000*0.3+20000*0.25+1500\0*0.2+3000*0.15+1500*0.1+500*0.05;
tax=(s-100000)*0.45+20000*0.4+20000*0.35+20000*0.3+200\00*0.25+15000*0.2+3000*0.15+1500*0.1+500*0.05;
printf(“taxis%10.2f\n”,tax);
程序说明:
1)变量salary中存放的是月收入;
s存放月收入中应纳税的金额,月收入减去减免税金额,即月收入减去1600元;
tax是计算出来的纳税额。
2)公式中的“\”是换行符,由于写不下,用“\”符号标识下一行是本行的续行。
3)本例要处理多种情况,最适合使用elseif形式。
因为很难找到月收入中应纳税的金额与一个常量之间的关系,因此不适合使用switch语句。
11.求出斐波那契数列的前20项,存在数组中,并将他们输出。
(程序设计教程P73){说明:
【斐波那契数列是一递推数列,满足下面关系:
fib(0)=1,fib
(1)=1,fib(n)=fib(n-1)+fib(n-2)(n≧2)】对于这个问题,可以定义一个整形数组,用于存放20个整数,先将fib(0)和fib
(1)赋初值,然后建立一个循环,每次取出两个数进行递推求值,并将其存入数组中,每输出5项数据换行,直到前20项都被计算出来为止。
源程序清单如下:
#include<
voidmain()
inti,fib[20]={1,1};
/*初始化*/
printf(”\n”);
20;
i++)/*计算后18项斐波那契数列中的数据并存入数组*/
fib[i]=fib[i-2]+fib[i-1];
i++)/*输出数组*/
if(i%5==0)/*每输出5个数据换行*/
printf(“%10d”,fib[i]);
printf(“\n”)
{注:
数组fib采用部分初始化法,将fib(0)和fib
(1)初始化为1,其他各元素默认为0,用于存储后18项结果。
使用for循环语句从数组的第3个元素开始递推计算后18项数据,并存储在数组fib中(从数组的第3位开始)。
接下来又使用循环语句输出数据的全部元素,每输出5个数据就换行}
12.编写一函数,求x的m次方的值,其中m是整数。
(程序设计教程P102)
{求任意m个x的乘积,可把x和m作为函数的参数,数据从主调函数里传递,增强了函数的灵活性。
使用循环结构设计该算法,最后将计算所得的值返回}
doublemul(doublex,intm)
inti=0;
doublep=1.0;
m;
p=-p*x;
doublex,y;
intm;
printf(“Inputthenumbers(x,m):
scanf(“%lf%d”,&
m);
y=mul(x,m);
%6.5lf\n”,y);
说明:
在程序中定义了mul()函数,其类型为double型,形参表中有两个形参x、m。
由于函数定义在主调函数之前,在主调函数中就可以不对其进行函数声明。
使用用户自定义函数时,要分清形参如何设定,包括其类型、个数及顺序,以便在发生函数调用时,准确地将实参值传递给实参,这样才不会出项错误。
x、y定义为double类型,它的格式控制符为%lf,不能写成%f,以免出错。
函数调用结束后,将计算结果输出。
13.在主调函数调用函数计算5!
的值。
(程序设计教程P120)
intfun(intn)/*定义函数计算阶乘值*/
staticintf=1;
/*定义静态局部变量*/
=n;
i++)/*循环计算n!
乘值*/
f=f*i;
1、作者:
蒋志华《市场调查与预测》,中国统计出版社2002年8月§
11-2市场调查分析书面报告return(f);
/*返回函数值*/
图1-4大学生购买手工艺制品目的}
2、价格“适中化”intn;
printf(“Inputthenumber:
/*输入数据*/
3.www。
oh/ov。
com/teach/student/shougong/scanf(“%d”,&
n);
printf(“%d!
=%d\n”,n,fun(n));
/*调用函数*/
说明:
在自定义函数fun()中,程序定义了静态局部变量f,用来存放每一次调用此函数计算后的值,该值在每次调用后保留其值并在下一次调用时继续使用,所以输出值为累乘的结果。
14.求一个数组中所有元素的最大值和最小值,并将其放入数组的最前面的两个元素的位置。
(程序设计教程P143)
如果顾客在消费中受到营业员的热情,主动而周到的服务,那就会有一种受到尊重的感觉,甚至会形成一种惠顾心理,经常会再次光顾,并为你介绍新的顾客群。
而且顾客的购买动机并非全是由需求而引起的,它会随环境心情而转变。
1、购买“女性化”voidmaxmin(int*p,intlength);
“碧芝”最吸引人的是那些小巧的珠子、亮片等,都是平日里不常见的。
店长梁小姐介绍,店内的饰珠有威尼斯印第安的玻璃珠、秘鲁的陶珠、奥利的施华洛世奇水晶、法国的仿金片、日本的梦幻珠等,五彩缤纷,流光异彩。
按照饰珠的质地可分为玻璃、骨质、角质、陶制、水晶、仿金、木制等种类,其造型更是千姿百态:
珠型、圆柱型、动物造型、多边形、图腾形象等,美不胜收。
全部都是进口的,从几毛钱一个到几十元一个的珠子,做一个成品饰物大约需要几十元,当然,还要决定于你的心意。
“碧芝”提倡自己制作:
端个特制的盘子到柜台前,按自己的构思选取喜爱的饰珠和配件,再把它们串成成品。
这里的饰珠和配件的价格随质地而各有同,所用的线绳价格从几元到一二十元不等,如果让店员帮忙串制,还要收取10%~20%的手工费。
2、你大部分的零用钱用于何处?
inta[10]={2,5,7,1,10,4,6,33,20,9};
自制性手工艺品。
自制饰品其实很简单,工艺一点也不复杂。
近两年来,由于手机的普及,自制的手机挂坠特别受欢迎。
maxmin(a,10);
7、你喜欢哪一类型的DIY手工艺制品?
printf(“max=%d,min%d”,a[0],a[1]);
voidmaxmin(int*p,intlength)
intk,max=0,min=0;
for(k=1;
k<
length;
k++)
if(p[k]>
p[max])
max=k;
elseif(p[k]<
p[min])
min=k;
p[0]=p[max];
p[1]=p[min];
在子函数中实现了对数组中元素的最大值和最小值的求值,并把最大值和最小值放到了数组的最前面的两个元素中。
因为函数传递的参数是数组的首地址,因此在子函数中对数组的全部操作,就是对主函数中数组的操作。
15.编写一个程序,将一个字符串写入文件“E:
\test.txt”后,再从该文件中读出该字符串。
(程序设计教程P198)
#include“stdio.h”
FILE*fp;
charch[]=”Clanguage”,*str;
intx;
fp=fopen(“E:
\\test.txt”,”w”);
if(fp==NULL)
printf(“\nCan’topenthefile!
return;
x=fputs(ch,fp);
/*测试函数的返回值*/
printf(”x=%d”,x);
printf(“\nCharacterinputfinished!
fclose(fp);
\\test.txt”,”r”);
puts(fgets(str,20,fp));
首先,程序以只写的方式打开E盘根下的文本文件test.txt,向文件中一次性写入字符串“CLauguage”后,返回最后一个字符的ASCII值。
最后一个字符是“e”,因此返回“e”的ASCII值,“x=101”。
显示写入完成,并关闭文件。
重新以只读的方式打开该文件,从文件中读出刚才写入的内容,最后关闭文件。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 沈工大 语言程序设计 复习题