C# · 12月 20, 2021

厚积薄发系列(C语言资料)

夜光序言:

他们将要分手。她记得,当时开口有多难,多残忍。他们的欲念太强烈,找不到话来表达。他们已经不再相视。他们避免用手和目光接触。是他不想说话。她说过,光是这沉默本身,以及由于沉默而没有说出来的话,乃至其顿挫,其不经意,还有这个躲躲闪闪的游戏,这番幼稚的欲言又止和她的眼泪,这一切本应该使人想到,这就是爱情。

《C语言之大道》

夜光:综合复习资料

第一题 读程序写出程序执行结果

#include <stdio.h>

   void main()

   {  int x[]={1,2,3};

      int s=1,i,*p=x;

      for(i=0;i<3;i++)

        s*=*(p+i);

      printf(“%dn”,s);

}

2、#include <stdio.h>

int fun(char *s1,char *s2)

     { int i=0;

      while(s1[i]==s2[i] && s2[i]!=”) i++;

return (s1[i]==” && s2[i]==”);

}

void main()

{ char p[10]= “”abcdef””,q[10]= “”ABCDEF””

  printf(“”%dn””,fun(p,q));

}

3、#include <stdio.h>

“void main()

     { int n=2;

      printf(“%d,%d,%dn”,++n , n+=2 , –n) ; 

}

4、#include <stdio.h>

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=%dn”,a,b);

}

5、#include <stdio.h>

void main()

    { int s,t,a=-2,b=6;

     s=t=1;

     if(a>0) s=s+1;

     if(a>b) t=s+t;

     else if(a==b) t=5;

     else t=2*s;

     printf(“”t=%d “”,t); 

}

6、#include <stdio.h>

#define  S(a,b)    (a)*(b)

void main()

{  int a=3,area;

   area=S(a,a+3) ;

   printf(“”area=%dn””,area);

}

7、#include <stdio.h>

void main()

{ int i=0,a=0;

while( i<20 )

{  for(;;)

if((i%10)==0) break;

else i–;

         i+=11;

         a+=i;

}

printf(“%dn”,a);

}

8、#include <stdio.h>

void swap(int  b[])

{   int *p,*p1,*p2;

        p1=&b[0] ;p2=&b[1];

p=p1;  p1=p1+1;  p2=p;

}

void main()

{   int a[]={5,9};

printf(“”%d,%dn””,*a,*(a+1));

       swap(a);

         printf(“”%d,a[0],a[1]);

}

9、#include <stdio.h>

fun(int a,int b)

{ if(a>b) return(a);

else return(b);

}

void main()

{ int x=3,y=8,z=6,r;

r=fun(fun(x,y),2*z);

printf(“%dn”,r);

}

10、#include <stdio.h>

int fun(int x)

{ int y=1;

static int z=4;

z =1; y;

return(x y z);

}

void main()

{ int i;

for(i=1;i<=3;i )

printf(“=”,fun(i));

}

11、#include <stdio.h>

void fun(char *w,int n)

{ char  t,*s1,*s2;

  s1=w;  

s2=w n-1;

  while(s1<s2) {t=*s1;*s1= *s2 ; *s2= t;s1 ;s2–;}

}

void main()

{ char p[]=”abcdefg”;

fun(p,strlen(p));

puts(p);

}

12、#include <stdio.h>

char fun(char *s)

{ if( *s >= ¢a¢ && *s <= ¢z¢ )  

*s=*s-32;

return *s;

}

void main()

{ char a[20]=”Welcome”,*p,ch;

for(p=a;*p!=¢¢;p )

{ ch=fun(p);

putchar(ch);

}  }

13、#include <stdio.h>

   void main()

  {  int a=10,b=0;

     if(a==12)

      {a++; b++; }

     else

      { a=a+3 ; b=b+3;}

printf(“%d,b);

}

14、#include <stdio.h>

void main()

{ int s,i;

for(s=0,i=1;i<5;i++,s+=i) ;

printf(“%dn”,s);

}

15、#include <stdio.h>

   void main()

   {  char n=‘c’;

      switch(n )

      {  default: printf(“error!”); break;

         case ‘a’: case ‘A’:

case ‘b’: case ‘B’: printf(“good!”);break;

         case ‘c’: case ‘C’: printf(“pass!”);

         case ‘d’: case ‘D’: printf(“warm!”);

}

}

16、#include <stdio.h>

void main()

