当前位置:首页 >> IT认证 >>

C语言程序设计练习题(含程序及参考答案)


2010-2011 C 语言程序试题及答案

1、定义一个函数 int fun(int a,int b,int c),它的功能 是:若 a,b,c 能构成等边三角形函数返回 3,若能构成等腰 返回 2,一般三角形返回 1,若不能构成三角形返回 0。 #include <stdio.h> int { if(a+b>c && b+c>a && a+c>b) { if(a==b && b==c ) return 3; else if(a==b||b==c||a==c) return } else } void main() { int a,b,c,shape; "); c=%d\n",a,b,c); : %d\n",shape); printf("\nInput a,b,c: printf("\na=%d, b=%d, return 0; 2; else return 1; fun(int a,int b,int c)

scanf("%d%d%d",&a,&b,&c); shape =fun(a,b,c); printf("\n\nThe shape }

2、编写一个程序,将两个变量的值交换, 例如变量a中的值
第 1 页 共 46 页

2010-2011 C 语言程序试题及答案

原为 3,b中的值原为8,程序运行后 a 中的值为8,b中的 值为3。 #include <stdio.h> void fun(int *x,int *y) { int t; t=*x;*x=*y;*y=t } void main() { int a=3,b=8; printf("%d fun(&a,b); printf("%d } 3、从键盘输入3个数,将最大值放在变量a中,最小值放在 变量c中。 例如,输入的数为:55 #include <stdio.h> void fun(float *p,float *q,float *s) { float k; if (*p<*q) { { k=*p;*p=*q;*q=k;} if (*q<*s) k=*s;*s=*p;*p=k;}
第 2 页 共 46 页

%d\n",a,b); %d\n",a,b);

12

34,

输出结果应当是:a=55.0,b=34.0,c=12.0。

2010-2011 C 语言程序试题及答案

if (*p<*q) { } void main() { float a,b,c; printf("Input a b c: "); k=*p;*p=*q;*q=k;}

scanf("%f%f%f",&a,&b,&c); printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c); fun(&a,&b,&c); printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c); }

4、编写函数fun(int n),它的功能是:计算正整数n 的所有因子(1和n除外)之和作为函数值返回。例如:n=120
时,函数值为239。 #include <stdio.h> #include <stdlib.h> int fun(int n) { int i,s=0; for (i=2;i<n;i++) if (n%i==0) s=s+i; return s; }

第 3 页 共 46 页

2010-2011 C 语言程序试题及答案

void main() {

/*主函数*/

void NONO(); printf("%d\n",fun(120)); NONO(); } void NONO( ) {/* 请在此函数内打开文件,输入测试数据,调用 fun 函 数, 输出数据,关闭文件。 */ FILE *wf; wf = fopen("a30.out", "w") ; fprintf(wf,"%d\n",fun(120)); fclose(wf) ; }

5、计算s,并输出
1 1+2 1.833333 #include <stdio.h> #include <stdlib.h> float fun(int n)
第 4 页 共 46 页

1 1+2+3

1 1+2+3+?+n

S = 1 + ── + ─── + ?? + ────── n 通过键盘输入,例如:若 n 的值为 11 时,则函数值为:

2010-2011 C 语言程序试题及答案

{ int i; float s=1.0,h=1; for (i=2;i<=n;i++) { h=h+i; } return s; } void main() { int n;float s; printf("\nPlease enter N:");scanf("%d",&n); s=fun(n); printf("the result is:%f",s); } s=s+1.0/h;

6、将一个整数中的每一位上为奇数的数依次取出, 构成一个新数放在t中。高位仍在高位,低位仍在低位。例
如,当s中的数为:87653142时,t中的数为:7531。 #include <stdio.h> void fun(long s,long *t) { int d;
第 5 页 共 46 页

2010-2011 C 语言程序试题及答案

long s1=1; *t=0; while (s>0) { d=s%10; if(d%2!=0) { *t=d*s1+*t; s1=s1*10; } s/=10; } } main() { long s,t; printf("\nPlease enter s:"); scanf("%ld",&s); fun(s,&t); printf("The result is:%ld\n",t); } 7、计算并输出k以内最大的10个能被13或17整除的自然数之 和。k的值从键盘传入,若k的值为500,则输出4622。 #include <stdio.h>
第 6 页 共 46 页

