c语言基础编程100道带答案(c语言编程基础知识)

hacker2年前黑客文章113

本文目录一览:

求C语言试题

《C语言》综合练习题一

注意:以下 “□”为空格,CR为回车

一、 单选题

1、阅读以下程序,当输入数据的形式为:25,13,10 CR,正确的输出结果为( )

void main( )

{ int x,y,z;

scanf("%d%d%d",x,y,z);

printf("x+y+z=%d\n",x+y+z);}

A) x+y+z=48 B) x+y+z=35 C) x+y+z=38 D) 不确定值

2、下面程序的输出是( )

void main()

{ int y=0;

while(y--);

printf("y=%d\n",y); }

A) y=0 B) while 构成无限循环 C) y=-1 D) y=1

3、在以下各组标识符中,合法的用户标识符是( )。

A) xy_ B) longdouble C) *p D) CHAR

变量1 signed history Float

4、以下能正确计算1*2*3…*10的程序段是( )

A) do { i=1;s=1;s=s*i;i++;}while (i=10);

B) do {i=1;s=0;s=s*i;i++;} while(i=10);

C) i=1;s=1; do{ s=s*i;i++;}while (i=10);

D) i=1;s=0; do{ s=s*i;i++;}while (i=10);

5、在下列各m的值中,能使表达式m%3==2 m%5==3 m%7==2为真的是( )

A) 8 B) 23 C)17 D) 6

6、运行以下程序后,如果从键盘上输入 china#回车,则输出结果为( )

A) 2,3 B) 3,5

C) 5,2 D) 2,5

#include stdio.h

void main()

{ int v1=0,v2=0; char ch;

while((ch=getchar())!='#')

switch(ch)

{ case 'a':

case 'h': v1++;

default: v2++;

}

printf("%d,%d\n",v1, v2);

}

7、有如下程序

void main( )

{ int i,sum=0;

for(i=1;i=3;sum++) sum+=i;

printf("%d\n",sum);

}

该程序的执行结果是( )

A) 6 B) 3 C) 死循环 D) 0

8、能正确表示a和b 同时为正或同时为负的逻辑表达式是( )

A) (a=0‖b=0)(a0‖b0)

B) (a=0b=0)(a0b0)

C) (a+b0)(a+b=0)

D) a*b0

9、下列定义数组正确的是( )

A) #define size 10 B) int n=5;

char str1[size],str2[size+2]; int a[n][n+2];

C) char str[]; D) int num['10'];

10、以下程序的功能是计算:s= 1+1/2+1/3+… …+1/10

void main()

{ int n; float s

s=1.0;

for(n=10;n1;n--)

s=s+1/n;

printf("%6.4f\n",s);

}

程序运行后输出结果错误,导致错误结果的程序行是

A)s=1.0; B)for(n=10;n1;n--)

C)s=s+1/n; D)printf("%6.4f\n",s);

11、以下说法正确的是( )

A) 输入项可以为一个实型常量,如scanf("%f",3.5);

B) 只有格式控制,没有输入项,也能进行正确的输入,如scanf("a=%d,b=%d");

C) 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",f);

D) 当输入数据时,必须指明变量的地址,如scanf("%f",f);

12、设x=2.5、a=7,则算术表达式x+2*++a/3%3的值为( )。

A) 2.5 B)3.5

C) 4.5 D)5.5

13、若有说明:int a[3][4]={0}; 则下面正确的叙述是( )

A) 只有元素a[0][0]可得到初值0

B) 此说明语句不正确

C) 数组a中个元素都可以得到初始值,但其值不一定为0

D) 数组a中个元素都可得到初值0

14、设a=3,b=4,c=5, 则表达式 !(a+b)+c-1b+c/2的值为( )。

A)6.5 B) 6

C) 0 D)1

15、在下列有关#include命令的叙述中,错误的一条是( )

A)在#include命令中,文件名可以用双引号或尖括号括起来

B)在一个包含文件中又可以包含另一个被包含文件

C)在一个#include命令中可以指定一个包含文件

D)在一个#include命令中可以指定多个包含文件

16、以下不正确的if语句形式是( )

A) if(xy x!=y);

B) if( x= = y) x+=y;

C) if (x!=y) scanf("%d",x) else scanf("%d",y);

D) if(xy) {x++;y++;}

17、有如下程序

void main()

{ int x=1,a=0,b=0;

switch(x){

case 0: b++;

case 1: a++

case 2: a++;b++

}

printf("a=%d,b=%d\n ",a,b);

}

该程序的输出结果是

A) a=2,b=1 B) a=1,b=1

C) a=1,b=0 D) a=2,b=2

18、阅读以下程序:

void main()

{ int x;

scanf("%d",x);

if(x--5) printf("%d",x);

else printf("%d",x++);

}

程序运行后,如果从键 盘上输人5,则输出结果是

A)3 B) 4 C) 5 D) 6

19、请阅读以下程序:

void main( )

{ int a=5,b=0,c=0;

if(a=b+c) printf("***\n");

else printf("$$$\n");

}

以上程序( )

