C语言程序设计的试题及答案(5)

2020-08-06 试题

  } int huiwen(int n) { int a[6],i=0,j; while (n!=0) //从第一个开是放元素 {i++; a[i]=n%10; n=n/10; } for(j=1;j

  方法二、#include int rev(int a);------------------------------------------------------------------------- 1 分 void main() { int x, y,i=0; for(x=1;x<1000;x++)-------------------------------------------------------------2 分 { y=rev(x); if(x==y) { printf("%6d",x);----------------------------------------------------------3 分 --2 分 } } int rev(int a) { int m, b=0;--------------------------------------------------------------------------1 分 while(a!=0) { m=a%10; b=b*10+m; a=a/10;--------------------------------------------------------------------------5 分 } return b;------------------------------------------------------------------------------1 分 i++; if(i%10==0) } printf("\n");----------------------------------------------------------

  6. #include "stdio.h" int tgshu(int n);

  void main() { int n; printf("input n:\n"); scanf("%d",&n); if (tgshu(n)) printf("%d 是同构数\n",n); else printf("%d 不是同构数\n",n); } int tgshu(int n) { int d=1,nn,k=0,t; nn=n*n; t=n; while(t!=0) { d=d*10; t=t/10; if(nn%d==n) return 1;

  } else return 0; }

  7. #include "stdio.h" #define n 5 void out(int a[n][n] ); int he(int a[n][n]); void main() { int a[n][n],i,j,s; printf("input 5*5 elements\n"); for(i=0;i

  } int he(int a[n][n]) { int i,sum=0; for(i=0;i

  8. #include "stdio.h" #define n 4 void out(int a[n][n] ); void inp(int a[n][n]); void main() { int a[n][n],i,j,k; printf("input 5*5 elements\n"); inp(a); for(i=0;i

  }

  9. #include "stdio.h" int change(int x,int a[]) //返回值为二进制的位数 { int n=-1; while(x!=0) { n++; a[n]=x%2; x=x/2; } return n; } void main() { int x,a[20],i,n; printf("input x\n"); scanf("%d",&x); n=change(x,a); for(i=n;i>=0;i--) printf("%1d",a[i]); printf("\n"); } 10. #include "stdio.h" int ni(int x,int a[]) //返回值为数的位数 { int n=-1; while(x!=0) { n++; a[n]=x%10; x=x/10; } return n; } void main() { int x,a[20],i,n; printf("input x\n"); scanf("%d",&x); n=ni(x,a); for(i=0;i<=n;i++) printf("%1d",a[i]); printf("\n"); } 11. #include "stdio.h" int exp(int x,int n); void main() { int x,n; printf("input x,n:\n"); scanf("%d%d",&x,&n); printf("%d\n",exp(x,n));

  } int exp(int x,int n) { if (n==1)return x; return x*exp(x,n-1); }

  12. #include "stdio.h" long int jch(int n) { if(n==1) return 1; else return n*jch(n-1); } void main() { int m,n,zuhe; printf("input two integers m,n(m>n)\n"); scanf("%d,%d",&m,&n); if(m>=n) zuhe=jch(m)/(jch(n)*jch(m-n)); printf("%d,%d 的组合为:%d",m,n,zuhe); } 13. #include "stdio.h" void serach(int a[],int x) { int i; for (i=0;i<10;i++) if(a[i]==x) { printf("Found\n"); return ; } printf("Not found!\n"); } void main() { int i,a[10],x; printf("input 10 integers \n"); for (i=0;i<10;i++) scanf("%d",&a[i]); printf("input x\n"); scanf("%d",&x); serach(a,x); }

  14. #include "stdio.h" #include "string.h" typedef struct { char no[10]; int score; }studtype; void search(studtype a[],char xno[]) { int i; for (i=0;i<20;i++) if(strcmp(a[i].no,xno)==0) { printf("%d\n",a[i].score); return ; } printf("Not found!\n"); } void main() { studtype stu[20]; char xno[10]; int i; printf("input 20 no,score\n"); for (i=0;i<20;i++) scanf("%s%d",stu[i].no,&stu[i].score); printf("input xno\n"); scanf("%s",xno); search(stu,xno); } 15. 编程实现:从键盘任意输入某班 20 个学生的姓名和成绩,输出最高分及不及格学生的 人 数。要求分别用两个自定义函数求最高分和不及格人数。 #define N 20 #include typedef struct { char name[10]; int score; }datatype; int max(datatype stu[]); int num(datatype stu[]); void main() { datatype stu[N]; int i,max_score,n; /*姓名*/ /*成绩*/ /*最高分函数声明*/ /*不及格人数函数声明*/

  printf("请输入 %d 名职工姓名 成绩:\n", N); for(i=0;istu[m].score)m=i; return stu[m].score; } int num(datatype stu[]) { int i,n=0; for(i=0;i

  16. 编程实现:输入 2 个降序排列的整数数列,将这两个数列合并存放到另一个数组中,要 求 每个数都一次到位,不得在新数组中重新排序。要求数列合并通过自定义函数来实现。 #define M 4 #define N 5 #include void merge(int a[],int b[],int c[]); void main() { int i,a[M],b[N],c[M+N]; printf("请输入 %d 个降序排列的整数:\n", M); for(i=0;i

  void merge(int a[],int b[],int c[]) { int i,j,k; i=0;j=0;k=0; while(ib[j]) c[k++]=a[i++]; else c[k++]=b[j++]; while(i

  17. 编程实现:输入 N 名职工的姓名及计算机水平考试的成绩,输出及格人数和及格的职工 信 息。要求:职工信息的输入和输出分别通过自定义函数来实现。 #define N 10 #include //#include typedef struct { char name[10]; float score; }datatype; void input(datatype work[]); void print(datatype work[]); void main() { datatype work[N]; input(work); print(work); } void input(datatype work[]) /*input 函数定义*/ { int i; printf("请输入 %d 名 学生的姓名 成绩:\n", N); for(i=0;i

  void print(datatype work[]) /*print 函数定义*/ { int i; for(i=0;i60)printf("%10s\n",work[i].name); }

  18. 编程实现:从键盘输入 10 名学生的信息,包括学号、姓名、成绩,用一个排序函数 sort 完成学生成绩降序排列,并输出学生排序后的结果。 #define N 10 #include //#include typedef { char num[20]; char name[20]; float score; }stutype; void input(stutype stu[]); void sort(stutype stu[]); void print(stutype stu[]); int main() { stutype stu[N]; input(stu); sort(stu); print(stu); return 0; } void input(stutype stu[]) /*input 函数定义*/ { int i; printf("请输入 %d 名学生信息(学号 姓名 成绩):\n", N); for(i=0;i

  k=i; for(j=i+1;j

  printf("****名次 学号 姓名 成绩****\n"); for(i=0;i

  19. //编程实现:任意输入一组不多于 20 个的升序排列的若干个整数,任意输入不多于 10 个 的整数(-1 作为输入结束标志) ,将其插入到该序列中,使其依然有序。要求:通过自定义 函数实现将一个整数插入到一个有序序列中,使其依然有序。 #include void ins(int a[],int*n,int x); void main() { int a[30],x,m,i; m=-1; printf("输入一组不多于 20 个的升序排列的若干个整数,-1 作为输入结 束标志\n"); scanf("%d",&x); while(x!=-1) { m++; a[m]=x; scanf("%d",&x); } printf("输入一组不多于 10 个的升序排列的若干个整数, -1 作为输入结束标志\n"); scanf("%d",&x); while(x!=-1) { ins(a,&m,x); scanf("%d",&x); } for(i=0;i<=m;i++)

  printf("%5d",a[i]); } void ins(int a[],int*n,int x) { int i=*n; while(a[i]>x&&i>=0) { a[i+1]=a[i]; i--; } a[i+1]=x; (*n)++; }

  20. 一个班级有 30 个学生,每个学生有学号、姓名及数学、语文、计算机成绩、平均成绩。 要求编程实现以下功能: 1) 从键盘上输入 30 个学生的信息,平均成绩通过公式:平均成绩=(数学+语文+计算 机 )/3 计算得出。 2)输出所有平均成绩大于等于 85 的学生姓名(要求用自定义函数实现该功能)。 #include "stdio.h" #define n 30 typedef struct { char no[11],name[9]; int math,chiness,comp; float ave; }studtype; void out(studtype a[]) { int i; for (i=0;i=85)printf("%10s\n",a[i].name); } void main() { studtype stu[n]; int i; printf("input no,name,math,chiness,computer\n"); for (i=0;i

  第七章 数组 一.填空 1. 数组是由固定数目的(

  )的变量按一定顺序排列而构成的。 )个字节

  2. 设有数组定义:char array[]=“China” ;则数组所占的存储空间为( 。 3. 一个二维字符数组 a[10][20]能够存储( )个字符串。

  4. 假定在一维数组 b[10]中,元素 b[5]的指针为 p,则 p+4 所指向的元素为( 5. 一维数组的下标从( )开始。 )。

  ) 。

  6. 设有数组 a[10];则首地址可以写成 (

  7. 设有数组 int a[10], 数组元素 a[5]用指针表示的形式是( 8. 设有数组 int a[10][15], 数组元素 a[5][3]用指针表示的形式是( 9. 定义 3 行 4 列的整型二维数组 a 的语句是( ) 。 10. 定义 int b[ ]={5,6,7,8}, y, *p=b; 执行 y=*p++ 以后, y 的值为( 11. 按下面的语句定义数组 a 后,a [2][0] 的值为( int a[3][2]={2,4,6,8,10}; )。 )。 ) 。

  ) 。

  12. 假设要把“student! ”存入一个字符数组,则该数组长度应该至少为( 。 13. 在 C 语言中,如果采用语句 int a[2][3] = {1,2,3,4,5} 完成一个二维数组的定义和初 始化,那么 a[0][1] 的值为( ) 。 14. 在 C 语言中,如果采用语句 int a[2][3] = {1,2,3,4,5} 完成一个二维数组的定义和初 始化,再定义 int *b = a[0],那么 *(b+2) 的值为 ( ). 15. 若 int a[ ][3]={1,2,3,4,5,6,7,8,9};则*(*a+1)的值是( 16. 按下面的语句定义数组 b 后,b[2][1]的值为( int b[][2]={2,1,4,3,5,6}。 ) 。 ) 。

  )

  17. 设 int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,则*p+4=( 18. 定义 2 行 3 列 5 层的整型三维维数组 a 的语句是( 19. 若有 int a[3]={10,12,30};则*(a+2)+3= ( 20. 若有 int a[3]={10,12,30};则 a+1 是(

  ) 。 ) 。 ) 。 )的地址。

  21. 假设 int 型变量占两个字节的存储单元,若有定义:int x[10]={0,2,4}; 则数组 x 在内存 中所占字节数为 ( ) 。 22. 若有定义 int a[][3]={1,2,3,4,5,6,7};,则 a 数组第一维的大小是( ) 。 23. 数组 int a[3][3];共定义了( 24. C 语言中,二维数组的存放方式为按( )个数组元素。 )存放。 (填“行”或“列” )

  25. 定义 int a[10]={11,12,13,14,15}, *p=&a[5]; 假设&a[0]和&a[1]的值分别是 0x2000 和 0 x2004,则 p 的值是( ) 。 26. 定义 int a[10]={11,12,13,14,15}, *p=&a[3]; 假设&a[0]和&a[1]的值分别是 0x2000 和 0 x2004,则表达式 a[0]+*p 的值是( ) 。 27. 对一维数组初始化时,若有 int ) 。 a[10]={0,1,2,3,4},则 a[5]的值是(

  28. 已知:int a[][3]={1,3,5,7,9,11}; 此时数组元素 a[1][2]的值为( ) 。 29. 定义 char a[7]= "abcdef"; char b[4]= "ABC",执行语句 strcpy(a,b);printf("%s",a), 输出结果是( ) 。 30. 定义 int a[10]={1,3,5,7,9,11,13,15,17,19},*p=a;执行语句 printf("%d",*p+7);输出 结果是( ) 。 31. 已知 int a[5] = { 2, 3, 4, 5, 6 }; int *p = a+2; 则表达式 *p*a[3] 的值是( ) 。 32. 定义 char a[7]= "123456"; char b[4]= "ABC",执行语句 strcpy(a,b); printf("%c",a[ 6]),输出结果是( ) 。 33. 对整形数组 int a[5]={1,2,3}; 则执行语句 a[2]=a[2]+a[1]*(*(a+3)); a[2]的.值为( )

  34. 定义 char a[5]={65,66,67},*p=a; 则执行语句 printf("%s",p+1);输出结果为( )。 35. 对于定义 struct TData{ int a[2]; char c; }; struct TData slist*3+=,,,1,2-,’A’-,,,3,4-,’B’---; slist[1].a[0]的值为( )。

  36. 已知:int a[][3]={1,3,5,7,9,11}; 则*(a[1]+1)的值为( ) 。 37. 已知:int a[2][3]={1,3,5,7,9,11,13},*p; p=&a[2]; p=p+3; 则*p 的值为( )。 38. 定义 char a[7]= "123"; char b[4]= "ABC",执行语句 strcat(a,b); printf("%s",a),输 出结果是( ) 。 39. 对整形数组 int a[5]={3,3,3}; 则执行语句 a[2]=a[1]>0?(a[4]+1):(a[2]+2); a[2]的值 为( ); 40. 定义 int a[ ]={5,6,7,8}, *p=a; 执行 *(p++); 以后, a[0]的值为( )。 解答: 1. 同类型 2. 6 3. 10 4. b[9] 5. 0 6. a 7. *(a+5) 8. *(*(a+5)+3)

  9. int a[3][4] 10. 5 11. 10 12. 9 13. 2 14. 3 15. 2 16. 6 17. 4 18. int a[2][3][5] 19. 33 20. a[1] 21. 20 22. 3 23. 9 24. 行 25. 0x2014 26. 25 27. 0 28. 11 29. ABC 30. 8

  31. 20 32. 6 33. 3 34. BC 35. 4 36. 5 37. 11 38. 123ABC 39. 1 40. 5 二.阅读程序写结果 1. #include void main() { int a[2][3]={{3,2,7},{4,8,6}}; int i,j,m=0; for(i=1;i<=1;i++) for(j=0;j<=i;j++) m=m+a[i][j]; printf("m=%d",m); } 2. #include void main(void) { int array[10] = {1, 2, 4, 5, 6, 0, 0, 0, 0, 0}, i; printf("\n"); for (i=0; i<10; i++) printf("%3d ", array[i]); printf("\n"); for (i=9; i>=2; i--) array[i] = array[i-1]; array[2] = 3; for (i=0; i<10; i++) printf("%3d ", array[i]);

  printf("\n"); } 3. #include void main(void) { char a[]="ABCDEFGH",b[]="abCDefGh"; char *p1,*p2; int k; p1=a; p2=b; for(k=0;k<=7;k++) if (*(p1+k)==*(p2+k)) printf("%c",*(p1+k)); printf("\n"); } 4. #include #include void main() { char a[30]="Hello "; char b[10]="Students"; char c[10]="Teachers"; strcat(a,c); printf("%s,%s.\n",a,b); } 5. #include void inv(int x[],int n); void main() { int i, a[10]={3,7,9,11,0,6,7,5,4,2}; inv(a, 10); printf("The array has been reverted.\n"); for(i=0;i<10;i++) printf("%d,",a[i]); printf("\n"); } void inv(int x[], int n) { int t,i,j,m=(n-1)/2; for(i=0;i<=m;i++) { j=n-1-i; t=x[i]; x[i]=x[j];

  x[j]=t; } } 6. #include void main() { float a[3][3]={1,2,3,4,5,6,7,8,9},sum=0; int i; printf("please input rectangle element:\n"); for(i=0;i<3;i++) sum=sum+a[i][i]; printf("duijiaoxian he is %6.2f",sum); } 7. #include int main() { int i=1,n=3,j,k=3; int a[5]={1,4,5}; while(i<=n&&k>a[i]) i++; for(j=n-1;j>=i;j--) a[j+1] = a[j]; a[i] = k; for(i=0;i<=n;i++) printf(“%2d”,a*i+); return 0; } 8. #include void main() { int a[10]={0,1,2,3,4,5,6,7,8,9}, b[10],i,sum=0; { b[i]=a[i-1]+a[i]; sum=sum+b[i]; } for(i=1;i<10;i++) if(i%3==0) sum=sum+b[i]; printf("sum=%3d",sum); } 9. #include void main() { int a[5]={2,6,1,3,4},n=5,i,j,t; for(i=0,j=1;j

  for(i=1;i<10;i++)

  if(a[i] void funa(int x[],int n); void main() { int i, a[5]={3,7,9,11,0}; funa(a, 5); for(i=0;i<5;i++) printf("%d,",a[i]); printf("\n"); } void funa(int x[], int n) { int t,i,j,m=(n-1)/2; for(i=0;i<=m;i++) { j=n-1-i; t=x[i]; x[i]=x[j]; x[j]=t; } } 11. #include void main() { int a[5]={24,15,33,64,45},n=5,i,j,t; for(i=0;i0;i--) printf("%d,",a[i-1]); } 12. #include void main() { int a[5],i,j,t; for(i=4;i>=0;i--)

  scanf("%d",&a[i]); for(i=0;i<5;i++) a[i]=a[i]+10; for(i=0;i<5;i++) printf("%d,",a[i]); } 输入:42 31 24 15 16<回车> 13. #include void main() { char a[][5]={"Zhong","Gong", "ren"}; printf("%s\n%s\n", a[0],a[1]); } 14. #include void main() { int a[3][3]={0,1,2,3,4,5,6,7,8},i,j,t; for(i=0;i<3;i++) for(j=0;j<3;j++) a[i][j]+=a[i][0]; for(i=0;i<3;i++) printf("%d,",a[i][i]); } 15. #include void main() { int a[3][3]={1,2,3,4,5,6,7,8,9},i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) a[i][j]+=a[i][2]; while(i>0) { i--; printf("%d,",a[i][i]); } } 16. #include void main() { int i,j; char a[10]={"ABCDEFGHIJ"};

  for(i=0;i<10;i++) a[i]=a[i]+3; }

  printf("%c\n", a[6]);

  17. #include int main() { int i,a[10]={0,1,2,3,4,5,6,7}; for(i=1;i<9;i++) a[i]=a[i-1]+a[i+1]; printf("%d%d\n",a[5],a[8]); return 0; } 18. #include int main() { int i,a[]={1,2,3,4,5,6,7,8,9,10}; for(i=0;i<5;i++) a[i]=i+2; for(i=9;i>=0;i--) if(a[i]%3==0) printf("%d\n",a[i]); return 0; } 19. #include int main() { int num=13,len=0,i=0,a[30]; do { a[len]=num%2; }while(num); for(i=0;i int main() { int a[5]={6,9,12,16}; int x,i=3; scanf("%d",&x); while(i>=0 && x

  num=num/2;

小学一年级语文上册复习试题 高中语文趣味文学知识竞赛试题