2010-2011 C 语言程序试题及答案

int fun(int k) { int m=0,mc=0,j; while((k>=1)&&(mc<10)) { if ((k%13 == 0)||(k%17 == 0)) { m=m+k;mc++; } k--; } return m; } void main() { printf("%d\n",fun(500)); } 8、已知一个数列的前三项分别为0,0,1, 以后的各项都 是其相邻的前三项之和,计算并输出该数列前n项的平方根 之和sum。例如,当n=10时,程序的输出结果应为: 23.197745。 #include <stdio.h> #include <math.h> double fun(n) {
第 7 页 共 46 页

2010-2011 C 语言程序试题及答案

double int k;

sum,s0,s1,s2,s;

sum = 1.0; if(n <= 2) sum = 0.0; s0 = 0.0; s1 = 0.0; s2 = 1.0; for (k = 4; k <= n; k++) { s = s0 + s1 + s2; sum += sqrt(s); s0 = s1; s1 = s2; s2 = s; } return sum; } void main ( ) { int n; printf("Input N="); scanf("%d", &n); printf("%f\n", fun(n) ); } 9、编写一个程序,从键盘输入m,输出大于m且紧随m的素数。 #include <stdio.h> int fun(int m) { int i,k;
第 8 页 共 46 页

2010-2011 C 语言程序试题及答案

for (i=m+1;;i++) { for (k=2;k<i;k++) if(i%k==0) break; if (k>=i) return(i); } } void main() { int n; printf("\nPlease enter n:"); scanf("%d",&n); printf("%d\n",fun(n)); } 10、判断两个整数m和n是否互质(即是否有公共的因子) (m ≠1,n≠1)。方法是: 用2到t(t取m和n中较小的那个数) 之间的数分别去除m和n,若m和n能同时被某个数除尽,则m 和n不互质;否则它们互质。 例如,若输入187和85,则应输出No(表示它们不互质, 它们有公因子17)。若输入89和187,则应输出Yes(表示它 们互质)。 #include <stdio.h> int IsThat( int m, int n )
第 9 页 共 46 页

2010-2011 C 语言程序试题及答案

{ int k, t, mk=1; t=m; if (m>n) t=n; for(k=2;k<=t;k++) if( m%k==0 && n%k==0 ) { mk=0; break; } return mk; } void main( ) { int m, n; printf( "\nPlease enter 2 numbers:\n" ); scanf("%d %d", &m, &n); if( IsThat( m, n ) ) printf( "Yes\n" ); else printf( "No\n" ); } 11、将十进制正整数m转换成k进制数(2≤k≤9)并输出(m, k从键盘输入)。 例如,若输入8和2,则应输出1000(即十进制数8转换成
第 10 页 共 46 页

2010-2011 C 语言程序试题及答案

二进制表示是1000)。 #include <stdio.h> void Trans( int m, int k ) { int aa[20], i,j; for( i = 0; m; i++ ) { aa[i] = m%k; m /= k; } for( j=i-1; j>=0; j-- ) printf("%d", aa[j]); } void main() { int b, n; printf( "\nPlease enter a number and a base:\n" ); scanf("%d %d", &n, &b ); Trans( n, b ); } 12、统计从键盘输入的 50 个实数中有多少个正数、多少个 负数、多少个零 #include <stdio.h> void fun(int *zs,int *fs,int *l,float aa[])
第 11 页 共 46 页

2010-2011 C 语言程序试题及答案

