首页>计算机等级考试>历年真题>正文
2011计算机等级考试真题:二级C语言试卷

www.zige365.com 2011-9-27 9:40:10 点击:发送给好友 和学友门交流一下 收藏到我的会员中心

double p=1.0;
for(i=1;i<=m;i++)【15】;
for(i=1;i<=n;i++)【16】;
for(i=1;i<=m-n;i++)p=p/i;
return p;}
main ()
{ clrscr();
printf ("p=%f\n",fun (12,8));}
解析:本题中,欲求p的值,需要先求m,n,m-n的阶乘值,可用循环语句实现。

(15)该程序运行的结果是【17】。
#include
#include
#define M 100
void fun(int m, int *a, int *n)
{ int i,j=0;
for(i=1;i<=m;i++)
if(i%7==0||i%11==0)
a[j++]=i;
*n=j;}
main()
{ int aa[M],n,k;
clrscr();
fun(10,aa,&n);
for(k=0;kif((k+1)%20==0)printf("\n");
else printf("%4d",aa[k]);
printf("\n");}
解析: 解答本题的关键是要读懂程序,试题要找出能被7或11整除的所有整数,注意数学中的“或”和C语言中的“或”的区别,但在此处,if条件语句中用了“||”运算符,若要找能同时被7和11整除的所有整数则在if()中应用“&&”运算符。
当然,如果m的值输入50,即表达式fun(10,aa,&n);为fun(50,aa,&n);时输入结果为:7 11 14 21 22 28 33 35 42 44 49。

(16)下列程序的功能是:求出ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串123412132,输入字符1,则输出3,请填空。
#include
#include
#define M 81
int fun(char *ss, char c)
{ int i=0;
for(; 【18】;ss++)
if(*ss==c)i++;
return i;}
main()
{ char a[M], ch;
clrscr();
printf("\nPlease enter a string: "); gets(a);
printf("\nPlease enter a char: "); ch=getchar();
printf("\nThe number of the char is: %d\n", fun(a,ch));}
解析: 从字符串ss中找出子字符串的方法是:从第1个字符开始,对字符串进行遍历;若ss串的当前字符等于t串的第1个字符,两字符串的指针自动加1,继续比较下一个字符;若比较至字符串的结尾,则跳出循环;若ss串的字符和c串的字符对应不同,继续对ss串的下一个字符进行处理。本程序是采用逐一比较的方式找出出现的次数。循环的作用是在串中从左到右逐一走动,if()的作用是进行判断是否相同,若与c相同则表示又出现一次。

(17)下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中,请填空。
#include "stdio.h"
FILE *fp;
{ char ch;
if((fp=fopen(【19】))==NULL)exit(0);
while((ch=getchar( ))!='@')fputc (ch,fp);
fclose(fp);}
解析: fopen函数的调用方式通常为:
FILE *fp
fp=fopen(文件名,使用文件方式);

(18)设有如下宏定义
#define MYSWAP(z,x,y)
{z=x;x=y;y=z;}
以下程序段通过宏调用实现变量a,b内容交换,请填空。
float a=5,b=16,c;
MYSWAP(【20】,a,b);
解析: 该题考查两个知识点:
(1)用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为#define 标识符 字符串
(2)在MYSWAP宏定义中,利用中间变量z来交换x和y的值,所以要实现a和b的交换,只需通过中间变量即可,所以,此处应填c。

本新闻共7页,当前在第7页  1  2  3  4  5  6  7  

我要投稿 新闻来源: 编辑: 作者:
相关新闻