四川大学C语言期末试题最新版.docx
《四川大学C语言期末试题最新版.docx》由会员分享,可在线阅读,更多相关《四川大学C语言期末试题最新版.docx(8页珍藏版)》请在冰豆网上搜索。
四川大学C语言期末试题最新版
一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内。
每小题1分,共16分)
1.对于一个正常运行的C程序,以下叙述中正确的是A 。
A)程序的执行总是从main函数开始,在main函数结束
B)程序的执行是从程序的第一个函数开始,在main函数结束
C)程序的执行是从main函数开始,在程序的最后一个函数中结束
D)程序的执行是从程序的第一个函数开始,在程序的最后一个函数中结束
2.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是B 。
A)字母 B)减号 C)数字字符 D)下划线
3.下列定义变量的语句中错误的是 C 。
A)int_if;B)doubleIf;C)charforchD)floatx&;
4.以下选项中可作为C语言合法常量的是 A 。
A)-80B)-0819C)-1el.0D)-168.0e
5.以下能正确定义且赋初值的语句是 。
A)inta=b=16;B)charc=97;
C)floatx=x+1.8;D)doublex=1.23E2.0
6.设有定义:
“inta=1,b=6,c=8;”,则以下选项中值为0的表达式是 。
A)(!
a==1)&&(!
b==0)B)(a
c||!
0
C)a&&bD)a||b
7.下列叙述正确的是 D 。
A)break语句只能用于switch语句
B)break语句只能用于循环语句
C)break语句必须与switch语句中的case配对
D)break语句可用于switch语句和循环语句中
8.在以下给出的表达式中,与while(E)中的“(E)”不等价的表达式是 C 。
A)(E!
=0)B)(E>0||E<0)C)(E==0)D)(!
E==0)
9.以下数组定义中错误的是 B 。
A)intx[][3]={0,1,2,3};
B)intx[2][3]={{1,2},{3,4},{5,6}};
C)intx[][3]={{1,2,3},{4,5,6}};
D)intx[2][3]={1,2,3,4,5,6};
10.在C语言中,函数返回值的类型最终取决于 。
A)函数定义时的函数首部所说明的函数类型
B)return语句中表达式值的类型
C)调用函数时的实参的类型
D)函数定义时形参的类型
11.设已有定义:
“floata;”,则以下对指针变量p进行定义且赋初值的语句中正确的是 。
A)float*p=1068;B)int*p=(int)a;
C)floatp=&a;D)float*p=&a;
12.若有说明语句:
“float*p,a;”,则能通过scanf语句正确给输入项读入数据的程序段是 。
A)*p=&a;scanf("%f",p);B)*p=&a;scanf("%lf",p);
C)p=&a;scanf("%f",*p);D)p=&a;scanf("%f",p);
13.若有以下说明和定义:
uniondt
{
shortinta;
charb;
doublec;
}data;
以下叙述中错误的是 。
A)data的每个成员起始地址都相同
B)变量data所占的内存字节数与成员c所占字节数相等
C)程序段“data.a=6;printf("%f\n",data.c);”输出结果为6.000000
D)data可以作为函数的实参
14.以下叙述中正确的是 。
A)在源文件的一行上可以有多条预处理命令
B)宏名必须用大写字母表示
C)宏替换不占用程序的运行时间
D)前面都是错语的
15.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为 。
A)EOFB)1C)0D)NULL
16.以下叙述中错误的是 。
A)改变函数形参的值,不会改变对应实参的值
B)函数可以返回地址值
C)可以给指针变量赋一个整数作为地址值
D)函数的形参可为指针类型
二、填空题(第小题2分,共14分)
1.已定义“charch=6;inti=6,j;”,执行“j=ch||i++”以后,i的值为 。
2.设有定义语句:
“inta[][8]={{0},{1},{2}};”,则数组元素a[1][2]的值为 。
3.已知inta=3,a的地址为1008,则&a=。
4.设有定义:
“FILE*fp;”,请将以下打开文件的语句补充完整,以便可以向文本文件readme.txt的最后续写内容。
fp=fopen)("readme.txt"," ");
5.已有定义:
“int*p;”,请写出完整的语句,利用malloc函数使p指向一个整型的动态存储单元 。
6.声明外部变量的关键字是extrun。
7.int类型的变量的值只能是所指定的若干名字之一。
三、阅读下面各程序,写出运行结果(每小题5分,共30分)
1.有以下程序:
#include
intmain(void)
{
charal='M',a2='m',a3='u';
printf("%c\n",(al,a2,a3));
return0;
}
运行结果是:
2.有以下程序:
#include
intmain(void)
{
intk=6;
while(--k)printf("%d",k-=4);
return0;
}
运行结果是:
3.有以下程序:
#include
intmain(void)
{
inti=-1;
doprintf("%d",i);while(++i);
printf("%d\n",i);
return0;
}
运行结果是:
4.有以下程序:
#include
doublefun1(doublea){returna*a;}
intfun2(doublex,doubley)
{
doublea=fun1(x),b=fun1(y);
returna+b;
}
intmain(void)
{
intw=fun2(1.3,2.0);
printf("%d\n",w);
return0;
}
运行结果是:
5.有以下程序:
#include
intf(intn)
{
if(n==1)return1;
elsereturnn+f(n-1);
}
intmain(void)
{
printf("%d\n",f(5));
return0;
}
运行结果是:
6.有以下程序:
#include
voidpoint(char*p){p+=5;}
intmain(void)
{
charb[]={'a','b','c','d','f','g'},*p=b;
point(p);
printf("%c\n",*p);
return0;
}
运行结果是:
四、程序填空题(每空2分,共12分)
1.以下程序的功能是:
输出a、b、c三个变量中的最小值。
将程序补充完整。
#include
intmain(void)
{
inta,b,c,t1,t;
scanf("%d%d%d",&a,&b,&c);
t=a
[1];
t=c[2];
printf("%d\n",t);
return0;
}
2.以下程序调用invert函数按逆序重新放置a数组中元素的值。
a数组中元素的值在main函数中读入。
将程序补充完整。
#include
#defineN10
voidinvert(ints[],inti,intj)
{
if(i{
intt=s[i];
s[i]=s[j];
s[j]=t;
invert(s,[3],j-1);
}
}
intmain(void)
{
inta[N],i;
for(i=0;iscanf("%d",[4]);/*输入a[i]*//
invert(a,0,N-1);
for(i=0;iprintf("%d",a[i]);
printf("\n");
return0;
}
3.下面的程序通过函数average计算数组中各元素的平均值,将程序补充完整。
#include
floataverage(inta[],intn)
{
inti;
floats=0;
for(i=0;is=s+[5];
returns/[6];
}
intmain(void)
{
inti,a[5]={2,4,6,8,10};
floatmean;
mean=average(a,5);
printf("mean=%f\n",mean);
return0;
}
五、编程题(每小题14分,共28分)
1.输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
2.编程实现从键盘上输入一个字符串,把此字符串中的小写字母转换成大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。