二级C语言机试模拟144 下载本文

内容发布更新时间 : 2024/5/17 14:49:59星期一 下面是文章的全部内容请认真阅读。

二级C语言机试模拟144

1、填空题

1、 请补充main函数,该函数的功能是:输出方程组“A+B=56,A+2B=72”的一组正整数解。本题的结果是: A=40,B=16。 注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。 试题程序:

#include<stdio. h> main() {

int i, j; clrscr ();

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

for (j=0; j<100; j++) if( 【1】 )

printf (\ 【2】 ); }

2、改错题

1、 下列给定程序中,函数fun()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构. 试题程序:

#include <conio.h> #include <stdio.h> #define MAXLINE 20

/*************found**************/ fun(char *pstr[6]) {int i, j; char *p;

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

{for(j=i+l;j<6;j++)

/*************found**************/

{ if(strcmp(*(pstr+i),pstr+j)>0) {

p=*(pstr+i);

/*************found**************/ * (pstr+i) -pstr+j; * (pstr+j)=p;

} } } }

main ( ) { int i;

char *pstr[6],str[6][MAXLINE]; clrscr();

for(i=0;i<6;i++) pstr[i]=str[i];

printf(\ line):\\n \

for(i=0;i<6;i++) scanf(\ fun(pstr);

printf(\ for(i=0;i<6;i++) printf(\ }

3、编程题

1、 已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun(),该函数的功能是;找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给㈩函数的首部,请完成该函数。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:

#include<stdio.h> #include<string.h> #include<conio.h> #define N 10

typedef struct ss /*定义结构体*/ { char num[10]; int s; } STU;

fun(STU a[], STU *s) { }

main ( ) {

STU a[N]={{ \ { \ { \ { \

int i;

clrscr ();

printf(\ for (i=0; i<N; i++)

printf(\ a[i].s); fun (a, &m);

printf (\

printf(\ }

答案:

1、填空题

1、 [1] i+j==56&&i+2*j==72 [2] i,j

[解析] 填空1:如果两数i和j司时满足条件:i+j==52,i+2*j==60,则i和j就是方程组的解。两个条件要同时满足,一不可,所以要用“与”运算符——“&&”。填空2:出于要输出方程组的解,所以标准输出函数printf()的输出列表是i和j。 2、改错题

1、(1) 错误: fun(char *pstr[6]) 正确: void fun(char *pstr[6])

(2) 错误: if(strcmp(*(pstr+i),pstr+j)>0 正确: if(strcmp(*(pstr+i),*(pstr+j))>0 (3) 错误:

*(pstr+i)=pstr+j; 正确: *(pstr+i)=*(pstr+j);

[解析] 冒泡法对字符串排序的方法是将相邻两个字符比较,将小的调到前面。令x等于字符串的第i位字符,若该字符的前一位字符大于x,则将该字符与x互换位置。从字符山中的第2位字符到字符串的最后一们字符重复以上过秆,即可完成排序。可用循环语句实现。 3、编程题

1、 fun(STU a[], STU *s) {

int i; *s=a[0];