C语言程序设计模拟试题B附答案.docx
- 文档编号:24450551
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:16
- 大小:23.90KB
C语言程序设计模拟试题B附答案.docx
《C语言程序设计模拟试题B附答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计模拟试题B附答案.docx(16页珍藏版)》请在冰豆网上搜索。
C语言程序设计模拟试题B附答案
《C语言程序设计》模拟试卷B
一、填空题(每题2分,共20分)
1.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是 。
2.若有以下程序段:
intc1=1,c2=2,c3;
c3=1.0/c2*c1;
则执行后,c3中的值是 。
3.设有定义:
intn,*k=&n;以下语句将利用指针变量k读写变量n中的内容,请将语句补充完整。
scanf(“%d,” );
printf(“%d\n”, 。
);
4.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是 。
5.有以下程序段
intk=0
while(k=1)k++;
while循环执行的次数是 。
6.表达式a=1,a+1,a++的值是___________________。
7.设charstring[]=″This_is_a_book!
″;则数组的长度应是________________。
8.设inta[2][3]={{2},{3}};则数组元素_____________________的值为3。
9.设有如下变量说明语句:
inta[8]={44,55,12,42,94,18,6,67},*p=a;
则通过指针变量p引用值为18的表达式是____ ____。
10.执行下述程序
#include
intstrlength(chara[],charb[])
{
intnum=0,n=0;
while(*(a+num)!
='\0')
num++;
while(b[n])
{
*(a+num)=b[n];
num++;
n++;
}
return(num);
}
main()
{
charstrl[81],str2[81],*p1=str1,*p2=str2;
gets(p1);
gets(p2);
printf("%d\n",strlength(p1,p2));
}
若从键盘输入:
qwerty
abcd
则输出结果是____ ___。
二、单项选择题。
(每题2分,共40分)
1.下列叙述中错误的是()。
A)计算机不能直接执行用C语言编写的源程序
B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件
C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件
D)后缀为.obj和.exe的二进制文件都可以直接运行
2.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()。
A)大写字母 B)连接符 C)数字字符 D)下划线
3.以下叙述中错误的是()。
A)C语言是一种结构化程序设计语言
B)结构化程序由顺序、分支、循环三种基本结构组成
C)使用三种基本结构构成的程序只能解决简单问题
D)结构化程序设计提倡模块化的设计方法
4.对于一个正常运行的C程序,以下叙述中正确的是()。
A)程序的执行总是从main函数开始,在main函数结束
B)程序的执行总是从程序的第一个函数开始,在main函数结束
C)程序的执行总是从main函数开始,在程序的最后一个函数中结束
D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
5.设变量均已正确定义,若要通过scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。
以下所示的输入形式中正确的是(注:
□代表空格字符)()。
A)10□X□20□Y〈回车〉 B)10□X20□Y〈回车〉
C)10□X〈回车〉 D)10X〈回车〉
20□Y〈回车〉 20Y〈回车〉
6.若有代数式
(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是()。
A)sqrt(abs(n^x+e^x))
B)sqrt(fabs(pow(n,x)+pow(x,e)))
C)sqrt(fabs(pow(n,x)+exp(x)))
D)sqrt(fabs(pow(x,n)+exp(x)))
7.设有定义:
intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是()。
A)k++ B)k+=1 C)++k D)k+1
8.有以下程序,其中%u表示按无符号整数输出()。
main()
{unsignedintx=0xFFFF; /*x的初值为十六进制数*/
printf(“%u\n”,x);
}
程序运行后的输出结果是
A)-1 B)65535 C)32767 D)0xFFFF
9.设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是()。
A)if(x++); B)if(x>y&&y!
=0);
C)if(x>y)x-- D)if(y<0){;}
elsey++; elsex++;
10.以下选项中,当x为大于1的奇数时,值为0的表达式是()。
A)x%2==1 B)x/2 C)x%2!
=0 D)x%2==0
11.以下叙述中正确的是()。
A)break语句只能用于switch语句体中
B)continue语句的作用是使程序的执行流程跳出包含它的所有循环
C)break语句只能用在循环体内和switch语句体内
D)在循环体内使用break语句和continue语句的作用相同
12.有以下程序
main()
{intk=5,n=0;
do
{switch(k)
{case1:
case3:
n+=1;break;
default:
n=0;k--;
case2:
case4:
n+=2;k--;break;
}
printf(“%d”,n);
}while(k>0&&n<5);
}
程序运行后的输出结果是()。
A)222 B)0235 C)02356 D)2356
13.有以下程序
main()
{inti,j;
for(i=1;i<4;i++)
{for(j=i;j<4;j++)printf(“%d*%d=%d”,i,j,i*j);
printf(“\n”);
}
}
程序运行后的输出结果是()。
A)1*1=1 1*2=2 1*3=3 B)1*1=1 1*2=2 1*3=3
2*1=2 2*2=4 2*2=4 2*3=6
3*1=3 3*3=9
C)1*1=1 D)1*1=1
1*2=2 2*2=4 2*1=2 2*2=4
1*3=3 2*3=6 3*3=9 3*1=3 3*2=6 3*3=9
14.以下合法的字符型常量是()。
A)”\x13” B)”\018” C)”65” D)”\n”
15.在C语言中,函数返回值的类型最终取决于()。
A)函数定义时在函数首部所说明的函数类型
B)return语句中表达式值的类型
C)调用函数时主函数所传递的实参类型
D)函数定义时形参的类型
16.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,以下不能将变量c中大写字母转换为对应小写字母的语句是()。
A)c=(c-A)%26+‘a’ B)c=c+32
C)c=c-‘A’+‘a’ D)c=(‘A’+c)%26-‘a’
17.有以下函数:
intfun(char*s)
{char*t=s;
while(*t++);
return(t-s);
}
该函数的功能是()。
A)比较两个字符的大小 B)计算s所指字符串占用内存字节的个数
C)计算s所指字符串的长度 D)将s所指字符串复制到字符串t中
18.设已有定义:
floatx;则以下对指针变量p进行定义且赋初值的语句中正确的是()。
A)float *p=1024; B)int *p=(floatx);
C)float p=&x; D)float*P=&x;
19.有以下程序
#include
main()
{intn,*p=NULL;
*p=&n;
printf(“Inputn:
”);scanf(“%d”,&p); printf(“outputn:
”); printf(“%d\n”,p);
}
该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是()。
A)intn,*p=NULL; B)*p=&n; C)scanf(“%d”,&p) D)printf(“%d\n”,p);
20.以下程序中函数f的功能是:
当flag为1时,进行由小到大排序;当flag为0时,进行由大到小排序。
voidf(int b[],int n,int flag)
{int i,j,t;
for(i=0;i for(j=i+1;j if(flag? b[i]>b[j]: b[i] {t=b[i];b[i]=b[j];b[j]=t;} } main() {inta[10]={5,4,3,2,1,6,7,8,9,10},i; f(&a[2],5,0);f(a,5,1); for(i=0;i<10;i++)printf(“%d,”,a[i]); } 程序运行后的输出结果是()。 A)1,2,3,4,5,6,7,8,9,10, B)3,4,5,6,7,2,1,8,9,10, C)5,4,3,2,1,6,7,8,9,10, D)10,9,8,7,6,5,4,3,2,1, 三、修改程序(在程序出错的语句下划横线并标号,把修改后的语句写在程序下面的横线上。 每小题5分,共10分) 1.下列给定程序中,函数fun的功能是: 依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。 #include #include voidfun(chars) {inti,j; for(i=0,j=0;s[i]! =‘\0';i++) if(s[i]>=‘0'&&s[i]<='9') s[j]==s[i]; s[j]=“\0”; } main() {charitem[80]; clrscr(); printf(“\nEnterastring: ”);gets(item); printf(“\n\nThestringis: \%s\n”,item); fun(*item); printf(“\n\nThestringofchangingis: \%s\n”,item); } 2.下列给定程序中,函数fun的功能是: 分别统计字符串中大写字母和小写字母的个数。 例如,给字符串s输入: AAaaBBb123CCccccd,则输出结果应为: upper=6,lower=8。 #include #include voidfun(char*s,inta,intb) {while(*s) {if(*s>=‘A'&&*s<=‘Z') a++; if(*s>=‘a'&&*s<=‘z') b++; s++; } } main() {chars[100];intupper=0,lower=0; clrscr(); printf(“\nPleaseastring: ”);gets(*s); fun(s,&upper,&lower); printf(“\nupper=%dlower=%d\n”,upper,lower); } 四、阅读下列程序,在程序后面的横线上,写出该程序的功能或给出运行结果。 (每小题5分,共20分) 1. #include voidmain() { ints=1,t=1,a,n; scanf(“%d%d”,&a,&n); for(inti=1;i { t=t*10+1;s=s+t; } s*=a;printf(“SUM=%d\n”,s); } 输入数据: 2,4 输出结果: 。 2.#include voidmain() { inta,b,c,find(int,int,int); scanf(“%d%d%d”,&a,&b,&c); printf(“%d\n%d,%d,%d\n”,find(a,b,c),a,b,c); } intfind(inta,intb,intc) { intu,s,t; u=((u=(a>b)? a: b)>c)? u: c; t=((t=(a a: b) t: c; s=a+b+c-u-t;a=u; b=s;c=t;returns; } 运行时输入: 5–73,输出结果: 。 3.#include voidmain() {inta[5]={2,4,6,9,12},b[6]={2,3,4,6,8,9}; for(inti=0;i<5;i++) for(intj=0;j<6;j++) if(*(a+i)==*(b+j))printf(“%d ”,*(a+i)); printf(“\n”); } 输出结果: 。 4.#include #include voidmain() { charstr1[]=“*******”; for(inti=0;i<4;i++) { printf(“%s\n”,str1); str1[i]=‘ '; str1[strlen(str1)-1]=‘\0'; } } 输出结果: 五、按要求编写下列程序。 (每题5分,共10分) 1.编一程序,输出如下三角形图形: 2.编一程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔的输出该串,请用指针完成。 答案 一、填空题 1分号 22.000000 30 4k*k 5-12 6无数次 72 815 9a[1][0] 10*(p+5) 1110 二、单项选择题 1-5DBCAD 6-10CABCD 11-15CABDA 16-20ACDAB 三、程序修改 1.修改后的程序如下: #include #include voidfun(chars[]) {inti,j; for(i=0,j=0;s[i]! ='\0';i++) if(s[i]>='0'&&s[i]<='9') s[j++]=s[i]; s[j]='\0'; } main() {charitem[80]; clrscr(); printf("\nEnterastring: ");gets(item); printf("\n\nThestringis: \%s\n",item); fun(item); printf("\n\nThestringofchangingis: \%s\n",item); } 2.修改后的程序如下: #include #include voidfun(char*s,int*a,int*b) {while(*s) {if(*s>='A'&&*s<='Z') (*a)++; if(*s>='a'&&*s<='z') (*b)++; s++; } } main() {chars[100];intupper=0,lower=0; system("cls"); printf("nPleaseastring: ");gets(s); fun(s,&upper,&lower); printf("\nupper=%dlower=%d\n",upper,lower); } 四、阅读程序 1. SUM=2 2. 3 5-73 3. 2469 4. ******* ***** *** * 五、 1. #include #include voidmain() {charstr1[]="****"; inti; for(i=0;i<4;i++) { printf("%s\n",str1); str1[strlen(str1)-1]='\0'; } } 2. #include #include voidmain() {charstr[]="computer"; char*s=str; while((*s)! ='\0') {printf("%c",*s); s++; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 模拟 试题 答案