C语言
一、选择题
1、下列关于c语言标识符的叙述中正确的是()
A 用户标识符中可以出现下划线和中划线(减号)
B 用户标识符中不可以出现中划线,但可以出现下划线
C 用户标识符中可以出现下划线,但不可以放在用户标识符的开头
D 用户标识符中可以出现下划线和数字,他们都可以放在用户标识符的开头
2、以下可以作为c语言合法常量的是
A -80 B -080 C -8e1.0 D -80.0e
3、以下叙述中正确的是
A 用c语言实现的算法必须要有输入和输出才做
B 用c语言实现的算法可以没有输出但必须要有输入
C 用c语言实现的算法可以没有输入但必须要有输出
D 用c语言实现的算法可以既没有输入有没有输出
4、数字字符0的ASCII值为48,若有以下程序
main()
{
char a=’1’,b=’2’;
printf(“%c,”,b++);
printf(“%dn,”,b-a);
}
程序运行后输出的结果是
A 3,2 B 50,2 C 2,2 D 2, 50
5、有以下程序
main()
{
int m=12,n=34;
printf(“%d%d”,m++,n++);
printf(“%d%dn”, n++,++m);
}
程序运行后输出的结果是
A 12353514 B 12353513 C 12343514 D12343513
6、有以下程序
main()
{
int m,n,p;
scanf(“m=%dn=%dp=%d”,&m,&n,&p);
printf(“%d%d%dn”, n,m,p);
}
若想从键盘输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的是如是
A m=123n=456p=789
B m=123 n=456 p=789
C m=123,n=456,p=789
D 123 456 789
7、有以下程序
main()
{
int a,b,d=25;
a=d/10%9;
b=a&&(-1);
printf(“%d,%dn”,a,b);
}
程序运行后运行的结果是
A 6,1 B 2,1 C 6,0 D 2,0
8、以下能正确定义一维数组的是
A int a[5]={0,1,2,3,4,5};
B char a[]={0,1,2,3,4,5};
C char a={‘A’,’B’,’C’};
D int a[5]=”0123”;
9、已有定义:char a[]=”xyz”,b[]={‘x’,’y’,’z’};,以下叙述中正确的是
A 数组a和b的长度相等
B a数组长度小于b的长度
C a数组长度大于b的长度
D 上述说法都不对
10、设有如下说明 typedef struct ST { long a;int b;char c[2];}NEW;
则下列叙述中正确的是
A 以上的说明星是非法
B ST是一个结构体类型
C NEW是一个结构体类型
D NEW是一个结构体变量
二、程序
1、#include “stdio.h”
int main()
{
int a,*p;
p=&a;
*p=0x500;
a=(int)(*(&p));
a=(int)(&(*p));
if(a==(int)p)
printf(“equal!n”);
else
printf(“no equal!n”);
}
请问本程序的输出是什么?
2、struct a {
int x;
char y;
struct a z;
struct a *p;
}
请问这种定义结构是否正确?如果有问提,问题在哪里?
3、printf(“%d%dn”,++n,power(2,n));其中power(2,n)为实现一定功能的函数,如2^n,请问这种表示方法有什么潜在的问题?
4、”n” ‘n’ 的区别?
5、包含预定义头文件〈〉和“ ”的区别?
6、全局变量可不可以定义在可被多个.c文件包含的头文件中?为什么?
7、请写出下列代码的输出内容
#include
main()
{
int a,b,c,d;
a=10;
b=a++;
c=++a;
d=10*a++;
printf(“b,c,d:%d,%d,%d”,b,c,d);
return 0;
}
8、写出下列代码的输出内容
#include
int inc(int a)
{
return(++a);
}
int multi(int *a,int *b,int *c)
{
return(*c=*b**a);
}
typedef int(FUNC1)(int in);
typedef int(FUNC2)(int *,int*,int*);
void show(FUNC2 fun,int arg1,int *arg2)
{
INCp=inc;
int temp=p(arg1);
fun(&temp,&arg1,arg2);
printf(“%dn’,*arg2);
}
main()
{
int a;
show(multi,10,&a);
return 0;
}
9、请找出下列代码中的错误
(说明:以下代码是把一个字符串倒序,如”abcd”倒序后为”dcba”)
(1)、#include ”string.h”
(2)、main()
(3)、{
(4)、char *src=”hello,world”;
(5)、char *dest=NULL;
(6)、int len=strlen(src);
(7)、dest=(char *)malloc(len);
(8)、char *d=dest
(9)、char *s=src[len];
(10)、while(len–!=0)
(11)、d++=s–;
(12)、printf(“%s”,dest);
(13)、return 0;
(14)、}



