单位文秘网 2020-08-25 16:53:24 点击: 次
天津工业大学信息与通信工程学院08
《C语言程序设计》期末试卷(A卷)
学号 班级 姓名
大题号
一
二
三
四
五
总分
得分
核分人
一、单选题(每题2分,共30分。请将正确的答案标号画上○)
本大题得分
阅卷人签字
1.C语言关于标识符与关键字的使用,下列叙述不正确的:
A. 标识符可以用于定义变量的名称
B. 标识符可以用于自定义函数的名称
C. 关键字可以用于定义变量的类型
D. 关键字也可以用于定义变量的名称
2. C语句的基本类型有5种,除控制语句、函数调用语句、表达式语句、空语句外,还有一种是:
A. 复合语句 B. 赋值语句 C. 输入语句 D. 输出语句
3. C语言表达式(int)2.52+2.49+1/2的值是:
A. 5.51 B. 5
4.已知a、b都是int型,则运行语句 scanf(”%d%d”,&a,&b);时,如何键入不能使a、b得到的值分别是2和3 ?
A. 2 3<回车> B. 2 3<回车>
C. 2<回车>3<回车> D. 2,3<回车>
5. 已知x是int型且值为15,则C语言表达式0<x<10的值是:
A. 1 B. 0 C. ”是” D. ”非
6. 语句 if(x>=’a’&&x<=’z’)x-=32;的功能是:
A. 若x是字符’a’或是字符’z’,则将其转换为相应的大写字母
B. 若x是小写英文字符,则将其转换为相应的大写字母
C. 若x不是小写英文字符,则将其值自减32
D. 若x不是小写英文字符,则将其值改为32
7. 已知i是char型,则关于语句 for(i=0;i<10;i++);的叙述中,错误的是:
A. 因i不是int型,所以该循环语句的语法错误
B. 循环10次
C. 语句结束后,i的值是10
D. 循环体是一个空语句
8. 语句“printf(“%-10.3f”,3.1415926);”的运行结果是:
A. 输出“-10.3
B. 输出“3.142”
C. 输出“-3.142”
D. 输出“3.142”
9. 已知a是一个char型一维数组名,且该数组内存有一个字符串,p是一个char型指针变量,则语句“p=a+strlen(a);”的作用是:
A. 将指针p指向a数组的最后一个元素
B. 将指针p指向a数组内的字符串的结束标记
C.将指针p内存放a数组的长度
D.将指针p内存放a数组内的字符串的长度
10. 关于“if(表达式) 语句1 else 语句2”语句,下列叙述中,错误的A. 其中的“表达式”,可以是一个关系表达式或逻辑表达式,也可以是一个其他类型的表达式
B. 其中的“语句1”
C. 其中的“语句2”
D. 其中的一对圆括号“( )”有时可以省略
11. 关于数组定义与引用的概念、方法,下列叙述中错误的是:
A. 在函数内部定义int a[N]; ,如此定义时,“N”必须是通过#define定义过的符号常量,而不可以是变量
B. int a[3]={1,2,3}; ,如此定义数组并将其初始化时,数组长度“3”
C.int a[3]; ,如此定义数组a且不给其初始化时,默认a内的各元素得到的初始值均为0
D.定义二维数组、且有初始化时,数组的第二维的长度(总列数)不可以省略
12. 下列常用字符、字符串处理库函数中,无参函数是:
A. gets() B. puts() C. getchar() D. putchar()
13. 关于常量,下列叙述正确的是:
A. “036”表示有效数字是3位的十进制“36
B. 常量“1234”
C. 常量“1e3”与常量“1000
D. 常量“5”可以通过语句“5++;”
14. 关于变量、变量地址、变量访问、间接访问的概念,下列叙述错误的是:
A. 已知a是int型变量,则C程序中“a”表示变量a中存储的值,“&a”表示变量a的存储地址
B. 已知a是int型指针变量,则C程序中“a”表示指针变量a中存储的值,“&a”表示指针变量a的存储地址
C. 已知a是int型指针变量,则C程序中“a”表示指针变量a中存储的地址,“&a”表示指针变量a自身的存储地址
D. 已知a是int型指针变量,则C程序中“*a”表示指针变量a中存储的地址中所存储的值
15. 假设有如下定义:
struct a{int x;float y;}b,c[10],*d;
则有关结构体的类型定义、变量定义、数组定义、访问的基本概念,下列叙述错误的是:
A. “a”是结构体类型名
B. “b”是结构体变量名
C. 数组c内可以同时存放10个int型数值和10个float型数值
D.执行语句“d=c;”后,“d->y”与“c[0].y”不等价
二、填空题(每空3分,共30分)
本大题得分
阅卷人签字
1. 下一程序运行时将输出 ________________________ 。
main()
{ int a=1; a++; ++a; --a; printf("%d",a); getch(); }
2. 下一程序运行时将输出 _____________ 。
int f(int x)
{ return x%x; }
main()
{ int x=5; printf("%d",f(x)); getch(); }
3. 下一程序运行时将输出 _____________ 。
int f(int x)
{ if(x==1) printf("%2d",x);
else { f(x-1);printf("%2d",x%10); }
}
main()
{ int x=5; f(x); getch(); }
4. 下一程序运行时若键入字符串ABCDEFGH,则程序输出 _ _ _ 。
void f(char a[])
{ char b[100]; int i,j,k;
k=strlen(a);
for(i=j=0;i<k; i+=2 ,j++) b[j]=a[i];
b[j]='\0';
strcpy(a,b);
}
main()
{ char c[100]; gets(c); f(c); puts(c); getch(); }
5. 下一程序运行时将输出 _____________ 。
void f(int *p,int *q)
{ *q=*p**p; }
main()
{ int a=3,b; f(&a,&b); printf("%d",b); getch(); }
6. 下一函数f的功能是 _____________________________________。
double f(double x,int n)
{
double m; int i;
for(m=1,i=1;i<=n;i++)m*=10; /*求m等于10的n次方*/
return ((unsigned long)(x*m+0.5))/m;
}
7. 假设N是一个代表正整数的符号常量,问下一函数f的功能是 _____________________________________。
double f(double x[N][N])
{
double sum=0; int i;
for(i=0;i<N;i++) sum+=x[i][i];
return sum/N;
}
8. 下面是一个完整的定积分程序,它计算并输出函数________在区间________上的积分,所使用的算法名称为________。
#include<math.h>
#define N 1000
double f(double x) { return sin(x); }
double f2(double a,double b)
{
int i;
double d,sum;
d=(b-a)/N;
sum=(f(a)+f(b))/2.0;
for(i=1;i<N;i++) sum+=f(a+i*d);
return sum*d;
}
main()
{ printf("%f\n",f2(0.0,3.14159/2)); getch(); }
三、改错题(每题5分,共15分。)
本大题得分
阅卷人签字
1、已知判断闰年、平年的方法是:凡是年份能被400整除的都是闰年;凡是年份能被4整除且不能被100整除的也都是闰年;除此以外的年份都是平年。现有一NS图表示的算法,其功能是输入一个年份,若是闰年则输出”Yes”,否则输出”No”,可惜有错。请将这个算法图修改正确。(注意1、不考虑算法质量高低,只考虑对错;2、不得修改线条;3、最好只改动1或2个字符。)
2. 下面的MIMA宏定义及mima函数试图在程序运行时让用户输入一个字符串,若字符串为“12345”(不含双引号)则验证通过,否则禁止使用程序,用户有三次输入密码的机会。
#define MIMA "12345"
void mima(void)
{
char c[100];
int i,a=1;
for(i=1;i<=3;i++)
{
printf("第%d次输入密码(共有3次机会):",i);
gets(c);
a=strcmp(c,MIMA); /*字符串比较,相同则值为0否则值不为0*/
if(a==0)break;
}
if(a=0)return;
else
{
printf("3次输入密码皆错,按任一键退出本系统...");
getch();
exit(1); /*退出运行程序*/
}
}
3. 程序如下:
#define Z(x,y) (y+x)/(y-x)
main( )
{
int a,b;
a=3;b=10;
printf("%d\n",Z(a+2,b));
getch();
}
该程序原意是输出(10与(3+2的和)之和)除以(10与(3+2的和)之差)所得的商即3。但目前程序输出错误结果1,因为宏定义行存在着逻辑错误。请修改宏定义行使程序符合原意。
四、分析程序回答问题(5分)
本大题得分
阅卷人签字
下面的程序是一个“图书数据库管理系统”的部分模块:
#include<stdio.h>
#define N 100
typedef struct /*图书结构体定义模块*/
{
char shuming[80]; /*书名*/
int chubannian; /*出版年*/
int banben; /*版本*/
float danjia; /*单价*/
}TUSHU;
int shuru(TUSHU a[]) /*输入模块*/
{
int i; float x;
TUSHU *p;
for(p=a,i=0;i<N;i++,p++)
{
printf("Shuru shuming (-1:end) :");
gets(p->shuming);
if(strcmp(p->shuming,"-1")==0)break;
printf("Shuru chuban nian :");
scanf("%d",&p->chubannian);
printf("Shuru banben :");
scanf("%d",&p->banben);
printf("Shuru danjia :");
scanf("%f",&x);
p->danjia=x;
getchar();
}
return i;
}
void save(TUSHU a[],int n) /*存盘模块*/
{
FILE *fp;
int i;
fp=fopen("tushu.dat","wb");
for(i=0;i<n;i++) fwrite(a+i,sizeof(TUSHU),1,fp);
fclose(fp);
}
main() /*主控模块*/
{
TUSHU a[N];
int n;
n=shuru(a);
save(a,n);
getch();
}
请阅读理解上述程序,回答下面的问题:
1、本程序一次运行时最多可以管理多少本书?
2、输入模块(函数shuru)的返回值有何意义?
3、图书的数据库将保存在哪个文件中?
五、编程题(每题10分,共20分)
本大题得分
阅卷人签字
请编写一个冒泡法(或其他任意方法)排序的函数。要求:函数原形为void f(int a[],int n),要求能对数组a内n个元素排序。
2. 请编一个完整的C程序,采用对分法(即二分法)或弦截法、切线法等任意其他算法,求方程4x3-2x2+8x-10=0在区间(0,10)上的一个根。
(续)
(续)
(续)
还来不及享受美丽的锦瑟华年,就已经到了白发迟暮,一生匆匆而过。生命,就是这样匆匆,还来不及细细品味,就只剩下了回忆。
生命匆匆,累了就选择放下,别让自己煎熬痛苦,别让自己不堪重负。放下该放下的,心才会释放重负,人生才能安然自如。
人生就是一个口袋,里面装的东西越多,前行的脚步就越沉重。总觉得该得到的还没有得到,该拥有的却已经失去,苦苦追寻的依然渺茫无踪。心累,有时候是为了生存,有时候是为了攀比。
只有放下羁绊前行脚步的重担,放下阴霾缭绕的负面情绪,才能感受到“柳暗花明又一村”的豁然开朗,领悟到“一蓑烟雨任平生”的超然物外。
人生太匆匆,累了,就放一放吧,何苦要执拗于一时的成败得失!
很多时候,我们用汗水滋养梦想,可是,梦想是丰满的,现实是骨感的。每个人都渴望成功的鲜花围绕自己,可是,谁都不是常胜将军,都会猝不及防地遭遇人生的滑铁卢。唉声叹气只会让自己裹足不前,一蹶不振只能让自己沉沦堕落。
如果真的不能承受其重,就放一放,重新审视前方的道路,选择更适合自己的方向。
有些东西,本就如同天上的浮云,即使竭尽全力,也未必能揽之入怀。或者即使得到,也未必能提高幸福指数。所以与其为得不到的东西惶惶终日,不如选择放下,为心减负,轻松前行。
一人难如百人愿 ,不是所有的人,都会欣赏和喜欢自己。所以,我们不必曲意逢迎他人的目光,不用祈求得到所有人的温柔以待。
真正在意你的人,不会对你无情无义,不在意你的人,你不过是轻若鸿毛的可有可无。做最好的自己,静静地守着一江春水的日子,让心云淡风轻,怡然自若。
人生本过客,何必千千结。不是所有的相识都能地久天长,不是所有的情谊都能地老天荒。有些人终究是走着走着就散了,成为我们生命中的过客。
爱过,恨过,都会装点我们原本苍白的人生,感谢曾经在我们生命中出现过的人。如果无缘继续红尘相伴,就选择放下吧,给自己和对方都留一段美好的回忆和前行的空间。
鱼总是自由自在地在水中快乐游弋,是因为鱼只有七秒钟的记忆,只在一瞬间,鱼便忘记了所有的不愉快。所以,忘记所有的不愉快,才能为美好的情绪留出空间,才能让心情灿然绽放。
林清玄说:一尘不染不是不再有尘埃,而是尘埃让它飞扬,我自做我的阳光。是呀,世事喧嚣纷扰,放下纷扰,做一个阳光快乐的人,做自己快乐的主人!
还来不及享受美丽的锦瑟华年,就已经到了白发迟暮,一生匆匆而过。生命,就是这样匆匆,还来不及细细品味,就只剩下了回忆。
生命匆匆,累了就选择放下,别让自己煎熬痛苦,别让自己不堪重负。放下该放下的,心才会释放重负,人生才能安然自如。
人生就是一个口袋,里面装的东西越多,前行的脚步就越沉重。总觉得该得到的还没有得到,该拥有的却已经失去,苦苦追寻的依然渺茫无踪。心累,有时候是为了生存,有时候是为了攀比。
只有放下羁绊前行脚步的重担,放下阴霾缭绕的负面情绪,才能感受到“柳暗花明又一村”的豁然开朗,领悟到“一蓑烟雨任平生”的超然物外。
人生太匆匆,累了,就放一放吧,何苦要执拗于一时的成败得失!
很多时候,我们用汗水滋养梦想,可是,梦想是丰满的,现实是骨感的。每个人都渴望成功的鲜花围绕自己,可是,谁都不是常胜将军,都会猝不及防地遭遇人生的滑铁卢。唉声叹气只会让自己裹足不前,一蹶不振只能让自己沉沦堕落。
如果真的不能承受其重,就放一放,重新审视前方的道路,选择更适合自己的方向。
有些东西,本就如同天上的浮云,即使竭尽全力,也未必能揽之入怀。或者即使得到,也未必能提高幸福指数。所以与其为得不到的东西惶惶终日,不如选择放下,为心减负,轻松前行。
一人难如百人愿 ,不是所有的人,都会欣赏和喜欢自己。所以,我们不必曲意逢迎他人的目光,不用祈求得到所有人的温柔以待。
真正在意你的人,不会对你无情无义,不在意你的人,你不过是轻若鸿毛的可有可无。做最好的自己,静静地守着一江春水的日子,让心云淡风轻,怡然自若。
人生本过客,何必千千结。不是所有的相识都能地久天长,不是所有的情谊都能地老天荒。有些人终究是走着走着就散了,成为我们生命中的过客。
爱过,恨过,都会装点我们原本苍白的人生,感谢曾经在我们生命中出现过的人。如果无缘继续红尘相伴,就选择放下吧,给自己和对方都留一段美好的回忆和前行的空间。
鱼总是自由自在地在水中快乐游弋,是因为鱼只有七秒钟的记忆,只在一瞬间,鱼便忘记了所有的不愉快。所以,忘记所有的不愉快,才能为美好的情绪留出空间,才能让心情灿然绽放。
林清玄说:一尘不染不是不再有尘埃,而是尘埃让它飞扬,我自做我的阳光。是呀,世事喧嚣纷扰,放下纷扰,做一个阳光快乐的人,做自己快乐的主人!
(责任编辑:单位文秘网) )地址:https://www.kgf8887.com/show-136-12934-1.html
版权声明:
本站由单位文秘网原创策划制作,欢迎订阅或转载,但请注明出处。违者必究。单位文秘网独家运营 版权所有 未经许可不得转载使用