c语言模拟试卷

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

c语⾔模拟试卷
第2题(2.0分)题号:146
⽤下列语句定义a,b,c,然后执⾏b=a、c='b'+b,则b,c的值是()。

long a=0xffffff; int b; char c;
A:0ffffff 和0x61
B:-1和98
C:-1和97
D:指向同⼀地址
答案:C
第12题(2.0分)题号:202
设有如下定义: struct sk {int a; float b;} data,*p;
若要使p指向data中的a域,正确的赋值语句是()。

A:p=(struct sk*)&data.a
B:p=(struct sk*) data.a;
C:p=&data.a
D:*p=data.a;
答案:A
第14题(2.0分)题号:501
下列程序段的输出结果为()。

int a=7,b=9,t;
t=a*=a>b?a:b; 看成t=a*=(a>b?a:b);t=a*=9;
printf("%d",t);
A:7
B:9
C:63
D:49
答案:C
第18题(2.0分)题号:178
以下对C语⾔函数的描述中,正确的是()。

A:C程序必须由⼀个或⼀个以上的函数组成
B:C函数既可以嵌套定义⼜可以递归调⽤
C:函数必须有返回值,否则不能使⽤函数
D:C程序中有调⽤关系的所有函数必须放在同⼀个程序⽂件中
答案:A
第19题(2.0分)题号:431
下列程序的输出结果是()。

