C语言上机考试试题.doc
《C语言上机考试试题.doc》由会员分享,可在线阅读,更多相关《C语言上机考试试题.doc(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1. 给定程序modi.c中,函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中,若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。 例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。程序如下:#include #define SIZE 20fun(double *s,double *w) int k,i; double sum; for (k=2,i=0;iSIZE;i+) si=k; k+=2; sum=0.0; for(k=0,i=0;iSIZE;i+) su
2、m+=si; if (i+1)%5=0) /说组的第一个为s0,则应该加1后就行除5/ wk=sum/5;sum=0;k+; return k;main() double aSIZE,bSIZE/5; int i,k; k=fun(a,b); printf(The original data:n); for (i=0;iSIZE;i+) if(i%5=0) printf(n); printf(%4.0f,ai); printf(nnThe result:n); for(i=0;ik;i+) printf(%6.2f,bi); printf(nn); 2. 请编写一个函数fun,它的功能是:比较
3、两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。 例如,输入beijing shanghai (为回车键) 函数将返回shanghai。程序如下:#include char *fun(char *s,char *t)int first=0,second=0; char *p,*q; p=s; q=t; while(*p+!=0) /*判断是否到了字符串s的结尾*/ first+; while(*q+!=0) /*判断是否到了字符串t的结尾*/ second+; /可以用来知道一个字符串中有多少个字符/ if(firs
4、t=second) /*判断两个字符串的长度是否相等*/ return s; /*若上述条件成立,则返回第一个字符串*/ else if (firstsecond) /*返回较长的字符串*/ return s; else return t; void NONO ( )/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i ; char a20, b20 ; fp = fopen(bc03.in,r) ; if(fp = NULL) printf(数据文件bc03.in不存在!) ; return ; wf = fopen(bc03.
5、out,w) ; for(i = 0 ; i 10 ; i+) fscanf(fp, %s %s, a, b) ; fprintf(wf, %sn, fun(a, b) ; fclose(fp) ; fclose(wf) ;main() char a20,b10; printf(Input 1th string:); gets(a); printf(Input 2th string:); gets(b); printf(%sn,fun(a,b); NONO ();3. 给定程序中,函数fun的功能是:将NN矩阵中元素的值按列右移1个位置, 右边被移出矩阵的元素绕回左边。例如,N=4,有下列矩阵
6、 21 12 13 24 25 16 47 38 29 11 32 54 42 21 33 10 计算结果为 24 21 12 13 38 25 16 47 54 29 11 32 10 42 21 33程序如下:#include #define N 4void fun(int (*t)N) /这里的(*t)和数组t是一样的/ int i, j, x; for(i=0; i0; j-) tij=tij-1; ti0=x; main() int tN=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10, i, j; printf(The origina
7、l array:n); for(i=0; iN; i+) for(j=0; jN; j+) printf(%2d ,tij); printf(n); fun(t); /调用fun涵数/ printf(nThe result is:n); for(i=0; iN; i+) for(j=0; jN; j+) printf(%2d ,tij); printf(n); 4. 给定程序modi.c中函数fun的功能是:找出100至n(不大于1000)之间三位数字相等的所有整数,把这些整数放在s所指数组中,个数作为函数值返回。程序如下:#include #define N 100int fun(int *
8、s, int n) int i,j,k,a,b,c; j=0; for(i=100; in; i+) k=i; a=k%10; k/=10; b=k%10; k/=10; c=k; if( a=b & a=c ) sj+=i; return j;main() int aN, n, num=0, i; do printf(nEnter n( 1000); num = fun( a,n ); printf(nnThe result :n); for(i=0; inum; i+)printf(%5d,ai); printf(nn);5. *请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,
9、将其余5个字符按降序排列。例如,原来的字符串为CEAedca,排序输出为CedcEAa。*程序如下:#include #include #include #include int fun(char *s,int num) int i,j,h,t; for(i=1;inum-1;i+) h=i; for (j=i;jnum-1;j+) if (shsj) h=j; /*从字符串的第i+1个字符到num-1个字符中找出最大的字符,并将其数组下标赋值给h*/ if (h!=i) /*判断找到的最大字符的下标是否为第i个字符*/ t=sh; sh=si; si=t; /*将sh与si中的字符进行交换*
10、/ NONO( )/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ char s10; int j; FILE *rf, *wf ; rf = fopen(b15.in, r) ; wf = fopen(a15.out, w) ; for (j=0;j4;j+) fscanf(rf,%s,s); fun(s,7); fprintf(wf,%sn,s); fclose(rf) ; fclose(wf) ;main() char s10; system(cls); printf(输入7个字符的字符串:); gets(s); fun(s,7); printf
11、(n%s,s); Printf(“n”); NONO();6:输入一个数n,再输入n个数,将这n个数中的素数输出,要求按照输入的相反顺序输出。 /素数:用一个数(x)分别去除2到sqrt(x) 如果可被整除则不是素数 否则是素数/例:输入:10 5 7 9 11 2 30 54 41 37 3输出 3 37 41 2 11 7 5提示(本题可以用数组解决)#include#includeint pd(int x)int i;for (i=2;i=sqrt(x);i+) /判断是不是素数/if (x%i=0)return 0;return 1; /标记 如果不是素说的话就输出0 否则输出1/in
12、t main()int n;int a100;int i;scanf(%d,&n);for (i=1;i=1;i-)if (pd(ai)=1)printf(%d ,ai);printf(n);return 0;7:某次运动会上一共有n名参赛运动员,要求手动输入该n名运动员的编号与成绩,并按照从高分到低分的顺序输出这些运动员的编号与成绩。例:输入:5650 87369 75654 90487 88158 70输出654 90 487 88650 87369 75158 70提示(可以使用两个数组并使用排序方法)#includeint main()int a1003;int n;int i,j,k
13、;scanf(%d,&n);for (i=1;i=n;i+)scanf(%d%d,&ai1,&ai2); /声明两个数组成一个存放编号 另一个存放成绩 其中第一个为编号 第二个为成绩/for (i=1;i=n-1;i+)for (j=1;j=n-i;j+)if (aj2aj+12) /成绩的比较/k=aj1;aj1=aj+11; aj+11=k; / 编号的交换/k=aj2;aj2=aj+12;aj+12=k; /成绩的交换/ printf(“nn”);for (i=1;i=n;i+)printf(%d %dn,ai1,ai2);return 0;感想:利用冒泡排序对成绩进行比较 同样利用冒泡
14、排序在成绩确定排序的条件下将编号排序 扩展部分:#includeint main(void)int a1001004;int x,y,m,n,i,j,k,bj,temp; for(i=0;i100;i+)for(j=0;j100;j+)for(k=0;k4;k+) aijk=0;printf(请输入班级数:);scanf(%d,&m);printf(请输入人数:);scanf(%d,&n);for(i=1;in;i+)scanf(%d%d%d,&bj,&x,&y);abj01+;abj abj01 1=x;abj abj02 1=y;for(k=1;k=m;k+)for (i=1;iak01;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 考试 试题
限制150内