一、选择题
1、
算法的复杂度主要包括算法的时间复杂度和空间复杂度,算法的时间复杂度是指__________。
A.算法程序中的指令条数 B.算法程序的长度
C.算法程序所占的存储空间 D.算法执行过程中所需要的基本运算次数
2、
C语言程序的基本单位是__________。
A.字节 B.函数 C.语句 D.字符
3、
若变量a,i已正确定义,且i己正确赋值,合法的C语言语句是__________。
A.a=int(i); B.a==0 C.++i; D.a=a++=2;
二、填空题
1、
在C语言中,文件的打开方式决定对该文件所能进行的操作权限,文件打开方式参数_____ 1 _____以只读方式打开一个文本文件,_____ 2 _____ 以写方式打开一个文本文件,_____ 3 _____ 以读/写方式打开一个文本文件,_____ 4 _____以在文件后面添加数据方式打开文本文件。
三、综合应用题
1、
输入三角形的三边a、b、c,判断a、b、c能否构成三角形,如果能够构成三角形则判断为何种类型的三角形:等腰三角形、等边三角形、直角三角形、等腰直角二角形、一般三角形。
说明:
―般三角形:两条边长之和大于第三条边长;
等腰三角形:两条边长相等;
等边三角形:三条边长相等;
直角三角形:两条边长的平方和等于第三条边长的平方。
#include <stdio.h>
#include <math.h>
main()
{
float a,b,c;
printf("请输入三角形边长");
scanf("%f%f%f",&a,&b,&c);
if( _____ 1 _____ )
printf ("不能构成三角形\n");
else
if ( _____ 2 _____ )
if ((a==b)||(b==c)||(c==a))
printf("等腰直角三角形\n");
else
printf ("直角三角形\n");
else
if( _____ 3 _____ )
printf ("等边三角形\n");
else
if ( _____ 4 _____ )
printf ("等腰三角形\n");
else
printf ("一般三角形\n");
}
四、写程序结果
1、
#include <stdio.h>
main()
{
int i=0,j=1,z=2;
if((j++||z++)&&i++);
printf("%d,",i);
printf("%d,%d\n",j,z);
}
运行结果是____________________。
2、
#include <stdio.h>
main()
{
int n='b';
switch(++n)
{
default :
printf ("error");
break;
case 'a':
case 'A':
case 'b':
case 'B':
printf ("pass");
break;
case 'c':
case 'C':
printf ("good");
case 'd':
case 'D':
printf ("luck");
}
}
运行结果是____________________。
3、
#include <stdio.h>
main()
{
int i,j;
for(i=0; i<5; i++)
for(j=1; j<10; j++)
{
if(j==6) break;
if(i<3) continue;
}
printf("j=%d ",j);
printf("i=%d\n",i);
}
运行结果是____________________。
4、
#include <stdio.h>
int f(int x[],int n)
{
int i,r=1;
for(i=0;i<=n; i++)
r=r*x[i];
return r;
}
main()
{
int s,a[]={2,7,3,1,5,4,6,8};
s=f(a,3);
printf("%d\n",s);
}
运行结果是____________________。
5、
#include <stdio.h>
int *f(int *x,int *y)
{
if(*x<*y)
return x;
else
return y;
}
main()
{
int a=6,b=7,*p,*q,*r;
p=&a;
q=&b;
r=f(p,q);
printf("%d,%d,%d",*p,*q,*r);
}
运行结果是____________________。
五、程序填空
1、
函数sum(n)使用递归完成表达式的运算:sum(n)=l*2+2*3+…+n*(n+l)
int sum(n)
{
if(n=l)
return _____ 1 _____;
else
return _____ 2 _____;
}
2、
函数insert(charstrl[],charstr2[],int idx)实现在字符串str1中的第idx个字符后插入字符串str2,如下程序的输出为:abkkkcd
#include <stdio.h>
void insert(char strl[],char str2[],int idx)
{
char *p,*q;
p=strl;
int i=0;
for(i=0; i<idx; i++)
p++;
while(*str2!='\0')
{
q=p;
while(*q!='\0')
_____ 3 _____;
while(q>=p)
{
*(q+1)=*q;
_____ 4 _____ ;
}
q++;
*q=*str2;
str2++;
_____ 5 _____ ;
}
}
main()
{
char a[10]="abcd";
char b[5]="kkk";
insert(a,b,2);
printf("%s",a);
}
六、改错
1、
下面函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。以下程序只允许修改两行。
#include <stdio.h>
void fun (char s[ ])
{
int i=0,j=0;
for( ; s[i]!='\0'; i++)
if(s[i]>='0' & s[i]<='9')
{
s[j]=s[i];
j--;
}
s[j]='\0';
}
2、
函数creatList()用于从键盘读入整数,并根据输入的顺序建立链表,当输入-1时结束键盘读取,链表创建完成,其中-1不存入链表,头节点不存储数据,在main函数中调用0 creatList()函数创建链表,随后遍历链表输出链表所保存的数据。以下程序只允许修改三行。
#incIude <stdio.h>
struct Node
{
int data;
struct Node *next;
};
struct Node *creatList()
{
struct Node p,q,head;
int a;
head=(struct Node *) malloc(sizeof(struct Node));
p=q=head;
printf("Input an integer number,enter -1 to end:\n");
scanf("%d",&a);
while(a!=-1)
{
p=(struct Node *)malloc(sizeof(struct Node));
p->data=a;
q->next=p;
q=p;
p->next=NULL;
scanf("%d",&a);
}
return head;
}
int main()
{
struct Node *head,*p;
head=creatList();
p=head->next;
while(p)
{
printf("%d\n",p->data);
p->next=p;
}
return 0;
}
七、程序设计题
1、
以字符串的形式输入一个浮点数的字符串,通过程序转换成对应的浮点数,需要考虑输入数据的正负。
说明:字符“0”比数字0的ASCII值大48。
#include <stdio.h>
#define N 12
main()
{
char src[N],ch;
int i,count=0,j;
gets(src);
int isPositive=1, isBeforeDecimaIPoint=1;
/*ispositive用于标识正负,isBeforeDecimaIPoint用于标识小数点前后*/
double result=0;
for(i=0; i<N; i++)
{
ch=src[i];
if(ch!='\0')
{
switch(ch)
{
case '-':
isPositive=0;
break;
case'.':
isBeforeDecimaIPoint=0;
break;
default:
if(ch>='0' && ch<='9')
if(isBeforeDecimaIPoint)
_____ 1 _____ ;
else
{
_____ 2 _____ ;
float temp=1;
for( j=0;j<count; j++)
{
_____ 3 _____ ;
}
_____ 4 _____ ;
}
}
}
else
break;
}
if (!isPositive)
_____ 5 _____ ;
printf("%lf",result);
return 0;
}
参考答案:
一、选择题
1—3 D、B、C
二、填空题
1、r、w、r+、a
三、综合应用题
1、(a+b<=c)||(a+c<=b)||(b+c<=a)
2、(a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a)
3、(a==b)&&(a==c)
4、(a==b)||(b==c)||(c==a)
四、写程序结果
1、 1,2,2 2、 goodluck 3、 j=6 i=5 4、 42
5、 6,7,6
五、程序填空
1、 1*2 2、sum(n-1)+n*(n+1)
3、 q++ 4、q-- 5、
六、改错
1、
L06 if(s[i]>='0' && s[i]<='9')
L09 j++;
2、
L01 #include <stdio.h>
L09 struct Node *p, *q, *head;
L34 p=p->next;
七、程序设计题
1、 result=result*10+(ch-'0') 2、 count++
3、 temp=temp/10 4、 result+=temp*(ch-'0')
5、 result=-result