main()
{ int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:switch(y)
{
case 0:a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
case 3:a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
A:a=1,b=0
B:a=2,b=1
C:a=1,b=1
D:a=2,b=2
答案:B
三、程序填空共2题(共计20分)
第1题(10.0分)题号:20
/*------------------------------------------------------- 【程序填空】
--------------------------------------------------------- 功能:求两个⾮负整数的最⼤公约数和最⼩公倍数。

-------------------------------------------------------*/ #include
main()
{
int m,n,r,p,gcd,lcm;
scanf("%d%d",&m,&n);
if(m
p=m*n;
r=m%n;
/***********SPACE***********/
while(【?】 )
{
/***********SPACE***********/
m=n;n=r; 【?】;
}
/***********SPACE***********/
gcd=【?】;
lcm=p/gcd;
/***********SPACE***********/
printf("gcd=%d,lcm=%d\n", 【?】);
}
答案:
=======(答案1)=======
r != 0
=========或=========
r
=======(答案2)=======
r=m%n
=========或=========
r=m-m/n*n
=======(答案3)=======
n
=======(答案4)=======
gcd,lcm
=========或=========
n,lcm
第2题(10.0分)题号:28
/*------------------------------------------------------- 【程序填空】---------------------------------------------------------
功能:将⼗进制数转换成⼗六进制数。

-------------------------------------------------------*/
#include
#include "string.h"
c10_16(char p[],int b)
{
int j,i=0;
/***********SPACE***********/
while (【?】)
{
j=b%16;
if(j>=0&&j<=9)
/***********SPACE***********/【?】;
else p[i]=j+55;
b=b/16;
i++;
}
/***********SPACE***********/【?】;
}
main ()
{
int a,i;
char s[20];
printf("input a integer:\n"); scanf("%d",&a);
c10_16(s,a);
/***********SPACE***********/ for(【?】;i>=0;i--)
printf("%c",s[i]);
printf("\n");
}
答案:
=======(答案1)======= b>0
=========或========= 0
=========或========= b!=0
=========或========= 0!=b
=========或=========
b
=======(答案2)=======
p[i]= j + '0'
=========或=========
p[i]= j + 48
=========或=========
*(p+i)= j + '0'
=========或=========
*(p+i)= j + 48
=======(答案3)=======
p[i]='\0'
=========或=========
p[i]=0
=========或=========
p[i]=NULL
=========或=========
*(p+i)='\0'
=========或=========
*(p+i)=0
=========或=========
*(p+i)=NULL
=======(答案4)=======
i=strlen(s)-1
=========或=========
i=-1+strlen(s)
四、程序改错共1题(共计10分)
第1题(10.0分)题号:437
/*------------------------------------------------------ 【程序改错】
--------------------------------------------------------
功能:输⼊字符序列,字符序列以特殊字符“#”结束。

程序从前向后依次读⼊字符,并翻译出新的字符输出。

翻译的规则
是:如果当前读⼊的字符是数字符,如果该字符的⾯值为n,则它的后⼀个字符(包括数字符)需重复输出n+1次如果当前
读⼊的字符不是数字符,则输出该字符。

输出时,以上述⼀
次翻译为⼀组,不同组间输出⽤⼀个空⽩字符隔开。

翻译
直⾄当前读⼊的字符为字符‘#’,结束翻译和输出。

------------------------------------------------------*/
#include
void main()
{
char ch,nch;
int count;
int k;
printf("Enter string.\n");
scanf("%c",&ch);
/**********FOUND**********/
while(ch='#')
{
if(ch>='0'&&ch<='9')
{
/**********FOUND**********/
count=ch-'0'-1;
scanf("%c",&nch);
for(k=0;k
printf("%c",nch);
}
else
/**********FOUND**********/
printf("%f",ch);
printf(" ");
scanf("%c",&ch);
}
printf("#\n");
}
答案:
=======(答案1)=======
while(ch!='#')
=======(答案2)=======
count=ch-'0'+1;
=======(答案3)=======
printf("%c",ch);
五、程序设计共2题(共计20分)
第1题(10.0分)题号:403
/*------------------------------------------------ 【程序设计】
-------------------------------------------------- 功能:编写函数fun,求任⼀整数m的n次⽅。

------------------------------------------------*/
#include
void wwjt();
long fun(int m,int n)
{
/**********Program**********/
/********** End **********/
}
main()
{
int m,n;
long s;
long fun(int,int);
printf("输⼊m和n的值:");
scanf("%d,%d",&m,&n);
s=fun(m,n);
printf("s=%ld\n",s);
wwjt();
}
void wwjt()
{
FILE *IN,*OUT;
int n;
int i[2];
long o;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("Read FILE Error");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("Write FILE Error");
}
for(n=0;n<2;n++)
{
fscanf(IN,"%d",&i[n]);
}
o = fun(i[0],i[1]);
fprintf(OUT,"%ld\n",o);
fclose(IN);
fclose(OUT);
}
答案:----------------------
long int x=1;
int i;
for(i=1;i<=n;i++)
x=x*m;
return x;
----------------------
第2题(10.0分)题号:336
/*------------------------------------------------ 【程序设计】
--------------------------------------------------
功能:从字符串中删除指定的字符。

同⼀字母的⼤、⼩写按不同字符处理。

例如:若程序执⾏时输⼊字符串为:turbocandborlandc++ 从键盘上输⼊字符:n,则输出后变为:turbocadbo rladc++,如果输⼊的字符在字符串中不存在,则字
符串照原样输出。

------------------------------------------------*/
#include
void wwjt();
int fun(char s[],int c)
{
/**********Program**********/
/********** End **********/
}
main()
{
static char str[]="turbocandborlandc++"; char ch;
printf("原始字符串:%s\n", str);
printf("输⼊⼀个字符:");
scanf("%c",&ch);
fun(str,ch);
printf("str[]=%s\n",str);
wwjt();
}
void wwjt()
{
FILE *IN,*OUT;
char i[200];
char o[200];
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("Read FILE Error");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("Write FILE Error");
}
fscanf(IN,"%s",i);
fun(i,'n');
fprintf(OUT,"%s",i);
fclose(IN);
fclose(OUT);
}
答案:---------------------- char *q=s;
for(; *q; q++)
if(*q != c) *(s++)=*q; *s=0;
----------------------。

相关文档
最新文档