栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

二级C语言编程模拟题01

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

二级C语言编程模拟题01

引言

小伙伴们好啊。第一次发博,也挺纠结写什么。博主目前上大学,距离考C2就剩一个月了。在网上也找过很多资料,但大多都是以各种方式圈小钱钱= =。与其就发点干货,祝大家考试顺利。

*注:本人思路与答案在文章末尾,建议先做做再进行比较;本人能力有限,如有更优解或不懂的地方可私信。

---程序填空题

下列给定程序中,函数fun的功能是:将NxN矩阵主对角线元素的值与反向对角线对应位置上元素的值进行交换。

如N=3,有以下矩阵:

                                1        2        3

                                4        5        6

                                7        8        9

交换后:

                                3        2        1

                                4        5        6

                                9        8        7

请在程序的下画线处填入正确的内容并将下画线册除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。不得增行或删行,也不得更改程序的结构!

#include    
#define    N    4

void fun(int  ___1___ , int  n)
{  int  i,s;

   for(___2___; i++)
   {  s=t[i][i];
      t[i][i]=t[i][n-i-1];

      t[i][n-1-i]=___3___;
   }
}
main()
{  int  t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j;
   printf("nThe original array:n");
   for(i=0; i 

---程序修改题

由N个有序整数组成的数列已放在一维数组中,下列给定程序中函数fun的功能是。利用折半查找法查找整数m在数组中的位置。若找到,返回其下标值,否则,返回-1。
折半查找的基本算法是:每次查找前先确定数组中特查的范围 low 和 high (low high,查找结束。
请改正程序中的错误,使它能得出正确的结果。
注意。部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!

#include 
#define   N   10

void fun(int  a[], int  m )
{  int  low=0,high=N-1,mid;
   while(low<=high)
   {  mid=(low+high)/2;
      if(m a[mid])
        low=mid+1;
      else  return(mid);
   }
   return(-1);
}
main()
{  int  i,a[N]={-3,4,7,9,13,45,67,89,100,180 },k,m;
   
   printf("a数组中的数据如下:");
   for(i=0;i=0) printf("m=%d,index=%dn",m,k);
   else  printf("Not be found!n");
}

---程序设计题 

假定输入的字符串中只包含字母和*号。请编写函数fun。其功能是:除了尾数的*号之外,将数字中的其它的*号全部去除。t 指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容应当是ABCDEFG*******。注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
 

#include 
void  fun( char *a, char *p )
{

}

main()
{  char  s[81],*t;
   void NONO (  );
   printf("Enter a string:n");gets(s);
   t=s;
   while(*t)t++;
   t--;
   while(*t=='*')t--;
   fun( s , t );
   printf("The string after deleted:n");puts(s);
   NONO();
}
void NONO()
{
  FILE *in, *out ;
  int i ; char s[81],*t ;
  in = fopen("in.dat","r") ;
  out = fopen("out.dat","w") ;
  for(i = 0 ; i < 10 ; i++) {
    fscanf(in, "%s", s) ;
    t=s;
    while(*t)t++;
    t--;
    while(*t=='*')t--;
    fun(s,t) ;
    fprintf(out, "%sn", s) ;    
  }
  fclose(in) ;
  fclose(out) ;
}
解析 

程序填空题: 

由题目可以找出规律:第一行第一个数与第一行倒数第一个数交换; 第二行第二个数与第二行倒数第二个数交换.....由于是填空题,可直接找答案。
第一空写形参,可在函数体中找未被定义的变量进行填写;
第二空填条件,也就是循环次数,此处用了一个for循环,根据题目交叉对角线交换数据来看,循环次数与行数有关,注意:变量i未被初始化。
第三空可根据前两行代码可知,为两个变量交换数据的格式。

        1.   t[][N]                2.   i=0;i

程序修改题:

题目中的折半查找,也叫做二分法查找,此查找有前提条件:数组中的值必须是升序或降序。
第一处错误:在给定的函数体中,函数是有返回值的,void表示无返回值。
第二处错误:关键字拼写错误。

        1.   void 改为 int                2.   If 改为 if

程序设计题:

这类题比较灵活,才写的时候很懵,要最后一个字母有什么用?输入的字符串有多长?还不能用String.h函数?
首先要确定输入的字符串长度;接着开始判断到最后一个字母之前的所有字符是不是 *  ,如果不是,则把字符保存到新字符串中;最后把末尾的 * 添加进新字符串中,让新字符串代替旧字符串即可。

void  fun( char *a, char *p )
{
	int n,i,m=0,j=0;
	char *t;
	t=a;
	while(a[j]){
		if(a[j]==*p) n=j;
		j++;
	}
	for(i=0;in) t[m++]=a[i];	
	}
	t[m]='';
}

大家可以将对题目的见解写到评论区哈,我会回复大家,一起学习进步殺

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/743483.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号