A) 有语法错误不能通过编译 B) 可以通过编译但不能通过连接`

C) 输出 *** D) 输出$$$

20、执行以下程序段时 ( )

x=-1; do {x=x*x; } while(! x);

A) 循环体将执行一次 B) 循环体将执行两次

C) 循环体将执行无限次 D) 系统将提示有语法错误

21、若x是int型变量,且有下面的程序片段:

for(x=3; x6; x++) printf((x%2)?("**%d"):("##%d\n"),x);

上面程序片段的输出结果是

A) **3 B) ##3 C) ##3 D) **3##4

##4 **4 *4##5 **5

**5 ##5

22、以下叙述中不正确的是( )。

A. 一个好的程序应该有详尽的注释

B.C程序中的#include和#define均不是C语句

C. 在C程序中,赋值运算符的优先级更低

D. 在C程序中,j++;是一条赋值语句二、 填空题

1、其后标有/* */的语句的执行次数是【 】

int y,i;

for(i=0;i20;i++)

{

if(i%2==0) continue;

y+=i; /* */

}

2、下面程序的功能是从键盘输入的10个数中,找出之一个能被7整除的数。若找到,打印此数后退出循环;若未找到,打印"not exist"。 请填空。

main( )

{ int n,a;

for(n=1; n=10; n++)

{ scanf("%d",a);

if(a%7==0) { printf("%d",a); 【 】;}

}

if (n==【 】) printf("not exist\n");

}

3、设i、j、k均为int型变量,则执行下面语句后k的值为【 】:

for(i=0, j=10, k=0; ij; i++, j--)

k+=i+j;

4、. 以下程序是计算某年某月有几天。判断闰年的条件是:能被4整除但不被100整除或能被400整除的年份为闰年。

void main( )

{ int yy,mm,len;

printf(“输入年份和月份:”);scanf(“%d%d”,yy,mm);

switch(mm)

{ case 1: case 3: case 5: case 7: case 8: case 10: case 12: len=31 ; break;

case 4: case 6: case 9: case 11: len=30; break;

case 2:

if(【 】) len=29;

else len=28 ;

break;

default: printf(“输入得月份无效!\n”);

}

printf(“%d年%d月有%d天\n”, 【 】);

}

5、下面程序读入20个整数,然后统计非负数的平均值。

main ( )

{ int i, a[20], s, count;

s=count=0;

for ( i=0; i20; i++ )

scanf (" %d" , 【 】 );

for ( i=0; i20; i++ )

if ( a[i]=0 ) {【 】; count++; }

printf ("ave=%f\n" , 【 】);

}

6、下面程序为求最小正整数n,使调和级数前n项之和大于预先给定的实数a。

a,

main( ){

int n=0;

float s=0.0;

while (【 】) { 【 】; n++; }

print("“所求的数值为%f\n" ,s);

}

7、设数组a的元素均为正整数,以下程序是求a中偶数的个数和偶数的平均值。请填空。

main( )

{ int a[10]={1,2,3,4,5,6,7,8,9,10};

int k,s i;float ave;

for(k=s=i=0; i10;i++)

{ if ( a[i]%2 !=0) 【 】;

s+=【 】;

k++;

}

if(k!=0) { ave=s/k; printf("%d,%d\n", k,ave);}

}

8.下面的程序输出是【 】。

void main( ) {

int a=7, b=5;

printf("%d\n",b=a/b);

}

9. 若a=2,b=4,则表达式 !(x=a)||(y=b) 0 的值是【 】.

10. 下面程序的运行结果是 【 】。

main()

{ int a[5][5],i,j,n=1;

for(i=0;i5;i++)

for(j=0;j5;j++) a[i][j]=n++;

printf("The result is \n");

for(i=0;i3;i++)

{ for(j=0;j=i;j++) printf("%3d",a[i][j]);

printf("\n");

}

}

11. .以下程序实现输出x,y, z三个数中的更大者。

void main( )

{ int x,y,z,u;

scanf(“%d%d%d”,x,y,z);

if【 】u=z; else u=y;

if【 】 u=x;

printf(“更大为:%d\n”,u);

}

12、以下程序的运行结果是【 】

void main()

{ int a1,a2,b1,b2; int i=5,j=7,k=0;

a1 = !k; a2=i!=j;

printf("a1=%d\ta2=%d\n",a1,a2);

b1=k j; b2= k||j;

printf("b1=%d\tb2=%d\n",b1,b2);

}

13、下面程序的运行结果是【 】。

void main()

{ int k,t,sum=0;

for(t=k=1; k=10;)

{ sum+=t; ++k;

if(k%3==0) t=-k;

else t=k;

}

printf("sum=%d",sum);

}

14、下面程序的功能是输入5个整数, 找出更大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。请填空。

void main()

{ int a[5], max,min,i,j.k;

for(i=0;i5;i++) scanf("%d",a[i]);

min=a[0];max=a[0];

for(i=1;i5;i++)

if((a[i]min) {min=a[i];【 】;}

for(i=1;i5;i++)

if((a[i]max) {max=a[i];【 】;}

【 】;

printf("\n The position of min is : %3d\n",k);

printf("The position of max is: %3d\n",j);

for(i=0;i5;i++) printf("%5d",a[i]);

}

15、变量x不小于1且小于10的表达式是【 】。

16、若有int ⅰ=10, j=0;

则执行完语句if (j=0)ⅰ+ +; else ⅰ- -; 后变量ⅰ的值为【 】。

17、下面程序段的运行结果是【 】。

x=2;

do { printf("*"); x--;} while(!x==0);

18.输入以下数据:

How are you?回车

则下面程序段的执行结果是: 【 】。

#include stdio.h

main( )

{ while (putchar(getchar( )) !='?');

}

19、main( )

{ int number=3;

while(――number0) printf(“*%d,”, number);

printf(“**%d”, number);

}

这个程序的输出结果是:【 】。

20.华氏和摄氏的转换公式为C=5/9*(F-32),其中C表示摄氏的温度,F表示华氏的温度。以下程序输出从华氏0度到华氏300度,每隔20度输出一个值,请填空。

main( )

{ int upper, step;

float fahr=0, celsius;

upper=300; step=20;

while (fahr upper)

{ 【 】 ;

printf ("%4.Of, %6.1f\n", fahr, celsius);

【 】 ;

} }

21、求下列数列前20项之和

main( )

{ int i,f1=1,f2=2; float s=0.0;

for(【 】)

{ s=s+(float)f2/f1;

f2=f1+f2;

f1= 【 】。 ;

}

printf("%f\n",s);

}

22、程序读入50个整数,统计非负数个数,并计算非负数之和。

#include " stdio.h"

main ( )

{ int i, a[50], s, count;

s=count=o;

for ( i=0; i20; i++ )

scanf (" %d" , 【 】);

for ( i=0; i20; i++ )

{ if ( a[i]0 ) 【 】;

s += a[i];

count++;

}

printf ("s=%d\t count=%d\n" , s, count);

}

三、编程题(类似课本习题,如)

1. 按下面的近似公式计算

s = 1/1 -1/2 +1/3 - … +(-1)n-11/n +…

使误差小于给定的e .

(其他略)

参考答案:

一、 单项选择题

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

D C D C B C C D A C D C D D D C A B D C D C二、 填空题

1 2 3 4 5 6

10

break

11 50 (yy%4==0yy%100!=0||yy%400==0)

yy, mm, len a[i]

s=s+a[i]

(float)s/conut s=a

s=s+1.0/n7 8 9 10 11 12

continue

a[i]

1 0 The result is:

1

6 7

11 12 13 zy

xu

a1=1 a2=1

b1=0 b2=113 14 15 16 17 18

sum=19

j=i

k=i

a[j]=max;a[k]=min; (x=1) ( x10) 9 ** How are you?19 20 21 22

*2, *1 , **0 Celsius=5/9*(fahr-32)

fahr+=step i=1;i=20;i++ f2-f1 a[i]

continue 三、 编程题 (答案不唯一!)#define E 1E5

void main( )

{

int n=1,k=-1;

float s=0;

do{

k=-k;

s=s+(float)k/n;

n++;

while(n=E);

printf(“s=%f\n”, s2);

}

求c语言试题及答案!急啊!

c语言考试题(一)

一、 单项选择题(每题2分,共20分)

1、以下选项中属于C语言的数据类型是( )

A.复数型 B.逻辑型 C. *** 型 D.双精度型

2、一个C程序的执行是从( )

A.main()函数开始,直到main()函数结束 B.之一个函数开始,直到最后一个函数结束

C.之一个语句开始,直到最后一个语句结束 D.main()函数开始,直到最后一个函数结束

3、设有语句int a=3;则执行语句a+=a-=a*a;后,变量a的值是( )

A.3 B.0C.-12 D.9

4、若有 char c[5]={'c','d','\0','e','\0'};则执行语句printf("%s",c);结果是( )。

A.cd\0e B.'c''d' C.cd D.cd e

5、已知:int a[2][3]={1,2,3,4,5,6}, (*p)[3]=a;则下列表达式不是4的是 ( )。

A.*(*p+3) B.*p+3 C.*(*(p+0)+3) D.a[0][3]

6、以下有宏替换不正确的叙述( ).

A.宏替换不占用运行时间 B.宏名无类型

C.宏替换只是字符串替换 D.宏名必须用大写字母表示

7、执行char str[10]=”Ch\nina”; strlen(str)的值是( )

A.5 B.6 C.7 D.9

8、下面程序的输出结果是:( )

#define POWER(x) (x*x)

main()

{int i=4; printf("%d",POWER(i-2)); }

A. -9 B. -7 C. 5 D. -6

9、在定义int a[3][4][2];后,第10个元素是( )

A.a[2][1][2] B.a[1][0][1] C.a[2][0][1] D.a[2][2][1]

10、下面程序的输出结果是:( )

typedef struct

{long x[2];brshort y[4];brchar z[8];br}MYTYPE;

MYTYPE a;

main()

{ printf("%d\n",sizeof(a));}

A. 2 B. 8 C. 14 D. 24

二、 填空题(每空1分,共11分)

1、字符串"A"在内存中占用的字节数为 。

2、C语言中的标识符只能由字母、下划线和 组成。

3、若有定义语句“ int a=25,b=14,c=19;",以下语句的执行结果是

if(a++=25b--=2c++) printf("***a=%d,b=%d,c=%d\n",a,b,c);

else printf("###a=%d,b=%d,c=%d\n",a,b,c);

4、有如下定义a[]="B\172\\\'a%%";则执行语句printf("%d",strlen(a));的结果为 。

5、若有定义:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i; for(i=0;i4;i++) p[i]=a[i*3];则*(*(p+1)+2)的值为 ,*p[2]的值为 。若数组的首地址为2000,则p[1]指向的地址为 。

6、设a=2,b=3,x=3.5,y=2.5,则表达式(float)(a+b)/2+(int)x%(int)y 的结果是 。

7、设x、y都是int型变量,初值都为1,则执行表达式:--xy++后,y的值为 。

8、语句for(i=1;i==10;i++)continue;循环的次数是 。

9、以下程序输出 。

main()

{enum em {em1=3,em2=1,em3};

char *aa[]={"AA","BB","CC","DD"}; printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);

}

三、 写程序结果(每题5分,共35分)

1、#include

main()

{int x,y,z;brx=1,y=2,z=3; x+=y+=z;brprintf("1:%d\n",z+=xy?x++:y++);brx=0x02ff;y=0xff00;brprintf("2:%d\n",(xy)4|0x005f);brx=y=z=-1; ++x||++y++z;brprintf("3:%d,%d,%d\n",x,y,z);br}

2、#define f(x) x*x

main()

{int a=6,b=2,c;brc=f(a+b)/f(b);brprintf(“%d\n”,c);br}

3、fun(int k)

{ printf("%d",k);

if(k0)

fun(k-1);

}

main( )

{ int w=5; fun(w); printf("\n"); }

4、#include

main()

{int x=1,y=0;brswitch(x)br{ case 1:brswitch(y)br{ case 0:printf(“first\n”);break;brcase 1:printf(“second\n”);break;br}

case 2:printf(“third\n”);

}

}

5、#include

main()

{ int k=4;

func(k); func(k);

}

func(int a)

{ static int m=0;

m+=a;

printf("%d",m);

}

6、struct st

{ int x;

int *y;

}*p;

int s[]={30,20};

struct st a[]={1,s[0],2,s[1]};

main()

{ p=a; printf("%d,",p-x);

printf("%d\n",++(*(++p)-y));

}

7、假定在当前盘目录下有2个文本文件,其名称和内容如下:

文件名: a1.txt a2.txt

内容: ABCDEF# abcdef#

#include "stdio.h"

main()

{FILE *fp;brvoid fc();brif((fp=fopen("a1.txt","r"))==NULL)br{printf("Can not open file!\n"); exit(1);}

else{fc(fp);fclose(fp);}

if((fp=fopen("a2.txt","r"))==NULL)

{printf("Can not open file!\n"); exit(1);}

else{fc(fp);fclose(fp);}

}

void fc(fp1)

FILE *fp1;

{char c;brwhile((c=fgetc(fp1))!='#')putchar(c);br}

四、 程序填空(每空2分,共14分)

1、下面程序求矩阵a的主对角线元素之和,请填空。

main()

{ int a[3][3]={2,4,6,8,10,12,14,16,18};

int sum=0,i,j;

for(i=0;i3; ① )

for(j=0; ② ;j++)

if(i= =j) sum=sum+ ③ ;

printf("sum=%d\n",sum);

}

2、下列函数coy把字符数组S2中的全部字符复制到字符数组S1中, 复制时’\0’也要复制过去,’\0’后面的字符不用。

coy(char s1[],char s2[])

{ int i;

for(i=0;s2[i]!= ① ;i++)

s1[i]=s2[i];

② ;

}

3、下面程序的功能是将字符串a中的下标为奇数的元素由小到大排序,其他元素不变,请填空。

main()

{ char a[]="students",t; int i,j;

for(i=1;i7;i+=2)

for(j=i+2;j8; ① )

if( ② )

{t=a[i];a[i]=a[j];a[j]=t;}

puts(a);

}

c语言考试题(二)

一. 填空题(每题2分,共20分)

1. C语言基本数据类型有:_______________________________;

构造类型有:_____________________________________。 P.13

2. C语言源程序注注释符号是:________________________________,

为表明层次结构,C语言源程序通常采用_____________________格式编写。P.4

3. 源程序TEST.C经编译产生的目标文件是:________________________;

经连接处理后,产生的可执行文件是:__________________________。

4. strlen(“1234 \ 0xy)的值为:_____________________________;

sizeof(float)的值为:____________________________

5. 二维数组a[10] [50]最后一行的首地址为:_________________________;

最后一个元素的首地址为:____________________________________。

6. C标准库函数中,数学函数的原型在:________________头文件中,自定义头文件D :\ MYC \ MY . H应如何包含到源程序文件中:_________________________。P.130

7. 已知函数定义为:int stat(int a,float *p)

{……………}

则此函数的两个参数类型分别是_______________ 、 _____________________。

8. 设int x,y,z=4;

x=y=++z;

x=(yz)?x+2;x++;则x的值是:_________;

设int a=0,b=0,c=0;c=++a | | b++; ,则a、b、c值分别是:_____________。

9. 与if (x=0) 等价的写法是if ( ! x );

判断两个(float)变量x,z是否相等一般:if ( fabc(x-z)1e-6 )。

10.已知赋值语句zhang.year=1985;可判断zhang是_______________类型的变量;

定义文件指针的C语句是:_________________________________。

二. 单项选择题 (每题1分,共10分)

1. 组成C程序的基本单位是____________________________。

A.函数 B.标识符 C.表达式 D.语句

2. 设int类型的数据长度为2字节,则该类型数据的取值范围是__________________。

A.0至65536 B.0至65535

C.-32767至32768 D.-32768至32767

3. 在C语言中,逻辑值“真”是用_____________________表示的。

A.预定义为真值的宏 B.非零数

C.正数 D.非零整数

4. C语言对于嵌套if语句规定else总是与_____________________匹配。

A.与最外层的if B.与之前最近的if

C.与之前最近的不带else的if D.与最近的{ }之前的if

5. 数组定义char a[10]={`a`,`b`,`c`}:包括了几个元素____________________。

A.3 B.9 C.4 D.10

6. 数组名作为实参传给被调用的函数时,形参获得的是_____________________。

A.该数组之一个元素的值 B.该数组所有元素的值

C.该数组之一个元素的首地址 D.该数组所有元素的首地址

7. 为表示关系x ≥ y ≥z,正确的C语言表达式为_________________________。

A.(x=y=z) B.(x=y)AND(y=z)

C.(x=y)(y=z) D.(xy)(y=z)

8. 根据定义int a[ ]={1,2,3},i,*p=a; 从语法分析_________________是不正确的。

A. a[p-a] B.*(a) C.p D.*(*(a+i))

9. 若有语句scanf(“%d%d”,a,b);要使变量a,b分别得到12和34;正确的输入形式为____________________________。

A.12 34 B.12,34 C.1234 D.12:34

10.union uex {int i;float f;char c;}ex;则sizeof(ex)的值是____________________。

A.4 B.5 C.6 D.7

三. 分析程序,写出运行结果。(每题4分,共20分)

1. 源程序如下,运行时假定键盘输入字符串为``2004``

#include

void main(void)

{

int n=0;

char c;

while( (c=getchar( )) ! =`\n` ) /*字符型数字*/

{

if (c=`0`c=`9` )

n = n*10 + c- `0` ; /*数字*/

}

printf(“value=%d|n” ,n);

}

结果为: value=2004 。

2. 源程序如下:

#include

void main(void)

{

int num[9]={399,398,397,396,395,299,290,311,301};

int score[9]={81,85,59,77,90,66,89,93,73};

int iMax,iPos,i;

iPos=0;

iMax=score[iPos];

for(i=1;i9;i++)

if(scoreiMax)

{

iPos=i;

iMax=score[iPox];

}

printf(“num=%d,score=%d”,num[iPos];score[iPos]);

结果为: num=311, score=93 。

3. 源程序如下,运行时假定键盘输入数据为:1 2 3 4 5 6 7 8 9 10

#include

void main(void)

{

int i,a[10];

int *p;

p=a;

for(i=0;i10;i++)

scanf(“%d“,p++);

for(p=a;p SPAN;p++)

if (*p%2)printf(“%3d”,*p);

}

结果为: 1 3 5 7 9 。

4. 源程序如下,两次运行,分别输入数据13和21

#include

#include

void main(void)

{

int n,s;

scant (“%d”,n);

s=panduan( n);

if(s==1)printf(“yes\n”);

else printf(“no\n);

}

int panduan(int n)

{

int k,j;

k=(int)sqrt((double)n);

for(j=2;j=k,j++)

{

if(n%j==0) break;

}

if(jk) retum(1);

else retum(0);

}

结果为 yes

no

5.源程序如下,运行时假定键盘输入字符为:AxByCz

#include

#include

void main(void)

{

char str[80];

int i;

gets(str);

for(i=0;str!=`\0`;i++)

if(str=`a`str=`z`) str-=32;

else if (str=`A`str=`Z`) str+=32;

puts(str);

}

结果为: aXbYcZ 。

四. 下列程序中每个划线处有一个错误,改正划线 中的错误,使其实现题目要求。(每体4分,共20分)

1. 求 s=1+2+3+、、、、、、、+100

include 改正为_________________________。

void sum (void) 改正为_________________________。

{

int s,i;

for (s=0,i=1;i=100;i++)

{

s=s+ i ++; 改正为__________________________。

}

printf (“s=%f”,s) 改正为__________________________。

}

2. 源程序实现求x

#include

double pow(float . int) 改正为_________________________。

void main(void)

{

int i, n;

float x;

scanf (“%f,%d”,x,n);

for (i=1; i9;i++)

printf(“%d,%e\n”, i, pow(i,x);

} 改正为______________________。

double v v pow(float x, int n)

{

int i;

double p=0; 改正为______________________。

for (i=1; i i++)改正为_______________________。

p*=x;

retum(p);

}

3. 源程序实现排升序。

#include

void main(void)

{

int i, j, iMin, a[10]={4,3,5,1,10,12,2,6,7,9}, iTemp;

for (i=0; i9; i++)

{

iMin=0; 改正为_______________________。

for (j=i+1; j10;j++)

if(a[iMin] iMin="j;"改正为_______________________。

if (iMin==i) 改正为_________________________。

{ iTemp=a;

a[iMin]=a; 改正为_________________________。

a[iMin]=iTemp;

}

}

for(i=0; i10; i++)

printf(“%4d”, a):

}

4. 源程序为求平均值。

#include

void main(void)

{

int i, sum; 改正为____________________。

float avg;

int sc[10], *p=sc;

for (i=0, i10; i++) 改正为____________________。

{

scanf(“%d”, p++);

sum+= *p; 改正为____________________。

}

avg = sum/ 10; 改正为___________________。

printf(“avg=%f”, avg);

}

5. 源程序求 eX=1+x+x2/2!+……+xn/n!前n+1项之和

#include

void main(void

{

float exp , x , t;

int i, n;

scanf(“%f, %d”,x, n);

t=0; 改正为___________________。

exp=1.0;

for(i=1 ; i=n; i++)

{

if(t1e-6) loop; 改正为__________________。

t+=x/i; 改正为___________________。

exp*=t; 改正为___________________。

}

printf(“\n%15.6f”, exp);

}

五. 编程题 (每题6分,共30分)

1. 根据以下程序框架,编写子函数,实现交换两个整型变量x和y的值。

#include

void swap (int *, int *);

void main (void)

{

int x, y;

scanf(“%d, %d”, x, y);

swap( x, y);

printf(“%d, %d”, x, y);

}

void swap( )

{

}

2. 设某班人数36人,参加C语言考试,用一维数组score[36]存放考试成绩,已给出一部分程序,完善以下程序,使其实现统计并输出不及格人数及百分比。

#include

void main (void)

{ int i;

float scoer[36], precent;

int count=0;

for (i=0; i36; i++)

{

scanf(“%f”, score);

}

3. 完善以下程序使其实现由键盘任意输入一串字符,统计其中大写字母个数iA、小写字母个数ia、其他字符个数iother。

#include

#include

void main (void)

{

char str [80];

int i, iA=0, ia=0, iother=0;

}

4. 完善以下程序使其实现求方阵主和辅对角线元素之和及其转置矩阵,设方阵用二维数组a表示,转置矩阵用t表示,sl和s2表示主和辅对角线元素之和。

#include

void main(void)

{

int a[3] [3]={1,3,5,7,9,11,13,15,11};

int i, j, s1, s2;

int t[3] [3];

printf(“%d, %d,\n”,s1, s2);

for(i=0; i3; i++)

for(j=0; j3; j++)

printf(“%3d”, t [j]);

}

5. 已知字符数组str[80],编写返回指针的子函数,实现在其中查找字符ch首次出现的位置。

#include

#include

#include

char *lstrchar(char*, char);

void main(void)

{

char c, *p, str[80];

gets (str);

scanf(“%c”, c);

p=lstrchar(str,c);

if(p==NULL) printf(“char %c not found\n”c);

else printf(“The position is %d”, p-str);

char “lstrchar( )

{ }

历年全国计算机二级考试c语言真题及答案

c语言编程100题,有没有大神帮帮忙

您好,c语言经典100题:

【程序1】

题目:有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数

都是多少

1.程序分析:可填在百位,十位,个位的数字都是1,2,3,4.组成所有的排列后再去

掉不满足条件的排列.

2.程序源代码:

main()

{

int

i,j,k;

printf("\n");

for(i1;i5;i++)

/*以下为三重循环*/

for(j1;j5;j++)

for

(k1;k5;k++)

{

if

(i!ki!jj!k)

/*确保i,j,k三位互不相同*/

printf("%d,%d,%d\n",i,j,k);

}

}

【程序2】

题目:企业发放的奖金根据利润提成.利润(i)低于或等于10万元时,奖金可提10%;利润高

于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提

成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于

40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于

100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数

1.程序分析:请利用数轴来分界,定位.注意定义时需把奖金定义成长整型.

2.程序源代码:

main()

{

long

int

i;

int

bonus1,bonus2,bonus4,bonus6,bonus10,bonus;

scanf("%ld",i);

bonus1100000*0.1;bonus2bonus1+100000*0.75;

bonus4bonus2+200000*0.5;

bonus6bonus4+200000*0.3;

bonus10bonus6+400000*0.15;

if(i100000)

bonusi*0.1;

else

if(i200000)

bonu *** onus1+(i-100000)*0.075;

else

if(i400000)

bonu *** onus2+(i-200000)*0.05;

else

if(i600000)

bonu *** onus4+(i-400000)*0.03;

else

if(i1000000)

bonu *** onus6+(i-600000)*0.015;

else

bonu *** onus10+(i-1000000)*0.01;

printf("bonus%d",bonus);

}

【程序3】

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少

1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后

的结果满足如下条件,即是结果.请看具体分析:

2.程序源代码:

#include

"math.h"

main()

{

long

int

i,x,y,z;

for

(i1;i2)/*如果是闰年且月份大于2,总天数应该加一天*/

sum++;

printf("it

is

the

%dth

day.",sum);}

【程序4】

题目:输入某年某月某日,判断这一天是这一年的第几天?

1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊

情况,闰年且输入月份大于3时需考虑多加一天。

2.程序源代码:

main()

{

int

day,month,year,sum,leap;

printf("\nplease

input

year,month,day\n");

scanf("%d,%d,%d",year,month,day);

switch(month)/*先计算某月以前月份的总天数*/

{

case

1:sum0;break;

case

2:sum31;break;

case

3:sum59;break;

case

4:sum90;break;

case

5:sum120;break;

case

6:sum151;break;

case

7:sum181;break;

case

8:sum212;break;

case

9:sum243;break;

case

10:sum273;break;

case

11:sum304;break;

case

12:sum334;break;

default:printf("data

error");break;

}

sumsum+day;

/*再加上某天的天数*/

if(year%4000||(year%40year%100!0))/*判断是不是闰年*/

leap1;

else

leap0;

if(leap1month2)/*如果是闰年且月份大于2,总天数应该加一天*/

sum++;

printf("It

is

the

%dth

day.",sum);}

【程序5】

题目:输入三个整数x,y,z,请把这三个数由小到大输出.

1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果xy则将x与y的值进行交换,

然后再用x与z进行比较,如果xz则将x与z的值进行交换,这样能使x最小.

2.程序源代码:

main()

{

int

x,y,z,t;

scanf("%d%d%d",x,y,z);

if

(xy)

{tx;xy;yt;}

/*交换x,y的值*/

if(xz)

{tz;zx;xt;}/*交换x,z的值*/

if(yz)

{ty;yz;zt;}/*交换z,y的值*/

printf(" *** all

to

big:

%d

%d

%d\n",x,y,z);

}

【程序6】

题目:用*号输出字母c的图案.

1.程序分析:可先用'*'号在纸上写出字母c,再分行输出.

2.程序源代码:

#include

"stdio.h"

main()

{

printf("hello

c-world!\n");

printf("

****\n");

printf("

*\n");

printf("

*

\n");

printf("

****\n");

}

【程序7】

题目:输出特殊图案,请在c环境中运行,看一看,very

beautiful!

1.程序分析:字符共有256个.不同字符,图形不一样.

2.程序源代码:

#include

"stdio.h"

main()

{

char

a176,b219;

printf("%c%c%c%c%c\n",b,a,a,a,b);

printf("%c%c%c%c%c\n",a,b,a,b,a);

printf("%c%c%c%c%c\n",a,a,b,a,a);

printf("%c%c%c%c%c\n",a,b,a,b,a);

printf("%c%c%c%c%c\n",b,a,a,a,b);}

【程序8】

题目:输出9*9口诀.

1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列.

2.程序源代码:

#include

"stdio.h"

main()

{

int

i,j,result;

printf("\n");

for

(i1;i10;i++)

{

for(j1;j10;j++)

{

resulti*j;

printf("%d*%d%-3d",i,j,result);/*-3d表示左对齐,占3位*/

}

printf("\n");/*每一行后换行*/

}

}

【程序9】

题目:要求输出国际象棋棋盘.

1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格.

2.程序源代码:

#include

"stdio.h"

main()

{

int

i,j;

for(i0;i8;i++)

{

for(j0;j8;j++)

if((i+j)%20)

printf("%c%c",219,219);

else

printf("

");

printf("\n");

}

}

【程序10】

题目:打印楼梯,同时在楼梯上方打印两个笑脸.

1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数.

2.程序源代码:

#include

"stdio.h"

main()

{

int

i,j;

printf("\1\1\n");/*输出两个笑脸*/

for(i1;i11;i++)

{

for(j1;ji;j++)

printf("%c%c",219,219);

printf("\n");

}

}

【程序11】

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月

后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少

1.程序分析:

兔子的规律为数列1,1,2,3,5,8,13,21....

2.程序源代码:

main()

{

long

f1,f2;

int

i;

f1f21;

for(i1;i20;i++)

{

printf("%12ld

%12ld",f1,f2);

if(i%20)

printf("\n");/*控制输出,每行四个*/

f1f1+f2;

/*前两个月加起来赋值给第三个月*/

f2f1+f2;

/*前两个月加起来赋值给第三个月*/

}

}

【程序12】

题目:判断101-200之间有多少个素数,并输出所有素数.

1.程序分析:判断素数的 *** :用一个数分别去除2到sqrt(这个数),如果能被整除,

则表明此数不是素数,反之是素数.

2.程序源代码:

#include

"math.h"

main()

{

int

m,i,k,h0,leap1;

printf("\n");

for(m101;m200;m++)

{

ksqrt(m+1);

for(i2;ik;i++)

if(m%i0)

{leap0;break;}

if(leap)

{printf("%-4d",m);h++;

if(h%100)

printf("\n");

}

leap1;

}

printf("\nthe

total

is

%d",h);

}

c语言程序设计的基础题目求教,请给解析(多追积分)

1:已知a=13,b=6,a%b的十进制数值为()

a%b,整数%整数,表示求余数,因此13%6=1

2:设x的值为15,n的值为了2,则表达式x%=(n+3)运算后的x的值是()

x%=(n+3)相当于x=x%(n+3),x%=n+3也表示x=x%(n+3),类似的有+=,-=,*=,/=

因此x=x%(n+3),x=15%5,x=0.

3:int x=y=4,z=2;x=y==z;则x的值为()

x=y=4,等号是右结合的,也就是这种情况下要从右向左计算,因此相当于y=4;x=y;

而x=y==z,==的优先级比=高,因此相当于x=(y==z),y=4,z=2所以y==z不成立,所以y==z这个表达式的值是false,也就是0,所以x=0

4:若有定义:int a=10,b=9,c=8;接着顺序执行后下列语句是,变量b中的值是()

c=(a-=(b-5));

c=(a%11)+(b=3);

由上面的几题为基础,

c=(a-=(b-5))相当于c=(a=a-(b-5)),c=(a=10-(9-5)),c=(a=6),所以a=6,c=6,b=9(表达式b-5并没有改变b的值)

c=(a%11)+(b=3)相当于,c=6%11+3=6+3=9,所以a=6,c=9,b=3

5:int x=2,y=2,z=0;则表达式的x==yz的值为()

x==yz这个一个复合逻辑表达式,优先级高于==,所以相当于x==(yz),yz成立,所以yz==1,x==1不成立,所以表达式的值为0

6:若有以下定义和语句int a[4]={0,1,2,3},*p;

p=a[2];则*--p的值是()

p=a[2];表示p是a[2]的地址

*--p相当于*(--p),就是先将p减1,也就是a[1]的地址,然后用*操作符取出地址中的值,也就是1

单片机c语言编程100个实例

51单片机C语言编程实例 基础知识:51单片机编程基础 单片机的外部结构: 1. DIP40双列直插; 2. P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平) 3. 电源VCC(PIN40)和地线GND(PIN20); 4. 高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位) 5. 内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍) 6. 程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序) 7. P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务) 1. 四个8位通用I/O端口,对应引脚P0、P1、P2和P3; 2. 两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1) 3. 一个串行通信接口;(SCON,SBUF) 4. 一个中断控制器;(IE,IP) 针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。 C语言编程基础: 1. 十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。 2. 如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。 3. ++var表示对变量var先增一;var—表示对变量后减一。 4. x |= 0x0f;表示为 x = x | 0x0f; 5. TMOD = ( TMOD 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。 6. While( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;} 在某引脚输出高电平的编程 *** :(比如P1.3(PIN4)引脚) 代码 1. #include AT89x52.h //该头文档中有单片机内部资源的符号化定义,其中包含P1.3 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P1_3 = 1; //给P1_3赋值1,引脚P1.3就能输出高电平VCC 5. While( 1 ); //死循环,相当 LOOP: goto LOOP; 6. } 注意:P0的每个引脚要输出高电平时,必须外接上拉电阻(如4K7)至VCC电源。 在某引脚输出低电平的编程 *** :(比如P2.7引脚) 代码 1. #include AT89x52.h //该头文档中有单片机内部资源的符号化定义,其中包含P2.7 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P2_7 = 0; //给P2_7赋值0,引脚P2.7就能输出低电平GND 5. While( 1 ); //死循环,相当 LOOP: goto LOOP; 6. } 在某引脚输出方波编程 *** :(比如P3.1引脚) 代码 1. #include AT89x52.h //该头文档中有单片机内部资源的符号化定义,其中包含P3.1 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 5. { 6. P3_1 = 1; //给P3_1赋值1,引脚P3.1就能输出高电平VCC 7. P3_1 = 0; //给P3_1赋值0,引脚P3.1就能输出低电平GND 8. } //由于一直为真,所以不断输出高、低、高、低……,从而形成方波 9. } 将某引脚的输入电平取反后,从另一个引脚输出:( 比如 P0.4 = NOT( P1.1) ) 代码 1. #include AT89x52.h //该头文档中有单片机内部资源的符号化定义,其中包含P0.4和P1.1 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P1_1 = 1; //初始化。P1.1作为输入,必须输出高电平 5. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 6. { 7. if( P1_1 == 1 ) //读取P1.1,就是认为P1.1为输入,如果P1.1输入高电平VCC 8. { P0_4 = 0; } //给P0_4赋值0,引脚P0.4就能输出低电平GND 2 51单片机C语言编程实例 9. else //否则P1.1输入为低电平GND 10. //{ P0_4 = 0; } //给P0_4赋值0,引脚P0.4就能输出低电平GND 11. { P0_4 = 1; } //给P0_4赋值1,引脚P0.4就能输出高电平VCC 12. } //由于一直为真,所以不断根据P1.1的输入情况,改变P0.4的输出电平 13. } 将某端口8个引脚输入电平,低四位取反后,从另一个端口8个引脚输出:( 比如 P2 = NOT( P3 ) ) 代码 1. #include AT89x52.h //该头文档中有单片机内部资源的符号化定义,其中包含P2和P3 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P3 = 0xff; //初始化。P3作为输入,必须输出高电平,同时给P3口的8个引脚输出高电平 5. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 6. { //取反的 *** 是异或1,而不取反的 *** 则是异或0 7. P2 = P3^0x0f //读取P3,就是认为P3为输入,低四位异或者1,即取反,然后输出 8. } //由于一直为真,所以不断将P3取反输出到P2 9. } 注意:一个字节的8位D7、D6至D0,分别输出到P3.7、P3.6至P3.0,比如P3=0x0f,则P3.7、P3.6、P3.5、P3.4四个引脚都输出低电平,而P3.3、P3.2、P3.1、P3.0四个引脚都输出高电平。同样,输入一个端口P2,即是将P2.7、P2.6至P2.0,读入到一个字节的8位D7、D6至D0。 之一节:单数码管按键显示 单片机最小系统的硬件原理接线图: 1. 接电源:VCC(PIN40)、GND(PIN20)。加接退耦电容0.1uF 2. 接晶体:X1(PIN18)、X2(PIN19)。注意标出晶体频率(选用12MHz),还有辅助电容30pF 3. 接复位:RES(PIN9)。接上电复位电路,以及手动复位电路,分析复位工作原理 4. 接配置:EA(PIN31)。说明原因。 发光二极的控制:单片机I/O输出 将一发光二极管LED的正极(阳极)接P1.1,LED的负极(阴极)接地GND。只要P1.1输出高电平VCC,LED就正向导通(导通时LED上的压降大于1V),有电流流过LED,至发LED发亮。实际上由于P1.1高电平输出电阻为10K,起到输出限流的作用,所以流过LED的电流小于(5V-1V)/10K = 0.4mA。只要P1.1输出低电平GND,实际小于0.3V,LED就不能导通,结果LED不亮。 开关双键的输入:输入先输出高 一个按键KEY_ON接在P1.6与GND之间,另一个按键KEY_OFF接P1.7与GND之间,按KEY_ON后LED亮,按KEY_OFF后LED灭。同时按下LED半亮,LED保持后松开键的状态,即ON亮OFF灭。 代码 1. #include at89x52.h 2. #define LED P1^1 //用符号LED代替P1_1 3. #define KEY_ON P1^6 //用符号KEY_ON代替P1_6 4. #define KEY_OFF P1^7 //用符号KEY_OFF代替P1_7 5. void main( void ) //单片机复位后的执行入口,void表示空,无输入参数,无返回值 6. { 7. KEY_ON = 1; //作为输入,首先输出高,接下KEY_ON,P1.6则接地为0,否则输入为1 8. KEY_OFF = 1; //作为输入,首先输出高,接下KEY_OFF,P1.7则接地为0,否则输入为1 9. While( 1 ) //永远为真,所以永远循环执行如下括号内所有语句 10. { 11. if( KEY_ON==0 ) LED=1; //是KEY_ON接下,所示P1.1输出高,LED亮 12. if( KEY_OFF==0 ) LED=0; //是KEY_OFF接下,所示P1.1输出低,LED灭 13. } //松开键后,都不给LED赋值,所以LED保持最后按键状态。 14. //同时按下时,LED不断亮灭,各占一半时间,交替频率很快,由于人眼惯性,看上去为半亮态 15. } 数码管的接法和驱动原理 一支七段数码管实际由8个发光二极管构成,其中7个组形构成数字8的七段笔画,所以称为七段数码管,而余下的1个发光二极管作为小数点。作为习惯,分别给8个发光二极管标上记号:a,b,c,d,e,f,g,h。对应8的顶上一画,按顺时针方向排,中间一画为g,小数点为h。 我们通常又将各二极与一个字节的8位对应,a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7),相应8个发光二极管正好与单片机一个端口Pn的8个引脚连接,这样单片机就可以通过引脚输出高低电平控制8个发光二极的亮与灭,从而显示各种数字和符号;对应字节,引脚接法为:a(Pn.0),b(Pn.1),c(Pn.2),d(Pn.3),e(Pn.4),f(Pn.5),g(Pn.6),h(Pn.7)。 如果将8个发光二极管的负极(阴极)内接在一起,作为数码管的一个引脚,这种数码管则被称为共阴数码管,共同的引脚则称为共阴极,8个正极则为段极。否则,如果是将正极(阳极)内接在一起引出的,则称为共阳数码管,共同的引脚则称为共阳极,8个负极则为段极。 以单支共阴数码管为例,可将段极接到某端口Pn,共阴极接GND,则可编写出对应十六进制码的七段码表字节数据

相关文章

查询我男朋友的开房纪录和微信聊天记录

. 滴滴在有的地方,会感觉很好用,但是滴滴下线后使不少人的生活变得不便,那么滴滴重新上线是真的吗哪些地方可以用滴滴打车呢,友谊长存小编就来说说吧。 滴滴顺风车重新上线 11月20日起北京等7城试...

黑客就是找破绽吗-手机若何不被黑客攻击(手机若何不被黑客攻击或者监

中国黑客干过啥事 了解一个人的手机号码怎么人肉他(了解手机号码怎么人肉) 黑客技术犯哪些罪 声名狼藉的英文not(一个声名狼藉的beta) 怎祥变成一个挣钱的网络黑客 全世界...

现在新手创业开茶叶店成本高吗前景好吗?3个方法马上致富

大家都较为疑惑如今新手创业开茶叶店成本增加吗?最先你需要明确自身是不是确实想做这行想要资金投入是多少,次之最重要的是你提前准备在哪儿开,茶文化文支系许多,全国各地的人针对茶的爱好较为杂。 因此 对于这...

翁美玲为什么自杀(揭秘翁美玲为什么自杀的原因)

  翁美玲为何自尽(揭密翁美玲为何自尽的缘故)在应对演艺圈虚无缥缈朦胧的现如今,也许很多人早已遗忘了,每一年的五月七日全是电影圈超级巨星翁美玲的生日留念日,而每一年的五月十四日也是她离去大伙儿的留念日...

网站页面seo设置基本功

网站页面seo设置基本功

做好站内页面seo,有备无患。一旦网站内部的根基功做到位,即可大量举办链接建树,引流等站外seo事情,再辅之以内容组织,网站能差到那边去?站内优化点何其多,页面优化是一个不行或缺的构成部门,本文从页面...

找黑客弄回钱违法吗(找黑客帮忙要多少钱)

不要光想着找别人帮忙,骗子太多了。靠人不如靠己。你可以自己学。找不到方向我可以教你。如果你一心要找黑客建议去域外黑客联盟或者网络攻。 我需要他和我老公在一起的那个最有利的证据,那最好了,知道他们具体的...