资源描述
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、 设有以下宏定义:
#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, 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;
printf ("%d\n", computing (n++,m));
printf ("%d\n", computing (++n,m));
}
(3)main( ) 运行结果:4
{int a=2, b=, c=2;
if(a<b)
if(b<0) c++;
else c+=3;
else c*=2
printf ("%d\n",c);
}
(4)#include "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_digit 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 "); 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: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<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)有两个数,请将较大的那个数输出。程序如下:
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( )
{ 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++)
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)输入一个字符,如果是大写字母,则将其转换为小写字母输出,否则直接输出。
#include "stdio.h"
main( )
{ char ch;
ch=getchar( );
if (ch>='A' && ch<='Z')
ch=ch+32;
printf("%c\n",ch );
}
(2)比较两个整数的关系(大于、小于、等于)。
#include <stdio.h>
main( )
{
int x, y;
printf ("Enter integer X and Y:");
scanf ("%d%d", &x, &y);
if ( x != y )
if ( x > y ) printf ("X>Y\n");
else printf ("X<Y\n");
else printf ("X=Y\n");
}
((3)输入一个数,判断它是奇数还是偶数,如果是奇数则进一步判断它是否为5的倍数。
main( )
{
int x;
scanf ("%d",&x);
if (x%2 != 0)
{
printf("%d is an odd \n",x) ;
if (x%5==0)
printf("%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)
{
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)输入年份,判别该年是否为闰年。
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
展开阅读全文