全国计算机等级考试题库二级C操作题100套(第85套)

2023-10-27

第85套:

给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:

#include <stdio.h> 
#include <stdlib.h> 
#define N 5 
typedef struct 
{ int num; 
char name[10]; 
char tel[10]; 
}STYPE; 
void check(); 
int fun(___1___ *std) 
{ 
___2___ *fp; int i; 
if((fp=fopen("myfile5.dat","wb"))==NULL) 
return(0); 
printf("\nOutput data to file !\n"); 
for(i=0; i<N; i++) 
fwrite(&std[i], sizeof(STYPE), 1, ___3___); 
fclose(fp); 
return (1); 
} 
main() 
{ STYPE s[10]={ {1,"aaaaa","111111"},{1,"bbbbb","222222"},{1,"ccccc","333333"}, 
{1,"ddddd","444444"},{1,"eeeee","555555"}}; 
int k; 
k=fun(s); 
if (k==1) 
{ printf("Succeed!"); check(); } 
else 
printf("Fail!"); 
} 
void check() 
{ FILE *fp; int i; 
STYPE s[10]; 
if((fp=fopen("myfile5.dat","rb"))==NULL) 
{ printf("Fail !!\n"); exit(0); } 
printf("\nRead file and output to screen :\n"); 
printf("\n num name tel\n"); 
for(i=0; i<N; i++) 
{ fread(&s[i],sizeof(STYPE),1, fp); 
printf("%6d %s %s\n",s[i].num,s[i].name,s[i].tel); 
} 
fclose(fp); 
} 

解题思路:
本题是要求把指定的学生记录输出到指定的文件中。程序中共有三处要填上适当的内容,使程序能运行出正确的结果。
第一处:结构定义自变量,因此应填写STYPE。
第二处:在所填行的下面一行,使用fopen来创建一个二进制文件,但文件流的变量名fp已经给出,这样,此处只能填写FILE。
每三处:fwrite是把变量中的内容写入指定文件中,再根据fwrite参数的使用要求,所以只能填写文件流变量fp。


给定程序MODI1.C中函数fun的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。
例如:当s中的字符串为:"ABCDE"时,则t中的字符串应为:“ABCDEEDCBA”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:

#include <stdio.h> 
#include <string.h> 
void fun (char *s, char *t) 
{ int i, sl; 
sl = strlen(s); 
for( i=0; i<=s1; i ++) 
t[i] = s[i]; 
for (i=0; i<sl; i++) 
 t[sl+i] = s[sl-i-1]; 
t[sl] = '\0'; 
} 
main() 
{ char s[100], t[100]; 
printf("\nPlease enter string s:"); scanf("%s", s); 
fun(s, t); 
printf("The result is: %s\n", t); 
} 

解题思路:
第一处:变量sl错写成了s1。
第二处:新串t的字符串结束位置不正确,应该是两倍的sl距离。


函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上, b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,b=12时,调用该函数后,c=4152。
注意: 部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:

#include <stdio.h> 
void fun(int a, int b, long *c) 
{ 
} 
main() 
{ int a,b; long c; 
printf("Input a, b:"); scanf("%d,%d", &a, &b); 
fun(a, b, &c); 
printf("The result is: %d\n", c); 
NONO(); 
}

解题思路:
本题是给出两个两位数的正整数分别取出各位上的数字,再按条件组成一个新数。
取a十位数字的方法:a/10
取a个位数字的方法:a%10
参考答案:

void fun(int a, int b, long *c) 
{ 
*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10); 
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

