夜光序言:
他们将要分手。她记得,当时开口有多难,多残忍。他们的欲念太强烈,找不到话来表达。他们已经不再相视。他们避免用手和目光接触。是他不想说话。她说过,光是这沉默本身,以及由于沉默而没有说出来的话,乃至其顿挫,其不经意,还有这个躲躲闪闪的游戏,这番幼稚的欲言又止和她的眼泪,这一切本应该使人想到,这就是爱情。
《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(“%d\n”,s);
}
2、#include <stdio.h>
int fun(char *s1,char *s2)
{ int i=0;
while(s1[i]==s2[i] && s2[i]!='\0') i++;
return (s1[i]=='\0' && s2[i]=='\0');
}
void main()
{ char p[10]= ""abcdef"", q[10]= ""ABCDEF""
printf(""%d\n"",fun(p,q));
}
3、#include <stdio.h>
"void main()
{ int n=2;
printf(“%d,%d,%d\n”, ++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=%d\n”,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=%d\n"",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("%d\n",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,%d\n"",*a,*(a+1));
swap(a);
printf(""%d,%d\n"",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("%d\n", 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!=¢\0¢;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,%d\n”,a,b);
}
14、#include <stdio.h>
void main()
{ int s,i;
for(s=0,i=1;i<5;i++,s+=i) ;
printf(“%d\n”,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,%d\n"",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,2,3,4,5,6,7,8,9,10};
x=f(a,3,8);
printf(“%d\n”,x);
}
18、#include <stdio.h>
void copy_str(char from[ ],char to[ ])
{ int k=0;
while(from[k]!=‘\0’)
{ to[k]=from[k]; k ; }
to[k]=‘\0’; /*末尾加上串结束标志*/
}
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(""%d\n"", 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,%d,%d\n"",a,b,c);
}
21、#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[]=""1234567"";
fun(p, strlen(p));
puts(p);
}
22、#include <stdio.h>
#include <string.h>
int stre(char *s)
{ int num=0;
while(*(s+num)!=‘\0’)num++;
return num;
}
void main()
{ char str[]=""students"",*p=str;
printf(“%d\n”,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"",a,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,2,3,4,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,2,3,4},{9,7,10,6},{-1,8,-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]!= ‘\0’)
{ to[k]=from[k]; k ; }
to[k]=‘\0’; /*末尾加上串结束标志*/
}
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, y=8, z=6, r;
r=fun(fun(x,y), 2*z);
printf(""%d\n"", 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(""%d\n"",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(""%d\n"", fun(a,b)/m);
}
34、#include <stdio.h>
void main()
{ int i,n[]={1,2,3,4,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]);
}
}
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,j,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 %d\n"",m,n,k);
}
37、#include <stdio.h>
#define MAX(a,b) (a>b ? a : b)+1
void main()
{ int i=6,j=8;
printf(“%d\n”,MAX(i,j));
}
38、#include <stdio.h>
void main()
{ int x=4;
if(x++>=5)
printf(“%d\n”, x) ;
else
printf(“%d\n”, x--) ;
}
39、#include <stdio.h>
void main()
{ int a=0;
a+=(a=8);
printf(“%d\n”,a);
}
40、#include <stdio.h>
void main()
{ int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
int i,s=0 ;
for(i=0;i<4;i++) s+=aa[i][2];
printf(“%d\n”,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,2},{3,4}};
D. int d[3][2]={{1,2},{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,k,k);
A. 11,12,11
B. 11,13,13
C. 11,013,0xb
D. 11,13,b
6. 对于int a[ ] = {1,2,3,4,5,6}, 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("%d\n",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. 设有如下程序段:<BR>int x=2, y=3;<BR>printf("%d\n",(x,y));<BR>则以下叙述中正确的是
A. 输出语句中格式说明符的个数少于输出项的个数,不能正确输出
B. 运行时产生出错信息
C. 输出值为2
D. 输出值为3
15. 已知:int a[ ][3]={1,2,3,4,5,6,7,8,9,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,b=4,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(“%d\n”,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. ‘\084’
B. ‘ab’
C. ‘\x43’
D. “\0”
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,2,0
C. 0,1,1
D. 0,2,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,3,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 <stdio.h>
void main()
{
int x,y;
printf(“输入x:”);
scanf(“%d\n”,&x);
if(x<1)
{y=x;
printf(“x=%3d,y=x=%d\n”,x,y);
}
else if(x<10)
{y=2*x-1;
printf(“x=%3d,y=2*x-1=%d\n”,x,y);
}
else
{y=3*x-11;
printf(“x=%3d,y=3*x-11=%d\n”,x,y);
}
}
2、
#include <stdio.h>
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 <stdio.h>
void main()
{
float a,b,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=%f\n”,y);
}
4、
#include <stdio.h>
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("%f\n",sum);
}
5、
#include <stdio.h>
int main()
{
int a[10],i,max,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<a[i])
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("%f\n",sum);
}
}
6、
void main()
{
char a[100];
gets(a);
change(a);
puts(a);
}
#include<stdio.h>
#include<string.h>
void change(char a[])
{
int i,j,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 <stdio.h>
void main()
{
long int t=0,s=0,i;
for(i=1;i<=6;i++)
{t=i+t*10;s=s+t;}
printf(”s=%ld\n”,s);
}
8、
#include <stdio.h>
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);
}