国家二级C语言机试(操作题)模拟试卷658
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是将a和b所指的两个字符串分别转换成面值相同的整数,并进行相加作为函数值返回,规定字符串中只含9个以下数字字符。
例如,主函数中输入字符串\\
(1)’0’
(2)s++或++s
(3)ctod(a)+ctod(b)
解析:填空1:isdigt(*s)这个函数表示检查*s是否是数字(0~9),d=d*10+*s-?表示的是要把字符串分别转换成面值相同的整数,因此本空应该填写’0’。
填空2:*s所代表的字符串中字符需要一个一
个的字符进行转换成整数,因此此空应该填写s++或++s。
填空3:题目要求把转换后的字符进行相加后作为函数的返回值,因此本空应该填写ctod(a)+ctod(b)。
程序修改题
2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序的主函数中,从键盘输入若干个数放人数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun的功能是:计算数组元素中所有值为正数的平均值(不包括0)。
例如,数组中元素的值依次为:39、-47、21、2、-8、15、0,则程序的运行结果为19.250000。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也
不得更改程序的结构!
试题程序:
#include<conio.h>
#include<stdio.h>
double fun(int x[])
{
/*********found*********/
int sum=0.0;
int c=0,i=0;
while(x[i]!=0)
{
if(x[i]>0)
{
sum+=X[i];
c++;
)
i++;
}
/*********found*********/
sum\=c;
return sum;
}
main()
{
int x[i000];
int i=0;
printf(\\
(1)double sum=0.0;
(2)sum/=c;
解析:(1)变量定义错误,变量sum存放所有数据的和,应定义为double型。
(2)C语言中的除法运算符是“/”。
程序设计题
3.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。
注意:部分源程序在文件PROG1.C中。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<string.h>
#include<stdio.h>
#define N80
int fun(char*s)
{
}
void main()
{
FILE*wf;
char line[N];
int mum=0;
printf(\\
int fun(char*=s)
{
int i,j=0;
for(i=0;s[i]!=’\0’;i++)
if(s[i]!=’ ’&&(s[i+1]==’ ’||s[i+1]==’\0’))
/*如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束*|
j++;
return j;/*返回单词个数*/
}
解析:要判断单词的个数,首先想到的是程序怎样识别出一个单词,如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束,因此程序使用for循环语句遍历整个字符串,用if条件语句判断当前字符是否表示一个单词的结束,如果当前字符表示一个单词结束,则存放单词个数的变量加1,最后返回单词的个数。
本文档预览:3600字符,共2292字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载