全国计算机等级考试题库二级C操作题100套(第85套) 的相关文章

  • MongoDB C# 驱动程序检查身份验证状态和角色

    这是我使用 MongoDB 身份验证机制登录 MongoDB 的代码 try var credential MongoCredential CreateMongoCRCredential test admin 123456 var sett
  • 模板类包装任意类型/非类型模板类

    假设我有一个模板类base和一个班级wrapper其中包含一个实例化成员base 我想定义班级wrapper这样它依赖于模板参数包 该参数包只是 传递 给实例化成员base 例如 考虑下面的代码 它工作得很好 include
  • 处理 LINQ sum 表达式中的 null

    我正在使用 LINQ 查询来查找列的总和 并且在少数情况下该值有可能为空 我现在使用的查询是 int score dbContext domainmaps Where p gt p SchoolId schoolid Sum v gt v
  • boost线程在中断时不打印退出消息

    我有这段代码用于执行三个线程 其中第二个线程应在按 Enter 时中断并打印退出消息 void input val DO STUFF return void process val DO STUFF try cout lt lt waiti
  • 在 Windows Phone 上启动 pdf 文件时出现 System.Runtime.InteropServices.COMException

    我正在尝试使用我之前在另一个应用程序上使用过的以下工作代码打开 pdf 文件 但这一次 当流程到达此行时 我收到 System Runtime InteropServices COMException Windows System Laun
  • 字节到二进制字符串 C# - 显示所有 8 位数字

    我想在文本框中显示一个字节 现在我正在使用 Convert ToString MyVeryOwnByte 2 但是 当字节开头有 0 时 这些 0 就会被删除 例子 MyVeryOwnByte 00001110 Texbox shows g
  • 对数字进行向上和向下舍入 C++

    我试图让我的程序分别向上和向下舍入数字 例如 如果数字是3 6 我的程序应该四舍五入最接近的数字 4 如果该数字是3 4 它将向下舍入为 3 我尝试使用ceil库获取 3 个项目的平均值 results ceil marks1 marks2
  • 成员初始值设定项列表中的求值顺序是什么?

    我有一个带有一些参数的构造函数 我假设它们是按照列出的顺序初始化的 但在一种情况下 它们似乎是按相反的顺序初始化的 导致中止 当我反转参数时 程序停止中止 下面是我正在使用的语法的示例 a 之前需要初始化b 在这种情况下 你能保证这个初始化
  • 捕获当前正在播放的声音

    是否可以捕获计算机上当前播放的声音 如果能够将其保存为 mp3 就好了 但我认为这样做会存在一些法律问题 所以 wav 也可以 我环顾四周 有人建议使用虚拟音频线之类的东西 在 C 中捕获声音输出 https stackoverflow c
  • for 循环 - 没有效果的语句

    由于某种原因 我收到错误 statement with no effect关于这个声明 for j idx j lt iter j increment printf from loop idx i int idx punc ctxt j 你
  • _mm_max_ss 在 clang 和 gcc 之间有不同的行为

    我正在尝试使用 clang 和 gcc 交叉编译一个项目 但在使用时发现一些奇怪的差异 mm max ss e g m128 a mm set ss std numeric limits
  • 为什么以下代码不允许我使用 fgets 获取用户输入但可以使用 scanf?

    这是一个更大程序的简短摘录 但该程序的其余部分无关紧要 因为我认为我能够隔离该问题 我怀疑这与我使用 fgets 的方式有关 我读过 最好使用 fgets 而不是 scanf 但我似乎无法让它在这里正常工作 当我使用以下代码时 程序不会给我
  • 使用 AutoMapper 进行 LINQ GroupBy 聚合

    试图让查询工作 但老实说不确定如何 或者是否可能 进行它 因为我尝试过的一切都不起作用 共查询6个表 Person PersonVote PersonCategory Category City FirstAdminDivision Per
  • 用 C# 编写的带有点击移动的 WPF 游戏

    我试图将标签网格移动到鼠标的位置 就像冒险游戏中的移动一样 理想情况下 我会在途中删除并重新绘制它们 但是 现在我只想弄清楚如何将 int 转换为厚度或 pointtoscreen 到目前为止我有 player XMove int Mous
  • 通过 MSBuild 调用 cl.exe 时无限期挂起

    我正在尝试在我的 主要是 C 项目上运行 MSBuild 想象一下一个非常庞大的代码库 Visual Studio 2015 是有问题的工具集 Windows 7 SP1 和 VS 2015 更新 2 即使使用 m 1 从而迫使它仅使用一个
  • 在 MVVM 中,可以在视图后面的代码中访问 ViewModel 吗?

    在 MVVM 模式中 是否可以接受甚至可以访问视图代码后面的 ViewModel 属性 我有一个可观察的集合 它填充在 ViewModel 中 我需要在视图中使用它来绑定到带有链接列表的无限滚动条 IE private LinkedList
  • 删除对象时指针自动指向空

    假设我有一个对象和其他几个不同类类型的对象中的 10 个指向它的指针 如果对象被删除 这些指针必须设置为空 通常我会将对象的类与具有指向它的指针的类互连 以便它可以通知它们它正在被删除 并且它们可以将它们的指针设置为空 但这也有一个负担 即
  • 从 C# 中的 .NET SecureString 读取单个字符?

    WPF 的PasswordBox 返回一个SecureString 它对窥探者隐藏密码 问题是你最终必须获得密码的值 而我在网上找到的建议都涉及将值复制到字符串中 这会让你回到窥探者的问题 IntPtr bstr Marshal Secur
  • C++0x 中的新 unicode 字符

    我正在构建一个 API 它允许我获取各种编码的字符串 包括 utf8 utf16 utf32 和 wchar t 根据操作系统 可能是 utf32 或 utf16 新的 C 标准引入了新类型char16 t and char32 t没有这么
  • Windows 上 libcurl 的静态库[重复]

    这个问题在这里已经有答案了 如何将此库 libcurl 静态链接到 exe 我努力了 disable share enable static 没有帮助 我使用的是MingW32 有没有一种简单的方法来静态链接这个库 这样我的应用程序就不再有

随机推荐