{ int i; for(i=0;i<50;i++) { if(aa[i]>0) (*zs)++; if(aa[i]<0) (*fs)++; if(aa[i]==0) (*l)++; } } void main() { float num[50]; int i,czs,cfs,cl; czs=cfs=cl=0; printf( "\nPlease enter 50 float numbers :\n" ); for(i=0;i<50;i++) scanf(“%f”,&num[i]); fun(&czs,&cfs,&cl,num); printf("\n } 正 数 :%d , 负 数 :%d , 零 :%d \n",czs,cfs,cl);

第 12 页 共 46 页

2010-2011 C 语言程序试题及答案

13、计算并输出方程 X +Y =1989 的所有整数解 #include <stdio.h> void fun() { int x,y; for(x=1;x<=44;x++) for(y=1;y<=44;y++) if(x*x+y*y==1989) printf(“x=%d ,y=%d } void main() { printf(“方程 x^2+y^2=1989 的整数解为:\n”); fun(); } \n”,x,y);

2

2

14、从键盘输入 10 个整数,求出其中的最大值。 #include <stdio.h> int fun(int aa[]) { int m,i; m=aa[0]; for(i=1;i<10;i++) if(aa[i]>m) m=aa[i];
第 13 页 共 46 页

2010-2011 C 语言程序试题及答案

return m; } void main() { int num[10],i; printf(“请从键盘输入 10 个整数:\n”); for(i=0;i<10;i++) scanf(“%d”,&num[i]); printf(“\n 最大的数是:%d\n”,fun(num)); } 15、从键盘输入 n 值,输出如右图形。 (例如 n=5 时) #include <stdio.h> void fun(int n) { int i,j; for(i=1;i<=n;i++) { for(j=1;j<=i;j++) printf(“%3d”,1); for(j=2;j<=n+1-i;j++) printf(“%3d”,j); printf(“\n”); }
第 14 页 共 46 页

1 1 1 1 1

2 1 1 1 1

3 2 1 1 1

4 3 2 1 1

5 4 3 2 1

2010-2011 C 语言程序试题及答案

}

void main() { int n; printf(“\n请输入图形的行数:”); scanf(“%d”,&n); fun(n); } 16、使用函数的方式,计算如下公式的值。 1 1+A1 #include <stdio.h> float { float A=1; int i; for (i=1; i<=n; i++) A = 1.0/(1+A); return A ; } void main( )
第 15 页 共 46 页

1 1+A2

1 1+A(n-1)

A1=1,A2=──,A3=──,??An=──── 例如:若n=10,则应输出: 0.617977。 fun ( int n )

2010-2011 C 语言程序试题及答案

{ int n ;

printf("\nPlease enter n: ") ; scanf("%d", &n ) ; printf("A%d=%f\n", n, fun(n) ) ; }

* 17、使用函数的方式,,按下面的公式计算并输出数列的 第m项。 ┌ │ FFF( m ) = ┤ └ (不用做) 2, 3, 5, m = 1; m = 2; m = 3;

FFF(m - 3) + FFF(m - 1), m > 3;

例如,若输入整数 9,则应输出:47。

* 18、使用函数的方式,按以下递归公式求函数值 ┌10 fun(n)=│ └fun(n-1)+2 (n>1) 例如,当给n输入5时,函数值为18;当给n输入3时,函 数值为14。 (不用做)
第 16 页 共 46 页

(n=1)

2010-2011 C 语言程序试题及答案

19、计算并输出当0<x<0.97时下列多项式的值, 直到 |S(n)-S(n-1)|<0.000001为止。

例 如 , 在 主 函 数 中 从 键 盘 给 x 输 入 0.21 后 , 输 出 为:s=1.100000。 #include <stdio.h> #include <math.h> double fun(double { int n=1; /* 循环计数*/ /* 累计数*/ double sn=1; x)

double xn=1,xn1=0; /*x 的 n 值,以及 x 的 n-1 值;*/ while(fabs(xn-xn1)>=0.000001)/*绝对值是否合格*/ { xn=xn*x*(0.5-n+1)/n; xn=(xn-1)*x*(0.5-n+1)/n*/ n+=1; sn+=xn; } return sn; } void main() {
第 17 页 共 46 页

/* 表 达 式 分 解 以 后

/*sn 累加上 xn*/

2010-2011 C 语言程序试题及答案

double

x,s; "); scanf("%lf",&x);

printf("Input x: s=fun(x);

printf("s=%f\n",s); } 20、计算并输出s。 x^2 2! 1.349859。 #include <stdio.h> double fun(double x,int n) { int i; double f=1.0,h=x; double s=1; s=s+h/f; for (i=2;i<=n;i++) { f=f*i;h=h*x; s=s+h/f; } return s; }
第 18 页 共 46 页

x^3 3!

x^n n!

s = 1 + x + ── + ── + ?? + ── n,x 从键盘输入,例如,当 n=10,x=0.3 时,函数值为

2010-2011 C 语言程序试题及答案

void main() { printf("%f\n",fun(0.3,10)); } 21、从键盘输入high,计算并输出high以内最大的10个素数 之和。例如,输入high的值为100,则输出732。 #include <stdio.h> int fun( int { int sum = 0, { yes = 1; for (j=2; j<=high/2; j++ ) if (high % j ==0 ) { yes=0; break; } if (yes==1) { sum +=high; n++; } high--; }
第 19 页 共 46 页

high ) n=0, j, yes;

