中国海洋大学上机考试题2016春季学期 答案2333
《C程序设计》课程期末上机考试
考试时间:50分钟
考试方式:从下面的20题中随机抽取一题,再附加一题,共需完成2道题。附加题不事先给定
分值分配:第一题60分,第二题40分,共100分
考试时间:第十七周,2016年6月28-30号某天
1. 编写函数long fun(long x),它的功能是:将长整型参数x中每一位上为偶数的数依次取出,构成
一个新数返回。高位仍在高位,低位仍在低位。例如:下面程序运行时输入:124578902,程序输出:24802.
#include<stdio.h>
long fun(long x)
{int i=0,m,a[20];
long b=0;
do
{ m=x%10;
if(m%2==0)
{a[i]=m;
i=i+1;}
}
while((x/=10)!=0);
for(i=i-1;i>=0;i--)
{ b=b*10+a[i];}
return b;
}
int main()
{ long a,b;
printf("Enter a number:");
scanf("%ld",&a);
b=fun(a);
printf("b=%ld\n",b);
return 0;
}
2. 编写函数void fun(int k,int *p),功能是:将参数k(2≤k≤32767)所有的不相同质因子升序
写入p所指的一维数组中,以-1作为所有质因子的结束标志。例如:下面程序运行时若输入200,输出:2 5;若输入27720,输出:2 3 5 7 11;若输入101,输出101。
#include<stdio.h>
void fun(int k,int *p)
{int i,j=0;
for(i=2;i<=k;i++)
{
while(k!=i)
{
if(k%i==0)
{
p[j]=i;
j=j+1;
k=k/i;
1
}
else break;
}
}
p[j]=k;
p[j+1]=-1; }
int main()
{ int x,a[17]={0},i;
do{ printf("Enter a number(2-32767):");
scanf("%d",&x);
}while(x<2);
fun(x,a);
for(i=0;a[i]!=-1;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
3. 编写函数void fun(int *x,int n),功能是:求出长度为n的数组x中的最大数与次最大数,并
把最大数和a[0]对调,次最大数与a[1]对调,其余的数保持不变。下面程序运行时若输入:2 4 6
1 3 9 7 0 5 8,则输出:9 8 6 1 3
2 7 0 5 4。
#include<stdio.h>
#define N 10
void fun(int *x,int n)
{int i,j,k,t;
for(i=0;i<=1;i++)
{ j=k=i;
for(;j<n;j++)
{ if(*(x+k)<*(x+j)) k=j; }
t=*(x+i);*(x+i)=*(x+k);*(x+k)=t;
}
}
int main()
{int a[N],i;
for(i=0;i<N;i++)
scanf("%d",a+i);
fun(a,N);
for(i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
4. 数组x中保存有n个整数,编写函数int fun(int *x,int n,float *w),对数组x进行如下操作:
从第0个元素起对每5个元素求一个平均埴,并将这些均值依次存放在w所指的数组中。函数返回平均值的个数。例如:若输入n为14,14个数据为:11 21 35 24 55 16 27 58 18 0 11 12 13 14,则只为前10个求均值,输出结果为:29.20 23.80
#include<stdio.h>
int fun(int *x,int n,float *w)
2
{
return (n/5); int i,j,s;
for(i=0;i<(n/5);i++)
{
s=0;
for(j=i*5;j<(i*5+5);j++)
s=s+*(x+j);
*(w+i)=s/5.0;
}
}
}
int main()
{int a[30],i,n,m;
float b[6];
printf("Input a number: ");
scanf("%d ",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
m=fun(a,n,b);
for(i=0;i<m;i++)
printf("%0.2f ",b[i]);
printf("\n");
return 0;
}
5.编写函数int fun(int x,long int y),功能:计算满足表达式x0+x1+x2+...+x n<y的最大的
n并作为函数返回值带回。例如,当x=2,y=1000时,程序输出8。
#include<stdio.h>
#include<math.h>
int fun(int x,long int y)
{int i,n=0,m=0;
while(y-m>=0)
{
n++;
m=m+pow(x,n);
3
}
return n-1;
}
int main()
{int x;long y;
scanf("%d%ld",&x,&y);
printf("n=%d\n",fun(x,y));
return 0;
}
6. 编写函数int fun(char (*ss)[N],int m,char *s),功能是:形参ss指向一个m行N列的二维字
符数组,每行存放一个字符串。求出最长的字符串,复制到s所指的字符数组中,然后返回此最长字符串的长度。
#define N 30
#include<stdio.h>
#include<string.h>
int fun(char (*ss)[N],int m,char *s)
{int i,j,k;
s=ss[0];
for(i=0;i<m;i++)
{
if(strlen(s)<strlen(ss[i]))
{
s=ss[i];
}
}
j=strlen(s);
printf("str=%s ",s);
return j;
}
int main()
{char a[8][N],b[N];
int i,len;
for(i=0;i<8;i++)
gets(a[i]);
len=fun(a,8,b);
printf("len=%d,str=%s\n",len,b);
return 0;
}
7. 编写函数int countw(char *str),统计字符串str中单词的个数。单词之间以空格,逗号,句号
作分隔,数字也看做单词。单词之间可能不止一个分隔符。如输入:
It's 10:10 o'clock ,I am late.屏幕上输出"There are 6 words."
#include<stdio.h>
int countw(char *str)
{char c;
int i=0,num=0,word=0;
while((c=str[i])!='\0')
4
{
if(c==' ')
{
word=0;
}
else if(word==0)
{
word=1;
num++;
}
i++;
}
return num;
}
int main()
{char s[200];
gets(s);
printf("There are %d words.\n",countw(s));
return 0;
}
8. 编写函数void fun(char *str),功能:字符串str中单词以空格作分隔,如果单词之间不止一个
空格,则删除多余的空格,使单词之间只保留一个空格。字符串开始的空格也只保留一个。例如,程序运行时若输入: It's 10:10 o'clock , I am late.
输出: It's 10:10 o'clock , I am late.
#include<stdio.h>
void fun(char *str)
{char c,b;
int i=0,j,m,n;
while((c=str[i])!='\0')
{
while(c=='0')
{
if(str[i+1]=='0')
{
j=i;
while((b=str[j])!='\0')
{
str[j]=str[j+1];
j++;
}
}
}
相关推荐:
- [专业资料]《蜜蜂之家》教学反思
- [专业资料]过去分词作定语和表语1
- [专业资料]苏州工业园区住房公积金贷款申请表
- [专业资料]保安管理制度及处罚条例细则
- [专业资料]2018年中国工程咨询市场发展现状调研及
- [专业资料]2015年电大本科《学前教育科研方法》期
- [专业资料]数字信号处理实验 matlab版 离散傅里叶
- [专业资料]“十三五”重点项目-虎杖白藜芦醇及功
- [专业资料]2015-2020年中国竹木工艺市场需求及投
- [专业资料]国际贸易理论与实务作业五:理论案例分
- [专业资料]财政部修订发布事业单位会计制度
- [专业资料]BCA蛋白浓度测定试剂盒(增强型)
- [专业资料]工程进度总计划横道图模板(通用版)
- [专业资料]七年级地理同步练习(天气与气候)
- [专业资料]X光安检机介绍火灾自动报警系统的组成
- [专业资料]衢州市人民政府办公室关于印发衢州市区
- [专业资料]经济全球化及其影响[1]
- [专业资料]质粒DNA限制性酶切图谱分析
- [专业资料]国家安全人民防线工作“六项”制度
- [专业资料]劳动力投入计划及保证措施
- 电子账册联网监管培训手册
- 人教版语文七年级上第1课《在山的那边
- 对我区担保行业发展现状的思考与建议
- 平面四边形网格自动生成方法研究
- 2016年党课学习心得体会范文
- 如何设置电脑定时关机
- 全球最美人妖排行榜新鲜出炉
- 社会实践调查报告及问卷
- Visual Basic习题集
- 《鱼我所欲也》课件2
- 浙江省会计从业资格考试试卷
- 全遥控数字音量控制的D 类功率放大器资
- 鞍钢宪法与后福特主义
- 电表的改装与校准实验报告(1)
- 2014年高考理科数学真题解析分类汇编:
- Windows 7 AIK 的使用
- 风电场全场停电事故应急处置方案
- 化工原理选填题题库(下)
- 关于产学研合作教育模式的学习与思考
- 西安先锋公馆项目前期定位报告




