保捱科技网
您的当前位置:首页大连理工大学C语言学习知识机房模拟试题之程序设计题(全)

大连理工大学C语言学习知识机房模拟试题之程序设计题(全)

来源:保捱科技网
,.

程序题 程序设计

/*------------------------------------------------ 【程序设计】

-------------------------------------------------- 功能:编写函数fun(str,i,n),从字符串str中删除第i个 字符开始的连续n个字符(注意:str[0]代表字符串 的第一个字符)。

------------------------------------------------*/ #include \"stdio.h\" #include \"string.h\" main() {

char str[81]; int i,n;

void fun(char str[],int i,int n); void TestFunc();

printf(\"请输入字符串str的值:\\n\"); scanf(\"%s\

printf(\"你输入的字符串str是:%s\\n\

printf(\"请输入删除位置i和待删字符个数n的值:\\n\");

,.

scanf(\"%d%d\ while (i+n-1>strlen(str)) {

printf(\"删除位置i和待删字符个数n的值错!请重新输入i和n的值\\n\"); scanf(\"%d%d\ }

fun(str,i,n);

printf(\"删除后的字符串str是:%s\\n\ TestFunc(); }

void fun(char str[],int i,int n) {

/*********Begin**********/ while(str[i+n-1]) {

str[i-1]=str[i+n-1]; i++; }

str[i-1]='\\0'; /* 或

int j=i-1,k=i+n-1;

while((str[j++]=str[k++])!='\\0');

,.

*/

/********** End **********/ }

void TestFunc() {

FILE *IN,*OUT; char i[200]; /*char o[200];*/ IN=fopen(\"in.dat\ if(IN==NULL) {

printf(\"Read File Error\"); }

OUT=fopen(\"out.dat\ if(OUT==NULL) {

printf(\"Write File Error\"); }

fscanf(IN,\"%s\ fun(i,2,8);

fprintf(OUT,\"%s\\n\

,.

fclose(IN); fclose(OUT); }

/*------------------------------------------------ 【程序设计】

-------------------------------------------------- 功能:请编一个函数void fun(int tt[M][N],int pp[N]), tt指向一个M行N列的二维数组,求出二维数组每列 中最小元素,并依次放入pp所指一维数组中。二维 数组中的数已在主函数中赋予。

------------------------------------------------*/ #include \"conio.h\" #include \"stdio.h\" #define M 3 #define N 4

void fun(int tt[M][N],int pp[N]) {

/*********Begin**********/ int i,j;

for(j=0;j,.

pp[j]=tt[0][j]; for(i=1;i/********** End **********/ } main() {

int t[M][N]={{22,45,56,30},{19,33,45,38},{20,22,66,40}}; void NONO(); int p[N],i,j,k;

printf(\"The original data is:\\n\"); for(i=0;ifor(j=0;jprintf(\"\\nThe result is:\\n\");

for(k=0;k,.

printf(\"\\n\"); NONO(); }

/*------------------------------------------------ 【程序设计】1685

--------------------------------------------------

功能:能计算从1开始到n的自然数的和,n由键盘输入, 并在main()函数中输出。

------------------------------------------------*/

#include \"stdio.h\"

int fun(int n) {

/*********Begin**********/ int sum=0,i; for(i=1;i<=n;i++) sum=sum+i; return(sum);

,.

/********** End **********/ }

main() { int m;

void TestFunc(); printf(\"Enter m: \"); scanf(\"%d\

printf(\"\\nThe result is %d\\n\ TestFunc(); }

/*------------------------------------------------ 【程序设计】1599

-------------------------------------------------- 功能:调用函数fun判断一个三位数是否\"水仙花数\"。 在main函数中从键盘输入一个三位数,并输 出判断结果。请编写fun函数。

说明:所谓\"水仙花数\"是指一3位数,其各位数字立方和 等于该数本身。

例如:153是一个水仙花数,因为153=1+125+27。 ------------------------------------------------*/

,.

#include \"stdio.h\" int 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\ flag=fun(n); if(flag)

printf(\"%d 是水仙花数\\n\ else

printf(\"%d 不是水仙花数\\n\ TestFunc(); }

,.

/*-------------------------------------------------------------- 【程序设计】

----------------------------------------------------------------

功能:编写函数sum(int m,int n),求出m~n之间(包括m和n,m/*********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=%d\\n\ TestFunc(); }

/*------------------------------------------------ 【程序设计】

--------------------------------------------------

功能:求5行5列矩阵的主、副对角线上元素之和。注意, 两条对角线相交的元素只加一次。

例如:主函数中给出的矩阵的两条对角线的和为45。 ------------------------------------------------*/ #include \"stdio.h\" #define M 5 int fun(int a[M][M]) {

/*********Begin**********/ int i, s=0; for(i=0;is+=a[i][i]+a[i][M-i-1];

s-=a[(M-1)/2][(M-1)/2]; return s;

/********** End **********/

,.

} main() {

int a[M][M]={{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=%d\\n\ TestFunc(); }

/*------------------------------------------------ 【程序设计】

-------------------------------------------------- 功能:根据整型形参m,计算如下公式的值:

y=1/5+1/6+1/7+1/8+1/9+1/10...+1/(m+5) 例如:若m=9,则应输出:1.168229

------------------------------------------------*/ #include \"stdio.h\" double 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\

printf(\"\\nThe result is %1f\\n\ TestFunc(); }

/*------------------------------------------------ 【程序设计】

-------------------------------------------------- 功能:求一批数中最大值和最小值的积。 ------------------------------------------------*/

,.

#define N 30 #include \"stdlib.h\" #include \"stdio.h\" int max_min(int a[],int n) {

/*********Begin**********/ int i, max, min; max=min=a[0]; for(i=1;ireturn max*min;

/********** End **********/ } main() {

int a[N],i,k; void TestFunc(); for(i=0;iif(a[i]>max) max=a[i]; if(a[i],.

for(i=0;iprintf(\"%5d\

if((i+1)%5==0) printf(\"\\n\"); }

k=max_min(a,N);

printf(\"the result is:%d\\n\ //TestFunc(); }

/*------------------------------------------------ 【程序设计】

-------------------------------------------------- 功能:把20个随机数存入一个数组,然后输出该数组中的 最小值。其中确定最小值的下标的操作在fun函数中 实现,请给出该函数的定义。

------------------------------------------------*/ #include \"stdio.h\" #include \"stdlib.h\" #define VSIZE 20 int vector[VSIZE] ; int fun(int list[],int size)

,.

{

/*********Begin**********/ int i,min=0; for(i=1; i list[i]) min=i; return min;

/********** End **********/ }

main() { int i;

void NONO(); for (i=0;ivector[i]=rand();

printf(\"Vector[%d]=%6d\\n\ }

i=fun(vector,VSIZE);

printf(\"\\nMininum: Vector[%d]=%6d\\n\

NONO();

,.

}

/*------------------------------------------------ 【程序设计】

-------------------------------------------------- 功能:求k!(k〈13),所求阶乘的值作为函数值返回。 (要求使用递归)

------------------------------------------------*/ #include \"stdio.h\" #include \"conio.h\" long fun(int k) {

/*********Begin**********/ if (k>0)

return(k*fun(k-1)); else if(k==0) return 1L;

/********** End **********/ }

main() { int m;

,.

void TestFunc(); printf(\"Enter m: \"); scanf(\"%d\

printf(\"\\nThe result is %ld\\n\ TestFunc(); }

/*------------------------------------------------ 【程序设计】

-------------------------------------------------- 功能:用do-while语句求1~100的累计和。 ------------------------------------------------*/ #include \"stdio.h\" long int fun(int n) {

/*********Begin**********/ int i =1, sum =0; do

{ sum = sum + i; i++;

} while ( i <= n ); return sum;

,.

/********** End **********/ } main () {

int i=100; void TestFunc();

printf(\"1~100的累加和为:%ld\\n\ TestFunc(); }

/*------------------------------------------------ 【程序设计】

--------------------------------------------------

功能:编写程序,实现矩阵(3行3列)的转置(即行列互换) 例如:输入下面的矩阵: 100 200 300 400 500 600 700 800 900 程序输出: 100 400 700 200 500 800 300 600 900

,.

------------------------------------------------*/ #include \"stdio.h\"

void fun(int array[3][3]) {

/*********Begin**********/ int i,j,t;

for(i=0; i < 3; i++) for(j=0; j < i; j++) { t=array[i][j];

array[i][j]=array[j][i]; array[j][i]=t;

} /*【或】 int i, j, t;

for (i=0; i < 3; i++) for (j=i+1; j < 3; j++) */

{ }

t=array[i][j]; array[i][j]=array[j][i]; array[j][i] = t;

,.

/********** End **********/ } main() { int i,j;

void NONO();

int array[3][3]={{100,200,300}, {400,500,600}, {700,800,900}}; for (i=0; i < 3; i++) {

for (j=0; j < 3; j++) printf(\"%7d\ printf(\"\\n\"); }

fun(array);

printf(\"Converted array:\\n\"); for (i=0; i < 3; i++) {

for (j=0; j < 3; j++) printf(\"%7d\ printf(\"\\n\");

,.

}

NONO(); }

/*------------------------------------------------ 【程序设计】

-------------------------------------------------- 功能:将字符串中的小写字母转换为对应的大写字母, 其它字符不变。

------------------------------------------------*/ #include \"string.h\" #include \"stdio.h\" void change(char str[]) {

/*********Begin**********/ int i;

for(i=0;str[i]!='\\0';i++)

if(str[i]>='a' && str[i]<='z') str[i]=str[i]-32; /********** End **********/ } main()

,.

{

void change(); char str[40]; void TestFunc(); gets(str); change(str); puts(str); TestFunc(); }

/*------------------------------------------------ 【程序设计】

-------------------------------------------------- 功能:从低位开始取出长整型变量s中偶数位上的数,依次 构成一个新数放在t中。

例如:当s中的数为:7654321时,t中的数为:2。 ------------------------------------------------*/ #include \"stdio.h\" long fun (long s,long t) {

/*********Begin**********/

,.

long sl=10; s /= 10; t = s % 10; while(s > 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\ m=fun(s,t);

printf(\"The result is: %ld\\n\ TestFunc(); }

/*------------------------------------------------

,.

【程序设计】

-------------------------------------------------- 功能:求出二维数组外围元素之和,作为函数值返回。二 维数组的值在主函数中赋予。

-------------------------------------------------*/ #define M 4 #define N 5 #include \"stdio.h\" int fun(int a[M][N]) {

/*********Begin**********/ int s=0; int i,j;

for(i=0;is=s+a[i][0]+a[i][N-1]; for(j=1;j/********** End **********/ } main() {

,.

int a[M][N]={{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=%d\\n\ TestFunc(); }

/*------------------------------------------------ 【程序设计】

-------------------------------------------------- 功能:找出一个大于给定整数且紧随这个整数的素数,并 作为函数值返回。

------------------------------------------------*/ #include \"stdio.h\" #include\"conio.h\" int fun(int n) {

/*********Begin**********/ int i,k;

for(i=n+1;;i++) {

,.

for(k=2;k}

/********** End **********/ }

main() {

int m;

printf(\"Enter m: \"); scanf(\"%d\

printf(\"\\nThe result is %d\\n\ TestFunc(); }

/*------------------------------------------------ 【程序设计】

--------------------------------------------------

功能:计算并输出给定整数n的所有因子之和(不包括1与自身)。 注意:n的值不大于1000。

,.

例如:n的值为855时,应输出704。

------------------------------------------------*/ #include \"stdio.h\" int fun(int n) {

/*********Begin**********/ int s=0,i; for(i=2;i/********** End **********/ } main() {

printf(\"s=%d\\n\ TestFunc(); }

/*------------------------------------------------------ 【程序设计】

-------------------------------------------------------- 功能:删去一维数组中所有重复的数,只保留不同的数。

,.

数组中的数已按由小到大的顺序排列, 函数返回删除后数组中数据的个数。

例如:一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。

删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。 注意:请勿改动主函数main和其它函数中的任何内容。 ------------------------------------------------------*/ #include \"stdio.h\" #define N 80 int fun(int a[],int n) {

/*********Begin**********/

int i,j=1,k=a[0]; for(i=1;ia[j++]=a[i]; k=a[i]; } return j;

/********** End **********/ } main()

,.

{

void TestFunc();

int a[N]={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=0;iprintf(\"\\n\\nThe data after deleted:\\n\"); for(i=0;i/*------------------------------------------------ 【程序设计】

-------------------------------------------------- 功能:用函数求N个[10,60]上的整数中能被5整除的最大 的数,如存在则返回这个最大值,如果不存在则 返回0。

------------------------------------------------*/ #include \"stdio.h\" #include \"stdlib.h\" #define N 30

,.

int find(int arr[],int n) {

int m=0;

/*********Begin**********/ int i;

for(i=0;iif(arr[i]%5==0 && arr[i]>m)

m=arr[i];

if(m==0) return 0;

/********** End **********/ return(m); } main() {

int a[N],i,k; void TestFunc(); for(i=0;iprintf(\"%5d\

if((i+1)%5==0) printf(\"\\n\");

,.

}

k=find(a,N); if(k==0)

printf(\"NO FOUND\\n\"); else

printf(\"the max is:%d\\n\ TestFunc(); }

/*------------------------------------------------ 【程序设计】

-------------------------------------------------- a1=1,a2=1/(1+a1),a3=1/(1+a2),…,an=1/(1+a(n-1)) 功能:根据整型参数n,计算如图公式的值。 ------------------------------------------------*/ #include \"stdio.h\" #include \"conio.h\" double 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\

printf(\"\\nThe result is %f\\n\ TestFunc(); }

/*------------------------------------------------ 【程序设计】

-------------------------------------------------- 功能:输入n个数,并求出小于平均值的数的个数。 ------------------------------------------------*/ #include \"stdio.h\"

int average_num(int a[],int n)

,.

{

/*********Begin**********/ int i,sum=0,k=0; double average; for(i=0;ia[i]) k++; return(k);

/********** End **********/ } main() {

int n,a[100],i,num; void TestFunc(); scanf(\"%d\ for(i=0;i,.

}

/*------------------------------------------------ 【程序设计】

-------------------------------------------------- 功能:从字符串中删除指定的字符。同一字母的大、小写 按不同字符处理。

例如:若程序执行时输入字符串为:turbocandborlandc++ 从键盘上输入字符:n,则输出后变为:turbocadbo rladc++,如果输入的字符在字符串中不存在,则字 符串照原样输出。

------------------------------------------------*/ #include \"stdio.h\" void 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(\"原始字符串:%s\\n\ printf(\"输入一个字符:\"); scanf(\"%c\ fun(str,ch); printf(\"str[]=%s\\n\ TestFunc(); }

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