while ((high >= 2) && (n < 10))

2010-2011 C 语言程序试题及答案

return sum ; } void main ( ) { printf("%d\n", fun (100)); } 22、请编写函数float fun(int n),它的功能是:返回n(包 括n)以内能被5或9整除的所有自然数的倒数之和。例如, n=20,返回0.583333。注意:要求n的值不大于100。 #include <stdio.h> double fun(int { int i; double sum=0.0; if(n>0&&n<=100) { for (i=1;i<=n;i++) if(i%5==0||i%9==0) sum+=1.0/i; } return sum; } void main() {
第 20 页 共 46 页

n)

2010-2011 C 语言程序试题及答案

int

n;

double

s; ");

printf("\nInput n: scanf("%d",&n); s=fun(n);

printf("\n\ns=%f\n",s); } 23、 请编一个函数fun(int *a, int n, int *odd, int *even), 函数的功能是分别求出数组中所有奇数之和以及所有偶数 之和。形参n给出数组a中数据的个数;利用指针odd返回奇 数之和,利用指针even返回偶数之和。 例如:数组中的值依次为: 1,9,2,3,11,6;则利用 指针 odd 返回奇数之和 24; 利用指针 even 返回偶数之和 8。 #include <stdio.h> #define fun ( { int i,sum_odd=0,sum_even=0; for(i=0;i<n;i++) if(a[i]%2==0) sum_even+=a[i]; else sum_odd+=a[i]; *odd=sum_odd; *even=sum_even; }
第 21 页 共 46 页

N

20 *a, int n, int *odd, int *even )

int

2010-2011 C 语言程序试题及答案

void main( ) { int a[N]={1,9,2,3,11,6}, i, n=6, odd, even; printf ( "The original data is : \n" ); for ( i = 0; i < n; i ++ ) printf ( "%5d", *(a+i) ); printf("\n\n"); fun ( a, n, &odd, &even ); printf ( "The sum of odd numbers: printf ( "The sum of even numbers: } 24、编写计算三角形面积的程序,注意:将计算面积定义成 函数 float fun(int a,int b,int c)(a,b,c 为三角形的三 条边,返回三角形的面积),在主函数中调用 fun #include <stdio.h> #include <math.h> float fun(int a,int b,int c) { float p; p=(a+b+c)/2; return sqrt(p*(p-a)*(p-b)*(p-c)); } %d\n", odd ); %d\n", even );

void main() {
第 22 页 共 46 页

2010-2011 C 语言程序试题及答案

int a,b,c; printf(“请输入三角形三条边:\n”); scanf(“%d%d%d”,&a,&b,&d); if(a+b>c && b+c>a && a+c>b) printf(“三角形面积为:%.2f”,fun(a,b,c)); else printf(“无法构成三角形”); } 25、编写程序,求 E=1+1/1!+1/2!+??+1/n!,要求最后 一项的值小于 10 double { double m=1.0; int i=1; double p=1.0; do{ m=m+1.0/p; i++; p=p*i; } while(1.0/p>=1E-4); return m; } void main()
第 23 页 共 46 页
-4

#include <stdio.h> fun(int n)

2010-2011 C 语言程序试题及答案

{ int n; double s; "); scanf("%d",&n); printf("Input n: s=fun(n); printf("s=%f\n",s); } 26、计算并输出给定数组(长度为9)中每相邻两个元素之 平均值的平方根之和。 例如, 给定数组中的 9 个元素依次为 12.0、 34.0、 4.0、 23.0、 34.0、45.0、18.0、3.0、11.0,输出应为:s=35.951014。 #include <stdio.h> #include <math.h> double fun(double { int i ; double avg=0.0,sum=0.0; for (i=0;i<8;i++) { avg=(x[i]+x[i+1])/2; sum+=sqrt(avg); } return sum; } void main() {
第 24 页 共 46 页

x[9])

