文档库 最新最全的文档下载
当前位置:文档库 › 2016浙大远程C语言实验题目答案

2016浙大远程C语言实验题目答案

1.本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。
#include<stdio.h>
int main()
{
int n,i,a,count=0;
float sum=0,average;
scanf("%d",&n);
if(n<0)
return 0;
else if(n==0)
{
printf("average = %.1f\n",0.0);
printf("count = %d\n",0);
return 0;
}
for(i=0;i<n;i++)
{
scanf("%d",&a);
if(a<0)
return 0;
else if(a>=0)
sum += a;
if(a>=60)
count++;
}
average = sum/n;
printf("average = %.1f\n",average);
printf("count = %d\n",count);
return 0;
}
2. 本题要求计算并输出不超过n的最大的k个素数以及它们的和。
#include<stdio.h>
int main()
{
int i,j,sum=0,k,d;
scanf("%d %d",&d,&k);

if( d<=10000 && d>=10 && k>=1 && k<=10){
for(i=d;i>=2;i--)
{
if(0==k){
break;
}
for(j=2;j<=i;j++)
{
if(i%j==0)
break;
}
if(j==i )
{
if(i>1){
sum=sum+i;
if((k-1)>0 && i>2){
printf("%d+",i);
}else{
printf("%d",i);
}

k=k-1;
}

}

}

printf("=%d",sum);
}

return 0;
}
3.编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间。
#include <stdio.h>
int main()
{
int n, m;
scanf("%d:%d",&n,&m);
if (n < 0)
{

return 1;
}
else if (n < 12)
{
printf("%d:%d AM", n, m);
}else if(n==12){
printf("%d:%d PM", n,m);
}else if ((n > 12) && (n < 24)){
n=n-12;
printf("%d:%d PM", n,m);
}else if(n==24){
n=0;
printf("%d:%d AM", n, m);
}
else
{

return 2;
}

return 0;
}
4.单词长度
#include<stdio.h>
#include<string.h>
#define STRING_SIZE 1000
int main(void) {
char str[STRING_SIZE + 1];
char *pch; int len;
gets(str);
pch = strtok(str, " .");
while (pch != NULL) {
len = strlen(pch);
pch = strtok(NULL, " .");
if (pch != NULL){
printf("%d ", len);
}else{
printf("%d", len);
}

}
return 0;
}
5.设计函数求一元多项式的导数。
#include <stdio.h>
#include <string.h>
int main()
{
int n, e, flag = 0;
while (scanf("%d%d", &n, &e) != EOF)
{
if( n*e )
{
if(flag)
printf(" ");
else
flag = 1;
printf("%d %d", n*e, e-1);
}
}
if(!flag) printf("0 0");

return 0;
}
6.根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。
#include <stdio.h>
int main()
{
double limit,pi,fen

zi,fenmu,sum,temp1,sum1,temp2;
fenzi=1;
temp1=1;
temp2=3;
fenmu=3;
sum=1;
sum1=1;
scanf("%lf",&limit);

while(sum1>limit){

sum1=fenzi/fenmu;
sum=sum+sum1;
temp1++;
temp2=temp2+2;
fenzi=fenzi*temp1;
fenmu=fenmu*temp2;


}
pi=sum*2;
printf("%.6lf",pi);
return 0;

}
7.二分法求多项式单根
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
float f
( float x);
float a3, a2, a1, a0;
int main()
{
float a, b;
cin >> a3 >> a2 >> a1 >> a0;
cin >> a >> b;
float left, mid, right;
left = a;
right = b;
while( left <= right - 0.001 && f( left ) * f( right ) <= 0 )
{
if ( f( left ) == 0 )
{
cout << fixed << setprecision(2) << left;
return 0;
}
if ( f( right ) == 0 )
{
cout << fixed << setprecision(2) << right;
return 0;
}
mid = ( left + right ) / 2;
if ( f( mid ) * f( left ) > 0 )
{
left = mid;
}
else
{
right = mid;
}
}
cout << fixed << setprecision(2) << mid;
return 0;
}
float f( float x )
{
float result;
result = a3*x*x*x + a2*x*x + a1*x + a0;
return result;
}
8.将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。
通过一遍扫描,则最后一个元素必定是最大的元素。然后用同样的方法对前N-1个元素进行第二遍扫描。依此类推,最后只需处理两个元素,就
完成了对N个数的排序。
//排序
#include <stdio.h>
int main()
{

int N,K,i,j;
scanf("%d %d",&N,&K);

int a[N];


//遍历数组
for(i=0;i<N;i++){
scanf("%d",&a[i]);
}





int count=0;
int temp;
//冒泡排序就是每次将相邻的两个数做比较,每一次可以将最值找出,和冒泡排序的区别就是这样
for(i=0;i<N;i++){
for(j=0;j<N-i-1;j++){


if(a[j+1] <a[j]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;//从小往大
}

}
count++;
if(count==K)
break;

}

for(i=0;i<N;i++){
if(i<N-1)
printf("%d ",a[i]);
else
printf("%d",a[i]);
}
return 0;
}
9.混合类型数据格式化输入
/**
*A4-IO-04. 混合类型数据格式化输入
*C语言实现
*测试已通过
*/
#include "stdio.h"
int main()
{
float m1,m2;
int n;
char c;

scanf("%f %i %c %f",&m1,&n,&c,&m2);
printf("%c

%i %.2f %.2f\n",c,n,m1,m2);

return 0;
}
10.某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬
的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/
小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。
#include<stdio.h>
int main()
{
int time,year;
double money;
scanf("%d%d",&year,&time);
if(year>=5){
if(time<=40){
money=time*50;
}else{
money=2000+(time-40)*50*1.5;
}

}else{
if(time<=40){
money=time*30;
}else{
mo
ney=1200+(time-40)*30*1.5;
}
}
printf("%.2lf",money);
return 0;
}
11.日K蜡烛图
#include<stdio.h>
#include<stdlib.h>
int main()
{
float open,close,high,low;
scanf("%f %f %f %f",&open,&high,&low,&close);
if(close<open)
printf("BW-Solid");
if(close>open)
printf("R-Hollow");
if(close==open)
printf("R-Cross");

if(low<open && low<close)
{
if(high>open && high>close)
{
printf(" with Lower Shadow and Upper Shadow");
exit(0);
}
printf(" with Lower Shadow");
}

if(high>open && high>close)
printf(" with Upper Shadow");

return 0;
}
12.求整数段和
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
using namespace std;
int main()
{
int n,m,count=0;
int sum=0;
cin>>n>>m;
for(int i=n;i<=m;i++){
printf("%5d",i);
sum+=i;
count++;
if(count%5==0&& i !=m){
printf("\n");
}
}
printf("\n");
printf("Sum = %d\n",sum);
return 0;
}
13.计算分段函数[1]
#include<stdio.h>
#include<math.h>
int main()
{
double x;
scanf("%lf",&x);
if(x!=0){
printf("f(%.1lf) = %.1lf\n",x,1/x);
}else if(x==0){
printf("f(%.1lf) = %.1lf\n",x,x);
}

return 0;
}
14.本题要求编写程序,计算序列 1 + 1/3 + 1/5 + ... 的前N项之和。
#include<stdio.h>
#include<float.h>
int main()
{
int x,i;
double sum=0;
scanf("%d",&x);
if( x>0){
for(i=1;i<=DBL_MAX;i++){
if(x<=0){
break;
}
if(i&1==1){

sum=(1.0000/(double)i + sum);
x=x-1;
}
}

printf("sum = %.6lf",sum);
}


return 0;
}
15.阶梯电价
#i

nclude<stdio.h>
int main(void)
{
double quantity;
scanf("%lf",&quantity);
if(quantity<0) printf("Invalid Value!");
else{
if(quantity<=50.0) printf("cost = %.2lf",quantity*0.53);
else printf("cost = %.2lf",(quantity-50)*0.58+50*0.53);
}
return 0;
}
16.求平方与倒数序列的部分和
#include<stdio.h>
#include<float.h>
int main(void)
{

int m,n,i;
double sum=0;
scanf("%d %d",&m,&n);
if( m<=n ){
while(m<=n){
sum+=m*m+1/(double)m;
m+=1;
}

printf("sum = %.6lf",sum);
}


return 0;
}
17.求平方根序列前N项和
#include<stdio.h>
#include<float.h>
#include<math.h>
int main(void)
{

int m,n,i;
double sum=0;
scanf("%d",&m);

for(i=1;i<=m;i++){
sum+=sqrt(i);
}

printf("sum = %.2lf",sum);

return 0;
}


相关文档
相关文档 最新文档