1、C语言自测题(二) 一、填空题 1、请写出三种不同类型的常量: 1.0 ; 32 ; ‘r’ 。 2、一个C程序可以由多个函数组成,但必须包含一个且只能包含一个名为 main的函数。程序总是从 main 函数开始执行的。 3、若有int m=5,y=2;那么y+=y-=m*=y的值是 -16 。 4、a=3,b=4,c=5,那么a+b>c&&b-c的值是 1 。 5、int字节数为 2 ,char字节数为 1 ,float字节数为 4 。 6、 设有以下宏定义:
2、 #define WIDTH 80 #define LENGTH (WIDTH+40) 执行赋值语句:v= LENGTH*20; 后,v的值是 2400 。 7、在C程序的任何位置都可以用 /*, */ 作注释,以提高程序的 可读性 性。 8、C语言中,二维数组中元素排列的顺序是,按 行 存放。 二、读程序写出运行结果 (1)#include "stdio.h" 运行时输入:QE main( ) 运行结果: qB {int c1
3、 c2, c3, c4; c1=getchar ( ); c2=getchar( ); c3=c1+32; c4=c2-3; putchar (c3); putchar (c4); } (2)#define computing (a, b) a*b 运行结果: 30 main( ) 42 {int n=5; int m=6; pri
4、ntf ("%d\n", computing (n++,m)); printf ("%d\n", computing (++n,m)); } (3)main( ) 运行结果:4 {int a=2, b=, c=2; if(a
5、lude "stdio.h" main( ) {int number, digit; 若输入为:7312 printf("\n Please input a integer:"); 运行结果:two one three seve scanf("%d", &number); printf("first_digit second_digit"); printf("third_d
6、igit forth_digit fifih_digit\n"); do { digit=number%10; switch(digit) { case 0:printf(" zero "); break; case 1:printf(" one "); break; case 2:printf(" two "); break; case 3:printf(" three
7、 "); break; case 4:printf(" four "); break; case 5:printf(" five "); break; case 6:printf(" six "); break; case 7:printf(" seve "); break; case 8:printf(" eight "); break; case 9
8、printf(" nine \n "); break; } number/=10 } while (number!=0); } (5)int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; main( ) 运行结果:1 2 3 4 5 6 7 8 9 10 11 12 { int i,j,*p=a; for(i=0;i
9、<3;i++) for(j=0;j<4;j++) printf("%d”,p++);} (6) #include"stdio.h" 运行结果: main( ) *p=1,x=3,y=5 {int a[ ]={1,2,3,4,5}; int x,y,*p; p=&a[0]; x=*(p+2); y=*(p+4); printf("*p=%d,x=%d,y=%d\n",*p,x,y);} 三、程序填空 (1)有两个数
10、请将较大的那个数输出。程序如下: main( ) {int a, b, c; a=12; b=15; c=max(a,b); printf("max is %d",c );} max ( int x, int y ) {int z; if(x>y) z=x; else z=y; return(z);} (2)计算并输出分段函数的值: #include "stdio.h" main( )
11、 { float x,y ; scanf ("%f, &x); y=0; if(x>0) y=1 ; printf ("y=%f\n",y); } (3)用起泡法对10个数排序(由小到大) main( ) { int a[11]; int i,j ,t ; printf("input 10 numbers :\n); for(i=1;i<11;i++)
12、 scanf("%d",&a[i]); printf("\n); for(j=1;j<=9;j++) for(i=1;i<=10-j;i++) if ( a[i]>a[i+1] ) {t=a[i];a[i]=a[i+1];a[i+1]=t;} printf("the sorted numbers :\n); for(i=1;i<11;i++) printf("%d",a[i]); } 四、编写程序 (1)输入一个字符,如果是大写字母,则将其转换为小写字母输出,否则直接输出。 #incl
13、ude "stdio.h"
main( )
{ char ch;
ch=getchar( );
if (ch>='A' && ch<='Z')
ch=ch+32;
printf("%c\n",ch );
}
(2)比较两个整数的关系(大于、小于、等于)。
#include
14、x > y ) printf ("X>Y\n");
else printf ("X 15、d is the times of 5 \n",x) ;
}
else
printf("%d is an even \n",x) ;
}
(4)已知x=100,y=15,要求输入一个算术运算符(+、-、* 或 / ),并对x和y进行指定的算术运算(要求用switch语句实现)。
#include "stdio.h"
main( )
{
float x=100,y=15,z; char op;
op=getchar( );
switch (op)
{
16、case '+': z=x+y; break;
case '-': z=x-y; break;
case '*': z=x*y; break;
case '/': z=x/y; break;
default: z=0;
}
if((int)z!=0) printf("%f%c%f=%f\n",x,op,y,z);
else printf ("%c is not an operator\n",op);
}
(5)输入年份,判别该年是 17、否为闰年。
main( )
{ int year, leap ;
scanf("%d", &year);
if (year%4==0 && year%100!=0)
leap=1;
else if (year%400==0)
leap=1;
else
leap=0;
if (leap == 1)
printf("%d is a leap year \n", year);
else
printf("%d is not a leap year \n", year);
}
6