2010-2011 C 语言程序试题及答案

double s,a[9]={12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0,11.0} ; int i; printf("\nThe original data is :\n"); for(i=0;i<9;i++)printf("%6.1f",a[i]); printf("\n\n"); s=fun(a); printf("s=%f\n\n",s); } 27、将1到m之内(含m)能被7或11整除的所有整数放在数组 a中。 例如,若输入m的值为50,则在数组a中的值为: 7 49 #include <stdio.h> #define M 100 void { int i,count=0; for(i=1;i<=m;i++){ if(i%7==0 || i%11==0) { a[count++]=i; } }
第 25 页 共 46 页

11

14

21

22

28

33

35

42

44

fun ( int

m, int *a , int *n )

2010-2011 C 语言程序试题及答案

*n=count; } void main( ) { int aa[M], n, k; fun ( 50, aa, &n ); for ( k = 0; k < n; k++ ) if((k+1)%20==0) printf("\n"); else printf( "%4d", aa[k] ); printf("\n") ; } 28、请编写函数int fun(int m,int score[],int below[]), 它的功能是:将低于平均分的人数作为函数值返回,并将低 于平均分的成绩放在below数组中(m表示score的长度, score表示成绩)。例如,当score数组中的数据为:10、20、 30、40、50、60、70、80、90时,函数返回4,below中的数 据应为:10、20、30、40。 #include <stdio.h> #include <stdlib.h> int fun(int score[], int m, int below[]) { int total=0; int average=0; int *p_below=below; int i=0;
第 26 页 共 46 页

2010-2011 C 语言程序试题及答案

int j=0; for(i=0;i<m;i++){ total=total+score[i]; } average=total/m; for(i=0;i<m;i++){ if(score[i]<average){ *p_below=score[i]; p_below++; j++; } } *p_below=NULL; return(j); } main( ) { int i, n, below[9] ; int score[9] = {10, 20, 30, 40, 50, 60, 70, 80, 90} ;

n = fun(score, 9, below) ; printf( "\nBelow the average score are: " ) ; for (i = 0 ; i < n ; i++) printf("%d ", below[i]) ;
第 27 页 共 46 页

2010-2011 C 语言程序试题及答案

} 29、用插入排序法将n个字符进行排序(降序)。(提示: 插入法排序的思路是:先对数组的头两个元素进行排序,然 后根据前两个元素的情况插入第三个元素,再插入第四个元 素?)。 #define #include #include N 80 "stdio.h" "string.h"

void insert(char *aa) { int i,j,n; char ch; n=strlen(aa); for(i=1;i<n;i++) { ch=aa[i]; j=i-1; while ((j>=0)&&(ch<aa[j])) { aa[j+1]=aa[j]; j--; } aa[j+1]=ch; } }
第 28 页 共 46 页

2010-2011 C 语言程序试题及答案

