本文目录一览:
- 1、有关C语言试题
- 2、C语言程序设计试题
- 3、C语言程序设计进阶试题
- 4、C语言 指针进阶问题;
- 5、中国大学moocC语言进阶里的一道题
有关C语言试题
你看这行吗? C语言试题(10)选择题(50×2=100)1.以下叙述正确的是( )。A)在C程序中,main函数必须位于程序的最前面B)C程序的每行中只能写一条语句C)C语言本身没有输入输出语句D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误2.C语言规定:在一个源程序中,main函数的位置( )。A)必须在最开始 B)必须在系统调用的库函数的后面C)可以任意 D)必须在最后3.在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为( )。A)charint 1ong int=floatdoubleB)char=int1ong int=floatdoubleC)char int 1ong int=float=doubleD)char=int =1ong int=floatdouble4.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( )。 A)7 B)8 C)6 D)25.下面四个选项中,均是C语言关键字的选项是( )。A)auto B)switch C)signed D)if enum typedef union struct include continue scanf type6.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )。 A)必须为字母 B)必须为下划线 C)必须为字母或下划线 D)可以是字母,数字和下划线中任一种字符7.下面四个选项中,均是不合法的转义字符的选项是( )。 A)'\'' B)'\1011' C)'\011' D)'\abc' '\\' '\' '\f' '\101'8.若有代数式3ae/bc,则不正确的C语言表达式是( )。 A) a/b/c*e*3 B)3*a*e/b/c C)3*a*e/b*c D)a*e/c/b*39.已知各变量的类型说明如下: int i=8,k,a,b; unsigned long w=5; double x=1.42,y=5.2;则以下符合C语言语法的表达式是( )。A) a+=a-=(b= 4)*(a=3) B)a=a*3=2C) x%(-3) D)y=f1oat(i)10.以下正确的叙述是( )。A)在C程序中,每行中只能写一条语句B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数C)在C程序中,无论是整数还是实数,都能被准确无误地表示D)在C程序中,%是只能用于整数运算的运算符11.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,c2中的值为( )。A)D B)68 C)不确定的值 D)C12.若以下变量均是整型,且num=sum=7;则执行表达式sum=num++,sum++,++num后sum的值为( )。 A) 7 B) 8 C) 9 D) 1013.若有说明语句:char c='\72'则变量c( )。A)包含1个字符 B)包含2个字符C)包含3个字符 D)说明不合法,c的值不确定14.下面四个选项中,均是非法常量的选项是( )。A)'as' B)'\\' c)-0xl8 D)0xabc -0fff '\01' 01177 '\0' '\0xa' 12,456 0xf "a"15.设变量n为f1oat类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五人运算的表达式是( )。A) n=(n*100+0.5)/100.0 B)m=n*100+0.5 ,n= m/100.0C) n=n*100+0.5/100.0 D)n=(n/100+0.5)*100.016.设C语言中,一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为( )。A) 0~255 B) 0~32767 C) 0~65535 D) 0~214748364717.若有以下定义,则能使值为3的表达式是( )。int k= 7,x =12;A) x%=(k%= 5) B) x%=(k一k%5)C) x%=k- k%5 D) (x%=k)一(k%=5)18.putchar函数可以向终端输出一个( )。A)整型变量表达式值B)实型变量值C)字符串D)字符或字符型变量值19.printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。如果字符串长度小于5,则输出按方式( )。A)从左起输出该字串,右补空格B)按原字符长从左向右全部输出C)右对齐输出该字串,左补空格D)输出错误信息20.若x ,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是( )。A) scanf(" %d%lx,%le",x,y,z);B) scanf("%2d * %d%lf"x,y,z ); C) scanf("%x %* d%o",x,y);D) scanf("%x%o%6.2f",x,y,z); 21.已有定义int x; f1oat y;且执行scanf("%3d%f",x,y);语句,若从第一列开始输入数据12345 678(回车),则x 的值为( )。A)12345 B)123 C) 45 D) 345 22.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A,B,当从第一列开始输入数据时,正确的数据输入方式是( )。int a1,a2; char c1,c2;scanf("%d%d",a1,a2);scanf("%c%c",c1,c2); A) 1020ABCR B)10 20CRABCR C)10 20 ABCR D)10 20ABCR23.以下能正确地定义整型变量a,b和c 并为其赋初值5的语句是( )。 A)int a=b= c= 5; B) int a,b, c= 5; C)a= 5,b=5,c=5; D) a= b= c=5;24.已知ch是字符型变量,下面正确的赋值语句是( )。A) ch= '123'; B) ch= '\xff'; C) ch= '\08'; D) ch="\";25.设x 、y均为f1oat型变量,则以下不合法的赋值语句是( )。A)++x; B)y=(x%2)/10; C) x*=y+8; D)x=y=0;26.逻辑运算符两侧运算对象的数据类型( )。 A)只能是0或1 B)只能是0或非0正数 C)只能是整型或字符型数据 D)可以是任何类型的数据27.下列运算符中优先级最高的是( )。 A) B)十 C) D)!=28.设x,y 和z是int型变量,且x = 3,y= 4,z= 5,则下面表达式中值为0的是( )。 A)'y''y' B)x =y C) x||y+zy-z D) !(xy)!z||1)29.判断char型变量c1是否为小写字母 正确表达式为( )。 A)' a' =cl=' z' B) (cl = a)(cl=z) C)(' a' =cl)||(' z' = cl) D)(c1='a')(cl='z')30.执行以下语句后a的值为( )。int a,b,c;a= b= c= 1;++a||++b++c A)错误 B) 0 C) 2 D) 131.以下符合c语言语法的赋值表达式是( )。A)d=9+e+f=d+9 B)J=9+e,f=d+9C)d=9+e,e++,d+9 D)d=9+e++=d+732.若有代数式3ae/bc,则不正确的c语言表达式是( )。A)a/b/c*e*3 B)3*a*e/b/cC)3*a*e/b*c D)a*e/c/b*e33.已知各变量的类型说明如下int k,a,b; unsigned long w=5double x=1.422;则以下不符合c语言语法的表达式是( )。A)x%(-3) B)w+=-2C)k=(a=2,b=3,a+b) D)a+=a-=(b=4)x(a=3)34.已知字母A的ASCII码为+进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,c2中的值为( )。A)D B) 68C)不确定的值 D)C35.若有以下定义:int a,b ;float x;,则正确的赋值语句是( )。A)a=1,b=2, B)b++;C)a=b=5 D)b=int(x)36.c语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )。A)必须为字母B)必须为下划线C)必须为字母或下划线D)可以是字母、数字和下划线中任-种字符37.在c语言中,char型数据在内存中的存储形式是( )。A)补码 B)反码 C)原码 D)ASCII码38.若有说明语句:char c='72';则变量c( )。A)包含1个字符 B)2个字符C)包含3个字符 D)说明不合法,c的值不确定39.己知各变量的类型说明如下:int i=8,k,a,b;unsigned long w=55double x=1.42,y=5.2则以下符合c语言语法的表达式是( )。A)+=a-=(b=4)*(a=3) B)a=a*3=2C)x%(-3) D)y=float(i)40.若以下变量均是整型,且num=sum=7;则执行表达式sum=num++, sum++,++num后sum的值为( )。A)7 B)8 C)9 D)1041.若有定义:int a=7;folat x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是( )。A)2.500000 B)2.750000 C)3.500000 D)0.00000042.设有说明:char w;int x,float y;double z; 则表达式w*x+z-y值的数据类型为( )。A)float B)char C) int D)double43.设变量n为float类型,m为int 类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是( )。A)n=(n*100+0.5)/100.0 B)m=n*100+0.5,n=m/100.0C)n=n*100+0.5/100.0 D)n=(n/100+0.5)*100.044.以下关于运算符优先顺序的描述中正确的是( )。A)关系运算符<算术运算符<赋值运算符<逻辑与运算符B)逻辑与运算符<关系运算符<算术运算符<赋值运算符C)赋值运算符<迟辑与运算符<关系运算符<算术运算符D)算术运算符<关系运算符<赋值运算符<逻辑与运算符45.判断char型变量ch是否为大写字母的正确表达式是( )。A) 'A'=ch='Z' B)(ch='A')(ch='Z')C)(ch='A')(ch+'Z') D)('A'=ch)AND('Z'=ch46.下列运算符中优先级最高的是( )。A) B)+ C) D)!=47.执行以下语句后a的值为( )。int a=5,b=6,w=1,x=2,y=3,z=4;(a=wx)(b=yz);A)5 B)0 C)2 D)148.已知 x=43,ch='A',y=0;则表达式(x=ych'B'!y)的值是( )。A)0 B)语法错 C)1 D) "假"49.设x、y和s是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是( )。A)'x''y'B)x=yC)x||y+zy-zD)!((xy)!z50.以下不正确的if语句形式是( )。A) if(xyx!=y)B)if(x==y)x+=y;C)if(x!=y) scanf("%d",x) else scanf("%d",y);D) if(xy){x++;y++;}
C语言程序设计试题
1.代码文件 :包含指令不仅仅限于.h头文件,可以包含任何编译器能识别的C/C++代码文件,包括.c,.hpp,.cpp,.hxx,.cxx等,甚至.txt,.abc等等都可以.
2. 赋值
3. x++
4. p[4] 因为sizeof(int) 的值为4,实际上是定义了一个整形数组
5. if
6. DataType
7. 实参变量
8. weirong18
9. float
10. 33 因为++运算符优先级高于* ,故先计算++y,然后将y的值与3相乘得到33
11. (1) ch='a' ch='z'
(2) (x==0 || x==1) (y=1.0 y=6.0)
12. (1) int array[10] = {9,4,7,49,32,-5};
(2)0 到 9
(3)scanf("%d",array[1]);
(4)array[0] = 39;
(5)array[0] = array[5]+array[3];
C语言程序设计进阶试题
1. a=3,b=2,c=2. 解释: 因为条件为假,if 语句没有执行,即a=b 没有执行。 后面执行语句之后的结果显然的。
2.k=900。 解释: 在语法当中规定,k*=i+j 等价于 k = k*(i+j), 而不等于 k = k*i + j 。 计算的 k = 30*(10+20)= 900 . 这个也是考试的考点哦。
3.非零表示逻辑“真”,零表示逻辑“假”。 这个没什么是铁规定吧。
4.a=60。 这个与第二题是一样的,考的是同样一个问题。
5.输出为3。 解释: C语言中规定整数出整数时候,余数忽略,取整数部分。即 1/2 =0 。4/3 =1。 当然这是在两个变量都定义为int 类型的情况下。 如果一个定义为float 或 double 情况就不一样了,跟普通数学计算一样。
6. (x=y)(y=z) 解释: 两个条件同时成立是表达式为真。 即x=y 同时 y=z 才能成立。
7.
8. 如下:
初始值;
while (条件){
循环体;
循环变量;
};
C语言 指针进阶问题;
你的程序里有几个问题:
1.编程思路和要求的偏差,要求里说明限制字符串的数量不超过10,但对字符串的长度没有限定,在你的程序里通过长度限定为10的text变量来接收输入的字符串,实际上已经把输入字符串的长度限定在了10的范围内;
2.冗余的变量,在主函数里变量a可能原意是保存n的值(n的值在循环里被更改了),即使是这样,在调用函数max_len时:“x=max_len(p,n); ”,传入的第二个参数却不是a,而是已经被改变了的n,这里不再详说,参考后边的程序
3.动态空间的释放,程序中使用指针数组来存储各输入字符串的首地址,在释放这些指针时,需逐个指针进行释放,具体操作见后边的程序
4.函数返回值的设定,建议返回下标,这样方便其它程序对最长字符串进行的可能的其它操作
下边是按照程序要求重写的程序,可以参考,思路是为每个字符串先分配额定的长度,C语言编写,VC编译:
#includestdio.h
#includestring.h
#includestdlib.h
int max_len(char *s[ ], int n)
{
int i,index;
for(index=0,i=1;in;i++)
{
if(strlen(s[index])strlen(s[i])) index =i;
}
return index; //返回的是最长字符串在指针数组中的下标,方便在其他程序里使用
}
int main(void)
{
int i,n;
char *p[10];
printf("输入字符串个数(应小于10):");
scanf("%d",n);
for(i=0;in;i++)
{
p[i] = (char *)malloc(sizeof(char)*100); //为每个字符串分配额定空间:100
printf("输入第%d个字符串:",i);
scanf("%s",p[i]);
}
printf("最长字符串长度为%d\n",strlen(p[max_len(p,n)]));//返回的是标号,再计算其对应字符串长度
for(i=0;in;i++)
{
free(p[i]);//逐个的释放
}
return 0;
}
中国大学moocC语言进阶里的一道题
#include stdio.hchar input1[100];//必须开全局变量!不然会有意外情况。char input2[100];int main() {
char ch;
long l1 = 0;
long l2 = 0;
while ((ch = getchar()) != '\n') {//有空格字符的输入
input1[l1++] = ch;
}
while ((ch = getchar()) != '\n') {
input2[l2++] = ch;
}
int flag = 0;
for (int i = 0; i l2; i++) {
for (int h = 0; h l1; h++) {
if (input1[h] != input2[i + h]) {
break;
}
if (h == l1 - 1) {
printf("%d ", i);
flag = 1;
}
}
}
if (!flag) {
printf("-1");
}
return 0;
}