{ int k=4,n=0;

for( ; n<k ; )

{ ; n++;

if(n%3!=0) continue;

k- -;

}

printf(“”%d,k,n);

}

17、#include <stdio.h>

   int f(int b[],int m,int n)

   { int i,s=0;

     for(i=m;i<=n;i+=2) s+=b[i];

     return s;

}

void main()

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

     x=f(a,8);

     printf(“%dn”,x);

}

18、#include <stdio.h>

void copy_str(char  from[ ],char to[ ])

{  int  k=0;

while(from[k]!=‘’)

{ to[k]=from[k]; k ;    }

      to[k]=‘’;      /*末尾加上串结束标志*/

}

void main()

{  char  str1[80]=”red”,str2[80]=”green”;

      copy_str (str1,str2);

      puts(str2);

}

19、#include <stdio.h>

int d=1;       

     void fun(int p)

{ int d=5;

  d+=p++;

  printf(“%d”,d);

}

void main()

     { int a=3;

        fun(a);   d+=a++;

        printf(“”%dn””,d); 

}

20、#include <stdio.h>

void f(int x,int y)

      { int t;

        if (x<y) { t=x; x=y; y=t; }

      }

      void main()

     { int a=4,b=3,c=5;

       f(a,b); f(a,c); f(b,c);

       printf(“”%d,b,c);

}

21、#include <stdio.h>

void fun(char *w,int n)

{ char  t,*s2;

  s1=w; 

s2=w n-1;

  while(s1<s2) {t=*s1;*s1= *s2 ; *s2= t; s1 ;s2–;}

}

void main()

{ char p[]=””1234567″”;

fun(p,strlen(p));

puts(p);

}

22、#include <stdio.h>

#include <string.h>

int stre(char *s)

{  int num=0;

   while(*(s+num)!=‘’)num++;

   return num;

}

void main()

{  char str[]=””students””,*p=str;

   printf(“%dn”,stre(p));

}

23、#include <stdio.h>

void main()

{  int i,j;

for(i=0; i<3;i )

{

for(j=0; j<=i;j )

printf(“”*””);

printf(“”n””);

}

}

24、#include <stdio.h>

void main()

    { int i;

      for (i=0; i<3; i++)

      switch (i)

      { case 1: printf(“”%d “”,i);

        case 2: printf(“”%d “”,i);

        default : printf(“”%d “”,i); 

}

25、#include <stdio.h>

    int ws(int  x)

    {  if(x/100>0)

           return(3);

        else if(x/10>0 )

           return(2);

        else

           return(1);

   }

    void main()

    {  int  a=123;

        printf(“”%d是%d位数n””,ws(a));

}

26、#include <stdio.h>

#include <string.h>

void main()

{   char  a[10]=””abc””;

char  b[]=””defg””;

    puts(a);

    puts(b);

    puts(strcat(a,b));

}

27、#include <stdio.h>

 void main()

 { int  i,n[]={1,5};

for(i=0;i<2;i++)

{ n[i]=n[4-i]+1;

   printf(“”%d “”,n[i]);

}

for(i=0;i<5;i++)

   printf(“”%d “”,n[i]);

}

28、#include <stdio.h>

void main()

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

int i,j,row=0,colum=0,max;

  max=a[0][0];

  for(i=0;i<=2;i++)

  for(j=0;j<=3;j++)

   if(a[i][j]>max)

   { max=a[i][j];

    row=i;

    colum=j;

   }

 printf(“”max=%d,row=%d,colum=%d””,max,row,colum);

}

29、#include <stdio.h>

void copy_str(char  from[ ],char to[ ])

{   int  k=0;

while(from[k]!= ‘’)

{ to[k]=from[k]; k ;    }

    to[k]=‘’;  /*末尾加上串结束标志*/

}

void main()

{   char  str1[80]= “”good””,str2[80]= “”abcdef””;

    copy_str(str1,str2);

    puts(str2);

}

30、#include <stdio.h>

int fun(int a,int b)

{ if(a>b) return(a);

else return(b);

 }

void main()

{ int x=3,2*z);

printf(“”%dn””,r);

}

31、#include <stdio.h>

void ex( )

{  static int x=5 ; 

–x ; 

printf(“%d”,x) ;

} ;

void ; main ( )

{ ; ex( ); ;

ex( ); ;

ex( );

 ;

}

32、#include <stdio.h>

int f( )      

{ int s=1;

  static int i=0;

  s+=i;  i++;

  return  s ;

}

void main()

