单选题
1、C语言中下列叙述正确的是____D__。
A:不能使用do-while语句构成的循环
B:do-while语句构成的循环,必须用break语句才能退出
C:do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D:do-while语句构成的循环,当while语句中的表达式值为零时结束循环
知识点:知识点/循环结构程序设计/WHILE和DO WHILE循环结构
2、下列描述中不正确的是___B C___。
A:字符型数组中可以存放字符串
B:可以对字符型数组进行整体输入、输出
C:可以对整型数组进行整体输入、输出
D:不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用
3、以下程序的输出结果是____D__。
main()
{ int x=10,y=10,i;
for(i=0;x>8 ;y=++i)
printf("%d %d ",x--,y);
}
A:10 1 9 2
B:9 8 7 6
C:10 9 9 0
D:10 10 9 1
知识点:知识点/循环结构程序设计/FOR循环结构
4、以下程序的输出结果是__B__?__。
main()
{ char a[10]={'1','2','3','4','5','6','7','8','9',0},*p;
int i ;
i=8;
p=a+i;
printf("%s\n",p-3);
}
A:6
B:6789
C:'6'
D:789
知识点:知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数
5、能正确表示a和b同时为正或同时为负的逻辑表达式是_D___b__。
A:(a>=0||b>=0)&&(a<0|| b<0)
B:(a>=0&&b>=0)&&(a<0&&b<0)
C:(a+b>0)&&(a+b<=0)
D:a*b>0
知识点:知识点/基本语句/表达式语句,空语句,复合语句
6、以下程序的输出结果是__A____。
main()
{ int n=4;
while(n--)printf("%d ",--n);
}
A:2 0
B:3 1
C:3 2 1
D:2 1 0
知识点:知识点/循环结构程序设计/WHILE和DO WHILE循环结构
7、以下程序的输出结果是___D___。
main()
{ int k=17;
printf("%d,%o,%x\n",k,k,k); (十进制 八进制 十六进制)
}
A:17,021,0x11
B:17,17,17
C:17,0x11,021
D:17,21,11
知识点:知识点/数据类型及其运算/C的数据类型及其定义方法
8、若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是_____A_。
A:*p=&a;scanf("%ld",p);
B:p=(long *)malloc(8);scanf("%ld,p);
C:scanf("%ld",p=&a);
D:scanf("%ld",&a);
知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用
9、以下选项中,能定义s为合法的结构体变量的是___A___。
A:typedef struct abc
{ double a;
char b[10];
} s;
B:struct
{ double a;
char b[10];
}s;
C:struct ABC
{ double a;
char b[10];
}
ABC s;
D:typedef ABC
{ double a;
char b[10];
}
ABC s;
10、请读程序:
#include <stdio.h>
main()
{
int a, b ;
for(a = 1 , b = 1 ; a <= 100 ; a++) {
if(b >= 20) break ;
if (b%3 == 1) { b += 3 ; continue ; }
b -= 5 ;
}
printf("%d\n", a) ;
}
上面程序的输出结果是____B__。
A:7
B:8
C:9
D:10
知识点:知识点/选择结构程序设计/用SWITCH语句实现多分支选择结构
11、请选出合法的C语言赋值语句___D___。
A:a=b=58
B:i++;
C:a=58,b=58
D:k=int(a+b);
12、若x和y都是int型变量,x=100、y=200,且有下面的程序片段
printf("%d",(x,y) );
上面程序片段的输出结果是___A___。
A:200
B:100
C:100 200
D:输入格式符不够,输出不确定的值
13、若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是_A____。
A:pb=&x;
B:pb=x;
C:*pb=&x;
D:*pb=*x
14、设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是__A____。
A:'a'&&'b'
B:a<=b
C:a||+c&&b-c (a=3,已经为真,那么整个表达式就为真,不再判断后面的后面的实际上是(c&&b)-c=1-5=-4 )
D:!((a<b)&&!c||1) (两个都为真才是真)
15、有程序如下:
typedef struct link { double score; struct link *next; };
void main ( ) {
link *ps, qs, rs;
ps = ( struct link *) malloc (sizeof (struct link) );
ps->score = 81.5; qs.score = 55.5; rs.score = 68.0;
ps->next = &qs ; qs.next =&rs;
printf ( " %d \n ", ps->score + ps->next->score);
}
上面程序的输出结果是__149.5____。
--------------------------------------------------------------------
程序设计
1.定义函数double fact( int n) 计算n!的值。
#include<stdio.h>
double fact(int n)
{
int result;
if(n==1||n==0)
result=1;
else
result=n*fact(n-1);
return result;
}
main()
{
int b,c;
printf("shu ru shuzi\n");
scanf("%d",&b);
c=fact(b);
printf("jieguo %d\n",c);
}