20学年第二学期c语言期末考题及解答 3.docx
- 文档编号:12899044
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:10
- 大小:18.85KB
20学年第二学期c语言期末考题及解答 3.docx
《20学年第二学期c语言期末考题及解答 3.docx》由会员分享,可在线阅读,更多相关《20学年第二学期c语言期末考题及解答 3.docx(10页珍藏版)》请在冰点文库上搜索。
20学年第二学期c语言期末考题及解答3
xxxx大学
xxxx学年第二学期期末
《C程序设计》
考试A卷
班级______________学号_________
姓名______________成绩_________
班号学号姓名成绩
《C程序设计》期末考试卷
注意事项:
1、此卷为闭卷考试,120分钟完成;
2、笔试成绩为卷面成绩×0.6。
题目:
一、选择题(30分,每题3分)
1、下列说法不正确的是A。
A)主函数main中定义的变量在整个文件或程序中有效
B)不同函数中,可以使用相同名字的变量
C)形式参数是局部变量
D)在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效
2、程序段:
intk=1;for(k;1;k++)if(k)break;
for语句的循环次数是B。
A)0B)1C)2D)死循环
3、以下有关switch语句的正确说法是B。
A)break语句是语句中必须的一部分
B)在switch语句中可以根据需要使用或不使用break语句
C)break语句在switch语句中不可以使用
D)在switch语句中的每一个case都要用break语句
4、在下面的语句中:
只有一个在功能上与其他三个语句不等价(其中s1和s2表示某个C语句),这个不等价的语句是D。
A)if(a) s1;else s2;B)if(!
a)s2;else s1;
C)if(a!
=0) s1;else s2;D)if(a==0) s1;else s2;
5、以下叙述不正确的是D。
A)一个变量的作用域的开始位置完全取决于变量定义语句的位置
B)全局变量可以在函数以外任何位置定义
C)局部变量的生存期只限于本次函数调用,因此不可能将局部变量的运算结果保存至下一次调用
D)一个变量说明为static存储类是为了限制其它编译单位引用
6、若用数组名作为函数调用时的实参,则实际上传递给形参的是A。
A)数组的首地址 B)数组的第一个元素值
C)数组中全部元素的值D)数组元素的个数
7、声明为inta[3][4];下列表达式与a[2][1]等价的有C。
A)*(a[1]+2);B)a[9];C)*(a[2]+1);D)*(*(a+2))+1;
8、下列的定义中,正确使用字符串初始化的是C。
A)char str[7]="FORTRAN";
B)char str[]={F,O,R,T,R,A,N,0};
C)char *str="FORTRAN";
D)char str[]={'F','O','R','T','R','A','N'};
9、设有intx,y; if(x=y)printf("xisequaltoy.");
以下语句判断x和y是否相等,正确的说法是该语句B。
A)语法错 B)不能判断x和y是否相等
C)编译出错 D)能判断x和y是否相等
10、fread(buf,32,2,fp)的功能D。
A)从fp文件流中读出整数32,存放在buf中
B)从fp文件流中读出32个字节的字符,存放在buf中
C)从fp文件流中读出整数32和2,存放在buf中
D)从fp文件流中读出2块32个字节的字符,存放在buf中
二、填空题(20分,每题4分)
1、下面这个程序功能:
读入5个整数,当程序读入的数据为正整数时,则显示该数,否则,不显示。
读入5个数据后,程序结束运行。
#include
voidmain()
{
int i,n;
for(i=1;i<=5;i++)
{
printf("Pleaseentern:
");
scanf("%d",&n);
if(n<=0) continue;
printf("n=%d\n",n);
}
printf("Programisover!
\n");
}
2、以下程序对输入的1000以下的正整数(不含1000),求出其相应的个位数、十位数和百位数。
#include
voidmain()
{
intx,a,b,c;
do{
printf("输入一个1000以下的整数:
");
scanf("%d",&x);
printf("\n");
}while( x<0||x>=1000 );
a=x/100;
b=(x-a*100)/10;
c= x%10 ;
printf("%d的个位数是%d,十位数是%d,百位数是%d\n",x,c,b,a);
}
3、用“起泡法”对输入的小于10个字符排序后按从小到大的次序输出。
#include
#include
#defineN11
voidsort(charstr[N],intn);
voidmain()
{
charstr[N];
inti;
printf(“输入任意长度小于10的字符串:
”);
scanf("%s",str);
printf("\n")
sort(str,strlen(str));
for(i=0;str[i]!
='\0';i++)
printf("%c",str[i]);
printf("\n");
}
voidsort(char*str,intn)
{
inti,j;
chart;
for(j=1;j for(i=0;i if(str[i]>str[i+1]) { t=str[i]; str[i]=str[i+1]; str[i+1]=t; } } 4、以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。 (本程序中二阶矩阵用一维数组来表示。 ) 例如,矩阵为: 3003 2573 1042 则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。 add(intm,intn,intarr[]) { inti,j,sum=0; for(i=0;i for(j=0;j sum=sum+*((arr+i*n)+j); for(j=0;j for(i=1;i sum=sum+arr[i*n+j]; return(sum); } 5、假设有40个学生被邀请来给自助餐厅的食品和服务质量打分,分数划分为1~10这10个等级(1表示最低分,10表示最高分),试统计调查结果,并用*打印出如下形式的分数统计直方图。 Grade Histogram 1 ***** 2 ********** 3 ******* ... 10** #include #defineN40 voidmain() { int i,j,grade; int score[N],count[11]={0}; printf("Pleaseentertheresponsescore: \n"); for(i=0;i scanf( “%d”,&score[i] ); for(i=0;i count[score[i]]++ ; printf("Grade\tCount\tHistogram\n"); for(grade=1; grade<=10 ;grade++) { printf("%5d\t",grade); for(j=0; j printf("%c",'*'); printf("\n"); } } 三、编程题(50分) 编程题缩进、空格、空行、标识符命名等编程规范占2分。 1、下面程序的功能是求解爱因斯坦数学题。 爱因斯坦曾出过这样一道数学题: 有一条长阶梯,若每步跨2阶,最后剩下1阶;若每步跨3阶,最后剩下2阶;若每步跨5阶,最后剩下4阶;若每步跨6阶,最后剩下5阶;只有每步跨7阶,最后才正好1阶不剩。 编程打印这条阶梯共有多少阶。 (10分) #include voidmain() { int x,find; x=0; do{ ++x; find=x%2==1&&x%3==2&&x%5==4&&x%6==5&&x%7==0; }while(! find); printf("x=%d\n",x); } 2、编写程序输出3到10000内的可逆素数。 可逆素数是指: 一个素数将其各位数字的顺序倒过来构成的反序数也是素数。 如157和751均为素数,它们是可逆素数。 (20分) 要求: 使用子函数实现,intprime(inta)函数用于判定素数,1为素数,0为非素数;intinvert(inta)函数用于倒序一个数,如a=123,则invert函数返回值为321。 #include #include #include intinvert(inta) { ints=0; while(a>0) { s=10*s+a%10; a/=10; } returns; } intprime(inta) { inti; for(i=2;i<=(int)sqrt(a);i++) if(a%i==0)return0; return1; } intmain() { inti; for(i=3;i<10000;i++) if(prime(i)) if(prime(invert(i)))printf("%5d",i); printf("\n"); return0; } 3、给定程序中,函数fun的功能是: 将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。 例如: 形参s所指的字符串为: def35adh3kjsdf7,执行结果为: defadhkjsdf3537。 (20分) #include void fun(char *s) { int i, j=0, k=0; char t1[80], t2[80]; for(i=0; s[i]! =’\0’; i++) if(s[i]>=’0’ && s[i]<=’9’)t2[j++]=s[i]; else t1[k++]=s[i]; for(i=0; i for(i=0; i } voidmain() { char s[80]="def35adh3kjsdf7"; printf("\nThe original string is : %s\n",s); fun(s); printf("\nThe result is : %s\n",s); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 20学年第二学期c语言期末考题及解答 20 学年 第二 学期 语言 期末 考题 解答