上机考试题2014春季学期答案

2018-11-30 20:23

aa《C程序设计》课程期末上机考试

考试时间:50分钟

考试方式:从下面的20题中随机抽取一题,再附加一题,共需完成2道题。附加题不事

先给定

分值分配:第一题60分,第二题40分,共100分

考试时间:第十七周周二与周三,2014年6月24、25号

1. 编写函数long fun(long x),它的功能是:将长整型参数x中每一位上为偶数的数依次取出,构成

一个新数返回。高位仍在高位,低位仍在低位。例如:下面程序运行时输入:124578902,程序输

出:24802. #include long fun(long x) {int n=10,m=0; while (x) {int t=x; if(t%2==0) {m+=t*n/10; n*=10;} x/=10;} return m;} void main() {long a,b;

printf(\ scanf(\

b=fun(a);

printf(\

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 void fun(int k,int *p) { int j=2,n=0; do

{ if (k%j==0) { p[n]=j; n++; }

while(k%j==0) { k=k/j; } j++; }

while (j<=k); p[n]=-1; } int main() { int x,a[17],i; do

{ printf(\scanf (\while(x<2); fun(x,a);

1

for(i=0;a[i]!=-1;i++) printf(\printf(\

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。 #define N 10 void fun(int *x,int n) {int i,j,k,temp; for(i=0;i<2;i++) {k=i;

for(j=i+1;j

if(k!=i)

{temp=*(x+k);*(x+k)=*(x+i);*(x+i)=temp;}}} int main() {int a[N],i; for(i=0;i

printf(\ 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

int fun(int *x,int n,float *w) { 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;} return (n/5);} void main() {int a[30],i,n,m; float b[6];

printf(\scanf(\for(i=0;i

2

printf(\printf(\

5. 编写函数int fun(int x,long int y),功能:计算满足表达式x

0

+x1+x2+...+xn

n并作为函数返回值带回。例如,当x=2,y=1000时,程序输出8。

#include #include int fun(int x,long int y) { int i; long s=0; for(i=0;;i++) {

if(s

return(i-2); }

void main() {int x; long y;

scanf(\

printf(\

6. 编写函数int fun(char (*ss)[N],int m,char *s),功能是:形参ss指向一个m行N列的二维字

符数组,每行存放一个字符串。求出最长的字符串,复制到s所指的字符数组中,然后返回此最长字符串的长度。 #include

#include #define N 30

int fun(char (*ss)[N],int m,char *s) {int i,j,k; s=ss[0];

for(i=0;i

{if(strlen(s)

printf(\return j;}

void 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(\

7. 编写函数int countw(char *str),统计字符串str中单词的个数。单词之间以空格,逗号,句号

3

作分隔,数字也看做单词。单词之间可能不止一个分隔符。如输入: It's 10:10 o'clock ,I am late.屏幕上输出\ #include int countw(char *str) {char c;

int i=0,num=0,word=0; while((c=str[i])!='\\0') {if(c==' ') {word=0;} else if(word==0) {word=1; num++;} i++;} return num;} void main() {

char s[200]; gets(s);

printf(\

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 void fun(char *str) { int i,t;

for(i=0;str[i]!='\\0';i++) if(str[i]==' '&&str[i+1]==' ') {for(t=i+1;str[t]!='\\0';t++) str[t]=str[t+1]; str[t+1]='\\0'; i--; } }

void main() {char s[100];

puts(\ gets(s); fun(s);

puts(s);}

9. 函数void fun(int x,int k,int *p)的功能是:求出比x大的最初k(k<1000)个素数,放入p所指数组中。例如:程序运行时输入:10 10,输出:11 13 17 19 23 29 31 37 41 43 #include

#include

void fun(int x,int k,int *p) {int i,m=0,n;x=x+1; n=sqrt(x);

4

while(m

{for(i=2;i<=n;i++) {if(x%i==0) break; if(i>=n) {p[m]=x; m++;}} x++;

n=sqrt(x);}}

void main()

{int a,b,n[1000]={0},i; scanf(\fun(a,b,n); for(i=0;i

10. 编写函数int fun(int a,int b),在[a,b]范围内统计满足下面条件的数的个数。条件:该数是素

数,且该数逆序后形成的数也是素数。例如,在[100,150]范围内101 107 113 131 149 满足条件,则下面程序运行时输入100 150,输出:num=5。 #include #include

int fun(int a,int b)

{ int c[100]={0},i,t,j=0,l,m,d=0,x,s; long int k; for(m=a;m<=b;m++) { k=sqrt(m);

for(i=2;i<=k;i++) { if(m%i==0) break;} if(i>=k+1) {c[j++]=m;} }

putchar('\\n'); for(i=0;i

for(k=0;;) {m=m/10;if(m==0) break;k++;} t=k;l=k;

for(s=0,k=0;k<=t;k++)

{ x=c[i]; c[i]=c[i]/10; s=s+x*pow(10,l--); } c[i]=s; }

for(i=0;c[i]!=0;i++) { k=sqrt(c[i]);

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

{if(c[i]%j==0) break;}

5


上机考试题2014春季学期答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:尔雅超星流行音乐答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: