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

时间:2020-08-06 10:50:24 试题 我要投稿

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

  len++;

  } a[i+1]=x; for(i=0;i<5;i++) printf("%5d",a[i]); printf("\n"); return 0; } 输入:10<回车> 21. #include int main() { int a[3][3]={{2,3},{4,5,6},{7,8}}; int i=0,j=0,m; m=a[0][0]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(a[i][j] #include int main() { int i; char str[20]="abcdef"; strcpy(str,"opqrst"); str[5]='\0'; for(i=0;i #include int main() { char a[10]="AB",b[10]="LMNP"; int i=0; while(b[i]) { a[i]=b[i]; i++; }

  a[i]='\0'; puts(b); return 0; } 24. #include #include int main() { int i; char str1[30]="abc",str2[3][5]={"defg","hi\0j","klm"}; for(i=1;i<3;i++) strcat(str1,str2[i]); puts(str1); return 0; } 25. #include int main() { int i; char a[] = "Time", b[] = "Tom"; for(i = 0; a[i] != '\0' && b[i] != '\0'; i++){ if (a[i] == b[i]) if (a[i] >= 'a' && a[i] <= 'z') printf("%c", a[i] - 32); else printf("%c", a[i] + 32); else printf("*"); } return 0; } 26. #include int main() { char a[4][10] = {"1234", "abcd", "xyz", "ijkm"}; int i = 3; char (*p)[10] = a; printf("output string: \n"); for (p = a; p < a + 4; p++, i--) printf("%c", *(*p + i)); return 0; } 27. #include #include int main() {

  char str1*30+, str2*+ = “your book”; scanf(“%s”, str1); strcpy(str1, str2); printf(“\n %s\n %d\n”, str1, strlen(str2)); return 0; } 输入:you are a student<回车> 28. #include #include int main() , char s1*10+=“java”,s2*10+=“basic”,s*10+; if(strcmp(s1,s2)) { strcpy(s,s1); puts(s);} printf(“%d,%s\n”,strlen(s2),strcat(s2,s1)); return 0; } 29. #include < stdio.h > #include < string.h > int main () { char *p = “abcdefgh” , c*10+ = , “XYZ” - ; p += 3 ; puts ( strcat ( c , p ) ) ; printf ( “%d\n” , strlen ( c ) ) ; return 0; } 30. #include int main() { int a[6][6], i, j; for(i=1;i<6;i++) for(j=1;j<6;j++) a[i][j] = (i/j)*(j/i); for(i=1;i<6;i++) { for(j=1;j<6;j++) printf("%2d",a[i][j]); printf("\n"); } return 0; } 31. #include int main() { int i, f[10];

  f[0]= f[1] = 1; for(i=2;i<10;i++) f[i] = f[i-2] + f[i-1]; for(i=0;i<10;i++){ if(i%4 == 0) printf("\n"); printf("%3d",f[i]); } return 0; } 32. #include #include int main() { char a[]="morming", t; int i, j=0; for(i=1;i<7;i++) if(a[j] #include void main() { char s*12+=“abcdef”; scanf(“%s”,s); strcat(s,”xyz”); printf(“%s\n”,s); } 34. #include void main() { int a[3][3]={{3,4},{5,6},{7,8}}; int i,j,t=0; for(i=1;i<3;i++) for(j=0;j void main( ) {

  int i,t,a[5]={1,2,3,4,5}; t=a[0]; for(i=1;i<5;i++) a[i-1]=a[i]; a[4]=t; for(i=0;i<5;i++) printf("%d",a[i]); printf("\n"); } 36. #include void mystrcpy( char s1[ ] , char s2[ ]); void main( ) { char a[50]="I am a teacher."; char b[]="You are a student."; printf( " a = %s \n" , a ); mystrcpy( a , b ); printf( " a = %s \n" , a ); } void mystrcpy( char s1[ ] , char s2[ ]) { int i = 0 ; while( s2[i] != '\0' ) { s1[i] = s2[i]; i++; } s1[i] = '\0' ; } 37. #include void main() { int i,j,k=0,a[3][3]={1,2,3,4,5,6}; for(i=0;i<3;i++) for(j=i;j<3;j++) k=k+a[i][j]; printf(“??%d”??,k); } 38. #include void main() { int i,j=3,a[ ]={1,2,3,4,5,6,7,8,9,10};

  for(i=0;i<5;i++) a[i]=i*(i+1); for(i=0;i<4;i++) j+=a[i]*3; }

  printf("%d\n",j);

  39. #include void main() { char c, string[81]= "How are you?"; int i, n=0, k=0; for(i=0; c=string[i]; i++) { if(c==' ') k=0; else if(k == 0) k = 1; n ++; } } printf("%d\n" , n ); } 40. #include #include void main( ) { char s*16+=“12345\0\t\t\t”; printf(“%d,%d\n”,strlen(s),sizeof(s)); }

  {

  解答: 1. m=12 2. 1 1 2 2 4 3 5 4 6 5 0 6 0 0 0 0 0 0 0 0

  3. CDG 4. Hello Teachers,Students. 5. The array has been reverted. 2,4,5,7,6,0,11,9,7,3,

  6. please input rectangle element: duijiaoxian he is 15.00 7. 1 3 4 5 8. sum=114 9. 22121 10. 0,11,9,7,3, 11. 5,4,3,5,4, 12. 26,25,34,41,52 13. ZhongGong Gong 14. 0,10,20 15. 18,11,4 16. J 17. 2027 18. 9 6 6 3 19. 1101 20. 21. m=0 22. opqr 23. LMNP 24. abchiklm 6 9 10 12 16

  25. t*M 26. 4cyi 27. your book 9 28. java 9,basicjava 29. XYZdefgh 8 30. 1 0 0 0 0 01000 00100 00010 00001 31. 1 1 2 3 5 8 13 21 32. mo 33. hijxyz 34. t=20 35. 23451 36. a= I am a teacher. a= You are a student. 37. 17 38. 63 39. 3 40. 5,16 三.补充程序 1. 求一个 3*3 矩阵对角线元素之和。 #include "stdio.h"

  int main() { float a[3][3],sum=0; int i,j; printf("please input rectangle element:\n"); for(i=0; ________________________;i++) for(j=0;j<3;j++) scanf("%f",________________________); for(i=0; ________________________;i++) ________________________; printf("duijiaoxian he is %6.2f",sum); return 0; } 2. 将一个数组逆序输出. #include "stdio.h" #define N 5 int main() { int a[N]={9,6,5,4,1},i,temp; printf("\n original array:\n"); for(i=0;i

  for(j=0;j<5;j++) { scanf("%d",________________________); s=s+a[j][i]; } v[i]=s/5.0; ________________________; } l=(v[0]+v[1]+v[2])/3.0; printf("math:%f\nc ________________________,v[2 ]); printf("total:%f\n",l); return 0; }

  languag:%f\ndbase:%f\n",v[0],

  4. 将字符串 st2 内容连接到串 st1 中,并计算串 st1 字符长度。 ________________________ #include "stdio.h" int main() { int len; char st1[30]="My name is "; char st2[10]; printf("input string st2 name:\n"); gets(________________________); ________________________; len=________________________; puts(st1); printf(“串 st1 字符长度%d\n”,len); return 0; } 5. 将十进制整数 base 转换成 2 进制。 #include "stdio.h" int main ( ) { int i=0,base,j,num[20] ; scanf(“%d”,&base) ; do { num[i]= ________________________; base=________________________; i++; } while (base!=0); for (________________________;________________________ ;j--) printf(“%d”,num*j+) ; return 0; }

  6. 输入一个 2×3 矩阵,并 3 行 2 列输出矩阵。 #include int main() { int i,j; float s[2][3]; printf(“please input 6 numbers:\n”); for(i=0; ________________________;i++) for(j=0;j<3;j++) ________________________; printf(“\n the final matrix is:\n”); for(i=0;i<3;i++) { ________________________ printf("%f",s[j][i]); ________________________ } return 0; } 7. 从键盘输入 10 个学生的成绩,求平均分并输出大于平均分的所有成绩。#include int main( ) { int i; ________________________ float a=0.0; printf (" Input 10 student's scores:\n "); for(i=0; i<10; i++) ________________________; for(i=0; i<10; i++) a=a+s[i]; ________________________; printf("average=%2.1f \n scores(> average):\n",a); for(i=0; i<10; i++) if (s[i]>a) ________________________; return 0; } 8. 将一个 2 行 3 列数组 a 的元素,存到一个 3 行 2 列二维数组 b 中,并输出数组 a,b. #include int main ( ) { int a[2] [3]={{1, 2,3},{4, 5,6}}; int b[3] [2], i, j;

  printf("array a: \n"); for (i=0; i<=1; i++) { for (j=0; j<=2; j++) { printf("%5d", a[i][j]); ________________________; } printf("\n"); } printf("array b:\n"); for (i=0; ________________________; i++) { for (j=0; ________________________; j++) printf("%5d", b[i][j]); ________________________; } return 0; } 9. 计算矩阵上三角阵(不包括对角线元素)各元素之和,并 8 行 2 列输出矩阵 a. #include int main() { int a[4][4]={{2,3,4},{5,6,7},{8,9,1}}; int i,j,t=0; for(I=0;i<4;i++) for(____________________; ________________________;j++) t+=________________________; printf("t=%d\n",t); for(i=0;i<4;i++) { for(j=0;j<4;j++) { printf(“%3d”, a*i+*j+); if((j+1)%2==0)printf(“\n”); } ________________________; } return 0; } 10. 计算和存储数列前 20 项,每行输出 5 项。 #include "stdio.h" int main() { ________________________;

  int i; a[0]=a[1]=1; for(________________________;i<20;i++) a[i]=a[i-1]+a[i-2]; for(i=0; ________________________;i++) { printf(“%6d”,a*i+); ________________________; } return 0; } 解答: 1. i<3 &a[i][j] i<3 sum+=a[i][j] 2. a[i] i

  5. base%2; base/2; j=i-1 j>=0 6. i<2 scanf("%f",&s[i][j] for(j=0;j<2;j++) printf("\n"); 7. int s[10]; scanf("%d",&s[i]); a=a/10; printf("%5d",s[i]); 8. b[j][i]=a[i][j]; i<3 j<2 printf("\n"); 9. j=i+1 j<4 a[i][j] if((i+1)%2==0)printf("\n"); 10. int a[20] i=2

  i<20 if((i+1)%5==0)printf("\n"); 四.改错题 解答: 五.编程一 解答: 六.编程二 解答: 第八章 结构体 一.填空 1. 引用结构体变量成员的一般形式是:结构体变量名__________。 2. 定义枚举类型的关键字是__________。 3. 设 char 、int、float 分别占 1、2、4 个字节,假设有如下定义: struct student { char name[10]; int nl; float ave; }qq; 则变量 qq 在内存中所占的字节数是__________。 4. 设 char 、int、float 分别占 1、2、4 个字节,假设有如下定义: union student { char name[10]; int nl; float ave; }qq; 则变量 qq 在内存中所占的字节数是__________。 5. 设 char 、int、float 分别占 1、2、4 个字节,假设有如下定义: union stu { char a; int b; float c; }; struct { float c; union stu x; } y;

  那么变量 y 占用的存储空间分别为__________个字节。 6. 设有定义 struct date {

  int day ; char month ; int year ; } dd , *pd = &dd ;

  请写出:使用指针变量 pd 引用结构体成员 dd .day 的另一种描述形式__________。 7. 结构体变量各成员占用的内存单元起始地址__________。 (填“相同”或“不同” ) 8. 共用体变量各成员占用的内存单元起始地址__________。 (填“相同”或“不同” ) 9. 设 char 、int、float 分别占 1、2、4 个字节,假设有如下定义: union stud_type { char name[5]; int num; float score; }]; union stud_type stu[10]]; 则程序运行时,系统将为 stu 分配__________个字节的内存空间。 10. 设 char 、int、float 分别占 1、2、4 个字节,假设有如下定义: struct stud_type { char name[5]; int num; float score; }; struct stud_type stu[10]; 则程序运行时,系统将为 stu 分配__________个字节的内存空间。 11. 设 char、float 和 double 型数据占用的内存空间字节数分别是 1、4 和 8,则变量 stu1 在 内 存中占用的字节数是__________。 struct stud_type { char name[10]; float score[5]; double average; }stu1; 12. 写出一个单链表结点的.结构体类型定义: 结点名为 worker, 分量 num 为整型, 分量 next

  为 指向下一结点的指针________________________________________。 13. 写出一个货品信息的结构体类型定义:结点名为 goods_type,第一个分量货品号 num 为整 型,第二个分量货品名 name 为长度为 20 的字符型数组,第三个货品库存量 amount 为整 型。__ ______________________________________。 14. 在 C 语言中,可以给某个已有的数据类型重新命名。将 int 型重新命名为 INTEGER,应 该表 示为______________________________。 15. 在 C 语言中,给某个已有的数据类型重新命名的形式为:__________ 类型名 16. 结构体变量成员的引用方式是使用__________运算符。 17. 结构体指针变量成员的引用方式是使用__________运算符。 18. 设 struct student{ int no;char name[12];float score[3]; } sl,* p = &sl;用指针 法给 sl 的成员 no 赋值 1234 的语句是____________________。 19. typedef 的功能是____________________。 20. 设 char 、int 分别占 1、2 个字节,假设有如下定义: union student { int n;char a[100]; } b; 则 sizeof(b)的值是__________。 解答: 1. ?成员名 2. enum 3. 16 4. 10 5. 8 6. pd->day 或(*pd).day 7. 不同 8. 相同 新名称。

  9. 50 10. 110 11. 38 12. struct worker { int num; struct worker *next; }; 13. struct goods_type { int num; char name[20];int amount;}; 14. typedef int INTEGER; 15. typedef 16. ? 17. -> 18. p->no=1234 或(*p).no=1234 19. 给某个已有的数据类型重新命名 20. 100 二.阅读程序写结果 1. #include struct stri_type { char ch1; char ch2; { int a; int b; }ins; }; int main() { struct stri_type ci; ci.ch1='a'; ci.ch2='A'; ci.ins.a=ci.ch1+ci.ch2; printf("%d,%c\n",ci.ins.a,ci.ins.b); return 0; } 2. #include struct stud_type

  struct

  ci.ins.b=ci.ins.a-ci.ch1;

  { char num[11]; char name[11]; float score[3]; float average; }; int main() { struct stud_type stu={"200601","wang",80.0,85.0,70.0}; stu.average=(stu.score[0]+stu.score[1]+stu.score[2])/3; printf("average=%5.2f\n",stu.average); return 0; } 3. #include union out { int a[2]; struct { int b; int c; }in; int d; }; int main() { union out e; int i; e.in.b=1; e.in.c=2; printf("%5d",e.a[i]); printf("\n"); return 0; }

  e.d=3;

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

  4. #include #define PI 3.14 struct cir_type { float r; double area; }; int main() { struct cir_type cir={5.0},*p=&cir; p->area=PI*p->r*p->r; printf("area=%.3lf\n",p->area);

  return 0; } 5. #include struct int_char { int i; char ch; }; int main() { struct int_char x={9,'z'}; printf("%d\t%5c\n",x.i+20,x.ch-2); return 0; } 6. #include int main() { struct data { int m; int n; union { int y; int z; }da; }; struct data intdata; intdata.m=3;intdata.n=6; intdata.da.y=intdata.m+intdata.n; intdata.da.z=intdata.m-intdata.n; printf("%5d%5d\n",intdata.da.y,intdata.da.z); return 0; } 7. #include int main() { int i; float sum_average=0; { int num; char name[10]; int score[2]; float average; };

  struct student

  struct student data[2]={{1,"zhangsan",60,70},{2,"Lisi",89,90}}; for(i=0;i<2;i++) { data[i].average=(data[i].score[0]+data[i].score[1])/2.0; sum_average=sum_average+data[i].average; } sum_average=sum_average/2; for(i=0;i<2;i++) if(sum_average>data[i].average) printf("%5d%10s%5.2f",data[i].num,data[i].name,data[i].average); return 0; } 8. #include struct int_data { int d1,d2;}; int main() { struct int_data data[2]={{2,3},{5,6}}; int i; int sum=10; for(i=0;i<2;i++) { scanf("%d%d",&data[i].d1,&data[i].d2); sum=data[i].d1+data[i].d2+sum; } printf("sum=%d \n",sum); return 0; } 输入:20 30 40 50<回车> 9. #include int main( ) { union exa { struct { int a; int b; }out; int c; int d; }e; e.out.a=10; e.out.b); return 0; }

  e.out.b=20;

  e.c=2;

  e.d=5;

  printf("%d,%d\n",e.out.a,

  10. #include struct st { int a; int b; union { int e; int f; }c; }; int main( ) { struct st y; y.a=10; y.c.e=20; y.c.f=y.a; y.b=y.c.e; printf("%d,%d\n",y.c.e,y.c.f); return 0; } 11. #include struct sta { int a; char b; }; struct stb { int a; char b; struct sta c; }; int main( ) { struct stb y; y.a=10; y.b='X'; y.c.a=y.a*2; y.c.b=y.b--; printf("%d,%c\n",y.c.a,y.c.b); return 0; }

  12. #include union st { int a[2]; int b[2]; int c; }; int main( ) { union st y; y.a[0]=10; y.c=30; return 0;

  y.b[1]=20; printf("%d,%d\n",y.a[0],y.a[1]); }

  13. #include struct two { int n; char ch; }; void main( ) { struct two ex1={5,'t'}; printf("%d,%c\n",ex1.n+10,ex1.ch-1); }

  14. #include struct two { int n; char ch; }; void func(struct two ex2); void main() { struct two ex1={6,'v'};

  func(ex1); printf("%d,%c\n",ex1.n,ex1.ch); getchar(); } void func(struct two ex2) { ex2.n= ex2.n +20; ex2.ch= ex2.ch -1; } 15. #include union exa{ struct{ int a; int b; }out; int c; int d; }; void main() { union exa e; e.c=1; e.d=3; e.out.a=e.c; e.out.b=e.d; printf("%d,%d\n",e.out.a,e.out.b); } 16. #include struct stu { int a; int b; struct poi { int x; int y; }ins; }; void main() { struct stu outs; outs.a=11; outs.b=4; outs.ins.x=outs.a+outs.b; outs.ins.y=outs.a-outs.b; printf("%d,%d", outs.ins.x, outs.ins.y); } 17. #include

  struct abc { int a, b, c; }; int main() { struct abc s[2] = {{1,2,3},{4,5,6}}; int t; t = s[0].a + s[1].c; printf("t=%d \n",t); return 0; } 18. #include struct st { int x, y; } data[2] = {1, 10, 2, 20}; int main() { struct st *p = data ; printf("%d\n", p->y ) ; printf("%d\n", (++p)->x ) ; return 0 ; } 19. #include struct n { int x; char c; }; void func(struct n b) { b.x = 20; b.c = 'y'; } int main() { struct n a = {10, 'x'}; func(a); printf("%d,%c", a.x, a.c); return 0; }

  20. #include int main() { struct EXAMPLE { struct { int x; int y; } in; int a; int b; } e; e.a = 1; e.b = 2; e.in.x = e.a * e.b; e.in.y = e.a + e.b; printf("%d,%d", e.in.x, e.in.y); return 0; }