《大连理工大学C语言机房模拟试题之程序设计题(全)(14页).doc》由会员分享,可在线阅读,更多相关《大连理工大学C语言机房模拟试题之程序设计题(全)(14页).doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-大连理工大学C语言机房模拟试题之程序设计题(全)-第 14 页程序题程序设计【程序设计】功能:编写函数fun(str,i,n),从字符串str中删除第i个 字符开始的连续n个字符(注意:str0代表字符串 的第一个字符)。#include stdio.h#include string.hmain() char str81; int i,n; void fun(char str,int i,int n); void TestFunc(); printf(请输入字符串str的值:n); scanf(%s,str); printf(你输入的字符串str是:%sn,str); printf(请输入删
2、除位置i和待删字符个数n的值:n); scanf(%d%d,&i,&n); while (i+n-1strlen(str) printf(删除位置i和待删字符个数n的值错!请重新输入i和n的值n); scanf(%d%d,&i,&n); fun(str,i,n); printf(删除后的字符串str是:%sn,str); TestFunc();void fun(char str,int i,int n) /*Begin*/while(stri+n-1) stri-1=stri+n-1; i+; stri-1=0;/* 或int j=i-1,k=i+n-1; while(strj+=strk+)
3、!=0); /* End */void TestFunc() FILE *IN,*OUT; char i200; /*char o200;*/ IN=fopen(in.dat,r); if(IN=NULL) printf(Read File Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write File Error); fscanf(IN,%s,i); fun(i,2,8); fprintf(OUT,%sn,i); fclose(IN); fclose(OUT);【程序设计】功能:请编一个函数void fun(int ttMN,int
4、ppN), tt指向一个M行N列的二维数组,求出二维数组每列 中最小元素,并依次放入pp所指一维数组中。二维 数组中的数已在主函数中赋予。#include conio.h#include stdio.h#define M 3#define N 4void fun(int ttMN,int ppN) /*Begin*/int i,j; for(j=0;jN;j+) ppj=tt0j; for(i=1;iM;i+) if(ttijppj) ppj=ttij; /* End */main() int tMN=22,45,56,30,19,33,45,38,20,22,66,40; void NONO
5、(); int pN,i,j,k; printf(The original data is:n); for(i=0;iM;i+) for(j=0;jN;j+) printf(%6d,tij); printf(n); fun(t,p); printf(nThe result is:n); for(k=0;kN;k+) printf(%4d,pk); printf(n); NONO();【程序设计】1685功能:能计算从1开始到n的自然数的和,n由键盘输入, 并在main()函数中输出。#include stdio.hint fun(int n) /*Begin*/ int sum=0,i;for
6、(i=1;i=n;i+) sum=sum+i;return(sum); /* End */main() int m; void TestFunc(); printf(Enter m: ); scanf(%d, &m); printf(nThe result is %dn, fun(m); TestFunc();【程序设计】1599功能:调用函数fun判断一个三位数是否水仙花数。 在main函数中从键盘输入一个三位数,并输 出判断结果。请编写fun函数。说明:所谓水仙花数是指一3位数,其各位数字立方和 等于该数本身。例如:153是一个水仙花数,因为153=1+125+27。#include st
7、dio.hint fun(int n) /*Begin*/ int bw,sw,gw;bw=n/100;sw=(n-bw*100)/10;gw=n%10; if(n=bw*bw*bw+sw*sw*sw+gw*gw*gw) return 1; else return 0; /* End */main() int n,flag; scanf(%d,&n); flag=fun(n); if(flag) printf(%d 是水仙花数n,n); else printf(%d 不是水仙花数n,n); TestFunc();【程序设计】功能:编写函数sum(int m,int n),求出mn之间(包括m和
8、n,mn)能同时 被3和5整除的数的和,并将这些数的和作为返回值。#include stdio.hint sum(int m,int n) /*Begin*/ int i, s=0; for(i=m;i=n;i+) if(i%3=0 & i%5=0)s+=i; return s; /* End */main() void TestFunc(); int m=15,n=300; printf(sum=%dn,sum(m,n); TestFunc();【程序设计】功能:求5行5列矩阵的主、副对角线上元素之和。注意, 两条对角线相交的元素只加一次。例如:主函数中给出的矩阵的两条对角线的和为45。#i
9、nclude stdio.h#define M 5int fun(int aMM) /*Begin*/ int i, s=0; for(i=0;iM;i+) s+=aii+aiM-i-1; s-=a(M-1)/2(M-1)/2; return s; /* End */main() int aMM=1,3,5,7,9,2,4,6,8,10,2,3,4,5,6,4,5,6,7,8,1,3,4,5,6; int y; y=fun(a); printf(s=%dn,y); TestFunc();【程序设计】功能:根据整型形参m,计算如下公式的值: y=1/5+1/61/71/81/9+1/10.1/(
10、m+5)#include stdio.hdouble fun(int m) /*Begin*/ int i; double y=0; for(i=0;i=m;i+) y+=1./(i+5); return y; /* End */main() int n; void TestFunc(); printf(Enter n: ); scanf(%d, &n); printf(nThe result is %1fn, fun(n); TestFunc(); 【程序设计】功能:求一批数中最大值和最小值的积。#define N 30#include stdlib.h#include stdio.hint
11、 max_min(int a,int n) /*Begin*/ int i, max, min; max=min=a0; for(i=1;imax) max=ai; if(aimin) min=ai; return max*min; /* End */main() int aN,i,k; void TestFunc(); for(i=0;iN;i+) ai=rand()%51+10; for(i=0;iN;i+) printf(%5d,ai); if(i+1)%5=0) printf(n); k=max_min(a,N); printf(the result is:%dn,k); /TestF
12、unc();【程序设计】功能:把20个随机数存入一个数组,然后输出该数组中的 最小值。其中确定最小值的下标的操作在fun函数中 实现,请给出该函数的定义。#include stdio.h#include stdlib.h#define VSIZE 20 int vectorVSIZE ; int fun(int list,int size) /*Begin*/int i,min=0; for(i=1; i listi) min=i; return min; /* End */ main() int i; void NONO(); for (i=0;i0) return(k*fun(k-1);e
13、lse if(k=0)return 1L; /* End */main() int m; void TestFunc(); printf(Enter m: ); scanf(%d, &m); printf(nThe result is %ldn, fun(m); TestFunc();【程序设计】功能:用do-while语句求1100的累计和。#include stdio.hlong int fun(int n) /*Begin*/ int i =1, sum =0; do sum = sum + i; i+; while ( i = n ); return sum; /* End */mai
14、n () int i=100; void TestFunc(); printf(1100的累加和为:%ldn,fun(i); TestFunc();【程序设计】功能:编写程序,实现矩阵(3行3列)的转置(即行列互换) 例如:输入下面的矩阵: 100 200 300 400 500 600 700 800 900 程序输出: 100 400 700 200 500 800 300 600 900 #include stdio.hvoid fun(int array33) /*Begin*/ int i,j,t; for(i=0; i 3; i+) for(j=0; j i; j+) t=arra
15、yij; arrayij=arrayji; arrayji=t; /*【或】 int i, j, t; for (i=0; i 3; i+) for (j=i+1; j 3; j+) t=arrayij; arrayij=arrayji; arrayji = t; /* End */main() int i,j; void NONO(); int array33=100,200,300, 400,500,600, 700,800,900; for (i=0; i 3; i+) for (j=0; j 3; j+) printf(%7d,arrayij); printf(n); fun(arra
16、y); printf(Converted array:n); for (i=0; i 3; i+) for (j=0; j =a & stri 0) s = s/100; t = s%10*sl + t; sl = sl * 10; /* End */return t;main() long s, t,m; void TestFunc(); printf(nPlease enter s:); scanf(%ld, &s); m=fun(s,t); printf(The result is: %ldn, m); TestFunc();【程序设计】功能:求出二维数组外围元素之和,作为函数值返回。二
17、 维数组的值在主函数中赋予。#define M 4#define N 5#include stdio.hint fun(int aMN)/*Begin*/int s=0; int i,j; for(i=0;iM;i+) s=s+ai0+aiN-1; for(j=1;jN-1;j+) s=s+a0j+aM-1j; return s;/* End */main() int aMN=1,3,5,7,9,2,4,6,8,10,2,3,4,5,6,4,5,6,7,8; void TestFunc(); int y; y=fun(a); printf(s=%dn,y); TestFunc();【程序设计】
18、功能:找出一个大于给定整数且紧随这个整数的素数,并 作为函数值返回。#include stdio.h#includeconio.hint fun(int n) /*Begin*/int i,k;for(i=n+1;i+)for(k=2;ki;k+)if(i%k=0)break;if(k=i)return(i); /* End */main() int m; printf(Enter m: ); scanf(%d, &m); printf(nThe result is %dn, fun(m); TestFunc();【程序设计】功能:计算并输出给定整数n的所有因子之和(不包括1与自身)。注意:n
19、的值不大于1000。例如:n的值为855时,应输出704。#include stdio.hint fun(int n) /*Begin*/ int s=0,i; for(i=2;in;i+) if(n%i=0)s=s+i; return s; /* End */main() printf(s=%dn,fun(855); TestFunc();【程序设计】功能:删去一维数组中所有重复的数,只保留不同的数。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如:一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。删除后,数组中的内
20、容应该是: 2 3 4 5 6 7 8 9 10。注意:请勿改动主函数main和其它函数中的任何内容。#include stdio.h#define N 80int fun(int a,int n) /*Begin*/int i,j=1,k=a0; for(i=1;in;i+) if(k!=ai) aj+=ai; k=ai; return j; /* End */main() void TestFunc(); int aN=2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10,i,n=20; printf(The original data:n); for(i
21、=0;in;i+) printf(%3d,ai); n=fun(a,n); printf(nnThe data after deleted:n); for(i=0;in;i+) printf(%3d,ai); printf(nn); TestFunc();【程序设计】功能:用函数求N个10,60上的整数中能被5整除的最大 的数,如存在则返回这个最大值,如果不存在则 返回0。#include stdio.h#include stdlib.h#define N 30int find(int arr,int n) int m=0; /*Begin*/ int i; for(i=0;im) m=arr
22、i; if(m=0) return 0; /* End */ return(m);main() int aN,i,k; void TestFunc(); for(i=0;iN;i+) ai=rand()%50+10; for(i=0;iN;i+) printf(%5d,ai); if(i+1)%5=0) printf(n); k=find(a,N); if(k=0) printf(NO FOUNDn); else printf(the max is:%dn,k); TestFunc();【程序设计】a1=1,a2=1/(1+a1),a3=1/(1+a2),an=1/(1+a(n-1)功能:根据
23、整型参数n,计算如图公式的值。#include stdio.h#include conio.hdouble fun(int n) /*Begin*/ int i; double a=0; for (i=1;i=n;i+) a=1./(1+a); return a; /* End */main() int m; void TestFunc(); printf(Enter m: ); scanf(%d, &m); printf(nThe result is %fn, fun(m); TestFunc();【程序设计】功能:输入n个数,并求出小于平均值的数的个数。#include stdio.hin
24、t average_num(int a,int n) /*Begin*/int i,sum=0,k=0; double average; for(i=0;in;i+) sum=sum+ai; average=sum*1.0/n; for(i=0;iai) k+;return(k);/* End */main() int n,a100,i,num; void TestFunc(); scanf(%d,&n); for(i=0;in;i+) scanf(%d,&ai); num=average_num(a,n); printf(the num is:%dn,num); TestFunc();【程序
25、设计】功能:从字符串中删除指定的字符。同一字母的大、小写 按不同字符处理。例如:若程序执行时输入字符串为:turbocandborlandc+ 从键盘上输入字符:n,则输出后变为:turbocadbo rladc+,如果输入的字符在字符串中不存在,则字 符串照原样输出。 #include stdio.hvoid fun(char s,char c) /*Begin*/ char *q=s; for(; *q; q+) if(*q != c) *(s+)=*q; *s=0;/* End */ main() static char str=turbocandborlandc+; char ch; printf(原始字符串:%sn, str); printf(输入一个字符:); scanf(%c,&ch); fun(str,ch); printf(str=%sn,str); TestFunc();