当前位置: 首页 > ds >正文

计算机二级C语言操作题(填空、修改、设计题)——真题库(17)附解析答案

1.程序填空题

程序中,函数fun的功能是:把形参s所指字符串中最右边的n个字符复制到形参t所指字符数组中,形成一个新串。若s所指字符串的长度小于n,则将整个字符串复制到形参t所指字符数组中。
例如,形参s所指的字符串为:abcdefgh,n的值为5,程序执行后t所指字符数组中的字符串应为:defgh。

请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。不得增行或删行,也不得更改程序的结构。

#include  <stdio.h>
#include  <string.h>
#define   N   80
void fun(char  *s, int  n, char  *t)
{ int len,i,j=0;len=strlen(s);
/**********found**********/if(n>=len) strcpy(__1__);else {
/**********found**********/for(i=len-n; i<=len-1; i++)  t[j++]= __2__ ;
/**********found**********/t[j]= __3__ ;}
}
void main()
{ char  s[N],t[N];    int  n;printf("Enter a string:  ");gets(s);printf( "Enter n:");  scanf("%d",&n);fun(s,n,t);printf("The string t :  ");  puts(t);
}

2.程序修改题

程序中,函数fun的功能是:找出一个大于给定整数m且紧m的素数,并作为函数值返回。

请改正程序中的错误,使它能得出正确的结果。不要改动main函数,不得增行或删行,也不得更改程序的结构。

#include  <stdlib.h>
#include  <conio.h>
#include  <stdio.h>
int fun( int m)
{ int i,k;for (i=m+1; ;i++){ for (k=2;k<i;k++)
/*************found**************/if (i%k!=0)break;
/*************found**************/if (k<i)return(i);}
}
void main()
{  int n;system("CLS");printf("\nPlease enter n: ");scanf("%d",&n);printf ("%d\n",fun(n));
}

3.程序设计题

程序中,编写函数void fun(int x, int pp[], int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15.

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

#include <stdio.h>
void  fun ( int x, int  pp[], int *n )
{}main( )
{  int  x, aa[1000], n, i ;void NONO ();printf( "\nPlease enter an integer number:\n" ) ; scanf("%d", &x) ;fun(x, aa, &n ) ;for( i = 0 ; i < n ; i++ )printf("%d ", aa[i]) ;printf("\n") ;NONO( ) ;
}void NONO ()
{/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/int x, aa[1000], n, i, j ;FILE *fp ;fp = fopen("out.dat","w") ;for(j = 0 ; j < 10 ; j++) {x = 30 + j ;fun(x, aa, &n) ;for(i = 0 ; i < n ; i++) fprintf(fp, "%d ", aa[i]) ;fprintf(fp, "\n") ;}fclose(fp) ;
}

附:参考答案

1.程序填空题
(1)t,s
(2)s[i]
(3)0或'\0'
【解题思路】
填空1:当给定的长度n大于该字符串s的长度,那么通过函数strcpy()把该字符串直接赋值到t就可以了故空1处应填t,s。
填空2:使用for循环语句,把字符串s最右边n个字符依次添加到t中,故空2处应填s[i]。
填空3:字符串操作结束,需要给t末尾加一个字符串结束符,故空3处应该填0或'\0'

2.程序修改题
(1)if(i%k==0)
(2)if(k==i)
【解题思路】
(1)判断当前数是否为素数,若存在一个数(除1和其自身)能整除当前数,则当前数不是素数,跳出本次循环,所以if条件应为i%k==0。
(2)如果i是素数,则循环结束时k==i,将该值返回

3.程序设计题
void fun (int x, int p[], int *n)
{
int i,j=0;
for(i=1; i<=x;i=i+2)//i的初始值为1,步长为2,确保i为奇数
if(x%i==0) //将能整除x的数存入数组pp中
pp[j++]=i;
*n=j; //传回满足条件的数的个数
}
【解题思路】
本题题干信息是:能整除x且不是偶数的所有整数。循环语句中变量i从1开始且每次增2,所以i始终是奇数。能将整除x的i 值存放在数字pp中,整数采用求余运算符“%”,即“x%i==0”。最后将数据元素个数j保存到n中。

http://www.xdnf.cn/news/20388.html

相关文章:

  • 打开Fiddler,浏览器就不能访问网页了
  • 超细汇总,银行测试-大额存单定期存款测试+面试(一)
  • 深度学习:归一化技术
  • Transformers 学习入门:注意力机制剖析
  • 行业了解05:制造业
  • 新启航开启深孔测量新纪元:激光频率梳技术攻克光学遮挡,达 130mm 深度 2μm 精度
  • Day21_【机器学习—决策树(1)—信息增益、信息增益率、基尼系数】
  • docker-compose跨节点部署Elasticsearch 9.X集群
  • 快速进行光伏设计的好方法!
  • 仓颉编程语言青少年基础教程:布尔类型、元组类型
  • 计算机网络IP协议
  • STM32H7的PA0_C、PA1_C、PC2_C、PC3_C的使用
  • Java线程池的几个常见问题
  • 会员体系搭建咋做?定位目标人群竟有这么多讲究
  • GJOI 9.4 题解
  • Qt---JSON处理体系
  • LeetCode_位运算
  • 安卓学习 之 EditText 控件
  • C/C++中的可变参数 (Variadic Arguments)函数机制
  • Linux学习-硬件(串口通信)
  • 【Android】SQLite使用——增删查改
  • 有哪些AI产品可以真正提高办公和学习效率?
  • 【LeetCode】2749. 得到整数零需要执行的最少操作数
  • 关于无法导入父路径的问题
  • MySQL源码部署(rhel7)
  • SQL面试题及详细答案150道(61-80) --- 多表连接查询篇
  • java面试中经常会问到的集合问题有哪些(基础版)
  • GigaDevice(兆易创新)GD25Q64CSJGR 64Mbit FLASH
  • c#动态树形表达式详解
  • uni-app 和 uni-app x 的区别