C语言复习题

更新时间:2024-02-26 12:52:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言复习题

一、题目类型

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

百分制成绩 完数

链接字符串

/* 请编一个函数sort(),函数的功能用指针的方法将三个整数按小到大的顺序排列。 形参的值交换 实现字符串的比较 判断正整数的奇偶 素数

/* 请编一个函数substitution(),函数的功能将数组a[5][5]中的元素行列互换后存放在本数

/* 请编一个函数ishuiwen(),函数的功能用指针的方法判断字符串是否是回文 /* 请编一个函数fun,函数的功能是计算圆的面积

/* 请编一个函数fun,函数的功能是计算1!+2!+...+n! .如1!+2!+3!+4!=33

/* 请编一个函数insort(),函数的功能是在升序排好的整型数组中,按原来排序的规律插入一个数到组中。

/* 请编一个函数matrix_transpose(),函数的功能用指针的方法,实现2×3矩阵的转置。

/* 请编一个函数fun,函数的功能是小写字母,则变换成大写字母;其他字符不变换。 /* 请编一个函数fun,函数的功能是计算s=3+33+333+3333+...+3..3(n个).如n=3时3+33+333=369.

/* 请编一个函数upword(),函数的功能统计字符串中每个大写字母的个数,

/* 请编一个函数sort(),函数的功能用指针的方法将三个整数按小到大的顺序排列。 /* 请编一个函数sort(),函数的功能是对数组中元素进行升序排序。

/* 请编一个函数fun,函数的功能是将560分钟转换成小时和分钟表示,变量hour,min已在函数外定义。

/* 请编一个函数fun,函数的功能是判断一个三位数为水仙花数,如是水仙花数函数返回

/* 请编一个函数upword(),函数的功能统计字符串中每个大写字母的个数,

存放在num数组中(其中num[0]存放字母A出现的次数,num[1]存放字母B出现的次数,

/* 请编一个函数dele(),函数的功能在一个按升序排好的整型数组,查找指定的整数;若有,将其删除;若没有,输出\。

/* 请编一个函数matrix_transpose(),函数的功能用指针的方法,实现2×3矩阵的转置。

/* 请编一个函数fun,函数的功能是计算s=1-1/2+1/3-1/4+1/5+...+1/m.如1-1/2+1/3-1/4+1/5+...+1/7=0.76 /* 请编一个函数add(),函数的功能计算5×5的矩阵中下三角元素之和下三角元素就是主对角线以下(含主对角线)的元素。

? ? ? ? ?

/* 请编一个函数fun,函数的功能是计算三角形面积

* 请编一个函数fun,函数的功能是计算1!+2!+...+n! .如1!+2!+3!+4!=33

/* 请编一个函数stringlen(),函数的功能计算字符串的长度。不能使用strlen函数。 /* 请编一个函数fun,函数的功能是计算两个自然数的最小公倍数。

/* 请编一个函数findmax(),函数的功能是查找二维数组score[5][3]中的每一行中最大值,并存放到相应max[i]中。

? /* 请编一个函数matrix_transpose(),函数的功能用指针的方法,实现2×3矩阵的转

置。

二、对应题目

1./* 请编一个函数fun,函数的功能是根据百分制成绩,判断相应的成绩等级,判断依据是:

成绩>=90为A 成绩>=80为B 成绩>=70为C 成绩>=60为D 其他为E。

函数返回相应的等级(要求用switch结构完成函数的功能)。 注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。*/

#include char fun(float); void xqs(); int main( ) { double score ; char grade ; printf( \ scanf( \ if( score > 100 || score < 0 ) printf( \ else { grade=fun(score); printf( \ } xqs(); return 0 ;

}

