搜档网
当前位置:搜档网 › 大连理工大学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",str);

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

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

scanf("%d%d",&i,&n);

while (i+n-1>strlen(str))

{

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

}

fun(str,i,n);

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

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","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,"%s\n",i);

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

if(tt[i][j]

pp[j]=tt[i][j];

}

/********** 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;i

{

for(j=0;j

printf("%6d",t[i][j]);

printf("\n");

}

fun(t,p);

printf("\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", &m);

printf("\nThe result is %d\n", fun(m));

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",&n);

flag=fun(n);

if(flag)

printf("%d 是水仙花数\n",n);

else

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

TestFunc();

}

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

【程序设计】

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

功能:编写函数sum(int m,int n),求出m~n之间(包括m和n,m

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

#include "stdio.h"

int 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=%d\n",sum(m,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;i

s+=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",y);

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", &n);

printf("\nThe result is %1f\n", fun(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;i

{

if(a[i]>max) max=a[i];

if(a[i]

}

return max*min;

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

}

main()

{

int a[N],i,k;

void TestFunc();

for(i=0;i

a[i]=rand()%51+10;

for(i=0;i

{

printf("%5d",a[i]);

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

}

k=max_min(a,N);

printf("the result is:%d\n",k);

//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

if(list[min]>list[i])

min=i;

return min;

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

}

main()

{

int i;

void NONO();

for (i=0;i

{

vector[i]=rand();

printf("Vector[%d]=%6d\n",i,vector[i]);

}

i=fun(vector,VSIZE);

printf("\nMininum: Vector[%d]=%6d\n",i,vector[i]);

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", &m);

printf("\nThe result is %ld\n", fun(m));

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",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.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",array[i][j]);

printf("\n");

}

fun(array);

printf("Converted array:\n");

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

{

for (j=0; j < 3; j++)

printf("%7d",array[i][j]);

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中的数为:642。

------------------------------------------------*/ #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", &s); m=fun(s,t);

printf("The result is: %ld\n", m);

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;i

s=s+a[i][0]+a[i][N-1];

for(j=1;j

s=s+a[0][j]+a[M-1][j];

return s;

/********** 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",y);

TestFunc();

}

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

【程序设计】

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

功能:找出一个大于给定整数且紧随这个整数的素数,并

作为函数值返回。

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

#include "stdio.h"

#include"conio.h"

int fun(int n)

{

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

int i,k;

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

{

for(k=2;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 %d\n", fun(m));

TestFunc();

}

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

【程序设计】

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

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

注意:n的值不大于1000。

相关主题