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

2020-08-06 试题

  解答: 1. 162,A 2. average=78.33 3. 3 2

  4. area=78.500 5. 29 6. 7. -3 -3 x

  1 zhangsan65.00

  8. sum=150

  9. 5,20 10. 10,10 11. 20,X 12. 30,20 13. 15,s 14. 6,v 15. 3,3 16. 15,7 17. t=7 18. 10 2 19. 10,x 20. 2,3 三.补充程序 1. 该程序完成的功能是从屏幕上输入日期(年、月、日) ,计算其为该年的第几天。 #include struct date_type { int year; int month; int day; }; int main() { int days=0,i; struct date_type date; int mon_day[12]={31,28,31,30,31,30,31,31,30,31,30,31}; printf("请输入日期(年 月 日):\n"); scanf("%d%d%d",_____________________________________________); for(i=1;i=3) ____________________________;

  printf(" 所输入日期是该年第%d 天\n",_________________________); return 0; } 2. 该程序完成的功能是从屏幕上输入日期(年、月、日) ,计算其为该年的第几天。 #include struct date_type { int year; int month; int day; }; int main() { int days=0,i; ___________________________; int mon_day[12]={31,28,31,30,31,30,31,31,30,31,30,31}; printf("请输入日期(年 月 日):\n"); scanf("%d%d%d",&date.year,&date.month,&date.day); for(i=1;________________;i++) days=mon_day[i-1]+days; days=days+date.day; if((date.year%4==0&&date.year%100!=0||date.year%400==0)&&_______________ _) days=days+1; printf(" 所输入日期是该年第%d 天\n",_______________); return 0; } 3. 该程序完成的功能是从屏幕上输入日期(年、月、日) ,计算其为该年的第几天。 #include struct date_type { int year; int month; int day; }; int main() { int days=0,i; struct date_type date; int mon_day[12]={31,28,31,30,31,30,31,31,30,31,30,31}; printf("请输入日期(年 月 日):\n"); scanf("%d%d%d",_________________________________); for(i=1;____________________;i++) days=mon_day[i-1]+days; days=days+date.day; if((date.year%4==0&&date.year%100!=0||___________________)&&date.month>=3)

  days=days+1; printf(" 所输入日期是该年第%d 天\n",______________________); return 0; } 4. 该程序实现从键盘输入 1 名职工的信息:职工号、姓名、月工资。由 print 函数完成这名 职工信息的输出。 #include struct employee_type { char num[20]; char name[20]; float pay; }; void print(struct employee_type emp1); int main() { struct employee_type emp; printf("请输入职工信息(职工号 姓名 月工资):\n"); scanf("%s%s%f",____________________________); print(_____________________); return 0; } void print(__________________________) { printf("****职工号 姓名 月工资****\n"); printf("%8s%8s%10.2f\n",_____________________________); } 5. 该程序完成从键盘输入 10 名学生信息(学号、姓名、成绩),用一个排序函数 sort 完成 按 学生成绩降序排列,并输出学生成绩排行榜。 #include #define N 10 struct stud_type { char name[10]; int num; float score; }; void sort(struct stud_type stu[], int n); int main() { int i; struct stud_type stu[N]; printf("Please input %d student’s name num score:\n",N); for(i=0;i

  sort(stu,N); printf("The sort is:\n"); for(i=0;i #define N 10 struct stud_type { char name[10]; int num; float score; }; void sort(struct stud_type stu[], int n); int main() { int i; struct stud_type stu[N]; printf("Please input %d student’s name num score:\n",N); for(i=0;i

  { int i,k,j; struct stud_type t ; for(i=0;i #define N 10 struct stud_type { char name[10]; int num; float score; }; void sort(struct stud_type stu[], int n); int main() { int i; ________________________; printf("Please input %d student’s name num score:\n",N); for(i=0;i

  ____________; if (k!=i) { t=stu[i]; stu[i]=stu[k]; stu[k]=t; } } } 8. 该程序完成从键盘输入 10 名学生信息(学号、姓名、成绩),用一个排序函数 sort 完成 按 学生成绩降序排列,并输出学生成绩排行榜。 #include #define N 10 struct stud_type { char name[10]; int num; float score; }; void sort(struct stud_type stu[], int n); int main() { int i; struct stud_type stu[N]; printf("Please input %d student’s name num score:\n",N); for(i=0;i

  } } 9. 该程序完成从键盘输入 10 名学生信息(学号、姓名、成绩),用一个排序函数 sort 完成 按 学生成绩降序排列,并输出学生成绩排行榜。 #include #define N 10 struct stud_type { char name[10]; int num; float score; }; void sort(struct stud_type stu[], int n); int main() { int i; _______________________; printf("Please input %d student’s name num score:\n",N); for(i=0;i int main()

  { enum week_type { mon=1,tue,wed,thu,fri,sta,sun }workday; int i; do { printf("Please input integer(end:-1)\n"); scanf("%d",________________); workday=(________________)i; switch(________________) { case sun:printf("Sunday\n"); break; case mon:printf("Monday\n"); break; case tue:printf("Tuesday\n"); break; case wed:printf("Wednesday\n"); break; case thu:printf("Thursday\n"); break; case fri:printf("Friday\n"); break; case sta:printf("Saturday\n"); break; default:printf("Input error\n"); break; case -1:printf("Goodbye!\n"); } }while(________________); return 0; } 解答: 1. &date.year,&date.month,&date.day days=mon_day[i-1]+days days=days+1 days

  2. struct date_type date i=3 days 3. &date.year,&date.month,&date.day i

  7. struct stud_type stu[N] struct stud_type stu[], int n

  k=i k=j 8. stu[i].name ,&stu[i].num,&stu[i].score struct stud_type stu[],int n struct stud_type t k!=i 9. struct stud_type stu[N] stu[i].name,stu[i].num,stu[i].score k=j stu[k]=t 10. &i enum week_type workday i!=-1

  四.改错题 解答: 五.编程一 解答: 六.编程二 解答: 第九章 指针 一.填空 1. 假定在一维数组 b[10]中,元素 b[5]的指针为 p,则 p+4 所指向的元素为__________。 2. 指针变量是一种专门存放__________的变量。

  3. 函数中的形参和调用时的实参都是变量时,传递方式为值传递;形参和实参都是数组名 时,传递方式为__________。 4. 设有数组 a[10];则数组元素 a[3]的地址可以写成__________。 5. 定义 int b[10]; 若元素 b[5]的指针为 p1,元素 b[9]的指针为 p2,则 p2- p1 的值为______ ____。 6. int *p, a; 则语句 p=&a; 中的运算符&是__________符号。 7. 设 int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,则*p+4= __________。 8. 定义 int a[10]={11,12,13,14,15}, *p=&a[5]; 假设&a[0]和&a[1]的值分别是 2000 和 200 2,则 p 的值是__________。 9. 对变量的访问方式有直接访问和间接访问两种。其中,将变量 a 的地址存放在另外一个 变 量 p 中,访问时先从 p 中取出变量 a 的地址,再按照 a 的地址访问 a 的值,该方式称为 __________ 访问。 10. int *p 的含义是____________________。 11. 定义 int a[10]={11,12,13,14,15}, *p=&a[5]; 则表达式 a[0]+*p 的值是__________。 12. 定义 int a[10]={1,3,5,7,9,11,13,15,17,19},*p=a;执行语句 printf("%d",*p+7);输出 结果是__________。 13. 定义 int m=5,n=9,t,*p=&m,*q=&n;顺序执行语句 t=*p;*p=*q;*q=t;此时 m 的值是 _______ ___。 14. 已知 int a[5] = { 2, 3, 4, 5, 6 }; int *p = a+2; 则表达式 *p*a[3] 的值是_____ _____。 15. 假定在一维数组 array[10]中,元素 array[5]的指针为 p,则 p-4 所指向的元素为________ __。 16. 数组名代表的是____________________。 17. 若 int a[3][3]={1,2,3,4,5,6,7,8,9};则*(*(a+2)+1)的值是__________。 18. 若 int a[ ][3]={1,2,3,4,5,6,7,8,9};则*(*a+1)的值是__________。 19. 若有 int a[3]={10,12,30};则 a+1 是数组元素__________的地址。

  20. 函数调用时参数有值传递和__________传递两种参数传递方式。 解答: 1. b[9] 2. 地址 3. 地址传递 4. &a[3]或 a+3 5. 4 6. 取地址 7. 4 8. 2010 9. 间接 10. 定义指针变量 p,p 指向整型变量。 11. 11 12. 8 13. 9 14. 20 15. array[1] 16. 数组元素的首地址 17. 8 18. 2 19. a[1] 20. 地址

  二.阅读程序写结果 1. #include int main() { int i=0,a[5]={11,12,13},*q; for(q=a;q void fun(int *p); int main() { int a[5]={1,2,3,4,5},*r=a; fun(r); printf("%d\n",*r); return 0; } void fun(int *p) { p=p+2; printf("%d\n",*p); } 3. #include int main() { int a[3][3]={0,1,2,3,4,5,6,7,8}; int *p,(*q)[3]; int i=0; for(q=a;q #include int main() { char str[20]="I am a student.",*p=str; char *q="You are a teacher.";

  p=p+7; puts(str); return 0; }

  q=q+10;

  strcpy(p,q);

  5. #include void swap(int x, int y) { int z; z=x; x=y; y=z; } void pswap(int *x, int *y) { int z; z=*x; *x=*y; *y=z; } void main() { int a=3, b=2; printf("first:a=%d, b=%d \n", a, b); swap(a,b); printf("second:a=%d,b=%d\n", a,b); pswap(&a,&b); printf("third:a=%d,b=%d",a,b); } 6. #include void f(int a, int b, int *c, int *d) { a=30; b=40; *c=a+b; *d=*d-a; } void main() { int a=10,b=20,c=30,d=40; f(a,b,&c,&d); printf("%d,%d,%d,%d",a,b,c,d); } 7. #include void ast(int *cp, int *dp) { int x=4,y=3; *cp=++x+y;

  *dp=x-y; } void main() { int c, d; ast(&c,&d); printf("%d\n%d\n", c, d); } 8. #include void main() { char s[]="ABCD",*p; for(p=s+1;p void main() { char *p="I am a student."; p=p+3; printf("%s",p); } 10. #include void main( ) { char *p="This is a programe."; p=p+10; printf("%s",p); } 11. #include void add(int *p, int n) { int *pend = p + n; for( ; p

  12. #include int f(int x,int *y); void main() { int a,b,c; a=3; b=5; c=f(a,&b); printf("%d,%d,%d\n",a,b,c); } int f(int x,int *y) { int a=2; x=x+a; *y=x+a; return(a); } 13. #include void fun (int x , int *y ); int main() { int a = 2 , b = 3 , *c = &b; fun(a, c); printf("a=%d, b=%d, c=%d\n", a, b, *c); return 0; } void fun( int x , int *y ) { int a = 4; *y = x + a; x = *y; } 14. #include void sub(int x, int y, int *z) { *z = y - x; } int main() { int a, b, c; sub(10, 5, &a); sub(7, a, &b); sub(a, b, &c); printf(" % 4d, % 4d, % 4d\n", a, b, c); return 0; }

  15. #include int main() { char a[] = "language", *p; p = a; while (*p != 'u') { printf(" % c", *p - 32); p++; } return 0; } 16. #include int stre(char str[]) { int num = 0; while(*(str + num) != '\0') num++; return num; } int main() { char str[10], *p = str; gets(p); printf(" %d\n", stre(p)); return 0; } 输入:happy<回车> 17. #include void f(int x, int *y) { x=x%10; *y=*y/10+x; } int main() { int a=88,b=99,*c; c=&b; f(a,c); printf("%d,%d\n",a,b); return 0; } 18. #include void main() { char a[][7]={ "Teacher","Tom" , "Good"};

  char *p=a[0]; p=p+3; printf("%s\n%s\n", a[0],p); } 19. #include void main() { char a[][7]={ "Teacher","Tom" , "Good"}; char (*p)[7]=a; printf("%s\n%s\n", a[0],++p); } 20. #include void ast(int x, int y, int *a, int *b) { *a=x+y; *b=*a-y; } void main() { int a, b, c, d; a=10; b=20; ast(a,b,&c,&d); printf("%d,%d\n", c, d); } 解答: 1. 16 2. 3 1 3. 0 3 6 4 7 8

  17

  18

  5

  5

  4. I am a teacher. 5. first:a=3, b=2 second:a=3,b=2 third:a=2,b=3 6. 10,20,70,10 7. 8

  2 8. BCD CD D 9. m a student. 10. programe. 11. 11 12 13 14 15

  12. 3,7,2 13. a=2, b=6, c=6 14. -5, -12, -7

  15. L A N G 16. 5 17. 88,17 18. TeacherTom cherTom 19. TeacherTom Tom 20. 30,10 三.补充程序 1. 该程序实现输入两个整数,按先小后大的顺序输出,调用函数实现交换位置。 #include void swap ( int *x, int *y ); int main ( ) { int x, y; printf ( "请输入两个数(空格分隔):" ); scanf ( "%d %d", &x, &y ); if ( x > y ) swap ( _________ ); printf ( " %4d %4d \n", x, y );

  return 0; } void swap ( int *p1, int *p2 ) { int p; _________; _________; _________; } 2. 该程序实现输入两个整数,按先小后大的顺序输出,调用函数实现交换位置。 #include void swap ( int *x, int *y ); int main ( ) { int x, y; printf ( "请输入两个数(空格分隔):" ); scanf ( "%d %d", &x, &y ); if (_________ ) swap ( &x, &y ); printf ( " %4d %4d \n", ______________ ); return 0; } void swap ( _____________) { _________; p = *p1; *p1 = *p2; *p2 = p; } 3. 该程序实现输入两个整数,按先小后大的顺序输出,调用函数实现交换位置。 #include void swap ( _______________ ); int main ( ) { int x, y; printf ( "请输入两个数(空格分隔):" ); scanf ( "%d %d", __________________ ); if ( x > y ) swap ( ______________ ); printf ( " %4d %4d \n", x, y ); return 0; } void swap ( int *p1, int *p2 )

  { _________________ ; p = *p1; *p1 = *p2; *p2 = p; } 4. 该程序实现输入两个整数,按先小后大的顺序输出,调用函数实现交换位置。 #include void swap ( _______________ ); int main ( ) { int x, y; printf ( "请输入两个数(空格分隔):" ); scanf ( "%d %d", &x, &y ); if (__________) swap ( &x, &y ); printf ( " %4d %4d \n",________________); return 0; } void swap ( int *p1, int *p2 ) { int p; ___________; *p1 = *p2; *p2 = p; } 5. 该程序实现输入两个整数,按先小后大的顺序输出,调用函数实现交换位置。 #include void swap ( int *x, int *y ); int main ( ) { int x, y; printf ( "请输入两个数(空格分隔):" ); scanf ( "%d %d", &x, &y ); if ( x > y ) swap (__________); printf ( " %4d %4d \n",_____________ ); return 0; } void swap ( int *p1, int *p2 ) { int p; p = *p1; _________;

  _________; } 6. 利用指针变量自增的方式输出一维数组 b 中的所有元素。 #include #define SIZE 3 int main() { int i, b[]={1,2,3}; int *p; for (_______;________; _________) printf("*p=%d\n",__________); }

  7. 输入一个八进制数并转换为十进制数。八进制转换为十进制数的方法是按权相加,即将 八进制每位上的数乘以位权, 然后相加之和即是十进制数。 利用数组存放八进制数的各位数 码。 #include #define N 6 int main () { int n, temp ; char s [ N ], * p = s; printf ( "请输入八进制数:" ); gets (_____); for ( _________; (* p ) != ' \0 '; _________) { temp = * p - '0'; n = n * 8 + temp; } printf ( "对应的十进制数:%d\n", _______________ ); return 0; } 8. 输入一个八进制数并转换为十进制数。八进制转换为十进制数的方法是按权相加,即将 八进制每位上的数乘以位权, 然后相加之和即是十进制数。 利用数组存放八进制数的各位数 码。 #include #define N 6 int main () {

  int n, temp ; char s [ N ], * p = s; printf ( "请输入八进制数:" ); gets ( _________ ); for ( n = 0; ______________; p ++ ) { temp = * p - '0'; _____________; } printf ( "对应的十进制数:%d\n", ________ ); return 0; } 9. 判断一个字符串是否为回文(指从左至右和从右至左读都是一样的字符串) 。 #include #define N 11 int main ( ) { int i = 0, n = 0; char a [ N ] = " "; char * p1, * p2; printf ( "请输入小于%d 位的整数: ",N-1 ); scanf ( "%s", a ); for (_______; (*p2) != ' \0 '; p2 ++ ) n ++; p1 = a; p2 = a+n-1; for ( i = 1; p1 < p2; i ++ ) { if (__________ ) break; ___________; ___________; } if ( i > n / 2 ) printf ( "Yes, %s 是回文!\n", a ); else printf ( "No, %s 不是回文!\n", a ); return 0 ; } 10. 判断一个字符串是否为回文(指从左至右和从右至左读都是一样的字符串) 。 #include #define N 11 int main ( ) { int i = 0, n = 0; char a [ N ] = " "; char * p1, * p2; printf ( "请输入小于%d 位的整数: ",N-1 );

  scanf ( "%s", a ); for (p2=a; (*p2) != ' \0 '; p2 ++ ) ________; p1 = a; p2 = a+n-1; for ( i = 1; p1 < p2; i ++ ) { if (*p1!=*p2) ________; _________; _________; } if ( i > n / 2 ) printf ( "Yes, %s 是回文!\n", a ); else printf ( "No, %s 不是回文!\n", a ); return 0 ; } 解答: 1. &x, &y p = *p1 *p1 = *p2 *p2 = p 2. x > y x, y int *p1, int *p2 int p 3. int *x, int *y &x, &y &x, &y int p 4. int *x, int *y x>y

  x, y p = *p1 5. &x, &y x, y *p1 = *p2 *p2 = p 6. p=b p

  break p1 ++ p2 -四.改错题 解答: 五.编程一 解答: 六.编程二 解答: 第十章 文件 一.填空 解答: 二.阅读程序写结果 解答: 三.补充程序 解答: 四.改错题 1. 下列给定程序中,函数 fun()的功能是:从字符串 s 中,取出所有大写字母。程序的功能 是从文件中读出字符串,进行如上处理后,输出到屏幕上。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构。 #include void fun(char s) { int i, j; for(i=j=0;s[i]!='\n';i++) if(s[i]>='A'|| s[i]<='Z') s[j]=s[i]; s[j]='\0'; } int main() { char s[80]; FILE *fp; if(fp=fopen("d:\\content.txt", "r")==NULL) { printf("Cannot open file\n Press any key to exit!"); return 1; } fgets(s,30,fp);

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