国家二级C语言机试(操作题)模拟试卷332
程序填空题
1.给定程序中,函数fun的功能是:统计形参s所指的字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。
例如,若形参s所指的字符串为“abcdef35adgh3kjsdf7”,则输出结果为4。
请在程序的下画线处填入正确内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
void fun(char*s,int*t)
{ int i,n;
n=0;
/*********found*********/
for(i=0;【1】!1=0;i++)
/*********found*********/
if(s[i]>=’0’&&s[i]<=【2】)n ++;
/*********found*********/
【3】;
}
main()
{ char s[80]=\\
(1)s[i]
(2)’9’
(3)*t=n
解析:本题考查:for循环语句;if语句条件表达式;指针变量。
填空1:通过for循环语句来判断是否到字符型结尾,变量i用来存放字符型数组下标,则应填入s[i]。
填空2:题目要求判断数字字符,所以此处应填入‘9’。
填空3:将数字字符个数存入变量t中,此处需注意变量t是指针变量。
if语句的条件表达式一般会考查三方面的内容:
(1)条件判断,即>与>=、<与<=、==与!=的区别,需要仔细分析题干的意思,确定条件表达式的内容。
(2)逻辑判断,即&&(逻辑与)与‖(逻辑或)的区别,需要根据题干确定if条件中若干个条件表达式的并存关系。
(3)=(赋值号)与==(等于号)的区别,注意在if条件中不会出现=(赋值号)。
程序修改题
2.下列给定程序中,函数fun的功能是:求出如下分数序列的前n项之和,和值通过函数值返回。
(1)double fun(int n)
(2)s=s+(double)a/b;
解析:本题考查:函数定义,函数定义的一般形式为“类型标识符函数名(形式参数表列)”,其中类型标识符用来说明函数值的类型,函数的类型实际上是函数返回值的类型。
(1)由语句“return(s);”和变量s定义为double型可知,该函数定义时其类型标识符为double类型。
(2)注意数据类型double的书写格式。
确定函数类型标识符在填空和改错题中经常考到,如果函数没有返回值,则函数定义为void型;如果函数有返回值,则函数类型应与返回值类型一致;如果不定义函数类型标识符,则系统默认为int型。
程序设计题
3.函数fun的功能是:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,b=12时,调用该函数后C=4152。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
void fun(int a,int b,long*c)
{
}
main()
{
int a,b;
long c;
printf(\\
void fun(int a,int b,long*c)
{
/*b%10获取b的个位,a/10获取a的十位,a%10获取a的个位,b/10获取b的十位*/
*c=b%10+(a%10)*10+(b/10)*100+(a/10)*1000;
}
解析:本题中主要的问题是如何取出a和b的个位数和十位数,取出后如何表示成c中相应的位数。由于a和b都是只有两位的整数,所以分别对它们除10可得到它们的十位数,分别用10对它们求余可得到它们的个位数。得到后对应乘以1000、100、10、1,就可得到c的千位数、百位数、十位数和个位数。注意使用c时要进行指针运算。
本文档预览:3600字符,共2364字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载