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

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

1.程序填空题

程序中,函数fun的功能是:将a所指4×3矩阵中第k行的元素与第0行元素交换。例如,有下列矩阵:
1     2     3
4     5     6
7     8     9
10   11  12
若k为2,程序执行结果为:
7     8     9
4     5     6
1     2     3
10   11  12

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

#include  <stdio.h>
#define   N   3
#define   M   4
/**********found**********/
void fun(int (*a)[N], int __1__)
{ int i,temp ;
/**********found**********/for(i = 0 ; i < __2__ ; i++){ temp=a[0][i] ;
/**********found**********/a[0][i] = __3__ ; a[k][i] = temp ;}
}
void main()
{ int x[M][N]={ {1,2,3},{4,5,6},{7,8,9},{10,11,12} },i,j;printf("The array before moving:\n\n");for(i=0; i<M; i++){  for(j=0; j<N; j++) printf("%3d",x[i][j]);printf("\n\n");}fun(x,2);printf("The array after moving:\n\n");for(i=0; i<M; i++){  for(j=0; j<N; j++) printf("%3d",x[i][j]);printf("\n\n");}
}

2.程序修改题

程序中,函数fun的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码值升序排序后输出。
例如,若输入“edcba”,则应输出“abcd”。

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

#include  <string.h>
#include  <stdio.h>
void fun(char  t[])
{char c;int i,j;/*************found**************/for(i=strlen(t);i;i--)i<0for(j=0;j<i;j++)/*************found**************/if(t[j]<t[j+1]){c= t[j];t[j]=t[j+1];t[j+1]=c;}
}
void main()
{char  s[81];printf("\nPlease  enter a character string :");gets(s);printf("\n\nBefore sorting :\n  %s",s);fun(s);printf("\nAfter sorting decendingly:\n %s",s);
}


3.程序设计题

编写一个函数fun,功能是:将ss所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)
例如,若输入“abc4Efg”,则应输出aBc4EFg

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

#include <stdio.h>
#include <string.h>
void fun( char *ss )
{}void main( void )
{char tt[51];void NONO ();printf( "\nPlease enter an character string within 50 characters:\n" );gets( tt );printf( "\n\nAfter changing, the string\n  \"%s\"", tt );fun(tt) ;printf( "\nbecomes\n  \"%s\"", tt );NONO();
}void NONO ()
{
/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */char tt[51], ch;FILE *rf, *wf ;int len, i=0 ;rf = fopen("in.dat","r") ;wf = fopen("out.dat","w") ;while(i < 10) {fgets( tt, 50, rf );len = strlen(tt) - 1 ;ch = tt[len] ;if(ch == '\n' || ch == 0x1a) tt[len] = 0 ;fun(tt);fprintf( wf, "%s\n", tt );i++ ;}fclose(rf) ;fclose(wf) ;
}

附:参考答案

1.程序填空题
(1)k
(2)N
(3)a[k][i]
【解题思路】
填空1:变量k在函数fun()中已经使用,表示变量k已经是定义过的变量。但在函数中没有定义,表示变量k是函数fn()的形参k。故空1处应该填k。
填空2:函数fn()中,for循环完成第k行元素与第0行元素的交换,因为数组共N列,所以变量认于N,空2处应该填N。
填空3:第0行的第:个元素与第1行的第k个元素交换,故空3处应该填a[k]]。

2.程序修改题
(1)for(i=strlen(t)-1; i ; i--)
(2)if(t[j]>t[j+1])
【解题思路】
(1)本题是利用冒泡排序法对数组元素进行排序。所谓的冒泡排序法,就是比较数组中相邻的两个的两个元素,如果逆序则交换,一直到整个数组元素按顺序排列。外循环为排序趟数,strlen(t)个元素进行strlen(t)-1趟排序,所以i是从strlen(t)-1遍历到0.
(2)题中要求按升序排序,相邻两个元素中前者大于后者是逆序要进行交换,所以应改为if(t[j]>t[j+1])。

3.程序修改题
void fun(char *s)
{
int i;
for(i=0;ss[i]!='\0';i++)
if(i%2==1 && ss[i]>='a' && ss[i]<='z')
ss[i]=ss[i]-32;
}
【解题思路】
本题要求将给定字符串ss中下标奇数位置的字母转换为大写,需要先判断下标为奇数的字母是否小写字母,如果是再通过其转换方法进行转换。C语言中,只要将小写字母减去32即转成大写字母,将大写字母加上32即转成小写字母。用if语句即可实现。

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

相关文章:

  • 医学图像配准的循环推理机|文献速递-深度学习人工智能医疗图像
  • Aerobits-用于 sUAS 和 UTM/U-Space 的微型 ADS-B 技术(收发器/接收器)和无人机跟踪应答器
  • 车载诊断架构 --- 从架构系统角度怎么确保整车DTC的完整性?
  • 蓝光三维扫描技术赋能内衣胸垫设计:从精准制造到个性化体验的革新之旅
  • 突破性能瓶颈:Scala爬虫的大规模数据处理方案
  • 【Lua】题目小练14
  • 为什么几行dropout就能显著提升稀疏3DGS渲染质量?
  • 深度学习篇---InceptionNet网络结构
  • 【串口助手】串口调试助手LTSerialTool v3.12.0发布
  • A股大盘数据-2025093分析
  • Java如何实现jar包方法覆盖
  • C语言字符函数和字符串函数(1)
  • TypeScript 与 Java 重载机制对比
  • 08、Linux 安全组开放端口
  • 数据结构:图的表示 (Representation of Graphs)
  • C++完美转发
  • 微信小程序-day3
  • Uniapp中进行微信小程序头像和昵称的更改
  • 20250901 搜索总结
  • 免费专业软件推荐 | 图片/PDF水印添加神器:艾克斯水印工具使用全攻略
  • java中二维数组笔记
  • Git或TortoiseGit的小BUG(可解决):空库报错Could not get hash of ““
  • Nginx中的内置变量、指令、URL重写功能及其虚拟主机配置、负载均衡配置
  • 关于linux编程——网络编程2
  • 工业4.0时代的通信革命:OPC UA Pub/Sub机制全面解析
  • 百万级并发下的微服务架构设计之道:从阿里双11看分布式系统核心原则与落地实践
  • 云计算培训为什么这么贵?
  • EagleTrader观察|你的固定心态,可能正在悄悄让你交易破产
  • Element UI MessageBox 渲染虚拟节点的坑与解决方案
  • 【深度学习新浪潮】用3DGS做三维重建有哪些主要的技术路线可供选择?