char fun(float score) {

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

char grade ; switch ((int)(score/10))

{ case 10:

case 9: printf (\ case 8: printf (\ case 7: printf (\ case 6: printf (\ case 5: case 4: case 3: case 2: case 1:

case 0:grade='E';break; } return grade;

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

void xqs() {

float score; char grade; int i;

FILE *rf, *wf ;

rf = fopen(\ wf = fopen(\ for(i=0;i<10;i++) {

fscanf(rf, \ grade=fun(score);

fprintf(wf, \ }

fclose(rf) ; fclose(wf) ; }

2./* 请编一个函数fun,函数的功能是判断一个数是否为\完数\。一个数如果恰好等于它的因子之和,这个数就是\完数\。

例如,6的因子为1、2、3,而6=1+2+3,因此6是\完数\。

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。*/

#include int fun(int n); void xqs(); int main( ) {

int i , j , s = 0 ; for( i = 1 ; i < 1000 ; i++ ) if(fun(i))

printf(\

xqs(); return 0 ; }

int fun(int n) {

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

int s=0,i=0; for(i=1;i

if(s==n) return 1; else return 0;

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

void xqs() {

int i;

FILE *wf ;

wf = fopen(\ for( i = 1 ; i < 1000 ; i++ ) if(fun(i))

fprintf(wf, \ fclose(wf) ; }

3./* 请编一个函数stringjoin(),函数的功能将两个字符串连接起来。不能使用strcat函数。

注意: 部分源程序存在文件PROG1.C文件中。 请勿改动主函数main和其它函数中的任何内容,仅在函数stringjoin的花括号中填入你编写的若干语句。*/

#include #include void xqs();

void stringjoin(char s1[100],char s2[100]);

int main( ) { char s1[100] , s2[30] ; int i , j ; printf( \ gets( s1 ) ; printf( \ gets( s2 ) ;

stringjoin(s1,s2); printf( \ puts( s1 ) ; printf( \ puts( s2 ) ;

int i;

if(x>=a[7]) a[8]=x; else

{for(i=7;i>=0&&a[i]>x;i--) a[i+1]=a[i]; a[i+1]=x; }

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

void xqs() {

int i,j, a[10]; FILE *rf, *wf ;

if((rf = fopen(\ {

printf(\exit(0); }

if((wf=fopen(\ {

printf(\exit(0); }

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

fscanf(rf, \

insort(a,9);

for(i = 0 ; i < 9; i++) fprintf(wf, \

fclose(rf) ; fclose(wf) ; }

15./* 请编一个函数matrix_transpose(),函数的功能用指针的方法,实现2×3矩阵的转置。

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数matrix_transpose的花括号中填入你编写的若干语句。*/

#include #include #define ROW 2 #define COL 3 void xqs();

void matrix_transpose ( int ( *original )[COL] , int ( *result )[ROW] ) ;

int main( ) { int data[ROW][COL] = { 1 , 2 , 3 , 4 , 5 , 6 } , result_data[COL][ROW] = { 0 } ; int i , j ; printf( \ for( i = 0 ; i < ROW ; i++ ) { for( j = 0 ; j < COL ; j++ ) printf( \ printf( \ } matrix_transpose ( data , result_data ) ; printf( \ for( i = 0 ; i < COL; i++ ) { for( j = 0 ; j < ROW ; j++ ) printf( \ printf( \ } xqs(); return 0 ; }

void matrix_transpose ( int ( *original )[COL] , int ( *result )[ROW] ) {

/**********Begin**********/ int i,j; for( i = 0 ; i < ROW ; i++ ) { for( j = 0 ; j < COL ; j++ ) result[j][i]=original[i][j]; }

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

void xqs() {

int i,j, s[ROW][COL],r[COL][ROW]; FILE *rf, *wf ;

if((rf = fopen(\ {

printf(\exit(0); }

if((wf=fopen(\ {

printf(\exit(0); }

for(i = 0 ; i < ROW; i++) for(j=0 ; j < COL; j++)

fscanf(rf, \printf(\

matrix_transpose ( s , r ); for(i = 0 ; i < COL; i++) {

for(j=0;j

fprintf(wf, \fprintf(wf, \ } fclose(rf) ; fclose(wf) ; }

16./* 请编一个函数fun,函数的功能是小写字母,则变换成大写字母;其他字符不变换。

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。*/

#include char fun(char ch); void xqs(); int main( ) { char ch ; printf ( \ ch = getchar( ) ; ch=fun(ch); putchar( ch ) ; printf( \ xqs(); return 0 ; }

char fun(char ch) {

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

if(ch>='a'&&ch<='z') ch=ch-32; return ch;

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

void xqs() {

char a,i;

FILE *rf, *wf ;

rf = fopen(\

wf = fopen(\for(i=0;i<10;i++) {

fscanf(rf, \ a=fun(a); fprintf(wf, \ }

fclose(rf) ; fclose(wf) ; }

17./* 请编一个函数

3+33+333=369.

fun,函数的功能是计算s=3+33+333+3333+...+3..3(n个).如n=3时

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。*/

#include long fun(int n); void xqs(); int main( ) { int n ; printf( \ scanf( \ printf( \

xqs(); return 0 ; }

long fun(int n) {

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

int s=0,m=3,i; for(i=1;i<=n;i++) { s=s+m; m=m*10+3;

hour=time/60; min=time`;

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

void xqs() { int a;

FILE *rf, *wf ;

rf = fopen(\wf = fopen(\fscanf(rf, \fun(a);

fprintf(wf, \

fclose(rf) ; fclose(wf) ; }

22./* 请编一个函数fun,函数的功能是判断一个三位数为水仙花数,如是水仙花数函数返回值为1,否则返回0。所谓水仙是指一个三位数等于其各位上数字的立方和。

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。*/

#include int fun(int n); void xqs(); int main( ) { int n ; printf( \:\\n\ for(n = 100 ; n < 1000 ; n++ )

{ if(fun(n)) printf( \ } xqs(); return 0 ; }

int fun(int n) {

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

int i,j,k; i=n/100;

j=(n0)/10; k=n;

if(n==(i*i*i+j*j*j+k*k*k)) return 1; else return 0;

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

void xqs() {

float score; char grade; int i;

FILE *wf ;

wf = fopen(\for(i=100;i<1000;i++) { if(fun(i))

fprintf(wf, \ }

fclose(wf) ; }

24./* 请编一个函数dele(),函数的功能在一个按升序排好的整型数组,查找指定的整数;若有,将其删除;若没有,输出\。

注意: 部分源程序存在文件PROG1.C文件中。 请勿改动主函数main和其它函数中的任何内容,仅在函数dele的花括号中填入你编写的若干语句。*/

#include #include void xqs();

void dele(int a[],int x); int main( ) { int a[10] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 } ; int t , j , k = 0 ; printf( \ scanf( \

dele(a,t);

for( j = 0 ; j < 9 ; j++ ) printf( \

xqs(); return 0 ; }

void dele(int a[10],int t) {

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

for(i=0;i<10;i++) {

if (a[i]==t) break; }

if(i!=10) {

for(k=i;k<9;k++) a[k]=a[k+1]; }

else

printf(\ /********** End **********/ }

void xqs() {

int i,j, a[10]; FILE *rf, *wf ;

if((rf = fopen(\ {

printf(\exit(0); }

if((wf=fopen(\//判断文件是否成功打开 {

printf(\exit(0); }

for(i = 0 ; i < 10; i++) fscanf(rf, \

dele(a,9);

for(i = 0 ; i < 9; i++) fprintf(wf, \

fclose(rf) ; fclose(wf) ; }

26./* 请编一个函数fun,函数的功能是计算

s=1-1/2+1/3-1/4+1/5+...+1/m.如1-1/2+1/3-1/4+1/5+...+1/7=0.76

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。*/

#include double fun(int n); void xqs(); int main( ) { int m ; printf( \ scanf( \ printf( \

xqs(); return 0 ; }

double fun(int m) {

/********** Begin **********/ int i,t=-1; double s=0,x; for(i=1;i<=m;i++) { t=-t;

s=s+t*1.0/i; }

return s;

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

void xqs() { int i;

FILE *wf ;

wf = fopen(\

fprintf(wf, \fprintf(wf, \fclose(wf) ; }

27./* 请编一个函数add(),函数的功能计算5×5的矩阵中下三角元素之和。

下三角元素就是主对角线以下(含主对角线)的元素。

例如:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

下三角元素之和为220。

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数add的花括号中填入你编写的若干语句。*/

#include #include void xqs();

int add(int a[5][5]);

int main( ) {

int a[5][5] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21, 22,23,24} ; int i , j ,sum = 0 ; for ( i = 0 ; i < 5 ; i++ ) { for ( j = 0 ; j < 5 ; j++) printf( \ printf( \ }

sum=add(a); printf( \ xqs(); return 0 ; }

int add(int a[5][5]) {

int s=0,i,j;

/**********Begin**********/ int sum=0; for(i=0;i<5;i++) for(j=0;j<=i;j++) sum+=a[i][j]; return sum;

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

void xqs() {

int i,j, a[5][5],s; FILE *rf, *wf ;

if((rf = fopen(\ {

printf(\exit(0); }

if((wf=fopen(\ {

printf(\exit(0); }

for(i = 0 ; i <5; i++) for(j=0;j<5;j++)

fscanf(rf, \

s=add(a);

fprintf(wf, \

fclose(rf) ; fclose(wf) ; }

//判断文件是否成功打开

28./* 请编一个函数fun,函数的功能是计算三角形面积

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。*/

#include #include

double fun(double x,double y,double z); void xqs();

int main( ) { double a , b , c , s ; a = 3.0 ; b = 4.0 ; c = 5.0 ; s=fun(a,b,c); printf( \ xqs(); return 0 ; }

double fun(double x,double y,double z) {

/********** Begin **********/ double p,a , b , c , s ; a = 3.0 ; b = 4.0 ; c = 5.0 ;

p=0.5*(a+b+c);

s=sqrt(p*(p-a)*(p-b)*(p-c));

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

void xqs() {

double a,b,c;

FILE *rf, *wf ;

rf = fopen(\wf = fopen(\

fscanf(rf, \

fprintf(wf, \

fclose(rf) ; fclose(wf) ; }

30./* 请编一个函数stringlen(),函数的功能计算字符串的长度。不能使用strlen函数。

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数stringlen的花括号中填入你编写的若干语句。

#include #include void xqs();

int stringlen(char s[]); int main( ) { char s1[100] ; int i ; printf( \ gets( s1 ) ; i=stringlen(s1); printf( \ xqs(); return 0 ; }

int stringlen(char s1[100]) {

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

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

{

if(s1[i]=='\\0') break; }

return i;

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

void xqs() {

int i,j,len;

char s1[100],s2[100];; FILE *rf, *wf ;

if((rf = fopen(\ {

printf(\exit(0); }

if((wf=fopen(\//判断文件是否成功打开 {

printf(\exit(0); }

fgets(s1, 100, rf) ; len=stringlen(s1);

fprintf(wf,\fputs(s1,wf); fprintf(wf,\

fprintf(wf, \

fclose(rf) ; fclose(wf) ; }

31./* 请编一个函数fun,函数的功能是计算两个自然数的最小公倍数。

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。*/

#include int fun(int m,int n); void xqs();

int fun( int m , int n ) {

/********** Begin **********/ int t,i,p,k; if(m

p=m*n; while(n!=0) { i=m%n; m=n; n=i; }

k=p/m; return k; /********** End **********/ }

int main( ) { int m , n ; printf( \ scanf( \ printf( \ xqs(); return 0 ; }

void xqs() {

FILE *wf ;

wf = fopen(\

fprintf(wf, \fprintf(wf, \fprintf(wf, \fclose(wf) ; }

32./* 请编一个函数findmax(),函数的功能是查找二维数组score[5][3]中的每一行中最大值,并存放到相应max[i]中。

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数findmax的花括号中填入你编写的若干语句。*/

#include #include void xqs();

void findmax(int score[5][3],int max[5]);

int main( ) { int score[5][3] , max[5] ; int i , j ; printf( \ for( i = 0 ; i < 5 ; i++ ) for( j = 0 ; j < 3 ; j++ ) scanf( \

findmax(score,max); for( i = 0 ; i < 5 ; i++ ) printf(\

xqs();

return 0 ; }

void findmax(int score[5][3],int max[5]) {

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

int i,j,p;

for(i=0;i<5;i++) { p=0;

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

if(score[i][p]

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

void xqs() {

int i,j, a[5][3],max[5]; FILE *rf, *wf ;

if((rf = fopen(\ {

printf(\exit(0); }

if((wf=fopen(\//判断文件是否成功打开 {

printf(\exit(0); }

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

fscanf(rf, \

findmax(a,max);

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

fprintf(wf,\

fclose(rf) ;

fclose(wf) ; }

补充:

1

/* 请编一个函数fun,函数的功能是找出4个整数中的最大值。

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。*/

#include

int fun(int x,int y,int z,int w); void xqs(); int main( ) { int a , b , c , d , max ; printf( \ scanf( \ max=fun(a,b,c,d); printf( \ xqs(); return 0 ; }

int fun(int a,int b,int c,int d) {

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

int max=a; if(max

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

void xqs() {

int a,b,c,d,max; FILE *rf, *wf ;

rf = fopen(\ wf = fopen(\

fscanf(rf, \ max=fun(a,b,c,d);

fprintf(wf, \

fclose(rf) ; fclose(wf) ; }

3/* 请编一个函数fun,函数的功能是一个球从100米高度自由落下,每次落地后又

反跳回原高度的一半,再落下,再反弹。

求它第n(n>=2)次落地时,共经过多少米。

注意: 部分源程序存在文件PROG1.C文件中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。*/

#include double fun(int n); void xqs();

int main( ) { int n ; printf(\ scanf(\ printf( \第%d次落地时共经过%lf米\\n\

xqs(); return 0 ; }

double fun(int n) {

本文来源:https://www.bwwdw.com/article/1cna.html

Top