您好,欢迎来到年旅网。
搜索
您的当前位置:首页中国海洋大学-上机考试题

中国海洋大学-上机考试题

来源:年旅网
《C程序设计》课程期末上机考试

考试时间:50分钟

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

先给定

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

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

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

一个新数返回。高位仍在高位,低位仍在低位。例如:下面程序运行时输入:1245702,程序输出:24802. #include long fun(long x) { }

int main() { long a,b;

printf(\"Enter a number:\"); scanf(\"%ld\ b=fun(a);

printf(\"b=%ld\\n\ 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

void fun(int k,int *p) { }

int main()

{ int x,a[17]={0},i;

do{ printf(\"Enter a number(2-32767):\"); scanf(\"%d\ }while(x<2); fun(x,a);

for(i=0;a[i]!=-1;i++) printf(\"%d \ 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 #define N 10

void fun(int *x,int n) { }

1

int main() {int a[N],i;

for(i=0;ifor(i=0;iprintf(\"%d \ 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

int fun(int *x,int n,float *w) { }

int main()

{int a[30],i,n,m; float b[6];

printf(\"Input a number: \"); scanf(\"%d \ for(i=0;iscanf(\"%d\ m=fun(a,n,b); for(i=0;iprintf(\"%0.2f \ printf(\"\\n\"); return 0; } 5. 编写函数int fun(int x,long int y),功能:计算满足表达式x

0

+x1+x2+...+xnn并作为函数返回值带回。例如,当x=2,y=1000时,程序输出8。 #include

int fun(int x,long int y) { }

int main() {int x;long y;

scanf(\"%d%ld\

printf(\"n=%d\\n\ return 0; }

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

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

2

#define N 30

#include

int fun(char (*ss)[N],int m,char *s) { }

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\ return 0; }

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

作分隔,数字也看做单词。单词之间可能不止一个分隔符。如输入:

It's 10:10 o'clock ,I am late.屏幕上输出\"There are 6 words.\" #include

int countw(char *str) { }

int main() {char s[200]; gets(s);

printf(\"There are %d words.\\n\ 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 void fun(char *str) { }

int main() {char s[100];

puts(\"Enter a string:\"); gets(s); fun(s); puts(s); return 0; }

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

void fun(int x,int k,int *p)

3

{ }

int main()

{int a,b,n[1000],i; scanf(\"%d%d\ fun(a,b,n);

for(i=0;iprintf(\"%d \ puts(\"\"); return 0; }

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 main() {int num,a,b;

scanf(\"%d%d\ num=fun(a,b);

printf(\"num=%d\\n\ return 0; }

11. 编写函数void fun(char *s),功能:在s所指字符串中每两个字母之间加一个*,其余字符保持

不变。

例如,下面程序运行时,若输入:I had 123_book. 输出:I h*a*d 123_b*o*o*k. #include void fun(char *s) { }

int main() {char x[80]; gets(x); fun(x); puts(x); return 0; }

12. 编写函数int fun(int k),功能:从5个红球, 6个白球,7个黑球中任意取出k(2≤k≤18)个

球作为一组进行组合。在每组中,可以没有红球和白球,但必须要有黑球。不同组合的数目作为函数值返回。例如,若k为8时,正确的组合数是31;若k为2时,正确的组合数是3;或k为3时,正确的组合数是6 。 #include int fun(int k) {

4

}

int main() {int x,n;

scanf(\"%d\ n=fun(x);

printf(\"n=%d\\n\ return 0; }

13. 编写函数void fun(char *str),功能:对形参str所指字符串中的字符按ASCII码升序排序。例

如,下面程序运行时输入:The C Programming Language<回车>

输出: CLPTaaaeegggghimmnnorru

#include void fun(char *str) { }

int main() {char s[100]; gets(s); fun(s); puts(s); return 0; }

14. 请编写函数void fun(int *a, int n, int y),它的功能是:把y值插入到有n个数的a数组中,

a数组中的数已按由大到小的次序排好,y的值从键盘读入。 插入后,数组中的数仍然有序。对照下面三种情况运行程序:

1) 插在最前 2) 插在最后 3) 插在中间

若输入数11, 输出 20 18 16 14 12 11 10 8 6 4 2 输入数1, 输出 20 18 16 14 12 10 8 6 4 2 1 输入数33, 输出 33 20 18 16 14 12 10 8 6 4 2 #include

void fun(int *a,int n,int y) { }

int main()

{int i,a[11]={20,18,16,14,12,10,8,6,4,2},x; void fun(int *,int n,int y); scanf(\"%d\ fun(a,10,x);

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

printf(\"%d \ return 0; }

15. 编写函数int fun(char *s1,char *s2),在字符串s1中统计字符串s2出现的次数并返回。若s2

在s1中未出现,则返回0。例如:

若输入的字符串s1为:abaaAabcaabbabca,字符串s2为:ab ,则程序输出:n=4 若输入的字符串s1为:abaaAabcaabbabca,字符串s2为:abd,则程序输出:No find #include

5

#include

int fun(char *s1,char *s2) { }

int main()

{ char a[80],b[80]; int n;

printf(\"Please input the first string:\"); gets(a);

printf(\"Please input the second string:\"); gets(b); n=fun(a,b); if(n==0)

printf(\"No find\\n\"); else printf(\"n=%d\\n\ return 0; }

16. 编写函数int fun(char *str),功能是:统计字符串str中不同字符的个数并做为函数值返回。

例如,下面程序运行时若输入:One world,One dream! 输出:n=13 #include int fun(char *str) { }

int main() {char s[80]; int n; gets(s); n=fun(s);

printf(\"n=%d\\n\ return 0; }

17. 编写函数int fun(int m,int n,int *p),要求将范围[m,n]之间所有的fibonacci数写入p所指

的一维数组中,fibonacci数的个数通过函数返回值带回。例如,[0,30]之间的fibonacci数有7个,它们是:1 2 3 5 8 13 21 ;[1000,32767]之间有7个,它们是:1597 2584 6765 10946 17711 28657 。

#include

int fun(int m,int n,int *p) { }

int main()

{int a,b,n,c[22],i; scanf(\"%d%d\ n=fun(a,b,c); for(i=0;iprintf(\"%6d\ printf(\"\\nn=%d\\n\

return 0;

6

}

18. 编写函数char *fun(char *s1,char *s2,int n),将字符串s1中后面的n个字符复制到s2所指

数组中,若s1不足n个字符,则用*在前端补齐至n个字符,写入s2中。函数返回字符串s2的指针。例如,下面程序运行时, 若输入:“abcd1234”和6,则输出“cd1234” 若输入:“abcd1234”和10,则输出“**abcd1234” #include

char *fun(char *s1,char *s2,int n) { }

int main()

{char c1[80],c2[80]; gets(c1); fun(c1,c2,6); puts(c2);

puts(fun(c1,c2,30)); return 0; }

19. 编写函数void fun(char *a,char *b,char *c),逐个比较a、b两个字符串对应位置中的字符,

把ASCII值大或相等的字符依次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串应为:aBcdeFgH。 #include

char *fun(char *s,char *b,char *c) { }

int main() {char s[80]; gets(s);

puts(fun(s)); return 0; }

20. 编写函数void fun(char *s),将s所指字符串中的所有数字字符移到所有非数字字符之后,并保

持数字字符和非数字字符原有的前后次序。

例如,若输入:num is 0532-66ouc78,OK. 执行结果为:num is -ouc,OK.05326678 #include void fun(char *s) { }

int main() {char a[80]; gets(a); fun(a); puts(a); return 0; }

7

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务