void main() { char a[N]="QWERTYUIOPASDFGHJKLMNBVCXZ"; int i; printf("The original string : insert(a); printf("The string after sorting:%s\n\n",a); } 30、假定整数数组a中元素的值不重复。删除a中值为x的元 素(x从键盘输入)。 #include <stdio.h> #define N 20 fun(int *a,int n,int x) { int p=0,i; a[n]=x; while(x!=a[p]) p=p+1; if(p==n) return -1; else { for(i=p;i<n;i++) a[i]=a[i+1]; return n-1; }
第 29 页 共 46 页

%s\n",a);

2010-2011 C 语言程序试题及答案

} void main() { int w[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i; n=10; printf("The original data :\n"); for(i=0;i<n;i++) printf("%5d",w[i]); printf("\nInput delete):");scanf("%d",&x); printf("Delete n=fun(w,n,x); if (n==-1) printf("***Not be found!***\n\n"); else { printf("The data after deleted:\n"); for(i=0;i<n;i++) printf("%5d",w[i]);printf("\n\n"); } } 31、一个已按从小到大的顺序排好的数组 a,编写程序,从 键盘输入一个数 x 按原来排序的规律将它插入数组 a 中。 #include <stdio.h> #define { int i=0 , j; while ( k > vv[i] && i < *n ) i++;
第 30 页 共 46 页

x : %d\n",x);

(to

M 20

void InSort( int *n, int vv[], int k )

2010-2011 C 语言程序试题及答案

if ( i<*n ) for ( j=*n; j>i; j-- ) vv[i] = k; ++*n; } void main() { int aa[M], i, k, m; system("cls"); printf( "\nPlease enter a number:\n" ); scanf( "%d", &m ); printf( "\nPlease enter %d numbers:\n", m ); for( i = 0; i < m; i++ ) scanf( "%d", &aa[i] ); printf( "\nPlease enter another number:\n" ); scanf( "%d", &k ); InSort( &m, aa, k ); for(k=0; k < m;k++) printf( " } 32、使用数组的方法筛选出 1-100 中的素数 #include <stdio.h> void fun ( int *pt ) {
第 31 页 共 46 页

vv[j] = vv[j-1];

%d", aa[k] );

2010-2011 C 语言程序试题及答案

int i,j,flag; *pt=2;*pt++; for(i=3;i<100;i++) { flag = 1; for(j=2;j<i;j++) if(i % j == 0) flag = 0; if( flag ) { *pt = i;*pt++; } } *pt=0; } void main( ) { int *pointer,a[30]; pointer=a; fun(pointer); printf("The result is :\n"); while(*pointer) printf ( "%d ",*pointer++ ); } 33、已知一个数组 a 中包括 10 个整数元素,从 a 中第二个
第 32 页 共 46 页

2010-2011 C 语言程序试题及答案

元素起,分别将后项减前项之差存入数组 b,并按每行 3 个 元素输出数组 b。 #include <stdio.h> void fun(int a[],int b[]) { int i; for(i=1;i<10;i++) b[i-1]=a[i]-a[i-1]; for(i=0;i<9;i++) { printf(“%3d”,b[i]); if((i+1)%3==0) printf(“\n”); } } void main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; int b[9]; fun(a,b); } 34、请编写函数fun,函数的功能是:将M行N列的二维数组 中的字符数据按列的顺序依次放到一个字符串中。
第 33 页 共 46 页

2010-2011 C 语言程序试题及答案

例如,二维数组中的数据为: W S H W W S S H H W S H

则字符串中的内容应是:WSHWSHWSH。 #include <stdio.h> void nn) { int x,y; for(x=0;x<nn;x++) for(y=0;y<mm;y++) {b[x*mm+y]=*(s[y]+x); (*n)++; } } void main() { int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55 }},i,j; int a[100]={0}, n=0; printf("The matrix:\n"); for(i=0; i<3; i++) { for(j=0;j<4; j++)printf("%3d",w[i][j]); printf("\n");
第 34 页 共 46 页

fun(int (*s)[10], int *b, int

*n, int mm, int

2010-2011 C 语言程序试题及答案

} fun(w,a,&n,3,4); printf("The A array:\n"); for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n"); } 35、求出N×N的二维数组周边元素的平均值 |0 |1 a = |2 |4 |5 1 9 3 5 9 2 7 8 6 1 7 4 3 8 4 9| 5| 1| 2| 1|

则返回主程序后 s 的值应为: 3.375。 #include <stdio.h> #define #define int { 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 += return sum; }
第 35 页 共 46 页

M N

4 5

fun ( int a[M][N] )

a[i][j];

2010-2011 C 语言程序试题及答案

void main( ) { int aa[M][N]={{1,3,5,7,9}, {2,9,9,9,4}, {6,9,9,9,8}, {1,3,5,7,0}}; int i, j, y; system("cls"); printf ( "The original data is : \n" ); for ( i=0; i<M; i++ ) { } y = fun ( aa ); printf( "\nThe printf("\n"); } 36、求出 M 行 N 列的二维数组 tt 里每列中的最小元素,并 依次放入 pp 数组中。 #include <stdio.h> #define #define void { int i, j, min; for(i = 0; i < N; i++)
第 36 页 共 46 页

for ( j =0; j<N; j++ ) printf( "%6d", aa[i][j] ); printf ("\n");

sum:

%d\n" , y );

M N

3 4

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

2010-2011 C 语言程序试题及答案

{ min = tt[0][i]; for(j = 0; j < M; j++) if (min > tt[j][i]) min = tt[j][i]; pp[i] = min; } } void main( ) { int t [ M ][ N ]={{22,45, 56,30}, {19,33, 45,38}, {20,22, 66,40}}; int p [ N ], i, j, k; system("cls"); printf ( "The original data is : \n" ); for( i=0; i<M; i++ ){ for( j=0; j<N; j++ ) printf ( "%6d", t[i][j] ); printf("\n"); } fun ( t, p ); printf( "\nThe result printf("\n"); } is:\n" ); for ( k = 0; k < N; k++ ) printf ( " %4d ", p[ k ] );

第 37 页 共 46 页

2010-2011 C 语言程序试题及答案

37、请编写程序,实现B=A+A',即把矩阵A加上A的转置,存 放在矩阵B中。计算结果在main函数中输出。 例如,输入下面的矩阵: |1 |4 |7 程序输出: |2 6 10| |6 10 14| |10 14 18| #include <stdio.h> 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]; } void main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3]; int i,j; fun(a,t); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%7d",t[i][j]);
第 38 页 共 46 页

其转置矩阵为: |1 |2 |3 4 5 6 7| 8| 9|

2 5 8

3| 6| 9|

2010-2011 C 语言程序试题及答案

printf("\n"); } } 38、编写程序删除字符串s中从下标k开始的n个字符(n和k 从键盘输入)。 例如,字符串内容为:Hellollo World!,k 中的值为:5,n 中的值为:3,结果为:Hello World!。 #include <stdio.h> #define N 80 void fun(char *a,int k,int n) { int i;i=k; while (a[i-1]!='\0') { } } void main() { char s[N]="Hellollo World!"; int k,n; printf("\nThe original string:%s\n",s); printf("Enter "),scanf("%d",&k); printf("Enter ");scanf("%d",&n);
第 39 页 共 46 页

a[i]=a[i+n]; i=i+1;

index number

———————— to delete ——

k: n:

2010-2011 C 语言程序试题及答案

fun(s,k,n); printf("\nThe string after deleted: NONO(); } 39、编写程序,从键盘输入字符串tt,将其中每个单词的首 字符改为对应的大写字母,首字符后的字母都改为对应的小 写字母。 例如,若输入字符串:"ab cD bOYxy!",则输出字符串为: "Ab Cd Boyxy!"。 #include <stdio.h> #include <string.h> char* EXUL( char tt[] ) { int isfirst = 1; int i, length; length = strlen( tt ); for(i = 0; i < length; i++) { if (tt[i] >= 'a' && tt[i] <= 'z') {tt[i] = isfirst?(tt[i] + 'A' 'a'):tt[i];isfirst=0;} else if (tt[i] >= 'A' && tt[i] <= 'Z') {tt[i] else
第 40 页 共 46 页

%s\n",s);

=

isfirst?tt[i]:(tt[i]

-

'A'

+

'a');isfirst=0;}

2010-2011 C 语言程序试题及答案

isfirst = 1; } return tt; } main() { int i; char tt[81]; printf("\nPlease enter a string: "); gets( tt ); printf( "\nThe result string is:%s\n", EXUL( tt ) ); }

40、编写程序,从键盘输入字符串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 #include <stdio.h> void fun(char *tt, int pp[]) { char *p_tt=tt; int i=0;
第 41 页 共 46 页

2010-2011 C 语言程序试题及答案

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;
第 42 页 共 46 页

2010-2011 C 语言程序试题及答案

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; } } } main( ) { char aa[1000] ; int bb[26], k, n ; printf( "\nPlease enter a char string:" ) ; scanf("%s", aa) ; fun(aa, bb ) ; for ( k = 0 ; k < 26 ; k++ ) printf ("%d ", bb[k]) ; printf( "\n" ) ; }

