1.
输出多个字符串的最小字符串
#include<stdio.h>
#include<string.h>
void main()
{
char *a[]=("bag", "good", "this","are", "zoo", "park"】,*min;
int i;
min=a[0];
for(i=1;i<6;i++)
{
if(strcmp(a[i],min)<0)
min=a[i];
printf("%s\n",min);
}
2.
typedef union
{
long i;
int k[5];
char c;
}DATE;
struct date
{
int cat;
DATE COW;
double dog;
}too;
DATE max;
void main()
{
printf("%d\n",sizeof(struct date)+sizeof(max));
}
答案:52
date=4*5=20 20+20+4+8=52
3.以下4个选项中,不能看作一条语句的是)
B . a =5, b =2.5,c=3.6;
A .;
C . if (a《5)
D。if( b !=5) x =2:y=6;
4.设有语句 int a =4:则执行了语句 a += a -= a * a 后,变量 a 的值是()。
a.-24 b.0 c.4 d.16
5.以下选项中,表示合法常量
A .整数:1,200
B。实数:1.5,2。0
c。字符常量:‘\’
D:字符串"\007"
6.值为一的表达式
A.1-'0' B.1-'0' c.'1'-0 D.'\0'-'0'
解析:学生字符串结束符"\ O "的 ASCII 码为0
字符' O '的 ASCII 码的值为48
7.设有定义: doublex [10],= x ]以下能给数组 x 下标为6的元素读入数据的正确语句是()
A . scanf ("% f ',& x [6]); B . scanf ("% lf ", x +6));
C . scanf ("% lf ", p +6); D . scanf ("% lf ". p [6]):
8.下面程序段中,输出*的个数是(
char * s ="\ ta \018bc";
for (:* s !="0'; s ++) printf ("*");
A .9 B .5 C .6 D .7
9.有以下程序段
struct st
{ int x ; int *y ); * pE
int a []={1,2},b[]={3,4};
struct st c [2]={10.a,20.b};
pt = c ;
以下选项中表达式的值为11的是
A )* pt -> y B ) pt->x C++pt->x D )( pt ++)-> X
10.语言结构体类型变量在程序运行期间(
A . TC 环境在内存中仅仅开辟一个存放结构体变量地址的单元
B .所有的成员一直驻留在内存中
C .只有最开始的成员驻留在内存中 D .部分成员驻留在内存中
11.以下关于宏的定义正确的是(
A .宏名必须用大写字母表示
B .宏定义必须位于源程序中所有语句之前 C .宏替换没有数据类型限制
D .宏调用比函数调用耗费时间
分析:A )选项错误:宏名一般习惯用大写,但可以用小写﹣
B )选项错误:预处理命令可以出现在任何位置,但习惯上应尽可能地写在源程序的开头
C )选项正确:宏定义时形参不能指定类型,即没有数据类型限制
D。错:宏替换在编译时由预处理程序完成
所以宏替换不占用运行时间;而函数调用是在程序运行中处理的,要临时分配存储单元:占用一系列时间
12.设有以下定义
union data
{ int dl ;
float d2;} demo ;
则下面叙述中错误的是()。
A .变量 demo 与成员d2所占的内存字节数相同
B .变量 demo 中各成员的地址相同
C .变量 demo 和各成员的地址相同
D .若给 demo .d1赋99后, demo .d2中的值是99.0
13.已定义以下函数
int fun ( int *p)
{ return *p;}
fun 函数返回值是(
A .不确定的值
C .形参 p 中存放的值
B.一个整数
D .形参 p 的地址值
14.
# include < stdio b >
# include < stdlib . h>
int fum ( int n )
{
int *p ;
p =( int *) malloc ( sizeof ( int )));
* p =n ; return *p ;
}
main()
{
int a ;
a = fun (10); printf ("% d \n ",a+ fum (10));
}
malloc ()函数的作用是分配制定字节数的空间
sizeof ()为单目运算 求出对应类型所占用的字节数
(类型名)为单目运算 为强制类型转换
要注意的是 malloce 函数申请得到的空间是无类型的空间 必须强制转换成对应指针可以指向的空间的类型
这里定义的是 int * p 所以 p 指针只能指向 int 型空间
sizeof ( int )求得 int 类型所占的字节数
malloc ( sizeof ( int ))申请一个跟 int 所占的空间大小一样的空间
( int *) malloc ( sizeof ( int ))将申请得到的空间地址转换成了 int 类型空间地址
最后就可以赋值给指向 int 型空间的 p 指针了
程序的运行结果是
A )0 B )10 C )20 D )出错
答案:DADBC CCBCD BC
3.‘\1’才是字符,A不能由逗号
4.A。1-48 B。1-0 C。49-0 D。0-48
5.A。应是%lf B和D是元素
6. \t a \01 8 b c
7.A.1, B.10 D.20
10.demo.d2为0.00000,如果都是int类型则相同,不同类型则不同
15.
4.下列程序的运行结果是_ accbbxxyy , bbxxyy
# include < stdio . h >
void fun ( char * t , char * s )
{
while (* t !=0)
t++;
while ((* t ++=* s ++)!=0);
}
main ()
{
char ss [10]=" acc ", aa [10]=" bbxxyy ";
fun ( ss , aa );
printf ("% s ,% s \n ", ss , aa );
}
16.
函数 my _ cmp ()的功能是比较字符串 s 和 t 的大小,当 s 等于 t 时返回0,否则返回 s 和 t 的第一个不同字符的 ASCII 码差值,即 s > t 时返回正值, s < t 时返回负值。请填空。
# include < stdio . h >
My _ cmp ( char * s , char * t )
{
while (* s ==* t )
{
if (* s =='0')
_________________
++ s ;++ t ;
} return
________________
}
void main()
{
char s [100],t[100];
printf ("\ nPlease enter string s :");
gets ( s );
printf (" \nPlease enter string t :");
gets ( t );
printf ("\ nThe result is :% d \ n ", My cmp ( s , t ));
答案:return 0; *s- *t;
17.
已知学生的记录由学号和学习成绩构成, N 名学生的数据已存入结构体数组 a 中。请编写函数 fun 。函数的功能是:找出成绩最高的学生记录,通过形参指针传回主函数(规定只有一个最高分)。
# include < stdio . h >
# include < string . h >
# define N 10
typedef struct ss
{ char num [10]; int s ;}STU ;
fun ( STU a [], STU * s )
{
int i , max = a [0]. s , j =0;
for ( i =1; i < N ; i ++)
if ( max < a [ i ]. s )
j=i;
max = a [ i ]. s ;
}
void main ()
{ STU a [ N ]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}}, m ;
int i ;
printf ("The original data\n");
for ( i =0; i < N ; i ++)
printf (" No =% s Mark =% d ", a [ i ].num,a[i].a);
fun (a,&m);
printf (" The Result");
printf("The top;%s,%d\n",m.num,m.s);
}