计算机二级C语言考试公共基础知识(6)

2020-02-21 23:20

【解题思路】

填空1:变量sum用来储存\和\结果,所以将其初始化为0。

填空2:从题目中我们可以了解到,主对角线元素的行和列下标是相同的,所以应填入t[i][i]。

填空3:对于反向对角线元素的行和列的下标,它们的关系是相加和为n-1,所以应填入1。 2、

#include

void fun(int a[], int n) { int i,t;

/**********found**********/ for (i=0; i<___1___; i++) {

t=a[i];

/**********found**********/ a[i] = a[n-1-___2___]; /**********found**********/ ___3___ = t; } }

main()

{ int b[9]={1,2,3,4,5,6,7,8,9}, i; printf(\ for (i=0; i<9; i++)

printf(\ printf(\ fun(b, 9);

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

printf(\ printf(\}

【参考答案】

(1) n/2 (2) i (3) a[n-i-1] 【考点分析】

本题考查:for循环语句;变量交换算法。 【解题思路】

填空1:逆置数组元素中的值,将a[0]与a[n-1]对换位置,依此类推,那么需要对换n/2次。 填空2:将a[0]与a[n-1]对换位置,a[1]与a[n-2]对换位置,依次类推,则a[i]=a[n-1

26

-i]。

填空3:普通的调换位置程序,显然填入a[n-i-1]。 3、

#include # define N 50 # define M 11

void fun(int a[], int b[],int n) {

int i;

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

for(i=0;i<【1】;i++) if(a[i]<60) b[5]++; 【2】

b[(a[i]-60)/10]++; }

main() {

int i,a[100]={93,85,77,68,59,43,94,75,98},b[6]; fun(【3】,9);

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

printf(\ printf(\}

参考答案】

(1) n (2) else (3) a,b 【解题思路】

填空1:变量i用于控制存放人员成绩的数组的下标,因此i的取值范围为0~n-1。

填空2:当a[i]<60时,统计不及格的人数,相反则存入其他数组中,因此这里填入else。 填空3:根据函数传递规则,调用函数时不但要传递人数,还要传递数组a和b。 4、

27

#include #include #include #include

void fun(char s[],int n) {

char a[80],*p; int i;

p=【1】;

for(i=0;i

{a[i]=【2】; i++;

}while(【3】); a[i]=0;

strcpy(s,a); }

void main()

{int n;char s[80]; system(\

printf(\ printf(\ printf(\ scanf(\ fun(s,n);

printf(\}

【参考答案】

(1) s (2) *p++ (3) *(p)或*p或*p!=0 【解题思路】

填空1:指针p用于对字符串中的元素进行操作,对其初始化时应将其指向数组的首地址。 填空2:由题意可知,当加完*后,就要赋值字符串,将p的值赋给a数组。

填空3:这里是一个判断条件,显然与字符串的结束有关,当为结束符时,判断条件为假,退出循环。 5、

28

#include #include #include #include

void fun (char *s, char *t ) {

int i,s1;

s1=strlen(s); for (i=0;i

void main()

{char s[100], t[100]; system(\

printf(\ scanf(\ fun(s,t);

printf (\}

【参考答案】

(1) s1-i-1或s1-1-i (2) 2*s1或s1*2 【解题思路】

填空1:根据题意可知,第一个for循环的目的是逆序字符串,因此填入s1-i-1。

填空2:第二个for循环的目的是将字符串s再次以正序方式存入t中,最后给t加上字符串结束标识'\\0',此时字符串的长度为2*s1或s1*2。 6、

#include #include

29

#define N 1000

void fun(char *tt,int num[]) {

int i,j; int bb[10]; char *p=tt;

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

num[i]=0; bb[i]=0; }

while(【1】) {

if(*p>='0'&&*p<='9') 【2】; p++; }

for(i=1,j=0;i<10;i=i+2,j++) 【3】; }

void main() {

char str[N]; int num[10],k; system(\

printf(\ gets(str);

printf(\ puts(str); fun(str,num);

printf(\ for(k=0;k<5;k++) {

printf(\

printf(\ }

printf(\}

【参考答案】

(1) *p (2) bb[*p-′0′]++ (3) num[j]=bb[i] 【解题思路】

填空1:通过移动指针p指向字符串tt中的各个字符,当指针p所指的字符为'\\0'时,即指向字符串tt的最后一个字符,while循环结束。

30


计算机二级C语言考试公共基础知识(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:Adghgga中小企业财务管理现状及对策

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: