河南财经政法大学成教《C语言程序设计》高起本原题及答案(青书) 图1
1、设有定义:a=1,b=2,c=3;
以下语句中执行效果与其它三个不同的是 。
A、if(a>b) c=a;a=b;b=c;
B、 if(a>b) {c=a,a=b,b=c;}
C、if(a>b) c=a,a=b,b=c;
D、 if(a>b) {c=a;a=b;b=c;}
答案:C
2、有以下程序:
#include <stdio.h>
struct S
{ int a, b; } data[2]={10,100,20,200};
void main()
{ struct S p=data[1];
printf("%d\n", ++(p.a) ); }
程序运行后的输出结果是( )。
A、10
B、11
C、20
D、21
答案:D
3、以下关于变量的作用域叙述不正确的是( )。
A、在函数内部定义的变量是局部变量
B、函数中的形式参数是局部变量
C、全局变量的作用范围仅限于其所在的文件
D、局部变量的作用范围仅限于本函数
答案:C
4、若有如下宏定义:
#define N 2
#define Y(n) ((N+1)*n)
则执行赋值语句z=2*(N+Y(5)); 后z的值是( )。
A、 表达式有误
B、34
C、70
D、无确定值
答案:B
5、以下关于C函数返回值的叙述正确的是( )。
A、被调函数中只有使用return语句才能返回主调函数
B、使用一个return语句可以返回多个函数值
C、函数返回值类型取决于return语句中的表达式类型
D、函数返回值类型取决于定义该函数时所指定的类型
答案:D
6、下列关于函数的叙述正确的是( )。
A、每个C程序源文件中都必须有一个main()函数
B、C程序中main()函数的位置是固定的
C、C程序中所有函数之间都可以相互调用,与函数所在位置无关
D、在C程序的函数中不能定义另一个函数
答案:D
7、若有以下定义,则数值为4的正确表达式是( )。
int a[10]={1,2,3,4,5,6,7,8,9,10};char c=’a’,d,g;
A)a[g-c] B)a[4] C)a[’d’-’c’] D)a[‘d’-c]
A、a[g-c]
B、a[4]
C、a[’d’-’c’]
D、a[‘d’-c]
答案:D
8、下列字符串 “a\x21\\\tp\202q”的长度是( )。
A、7
B、9
C、15
D、16
答案:A
9、假设x,y为整型变量,则执行如下程序段后y的值为( )。
for(x=1,y=1;y<=50;y++)
{ if(x>=10)
break;
if(x%2==1)
{x+=5;continue;}
x-=3;
}
A、2
B、4
C、6
D、8
答案:C
10、以下不正确的字符串赋值语句是( )。
A、 char *s; s="abcde";
B、char s[ ]="abcde";
C、char s[10]; s="abcde";
D、 char *s="abcde";
答案:C
11、定义如下变量和数组:int j;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是 。for (j=2; j>=0; j--)
printf("%2d",x[j][2-j]);
A、1 5 9
B、1 4 7
C、7 5 3
D、3 6 9
答案:C
12、int a=1,b=2,c=4,d=6,m=2,n=3;执行(m=a>b)&&(n=c>d)后n的值为( )。
A)0 B)1 C)3 D)4
A、0
B、1
C、3
D、4
答案:C
13、若有语句"inta=12;”则执行语句"a+=a*=12;”后,a的值是( )。
A、12
B、144
C、288
D、24
答案:C
14、下列常用转义字符中不正确的是( )。
A、\\
B、\c
C、\012
D、\t
答案:B
15、定义变量:int x=3,y=2;float a=2.5;则表达式 (x+y)/2+(int)a的值为 。
A、5
B、4
C、3
D、3.5
答案:B
16、以下程序输出结果是( )。
int fun(int x,int y,int *cp)
{ *cp=x+y; y=y-x; }
main()
{ int a, b, c=0;
a=10; b=40;
fun(a,b,&c);
printf("%d ,%d\n", b,c);}
A、40 ,0
B、30,0
C、40,50
D、30,50
答案:C
17、以下程序执行后输出结果是( )。
main()
{ char ch[7]={ "65ab21"};
int i,s=0
for(i=0;ch>='0' && ch<='9';i+=1)
s=10*s+ch-'0';
printf("%d\n",s); }
A、2ba56
B、6
C、6521
D、65
答案:D
18、以下程序的运行结果是( )。
int a, b;
void fun()
{ a=100; b=200; }
main()
{ int a=7, b=5;
fun();
printf("%d,%d \n", a,b); }
A、100,200
B、5,7
C、200,100
D、7,5
答案:D
19、以下程序运行后,输出结果是( ) 。
func(int a, int b)
{ static int m=0,i=2;
i+=m+1; m=i+a+b;
return(m); }
main()
{ int k=4,m=1,p;
p=func(k,m);printf("%d",p);
p=func(k,m);printf("%d\n",p); }
A、8,15
B、8,16
C、8,17
D、8,8
答案:C
20、以下程序执行后的输出结果是( )。
#include "stdio.h"
main( )
{int a=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
else if ((c-1>=d)==1)
printf("%d\n",d);
else
printf("%d\n",d+2);}
A、2
B、3
C、4
D、编译时有错误,无结果
答案:A
21、以下选项中不能正确定义cl为结构体类型变量的是( )。
A、struct color{ int red; int green; int blue; }; struct color cl;
B、struct color cl { int red; int green; int blue; };
C、struct color{ int red; int green; int blue;} cl;
D、struct{ int red; int green; int blue;} cl;
答案:B
22、以下程序执行后的输出结果是( ) 。main(){ int i;for (i=0;i<3;i+=2)switch(i)
A、012
B、022
C、120
D、011
答案:B
23、下列程序段的输出结果是( )。int k, s;
for(k=0,s=0;k<10;k++,s--)
if(s>k) break;
else s+=k;
printf("%d,%d",k,s);
A、4,5
B、4,6
C、6,9
D、A、B、C都不对
答案:C
24、下面程序循环体的执行次数是( )。
#include "stdio.h"
main()
{int i,j;
for(i=0,j=1;i<=j+1;i+=2,j--) printf("%d \n",i);}
A、0
B、1
C、2
D、3
答案:B
25、下列程序的输出结果是( )。#include "stdio.h"main(){ int i,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);
A、45
B、20
C、25
D、36
答案:C
26、当执行下面程序且输入:Hello时,输出的结果是( )。#include<stdio.h>#include<string.h>main(){ char ss[10]="123456789";gets(ss); printf("%s\n",ss); }
A、Hello6789
B、Hello
C、12345Hello
D、Hello1234
答案:B
27、当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是( )
A、k%2
B、k%2==1
C、(k%2)!=0
D、!(k%2==1)
答案:D
28、下列程序执行后的输出结果是(小数点后只写1位)( )。main( ){ double d; float f; long k; int i;i=f=k=d=20/3;printf("%lf%f%ld%d \n", d,f,k,i);}
A、6 6 6.0 6.0
B、6 6 6.7 6.7
C、6.7 6.7 6 6
D、6.0 6.0 6 6
答案:D
29、设x、y、z和k都是int型变量,则执行表达式x=(y=4,z=16,k=32+y)后,x的值为( )。
A、4
B、16
C、36
D、32
答案:C
30、下列各语句序列中,能够将变量u和s中的较大值赋值到变量t中的是( )。
A、t=s ; if(u>s) t=u;
B、if(u>s) t=u ; t=s;
C、t=u ; if(u>s)t=s;
D、if(u>s)t=s ; else t=u;
答案:A
31、若有语句int*p,a[2];和p=a;下面均代表地址的一组选项是( )。
A、a++,p,&a[0]
B、&a[1],a,p
C、&p,*p,&a
D、&a ,*p,p
答案:B
32、关于return语句,下列说法正确的是( )。
A、必须在每个函数中出现
B、可以在同一个函数中出现多次
C、在主函数和其他函数中均可出现
D、只能在除主函数之外的函数中出现一次
答案:B
33、若要打开A盘上user子目录下名为abc.txt的文本文件进行读/写操作,下面符合此要求的函数调用是( )。
A、fopen("A:\user\abc.txt", "r")
B、fopen("A:\user\abc.txt", "rb")
C、fopen("A:\user\abc.txt","r+")
D、fopen("A:\\user\\abc.txt","w")
答案:C
34、设有如下定义
struct student
{ char num[9];
float score;
}st;
char *p;
若要使p指向st中的num域,正确的赋值语句是( )。
A、p=#
B、p=st.num;
C、p=&st.num;
D、*p=st.num
答案:B
35、有如下定义及执行语句,则下列选项中不能正确执行的是( )。float s[10],k,*p1,*p2; p1=p2=s;
A、k=*p2;
B、p1=&s;
C、p1=k;
D、k=(*p1)*(*p2);
答案:C
36、下列程序的运行结果是( )。main(){int a=2,c=5;printf("a:%d,b:%d",a,c);}
A、a:%2,b:%5
B、a:2,b:5
C、a=d,b=d
D、a=2,b=5
答案:B
37、现有一定义说明:char stringl={"Go To ShangHai"};则strlen(string)的结果为( )。
A、15
B、10
C、14
D、11
答案:C
38、若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a>b?a:c>d?c:d的值( )。
A、1
B、2
C、3
D、4
答案:C
39、有以下程序#include "stdio.h"main()
A、10
B、11
C、9
D、8
答案:C
40、若有如下的数组说明:inta[9][9];则对a数组元素正确引用的是( )。
A、a[5][7]
B、a[1,3]
C、a[2+1][9]
D、a(2)(1)
答案:A
41、编写函数int gygb(int x,int y)求出x和y的最大公约数和最小公倍数(提示:最大公约数可用外部变量GY来存放),主函数中给变量a和b赋值,然后调用gygb函数,求出a和b的最大公约数和最小公倍数并输出结果。
答案:#include<stdio.h>
int GY; ................................. ....................................1分
int gygb(int x,int y)....................................................2分
{
int i,;................................................ ...............1分
for(i=x;i>=1;i--)......................................... .....2分
if(x%i==0&&y%i==0){GY=i;break;}......2分
return x*y/GY ; ................................................ 1分
}
void main()
{
int a,b; ......................... .........................................1分
scanf(“%d%d”,&a,&b);.........................................2分
printf("gy=%d,gb=%d\n",GY,gygb(a,b));..............2分
}
42、下面程序的功能是使用选择法排序对8个整数按照从小到大的顺序排列并输出,请补全程序。
# include <stdio.h>
void main()
{ int a[8]={1,3,6,5,8,7,2,4},i,j,k,t;
for(i=0;i<7;i++)
{ k=i;
for(j=i+1;j<8; 1 )
if(a[k] 2 a[j])
k=j;
if(k!=i)
{ t=a[k]; a[k]=a; a=t; }
}
printf("排序后: ");
for(i=0;i<8;i++)
printf("%d ",a);
printf("\n");
}
答案: j++ >
43、下面程序的功能是从一个字符串中删除所有的‘*’号并输出删除后的结果。请补全程序。
#include<stdio.h>
void main()
{ char a[]="ABC*D*RF*G*";
int i,j;
for(i=0,j=0;a!=0;i++)
if(a!='*')
a[j++]= ;
=0;
printf(" ",a);
}
答案: a a[j] %s
|