{ int i,a=0;

  for(i=0;i<3;i++) a+=f( );

      printf(“”%dn””,a); 

}

33、#include <stdio.h>

int m=13;       

     int fun(int x,int y)

{ int m=3;

  return(x*y-m);

}

void main()

     { int a=7,b=5;

        printf(“”%dn””,fun(a,b)/m);

}

34、#include <stdio.h>

 void main()

 { int  i,n[i]);

}

for(i=0;i<5;i++)

{ printf(“”%d “”,n[i]);

}

}

35、#include <stdio.h>

void main()

{  int i;

   for(i=1;i<5;i++)

   {  if(i%2)

      putchar(‘<’);

      else

      continue;

      putchar(‘>’);

}

putchar(‘#’);

}

36、#include <stdio.h>

void main()

{ int i,m=0,n=0,k=0;

for(i=6; i<=9;i++)

    for(j=2; j<=3;j++)

   switch( i%j )

  {   case 0: m++; break;

   case 1: n++; break;

   case 2: k++; break;

   default: k++;n++;m++;

         }

printf(“”%d %d %dn””,m,n,k);

}

37、#include <stdio.h>

   #define MAX(a,b)  (a>b ? a : b)+1

   void main()

   { int i=6,j=8;

     printf(“%dn”,MAX(i,j));

}

38、#include <stdio.h>

void main()

     { int x=4;

      if(x++>=5)

printf(“%dn”,x) ;

else

      printf(“%dn”,x–) ; 

}

39、#include <stdio.h>

    void main()

    { int a=0;

      a+=(a=8);

      printf(“%dn”,a);

}

40、#include <stdio.h>

void  main()

{ int aa[4][4]={{1,{5,8},{3,2},{4,6}};

int i,s=0 ;

for(i=0;i<4;i++) s+=aa[i][2];

printf(“%dn”,s);  

}

第二题 选择题

1. 表示x≤0或x≥1的正确的表达式是

A. x>=1||x<=0     

B. x>1 || x<=0       

C. x>=1 or x<=0    

D. x>=1 || x<0

2. 以下能正确定义数组并正确赋初值的语句是

A. int N=5,b[N][N];  

B. int a[1][2]={{1},{3}};  

C, int c[2][]= {{1,4}};

D. int d[3][2]={{1,{34}};

3. 以下不合法的赋值语句是

A. x=(1,y=2);

B. ++x;

C. x=y=15;

D. y=int(x);

4. C语言中,函数返回值的类型是由

A. return语句中的表达式类型决定

B. 调用函数的主调函数类型决定

C. 调用函数时的临时类型决定

D. 定义函数时所指定的函数类型决定

5. 下面程序段的输出结果是

int k=11;

printf(“%d,%o,%x”,k);

A. 11,12,11

B. 11,13,13

C. 11,013,0xb

D. 11,b

6. 对于int a[ ] = {1,p;  p=a; *(p 3) = 2; 则*p,*(p 3)的值是

A. 1 5

B. 1 3

C. 1 4

D. 1 6

7. 以下选项中,与k= n完全等价的表达式是

A. k=n,n=n 1

B. n=n 1,k=n

C. k= n

D. k =n 1

8. 设有定义语句:char str[][20]={“Hello”,”Beijing”},*p=str;

则printf(“%dn”,strlen(p+20)); 输出结果是

A. 0

B. 5

C. 7

D. 20

9. 语句: printf(“%d”,(a=2)&&(b=-2)); 的输出结果是

A. 无输出

B. 结果不确定

C. 1

D. 2

10. 以下非法的赋值语句是

A. n=(i=2,i);

B. j ;

C. (i 1);

D. x=j>0;

11. 在微型计算机系统中,存储一个汉字的国标码所需要的字节数是

A. 1

B. 2

C. 3

D. 4

12. 结构化程序的3种基本控制结构是

A. if-else结构、while结构、for结构

B. 顺序结构、分支机构、循环结构

C. while结构、do-while结构、for结构

D. 以上三种都不对

13. 判断字符串s1是否大于字符串s2,应该使用

A. if(s1>s2)

B. if(strcmp(s1,s2))

C. if(strcmp(s2,s1)>0)

D. if(strcmp(s1,s2)>0)

14. 设有如下程序段:
int x=2,y=3;
printf(“%dn”,(x,y));
则以下叙述中正确的是

A. 输出语句中格式说明符的个数少于输出项的个数,不能正确输出

B. 运行时产生出错信息

C. 输出值为2

D. 输出值为3

15. 已知:int a[ ][3]={1,0}; 则数组a的第一维的大小是

A. 2

B. 3

C. 4

D. 无法确定;

16. 已定义c为字符型变量,则下列语句中正确的是

A. c=’97’;

B. c=”97″;

C. c=”a”;

D. c=97;

17. 设有定义 int a=3,b=4,c=5;,则以下表达式中,值为0的表达式是

A. a&&b

B. a<=b

C. a||b c&&b-c

D. !((a<b)&&!c||1)

18. 已知 int a=4,b=5;,这执行表达式 a=a>b 后,变量a的值为

A. 0

B. 1

C. 4

D. 5

19. 以下关于C语言的不严格的叙述中,错误的说法是

A. 在标识符中,大写字母和小些字母的意义相同

B. 有些不同类型的变量可以在一个表达式中运算

C. 在赋值表达式中等号 “=”左边的变量和右边的值可以是不同类型

D. 同一个运算符号在不同的场合可以有不同的含义

20. 在C语言中,数字029是一个

A. 八进制数

B. 十进制数

C. 十六进制数

D. 非法数

21. C语言中基本数据类型有

A. 整型、实型、逻辑型

B. 整型、字符型、逻辑型

C. 整型、实型、字符型

D. 整型、实型、字符型、逻辑型

22. 用数组名作为函数调用时的实参,则实际传递给形参的是

A. 数组的第一个元素值

B. 数组中全部元素值

C. 数组的首地址

D. 数组的元素个数

23. 下程序段:  char  s[20 ]=”xyz”,  *sp=s; strcat(sp,”12345″); puts(sp); 的输出结果是

A. xyz12345

B. 12345xyz

C. 12345

D. xyz

24. 假设已定义 char  c[8]= “test”;  int  i; 则下面的输出函数调用中错误的是

A. printf("%s",c);

B. for(i=0;i<8;i++) printf("%c",c[i]);

C. puts(c)

D. for(i=0;i<8;i++) puts(c[i]);

25. 设a=3,c=-5,则逻辑表达式:a || b c && b==c 的值是

A. 1

B. 0

C. 非0

D. 语法错

26. 已定义c为字符型变量,则下列正确的赋值语句是

A. c=’66’;

B. c=”66″;

C. c=”B”;

D. c=66;

27. 以下非法的赋值语句是

A. n=(i=2,i);

B. j ;

C. (i 1);

D. x=j>0;

28. 以下选项中合法的实型常数是

A. 5E2.0

B. E-3

C. 2.00E-01

D. 1.3E

29. 设有定义 char *p=“abcde\0fghjik\0”; 则printf(“%dn”,strlen(p));输出结果是

A. 12

B. 15

C. 6

D. 5

30. 能将高级语言编写的源程序转换为目标程序的软件是

A. 汇编程序

B. 编辑程序

C. 解释程序

D. 编译程序

31. 结构化程序设计的三种基本结构是

A. 顺序结构、选择结构、循环结构

B. if、switch、break

C. for、while、do-while

D. if、for、continue

32. 在一个C程序中

A. main函数必须出现在所有函数之前

B. main函数可以在任何地方出现

C. main函数必须出现在所有函数之后

D. main函数必须出现在固定位置

33. 以下合法的字符常量是

A. ‘84’

B. ‘ab’

C. ‘x43’

D. “”

34. 用8位无符号二进制数能表示的最大十进制数为

A. 127

B. 128

C. 255

D. 256

35. 设有定义:int  x=0,y=1,z=1;则运行表达式:x=y >z–后,x,y,z的值分别是

A. 1,1,1

B. 1,0

C. 0,1

D. 0,0

第三题 编程题

1. 设有分段函数:

x           (x<1)

Y=      2x-1        (1≤x<10)     写一程序,输入 x,输出 y 的值。

3x-11       (x≥10)

2. 写一个判断素数的函数。要求在主函数中输入一个整数并输出相应的判断信息。

3.编程任意输入两个实数a和b,计算下面函数的值,并输出y值。

           a-b       a>b

   y=            a<b

 a*b       a=b

4.编程序计算 s=1!-2!+3!-4!+ …… -10! ,并输出结果。

5. 从键盘输入10个评委给参赛选手打的分,去掉一个最高分和一个最低分,求选手的得分(平均分)。

6. 编写函数change使输入的字符串按反序存放,在主函数中输入和输出字符串。例如输入是:12345abcde,则输出为:edcba54321

7.  计算s=1+12+123+12345+123456+1234567(要求用循环语句实现)

8.  编写一个函数,将一个字符串(最多80个字符)中的大写字母变为小写字母,小写字母变为大写字母。要求字符串的输入与输出在主函数中完成。

夜光:参考答案

第一题 读程序写出程序执行结果

1. 6

2. 0

3. 4,1

4. a=2,b=1

5. t=2

6. area=18

7. 32

8. 5,9

5,9

9. 12

10. 8 10 12

11. gfedcba

12. WELCOME

13. 13,13

14. 14

15. pass!warm!

16. 3,3

17. 18

18. red

19. 84

20. 4,3,5

21. 7654321

22. 8

23. *

**

24. 11122

25. 123是3位数

26. abc

defg

abcdefg

27. 6565345

28. max=10,row=1,colum=2

29. good

30. 8

31. 432

32. 6

33. 2

34. 6565345

35. #

36. 4 3 1

37. 9

38. 5

39. 16

40. 29

第二题 选择题

1-5  ADBDD    6-10  DBCCC     11-15  BBBDC    16-20  DDAAD   21-25   CCADA

26-30  DCCDD   31-35  ABCCD

第三题 编程题

1.1、

#include

void main()

{

 int x,y;

 printf(“输入x:”);

scanf(“%dn”,&x);

 if(x<1)

   {y=x;

printf(“x=%3d,y=x=%dn”,x,y);

}

 else  if(x<10)

{y=2*x-1;

printf(“x=%3d,y=2*x-1=%dn”,y);

}

else

{y=3*x-11;

 printf(“x=%3d,y=3*x-11=%dn”,y);

}

}

2、

#include  

void main()

{   

int prime(int);

int n;

printf(“ninput an integer:”);

    scanf(“%d”,&n);

    if(prime(n))

    printf(“n %d is a prime. n”,n);

    else

    printf(“n %d is not a prime. n”,n);  

}

int prime(int n);

{

 int flag=1,i;   

 for(i=2;i<n/2&& flag==1; i ++)

    if(n%i==0)

    flag=0;

    return (flag);    

}

3、

#include

void main()

{

float a,y;

scanf(“%f,%f”,&a,&b);

if(a<b)

 y=a/b;

else

 if(a==b)y=a*b;

 else y=a-b;

printf(“y=%fn”,y);

}

4、

#include

void main()

{int i,k=1,njie=1;

 float sum=0;

 for(i=1;i<=10;i++)

{njie=njie*i;

sum=sum+njie*k;

k=-1*k;

     }

printf(“%fn”,sum);

}

5、

#include

int main()

{   

int a[10],min;

float sum;

for(i=0;i<10;i++ )

 {

  scanf(“%d”,&a[i]);

 }

 max=a[0];

 min=a[0];

 for(i=1;i<=9;i++)

 {

  if(max

  max=a[i];

  else if(min>a[i])

  min=a[i];

 }

 for(i=0;i<=9;i++)

 {sum=sum+a[i];}

 sum=(sum-max-min)/8;

 printf(“%fn”,sum);

}

}

6、

void main()

{

   char a[100];

   gets(a);

   change(a);

   puts(a);

}

#include

#include

void change(char a[])

{

  int i,k;

  char temp;

  k=strlen(a);

  for(i=0;i<k;i++)

  for(j=i+1;j<k;j++)

  {

    temp=a[i];

    a[i]=a[j];

    a[j]=temp;

   }

}

7、

#include

void main()

{

 long int t=0,s=0,i;

 for(i=1;i<=6;i++)

 {t=i+t*10;s=s+t;}

 printf(”s=%ldn”,s);

}

8、

#include

void main()

{

 int i;

 char a[80];

 gets(a);

 puts(a);

 for(i=0;i<80;i++)

 if(a[i]>=65&&a[i]<=90)

   a[i]=a[i]+32;

   puts(a);

}

22题答案:#define N 10;

main()

{

int i,j;

int a[N][N];

int sum=0;

for(i=0;i<N;i++)

for(j=0;j<N;j++)

scanf(“%d”,&a[i][j]);

for(i=0;i<N;i++)

for(j=0;j<N;j++)

if(i==j||(i+j==N))//i==j是判断是否主对角线的元素 i+j==N 是判断是否是次对角线的元素

sum+=a[i][j];

printf(“%d”,sum);

}