国家二级C语言机试(操作题)模拟试卷573
程序填空题
1.下列给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去掉,剩余的数按原来从高位到低位的顺序组成一个新数,并通过形参指针n传回所指变量。
例如,若输入一个数27638496,则新数为739。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
void fun(unsigned long*n)
{ unsigned long x=0,i;int t;
i=1;
while(*n)
/*********found*********/
{t=*n%【1】;
/*********found*********/
if(t%2 1=【2】)
{x=x+t*i;i=i*10;)
*n=*n/10;
}
/*********found*********/
*n=【3】;
}
main()
{ unsigned long n=一1;
while(n>99999 999||n<0)
{printf(\\
(1)10
(2)0
(3)x
解析:填空1:通过t对10求余,取出该数值的各个位。
填空2:通过if条件语句实现奇偶数的判定。如果条件表达式对2求余为O即为偶数,反之则为奇数。
填空3:最后将剩余的数赋给n所指向的元素。
程序修改题
2.下列给定程序中函数fun的功能是:计算n!。
例如,给n输入5,则输出120.000000。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<conio.h>
double fun(int 13)
{
double result=1.0;
/*********found*********/
if n==0
return 1.0;
while(n>1 && n<170)
/*********found*********/
result=n一一;
return result;
}
main()
{
int n;
printf(\\
(1)if(n==0)
(2)result*=n一一;或{result*=n;n一一;}
解析:(1)这里是一个简单的格式错误,if条件判断语句应该加括号。
(2)根据阶乘的概念,从n开始,n!=n*(n一1)!,直到1,所以应该为result*=n一一;。
程序设计题
3.请编写函数fun,其功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串“一1234”,则函数把它转换为整数值一1234。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdio.h>
#include<string.h>
long fun(char*p)
{
}
void main()
{
char s[6];
long n;
printf(\\
long fun(char*p)
{
10ng n=0;
int flag=1;
if(*p==’一’)/*负数时置flag为一1*/
{p++;flag=一1;)
else if(*p==’+’)/*正数时置flag为1*/
p++;
while(*p!=’\0’)
{n=n*10+*p一’0’;/*将字符串转成相应的整数*/
p++;
}
return n* flag;
}
解析:if语句的作用是判断该字符串为正数还是负数,while循环的作用是将字符串转成相应的整数。
注意:*p是一个字符(例如‘9’、‘4’),并不是一个数,要将其转成相应的数字需令其减去’0’(不是’\0’),即*p一’0’就得到*p这个字符的相应数字,例如’0’一’0’=0、’8’一’0’=8等。必须在程序的前面加#include<stdlib.h>,函数awl的作用是将字符串转换成长整型数,它是一个库函数。
本文档预览:3600字符,共2616字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载