文档库 最新最全的文档下载
当前位置:文档库 › 上机题库

上机题库

1、请编一个函数fun(int *a,int n,int *odd,int *even),函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参n给出数组中数据的个数;利用指针odd返回奇数之和,利用指针even返回偶数之和.例如:数组中的值依次为:1,9,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。
#define N 20
fun ( int *a, int n, int *odd, int *even )
{int i;
*odd = * even = 0;
for ( i = 0; i < n;i ++ )
if (a[i] % 2 == 0)
*odd += a[i]; else
*even += a[i];}
2、 要求程序的功能是:把20个随机数存入一个数组,然后输出该数组中的最小值。其中确定最小值的下标的操作在fun函数中实现,请给出该函数的定义。
#define VSIZE 20
int vector[VSIZE];
int fun(int list[],int size)
{ int x,i;
x=0;
for (i=1;iif (list[x]>list[i]) x=i;
return x;}
3、请编一个函数float fun(double h),函数的功能是对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值为正数)例如:h值为8.32433,则函数返回8.32;h值为8.32533,则函数返回8.33。 float fun ( float h )
{ long num;
h=h+0.005;
h=h*100;
num=h;
h=num;
h=h/100;
return h;}
4、 编写函数fun,函数的功能是:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。若程序执行时,输入字符串为:turbo c and borland c++从键盘上输入字符:n,则输出后变为:turbo c ad borlad c++如果输入的字符字符串中不存在,则字符串照原样输出。int fun(char s[],int c)
{ int i=0,j;
while (s[i]!='\0')
{ if (s[i]==c)
{j=i+1;
while (s[j-1]!='\0')
{s[j-1]=s[j];j=j+1;} }
i=i+1; }}
7.请编写一个函数unsigned fun(unsigned w),w是一个大于10的无 符号整数,若w是n(n≥2)位的整数,函数求出w的后n-1位的数作为函数值返回。
for (i = 1; (i < 6) && (w >= 1); i++)
{str[i - 1] = '0' + w % 10;
w /= 10;}
str[i - 1] = 0;
result = str[0] - '0';
for (j = 1; j < i - 2; j++ )
{ sqr *= 10;
result += (str[j] - '0') * sqr;}
return result;}
8.编写函数 int fun(int lim,int aa[MAX]),该函数的功能是求出小于lim的所有素数并放在aa数组中,该函数返回求出素数的个数
#define MAX 200
int fun(int lim,int aa[MAX])
{ int i,j=0,k=0;
for (i=2;i{ for (j=2;jif (i%j==0) break;
if (j==i) aa[k++]=i;}
return k;}
9. 请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。 例如:二维数组中的值为 1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0则函数值为61。
#define M 4
#define N 5
int fun ( int a[M][N] )
{int i, j, sum = 0;
for (i = 0; i < M; i++)
for (j = 0; j < N; j++)
if ((i == 0)|

|(i == M - 1)||(j == 0)||(j == N - 1) )
sum += a[i][j];
return sum;}
10. 请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。例如,原来的字符串为CEAedca,排序输出为CedcEAa。
int fun(char *s,int num)
{int i,j,h,t;
for (i=1;i{ h=i;
for (j=i;jif (s[h]if (h!=i)
{ t=s[h];s[h]=s[i];s[i]=t;}}}
11.请编一个函数 void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入 pp所指一维数组中。二维数组中的数已在主函数中赋予。
#define M 3
#define N 4
void fun ( int tt[M][N], int pp[N] )
{ int i, j, min;
for(i = 0; i < 4; i++)
{min = tt[0][i];
for(j = 0; j < 3; j++)
if (min > tt[j][i])
min = tt[j][i];
pp[i] = min;}}
12. 编写一个函数,从传入的num个字符串找出最长的一个字符串,并通过形参指针max传回该串地址。(注意:用****作为结束输入的标志。)
# fun(char(*a)[81],int num,char **max)
{ int i;
*max=a[0];
for (i=1;i<=num;i++)
if (strlen(a[i])>strlen(*max)) *max=a[i];}
13. 请编一个函数fun,其中n所指存储单元中存放了数组中元素的个数。函数的功能是:删除所有值为y的元素。数组元素中的值和y的值由主函数通过键盘输入。
#define M 20
void fun ( int bb[ ], int *n, int y )
{int i, pos = *n-1;
for(; pos >=0; pos--)
if ( bb[pos] == y )
{for(i = pos;i < *n-1;i ++)
bb[i] =bb[i + 1];
(*n) --;}}
14. 编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd asasdfg asd as zx67 ask mklo,子字符串为:as,则应输出6。
int fun(char *str,char *substr)
{int i=0,j,k=0;
while (i{j=0;
while ((str[i]==substr[j]) && (substr[j]!='\0'))
{ i++;j++; }
if (substr[j]=='\0') k++;
else i++;}
return k;}
15. 请编写一个函数int fun(int x),它的功能是:判断整数x是否是同构数。若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数。x的值由主函数从键盘读入,要求不大于100。
int fun ( int x )
{ if (x < 10)
return !((x * x - x) % 10);
else
return !((x * x - x) % 100);}
16. 请编写函数fun,函数的功能是:在字符串中的所有数字字符前加一个$字符。 例如,输入A1B23CD45,则输出为:A$1B$2$3CD$4$5。
void fun(char *s)
{ char p[80];
int i=0,j=0;
while (s[i]!='\0')
{ if ((s[i]>='0') && (s[i]<='9')) {p[j]='$';p[j+1]=s[i];j=j+2;}
else {p[j]=s[i];j=j+1;}
i++;}
p[j]='\0';
strcpy(s,p);}
17. 请编一个函数

fun(char *s),函数的功能是把字符串中所有的字符前移一个位置,串中的第一个字符移到最后。例如:原有的字符串为:Mn.123xyZ,则调用该函数后,串中的内容为:n.123xyZM。
#define N 81
fun ( char *s )
{int i, length;
char tmp;
length = strlen( s );
if (length == 0) return;
tmp = s[0];
for (i = 0;i < length - 1; i++)
s[i] = s[i + 1];
s[length - 1] = tmp;}
18. 请编写函数fun,函数的功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。例如,若输入:17,则应输出:9和4 6 8 9 10 12 14 15 16。
void fun(int m,int *k,int xx[])
{int i,j; *k=0;
for (i=2;i{ for (j=2;jif (i%j==0) break;
if (j19. 请编写一个函数fun(char *s),函数的功能是把字符串中所有的字母改写在该字母的下一个字母,最后一个字母z改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他的字符不变。 例如,原有的字符串为:Mn.123xyZ,则调用该函数后, 串中的内容为:No.123yzA。
define N 81
fun ( char *s )
{int i, length;
length = strlen( s );
for (i = 0;i < length; i++)
{if(!((s[i]>='a' && s[i]<='z') || (s[i]>='A' && s[i]<='Z') ) )
continue;
switch ( s[i] ) {
case 'z':
s[i] = 'a'; break;
case 'Z':
s[i] = 'A'; break;
default:
s[i] = s[i] + 1; break;}}}
20请编写函数fun,函数的功能是:将s所指字符串中下标为奇数位置上的大写字母转换为字母序列中的下一个小写字母;若 该位置上是小写字母,则不转换;若该位置上是大写字母Z,则仅转换成小写字母z。 例如,输入:ABCdXZZZZ,则输出为:AcCdXzZz。
#define N 80
void fun(char *s)
{ int i=0;
while (s[i]!='\0')
{ if ((s[i]=='Z')&&(i%2==1)) s[i]='z';
else if ((s[i]>='A' && s[i]<'Z') && (i%2==1)) s[i]=s[i]+33;
i++;}}
21. 程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:给数组周边元素置0值。 例如:a数给中的值为
|0 11 12 7 9| |1 9 7 4 5| |20 13 18 3 1|
a=|14 5 6 8 2| |15 9 17 4 1|
则返回主程序后a数组中的值应为
|0 0 0 0 0|
|0 4 7 9 0|
|0 3 18 18 0| |0 8 6 5 0| |0 0 0 0 0|
#define N 5
fun ( int w[][N] )
{int i, j;
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
if ((i == 0)||(i == N- 1)||(j == 0)||(j == N - 1) )
w[i][j]=0;}
fun ( a );
printf ("***** THE RESULT *****\n");
for ( i =0; i{ for ( j =0; jprintf("\n");}
22.请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值,例如,若输入字符串:123412132,输入字符为:1,则输出:3。
#d

efine M 81
int fun(char *ss, char c)
{int times=0,i;
for(i=0;iif (ss[i]==c) times++;}
return(times);}
23. 程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。 例如:a数组中的值为
|0 1 2 7 9| |1 9 7 4 5| a= |2 3 8 3 1|
|4 5 6 8 2|
|5 9 1 4 1| 则返回主程序后s的值应为:3.375。
#define N 5
double fun ( int w[][N] )
{int i,j,count=0;
double average,sum=0.0;
for(i=0;iif(i==0 || i==(N-1))
for(j=0;jsum+=w[i][j];
count++; }
else { sum+=w[i][0];
sum+=w[i][N-1];
count+=2;}}
average=sum/count;
return average;}
24. 编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat)。例如,分别输入下面两个字符串:FirstString--SecondString程序输出: FirstString—SecondString
void fun(char p1[], char p2[])
{char *point1,*point2;
point1=p1;
point2=p2;
while(*point1!=NULL) point1++;
while(*point2!=NULL){
*point1=*point2;
point1++;
point2++;}
*point1=NULL;}
25. 程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),函数的功能是:使数组中第一列元素中的值与最后一列元素中的值对调、第二列元素中的值与倒数第二列元素中的值对调、……、其他依次类推。例如:a数组中的值为
|0 11 12 7 9|
|1 9 7 4 5| |20 13 18 3 1|
a=|14 5 6 8 2| |15 9 17 4 1|
则返回主程序后a数组中的值应为
|9 7 12 11 0 | |5 4 7 9 1 | |1 3 18 13 20| |2 8 6 5 14| |1 4 17 9 15|
#define N 5
int fun ( int a[][N] )
{ int i, j,k;
for (i=0;ifor (j=0;j{ k=a[ j ][ i ];
a[ j ][ i ]=a[ j ][ N-i-1 ];
a[ j ][ N-i-1 ]=k;}}
26. 请编写函数fun,函数的功能是:实现B=A+A',即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。例如,输入下面的矩阵: 其转置矩阵为:
|1 2 3| |1 4 7| |4 5 6| |2 5 8| |7 8 9| |3 6 9|
程序输出:|2 6 10| |6 10 14| |10 14 18|
void fun(int a[3][3],int b[3][3])
{int i,j;
for(i=0;i<3;i++)
for (j=0;j<3;j++)
b[i][j]=a[i][j]+a[j][i];}
28个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回。 例如,当score数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为:10、20、30、40。
int fun(int score[], int m, int below[])
{int total=0;
int average=0;
int *p_below=below;
int i=0;
int j=0;
for(i=0;itotal=total+score[i];}
average=total/m;
for(i=0;i<

m;i++){
if(score[i]*p_below=score[i];
p_below++;
j++;}}
*p_below=NULL;
return(j);}
29. 程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),函数的功能是:使数组左下半三角元素中的值全部置成0。例如:a数组中的值为
|1 9 7| a= |2 3 8|
|4 5 6|,则返回主程序后a数组中的值应为|0 9 7| |0 0 8|
|0 0 0|
#define N 5
int fun ( int a[][N] )
{ int i,j;
for (i=0;ifor (j=0;j{if (i>=j)
a[i][ j] =0;}}
30. 请编写函数fun,它的功能是:求出1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中通过n返回这些数的个数。
int aa[1000];
void fun(int *n)
{int i,count=0;*n=0;
for(i=1;i<=1000;i++)
if((i%7==0 || i%11==0) && (i%7!=0 || i%11!=0))aa[count++]=i;
*n=count;}
31. 程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),函数的功能是:使数组右上半三角元素中的值全部置成0。例如:a数组中的值为 |1 9 7| a= |2 3 8|,
|4 5 6| 则返回主程序后a数组中的值应为 |0 0 0| |2 0 0| |4 5 0|
#define N 5
int fun ( int a[][N] )
{ int i,j;
for (i=0;ifor (j=0;j{if (i<=j)
a[i][ j] =0;}}
32请编写函数void fun(int x,int pp[],int *n), 它的功能是:求出能整除x且不是偶数的各整数,并放在pp所指的数组中,这些除数的个数通过形参n返回。例如,若x中的值为:30,则有4个数符合要求,它们是1,3,5,15。
void fun(int x,int pp[],int *n)
{int i;
*n=0;
for (i=1;iif ((x%i==0) && (i%2!=0)) {pp[*n]=i;*n=*n+1;}}
33. 33. 程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),函数的功能是:使数组右上半三角元素中的值乘以m。例如:若m的值为2,a数组中的值为 |1 9 7| a= |2 3 8|,则返回主程序后a数组中的值应为|4 5 6| |2 18 14|
#define N 5
int fun ( int a[][N], int m )
{ int i,j;
for (i=0;ifor (j=0;j<=i;j++)
a[j][i]*=m;}
34. 请编写一个函数void fun(char *tt,int pp[]),统计在tt字符串中'a'到'z'26个字母各自出现的次数,并依次放在pp所指数组中。 例如,当输入字符串:abcdefgabcdeabc后, 程序的输出结果应该是:3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
void fun(char *tt, int pp[])
{char *p_tt=tt;
int i=0;
while(i<26){
pp[i]=0;
i++;}
for(;*p_tt!=NULL;p_tt++){
switch(*p_tt){
case 'a':pp[0]++;break;
case 'b':pp[1]++;break;
case 'c':pp[2]++;break;
case 'd':pp[3]++;break;
case 'e':pp[4]++;break;
case
'f':pp[5]++;break;
case 'g':pp[6]++;break;
case 'h':pp[7]++;break;
case
'i':pp[8]++;break;
case
'j'

:pp[9]++;break;
case 'k':pp[10]++;break;
case 'l':pp[11]++;break;
case 'm':pp[12]++;break;
case 'n':pp[13]++;break;
case 'o':pp[14]++;break;
case 'p':pp[15]++;break;
case 'q':pp[16]++;break;
case 'r':pp[17]++;break;
case 's':pp[18]++;break;
case 't':pp[19]++;break;
case 'u':pp[20]++;break;
case 'v':pp[21]++;break;
case 'w':pp[22]++;break;
case 'x':pp[23]++;break;
case 'y':pp[24]++;break;
case 'z':pp[25]++;break;}}}
35. 程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),函数的功能是:使数组左下半三角元素中的值乘以n。例如:若n的值为3,a数组中的值为|1 9 7| a= |2 3 8|,则返回主程序后a数组中的值应为|4 5 6| |3 9 7 | |6 9 8 |
|12 15 18|
#define N 5
int fun ( int a[][N], int n )
{ int i,j;
for (i=0;ifor (j=0;j<=i;j++)
a[i][j] *=n;}}
36. 函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。
void fun(int a, int b, long *c)
{int a_up,a_low,b_up,b_low;
a_up=a/10;
a_low=a%10;
b_up=b/10;
b_low=b%10;
*c=a_up*1000+b_low*100+a_low*10+b_up}
37. 请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中。例如,若输入17,5,则应输出:19,23,29,31,37
void fun(int m, int k, int xx[])
{int i, j ,total=0;
int *p_xx=xx;
for(i=m+1;;i++){
for(j=2;jif(i<=j){
*p_xx=i;
p_xx++;
total++;
if(total==k){
*p_xx=NULL;
break; }}}}
38. 已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。已给出函数的首部,请完成该函数。
#define N 10
typedef struct ss
{ char num[10]; int s; } STU;
fun( STU a[], STU *s )
{int i;
STU *m;
m=a;
for(i=1;iif (a[i].sm=&a[i];
s[0].s=m[0].s;
strcpy(s[0].num,m[0].num); }
39. 请编写一个函数void fun(char a[],int k,int n),其功能是:删除字符串规定下标开始的n个字符。其中,a指向字符串,k中 存放指定的下标。例如,字符串内容为:Hellollo World!,k中的值为:5,n中的值为:3,则调用该函数的结果为:Hello World!。
#define N 80
void fun(char *a,int k,int n)
{int i;i=k;
while (a[i-1]!='\0')
{ a[i]=a[i+n];
i=i+1;}}
40. 已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,函数的功能

是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。
#define N 10
typedef struct ss
{ char num[10]; int s; } STU;
fun( STU a[], STU *s )
{int i;
STU *m;
m=a;
for(i=1;iif (a[i].s>m[0].s)
m=&a[i];
s[0].s=m[0].s;
strcpy(s[0].num,m[0].num);}
41. 请编写一个函数 int fun(int *s,int *t,int *k),用来求出数组中值最大的元素在数组中的下标并存放在k所指的存储单元中,并且将最大值增添在数组的最后。形参t所指存储单元中存放数组中数据的个数。例如,数组中的数据如下:876 675 896 101 301 401 980 431 451 777则输出最大值的下标为:6,数组中的内容为
876 675 896 101 301 401 980 431 451 777 980
#define N 80
void fun(int *s,int *t,int *k)
{ int i=0;
*k=0;
for (i=1;i<*t;i++)
if (s[*k]s[*t]=s[*k];
*t=*t+1;}
42.函数fun的功能是:将s所指字符串中下标为奇数、同时ASCII值也为奇数的字符删除,串中剩余的字符形成一个新串放在t所指的数组中。例如:若s所指串中的内容为:“ABCDEFG12345”,其中C的ASCII码值虽为奇数,但在数组中的下标为偶数,因此不能删除,而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此应当删除,其他依次类推。 最后,t所指的数组中的内容是“ABCDEFG24”。
void fun(char *s, char t[])
{int i,slenth,n=0;
slenth=strlen(s);
for(i=0;iif(i%2!=0 && s[i]%2!=0 ) ;
else
t[n++]=s[i];}
t[n]='\0';}
43. 编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。 1 1 1 S=1+——+———+……+—————— 1+2 1+2+3 1+2+3+…+n 例如:若n的值为11时,则函数值为:1.833333
float fun(int n)
{ int i;
float s=1.0,h=1;
for (i=2;i<=n;i++)
{ h=h+i;
s=s+1.0/h;}
return(s);}
44函数fun的功能是:将s所指字符串中下标为奇数同时ASCII值为偶数的字符删除,s中剩余字符形成的新串放在t所指的数组中。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符B的ASCII码值为偶数,所在元素的下标为奇数,因此必需删除;而字符2的ASCII码值为偶数,而所在元素的下标为偶数,因此不应当删除,其他依次类推。最后t所指的数组中的内容应是“ACEG12345”。
void fun(char *s, char t[])
{int i,slenth,n=0;
slenth=strlen(s);
for(i=0;iif(i%2!=0 && s[i]%2==0 ) ;
else
t[n++]=s[i];}
t[n]='\0';}
46. 函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇 数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。例如

,若s所指字符串中的内容为“ABCDEFG12345”,其中字符C的ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其他依次类推。最后t所指的数组中的内容应是 void fun(char *s, char t[])
{int i,slenth,n=0;
slenth=strlen(s);
for(i=0;iif(i%2==0 && s[i]%2!=0 ) ;
else
t[n++]=s[i];}
t[n]='\0';}
47. 编写函数fun,它的功能是:根据以下公式求P的值,结果由函数值带回。m与n为两个正整数且要求m>n。 m! P=————- n!(m-n)! 例如:m=12,n=8时,运行结果为495.000000。
float fun(int m,int n)
{int i;
float s=1,f=1,h=1;
float x;
for (i=m;i>=1;i--) s=s*i;
for (i=n;i>=1;i--) f=f*i;
for (i=m-n;i>=1;i--) h=h*i;
x=s/(f*h);
return (x);}
49. 编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。Xn+1=cos(Xn) 迭代步骤如下: 1)取x1初值为0.0; 2)x0=x1,把x1的值赋给x0; 3)x1=cos(x0),求出一个新的x1; 4)若x0-x1的绝对值小于0.000001,执行步骤(5),否则执行步骤(2); 5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。程序将输出结果Root=0.739085。
float fun()
{double x1,x0;
x1=0.0;
x0=x1;
x1=cos(x0);
while (fabs(x0-x1)>0.000001)
{x0=x1;x1=cos(x0);}
return(x0);}
50函数fun的功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符B的ASCII码值为偶数、…、字符2的ASCII码值为偶数、…都应当删除,其他依次类推。最后t所指的数组中的内容是: “ACEG135”。
void fun(char *s, char t[])
{int i,slenth,n=0;
slenth=strlen(s);
for(i=0;iif(s[i]%2!=0)
t[n++]=s[i];
t[n]='\0';}

相关文档