以下选项中,不能作为合法常量的是 __________
A)1.234e04 B)1.234e0.4
C)1.234e+4 D)1.234e0
答案:B
科学技术法e后面不能使用小数
以下定义变量并初始化错误的是_____________。
A) char c1 = ‘H’ ;
B) char c1 = 99 ;
C) char c1 = ‘2’;
D) char c1 = 09 ;
答案:D
A、C正确定义,B在ASCII码范围内,D输入的数字可能是八进制,但是八进制没有大于7的数字,所以,D是错误的
以下定义变量及初始化错误的是__________。
A) int a=3,b;
B) int a, b=3;
C) int a, b, c=d=3;
D) int a=3, b=3;
答案:C
分析:逗号的作用是从左到右依次执行,c=d=3,会被先执行c=d,但是d没有被定义,所以出错
设有如下程序:( )
#include "stdio.h"
int main()
{
int a, b;
a = 077;
b= a/5;
printf( "%d %d \n" , a , b);
}
A) 77, 15.2
B) 77, 15
C) 63, 12.2
D) 63, 12
答案:C
分析:077是八进制数字,实际是63
有以下程序
main()
{ int m,n,p;
scanf("m=%dn=%dp=%d",&m,&n,&p);
printf("%d%d%d\n",m,n,p);
}
若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是 _______
A)m=123n=456p=789
B)m=123 n=456 p=789
C)m=123,n=456,p=789
D)123 456 789
答案:A
分析:输入要求格式一致,否则无法识别
以下程序的正确结果是________
#include<stdio.h>
void num()
{
extern int x,y; int a=15,b=10;
x=a-b;
y=a+b;
}
int x, y;
int main()
{
int a=7,b=5;
x=a+b;
y=a-b;
num();
printf("%d,%d\n",x,y);
}
A) 12,2 B) 不确定 C) 5,25 D) 1,12
答案:C
分析:xy是全局变量,当函数继承时,也就是直接引用了,会计算出结果,全局变量不会随函数结束而消失
有以下程序
#include <stdio.h>
int fun( )
{
static int x=1;
x*=2;
return x;
}
int main( )
{
int i, s=1;
s*= fun();
s*=fun();
s*=fun();
printf("%d\n",s);
}
程序运行后的输出结果是
A)8 B)16 C)32 D)64
答案:D
static时静态变量,生命周期是跟着整个程序,不会随函数结束而释放,所以fun运行三遍,结果是2,4,8,当其s三次的值分别为2,8,64
以下程序运行时若从键盘输入:10 20 30<回车>。输出结果是
#include <stdio.h>
main()
{ int i=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
printf("%d%d%d\n",i,j,k);
}
答案:10 30 0
分析:%*d是跳过当前输入的值,使一个输入无效化,也就是当输入在输入三个值时,第二个值无效化,记录第三个值,所以scanf记录了i和j的值,k并没有赋值
以下程序运行的结果是___________。
main( ){
int a=1, b=2, c=3;
++a; //a=a+1 //a = 2
c+=++b; //b = 3 c = 6
{
int b=4, c;
c=b*3; //c = 12
a+=c; //a = 14
printf(“first: %d,%d,%d\n”, a,b,c); //14,4,12
a+=c; //a = 26
printf(“second: %d,%d,%d\n”, a,b,c); //26,4,12
}
printf(“third: %d,%d,%d\n”, a,b,c); //26,3,6
}
答案:first:14,4,12 second:26,4,12 third:26,4,12
分析:要明确局部变量,在内部的{}中定义了b和c对main函数来说是局部变量,所以b,c在{}里面的改变不影响外面的值,所以在第三次输出中b,c分别是3,6
编写程序,用getchar函数读入两个字符给变量c1、c2,然后分别用putchar函数和printf函数输出这两个字符,并思考一下以下问题
(1)变量c1、c2应定义为字符型或整型?还是二者皆可
(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?
(3)整型变量与字符型变量是否在任何情况下都可以互相替换?
1】理论上都可以,因为字符可以用整形的ASCII码表示,但是字符有范围限制,用int可能会越界,导致输出错误
2】只能使用printf函数,因为putchar只能输出字符
3】与第一题类似,保证范围正确,都可以相互转换
使列举static关键字的几个作用
限制作用域,延长生命周期,默认初始值为0