41、请编写程序,把字符串s中所有的字符前移一个 位置,串中的第一个字符移到最后。
例如:原有的字符串为:Mn.123xyZ,则调用该函数后, 串中的内容为:n.123xyZM。

第 43 页 共 46 页

2010-2011 C 语言程序试题及答案

#include <stdio.h> #include <string.h> #define { char b[N] ; sprintf(b, "%s%c", s + 1, *s) ; strcpy(s, b) ; } void main( ) { char a[ N ] ; a string : " ); gets ( a ); " ); puts( a ); "); printf ( "Enter fun ( a ); printf ( "The string after modified : puts ( a ); } N 81 *s ) fun ( char

printf ( "The original string is :

42、编写程序,把字符串中的内容逆置。
例如: 字符串中原有的内容为: abcdefg, 输出: gfedcba。 #include #include #define N <string.h> <stdio.h> 81 *s )
第 44 页 共 46 页

void fun ( char

2010-2011 C 语言程序试题及答案

{ int i ,length; char tmp; length = strlen( s ); for (i = 0;i < length / 2; i++) { tmp = s[i]; s[i] = s[length - i - 1]; s[length - i - 1] = tmp; } } void main( ) { char a[N]; a string : " ); gets ( a ); " ); puts( a ); printf ( "Enter fun ( a ); printf("\n"); printf ( "The string after modified : puts ( a ); } ");

printf ( "The original string is :

43、编写程序,依次取出字符串s1中所有数字字符,形成新 的字符串s2。
#include <stdio.h>
第 45 页 共 46 页

2010-2011 C 语言程序试题及答案

void { int

fun(char i,j;

*s)

for(i=0,j=0; s[i]!='\0'; i++) if(s[i]>='0' && s[i]<='9') s[j++]=s[i]; s[j]='\0'; } void main() { char item[80]; : is of ");gets(item); : \"%s\"\n",item); changing is : string string printf("\nEnter a string printf("\n\nThe fun(item); printf("\n\nThe \"%s\"\n",item ); }

第 46 页 共 46 页


相关文章:
《C语言程序设计基础》单元总结与练习题及答案
C语言程序设计基础》单元总结与练习题及答案_语文_小学教育_教育专区。C语言程序设计基础 单元总结与练习题及答案 非常齐全含习题和答案,适用于复习 衡军山 主编...
C语言程序设计及实验指导练习及习题参考答案(8--10)
C语言程序设计及实验指导练习及习题参考答案(8--10)_计算机软件及应用_IT/计算机_专业资料。C 语言程序设计及实验指导练习及习题参考答案(8—10 章) 8 练习参考...
C语言程序设计试题及答案
C语言程序设计试题及答案_工学_高等教育_教育专区。C语言 学生数 《C 语言...第二卷 说明: (1)第二卷含二大题,均属填空题,每题各有 5 个空栏,在...
C语言程序设计复习题(含参考答案
C语言程序设计复习题(含参考答案_IT认证_资格考试/认证_教育专区。C 语言程序设计复习题(含参考答案) 一、单项选择题(本题共 30 小题,每小题 2 分,共 60 ...
2013年最新的C语言程序设计考试复习题(含答案)快来看看...
2013年最新的C语言程序设计考试复习题(含答案)快来看看也啊_IT认证_资格考试/认证_教育专区。2009-2010 学年度《计算机 C 语言程序设计复习参考资料 习题一一、...
2014级《C语言程序设计》复习题及答案
2014 级《C 语言程序设计复习题及答案 一、单项选择题 1、以下不是 C 语言的特点的是 (B ) A、 C 语言简洁、紧凑 B、 能够编制出功能复杂的程序 C、 ...
C语言程序设计练习题及答案 详细版
C语言程序设计练习题及答案 详细版_IT认证_资格考试/认证_教育专区。第1章一、选择题: C 语言初步 1、 C 语言是在( )语言的基础上产生的。 A. A B. B...
c语言程序设计基础单元总结与练习题及答案
答案C 语言程序设计基础》课程单元总结与单元练习 答案 单元一 程序设计宏观认识 单元总结提升本单元中,核心内容有 C 语言程序框架结构、程序的构成和程序开发...
C语言程序设计试题
C 语言程序设计试题 一、单项选择题(本题共 25 小题,每小题 2 分,共 50 分) 在每小题列出的四个备选项中只有一个是符合题目要求的, 请将其正确答案涂写...
C语言程序设计基础测试题-答案
C语言程序设计基础测试题-答案_工学_高等教育_教育专区。C 语言程序设计基础测试题一、单选 [1] 下面叙述中错误的是___。 A. 复合语句中定义的函数只在该复合...
更多相关标签: