C语言历年真题难点整理.docx
- 文档编号:6960786
- 上传时间:2023-01-13
- 格式:DOCX
- 页数:20
- 大小:241.35KB
C语言历年真题难点整理.docx
《C语言历年真题难点整理.docx》由会员分享,可在线阅读,更多相关《C语言历年真题难点整理.docx(20页珍藏版)》请在冰豆网上搜索。
C语言历年真题难点整理
1.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率。
2.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则。
3.数据库设计的根本目标是要解决数据共享问题。
4.T=RUS:
并操作,T为R和S两者之和;T=R∩S:
交操作,T为两者公共部分。
5.每个函数都可以被单独编译。
6.C语言中,随机文件以二进制代码形式存储数据。
7.C语言中的文本文件以ASCII码形式存储数据。
8.charc=32;正确。
9.(int)x不要写成int(x)。
10.若有语句:
char*line[5];,以下叙述中正确的是(A)
A)定义line是一个数组,每个数组元素是一个基类型为char的指针变量
B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
C)定义line是一个指针数组,语句中的*号称为间址运算符
D)定义line是一个指向字符型函数的指针
11.设函数fun的定义形式为
void fun(char ch, float x ) { … }
则以下对函数fun的调用语句中,正确的是(D)
A)fun("abc",3.0); B)t=fun('D',16.5);
C)fun('65',2.8); D)fun(32,32);
'65'显然是错的,在ASCII码里,能用单引号表示字符的只有‘0’-‘9’
A“abc“表示的是字符串,所以不符合
B,因为定义的是void,所以没有return因此没有返回值,所以不能赋值
C,上面刚刚说了‘65’没有这样的说法
D是对的。
后面的32可以自动转成32.00000,而32在字符里可以转成对应的ASCII码。
12.有以下程序
#include
main() {
char c1='1',c2='2';
c1=getchar();
c2=getchar();
putchar(c1);
putchar(c2);
}
当运行时输入:
a<回车>后,以下叙述正确的是(A)
A)变量c1被赋予字符a,c2被赋予回车符
B)程序将等待用户输入第2个字符
C)变量c1被赋予字符a,c2中仍是原有字符2
D)变量c1被赋予字符a,c2中将无确定值
getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab)。
13.有以下程序
void sum(int a[])
{ a[0] = a[-1]+a[1]; }
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10};
sum(&a[2]);
printf("%d\n", a[2]);
}
程序运行后的输出结果是(A)
A)6 B)7 C)5 D)8
13.在长度为64的有序线性表中进行顺序查找,最环境情况下需要比较的次数为____64____。
注:
线性查找也称顺序查找,最坏情况下,所需比较次数n(表长)。
14.对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失。
15.一个关系表的行称为(记录)。
16.一个关系的属性名表称为关系模式。
16.C语言中没有专门的字符串变量,要存放字符串,必须使用字符数组,即用一个字符型数组来存放一个字符串,数组中每个元素存放一个字符。
14.有以下程序
void swap1(int c0[], int c1[])
{ int t ;
t=c0[0]; c0[0]=c1[0]; c1[0]=t;
}
void swap2(int *c0, int *c1)
{ int t;
t=*c0; *c0=*c1; *c1=t;
}
main()
{ int a[2]={3,5}, b[2]={3,5};
swap1(a, a+1); swap2(&b[0], &b[1]);
printf("%d %d %d %d\n",a[0],a[1],b[0],b[1]);
}
程序运行后的输出结果是(D)
A)3 5 5 3 B)5 3 3 5 C)3 5 3 5 D)5 3 5 3
15.有以下程序
# include
void f(char *s, char *t)
{ char k;
k=*s; *s=*t; *t=k;
s++; t--;
if (*s) f(s, t);
}
main()
{ char str[10]="abcdefg", *p ;
p=str+strlen(str)/2+1;
f(p, p-2);
printf("%s\n",str);
}
程序运行后的输出结果是(B)【交换的是*s和*t指向的值,不是*s和*t本身】
A)abcdefg B)gfedcba C)gbcdefa D)abedcfg
16.在进行模块测试时,要为每个被测试的模块另外设计两类模块:
驱动模块和承接模块(桩模块)。
其中【(驱动模块)】的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。
17.一棵二叉树第六层(根结点为第一层)的结点数最多为【32】个。
2k-1
18.以下程序运行后的输出结果是 【1】 。
main() {
int a=1,b=2,c=3;
if(c=a)/*(c==a)才为2,否则为赋值c=a=1*/
printf("%d\n",c);
else
printf("%d\n",b);
18.若有定义:
char*x=“abcdefghi”;,以下选项中正确运用了strcpy函数的是___D_____。
A)chary[10];strcpy(y,x[4]);
B)chary[10];strcpy(++y,&x[1]);
C)chary[10],*s;strcpy(s=y+5,x);
D)chary[10],*s;strcpy(s=y+1,x+1);
注:
A不对。
x[4]不代表地址B不对。
数组名自身不能被++如果++y,相当于y=y+1,此时首地址y改变。
那么不再是原来的数组存储地址。
会出错;
C,错的。
y+5不够接收x的字符D是对的。
从第二个字符开始接收
18若有以下函数首部
intfun(doublex[10],int*n)
则下面针对此函数声明语句中正确的是____D____。
A)intfun(doublex,int*n);B)intfun(double,int);
C)intfun(double*x,intn);D)intfun(double*,int*);.
注:
说明第一个参数是一个数组,大小为10,所以传入的应该是数组首地址或者指向数组的指针。
第二个参数比较明显,传的是指针。
19.有以下程序
# include
struct STU
{ char name[10];
int num; };
void f(char *name, int num)
{ struct STU s[2]={{"SunDan",20044},{"Penghua",20045}};
num = s[0].num;
strcpy(name, s[0].name);
}
main()
{ struct STU s[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;
p=&s[1]; f(p->name, p->num);
printf("%s %d\n", p->name, p->num);
}
程序运行后的输出结果是(A)
A)SunDan 20042 B)SunDan 20044
C)LiSiGuo 20042 D)YangSan 20041
20.以下程序运行后的输出结果是 【220.000000】
main()
{ char c; int n=100;
float f=10; double x;
x=f*=n/=(c=50);
printf("%d %f\n",n,x);
}
*号后面必须要有数字,*号后面没有数字这说明现在还不是四则运算的时候,你还得从右向左代。
比如到n/=50还不行,你还得代到n=n/50.然后这样再按四则运算的优先来算。
就是n/50=2
21.已有定义:
double *p;,请写出完整的语句,利用malloc函数使p指向一个双精度型
的动态存储单元p=(double*)malloc(sizeof(double))。
22.数据的存储结构是指数据的逻辑结构在计算机中的表示。
23.栈有顺序存储结构和链式存储结构。
24.以下叙述中错误的是(C)
A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B)数组名代表的是数组所占存储区的首地址,其值不可改变
C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D)可以通过赋初值的方式确定数组元素的个数
注释:
A:
C中能够用数组名对数组进行整体输入或输出的就只有字符数组即字符串而已...
B:
数组名是指针常量,不可改变,既然a是常量,所以a++是无法实现的。
C:
越界是非法的,但是不会报错,C语言中系统不会自动给出“下标越界”的出错信息,
但是其他语言有的有,如VB就有。
25.有以下程序
#include
void WriteStr(char *fn, char *str)
{ FILE *fp;
fp=fopen(fn,"w"); fputs(str,fp); fclose(fp);
}
main()
{ WriteStr("t1.dat","start");
WriteStr("t1.dat","end");
}
程序运行后, 文件t1.dat中的内容是(end)书P333打☆。
26.isdigit:
功能:
判断字符c是否为数字.
27.在两种基本测试方法中, 【白盒】测试的原则之一是保证所测模块中每一个独立路径至少要执行一次.
26.以下程序运行时若从键盘输入:
10 20 30<回车>。
输出结果是10300。
#include
main()
{ int i=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k); printf("%d%d%d\n",i,j,k);
}
注:
在输入时scanf中%*d表示跳过此项,也就是说,i接受值为10,j跳过20的数接受的是30
k根本没有接受值因为应该是初始值0。
输入整数时,空格不会输入,但%c就会输入,而且遇空格认为数据输入结束。
27.以下程序运行后的输出结果是abcbcc。
#include
main()
{ char ch[]="abc",x[3][4];int i;
for(i=0;i<3;i++) strcpy(x[i],ch);
for(i=0;i<3;i++) printf("%s",&x[i][i]);
print("\n");
}
28.以下程序运行后的输出结果是4599
main()
{inta=3,b=4,c=5,t=99;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 历年 难点 整理