c语言程序设计试题1

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
scanf(“%f”,&num[i]);
find(num,7,&min,&max);
printf("%.1f%.1f",max,min);
}
void find(float num[],int n,float *min,float *max)
{
int i;
for(i=0;i<n;i++)
{
if(num[i]<*min) *min = num[i];
运行样例1:结果:49.455978
答案:if(f(i)>max) max=(float)(f(i));
五、程序填空(评分标准10分,每小题5分)
1.该程序功能:分别统计字符串中所有英文字母中的各元音字母个数。(tolower函数把一个大写字母转化为相应的小写字母)
#include <stdio.h>
if(num[i]>*max) *max = num[i];
}
}
运行样例1:1.5 12.3 42.2 0.7 14.5 0.1 99结果:99 0.1
运行样例1:1.5, 12.3, 42.2, 0.7, 14.5, 0.1, 99结果:1.5 -10153254(乱码)
2.已知某班N个(例如N = 4)学生的基本情况已经存放在磁盘文件“student.txt”中,文件的逻辑结构如下表所示(但实际存储中不含标题行):
答案:for(i=0; a[i]!='\0'; i++)
如果填空为:for(i=0; i<strlen(a); i++)则需要加上:#include <string.h>否则编译不能通过。
2.本程序功能:输入n(0<n<10)后,输出1个数字金字塔。如输入n为4,则输出:
1
222
33333
4444444
num
name
age
s1
s2
s3
s4
950501
Zhang
20
78
88
82
950502
Wang
19
83
85
90
950503
Li
21
79
72
69
950504
Cheng
22
90
91
95
aver
scor
编写一个完整的程序,用结构体数组的方法表示该表,从上述文件中读入已知数据,然后完成下列计算工作:
(1)计算每个学生3门课的总成绩,分别填入各人的s4域中;
max=(float)(f(1));
for(i=2;i<=10;i++)
if(f(i)>max) max=i;/* $1 */
printf("%f\n",max);
}
说明:
该程序中“/*$1*/”行中的语句if(f(i)>max) max=i;有错误,请改正(注意:不得加行、减行、加句、减句)。该程序功能:运行程序后,得输出结果为:49.455978。
#include <stdio.h>
void main()
{ int i,j,n;
scanf("%d",&n);
/* $1*/
{
for(j=1;j<=n+1-i;j++)
putchar(' ');
for(j=1;j<=2*i-1;j++)
putchar((char)(i+48));
putchar('\n');
(D) do-while的循环体不能是复合语句
6.若有说明int a[3][4],则对a数组元素的正确引用是。
(A) a[2][4](B) a[1,3](C) a (2)(1)(D) a[1][3]
7.下面程序中有错误的行是。(每行最前面的数字代表行号)
1main()
2{ int a[3] = {1,2};
(2)计算全班的平均年龄,填入最后一行的age域中;
(3)计算全班每门课的平均成绩,依次填入最后一行的s1,s2,s3域中。
2.程序执行的效率与数据的存储结构相关。
3.函数调用时,同名称的实参变量和形参变量占同一存储单元。
4.long、int和short类型数据占用内存大小,是根据数据的大小来决定所占内存的字节数。
5.已有定义:chБайду номын сангаасr c;,程序前面已在命令行中包含ctype.h文件,表达式‘A’<=c&&c<=‘Z’
C语言试卷-1
一、选择题(评分标准20分,每小题2分)
1.C语言规定:在一个源程序中,main函数的位置。
(A)必须在最开始处(B)必须在系统调用的库函数的后面
(C)可以在任意位置(D)必须在最后
2.在C语言中,int、char和short三种类型数据在内存中所占的字节数。
(A)由用户自己定义(B)都是2个字节
(C)是任意的(D)由所用的计算机的字长决定
3.假设所有的变量都是int型,则表达式( a=2,b=5,b++,a+b)的值是。
(A) 7(B) 8(C) 6(D) 2
4.判断char型变量ch中的字符是否为小写字母的正确表达式是。
(A) ‘a’ <= ch <= ’z’(B) (‘a’ <= ch) && (ch <= ’z’)
intstrcmp1(char *s)
{char *t=s;while(*t++);t--;
return(t-s);}
9.在C程序中可以给指针变量赋一个整数作为地址值。
10.若程序中有宏定义行:#defineN 100,则以下叙述:“在编译程序对C源程序进行预处理时用100替换标识符N”是正确的。
套数号
运行样例1:5结果:sum=-0.216667
答案:flag=-flag ;
4.以下程序运行后输出:49.455978。
#include <stdio.h>
#include <math.h>
#define f(x) x*x-5*x+sin(x)
void main()
{ int i; float max;
运行样例1:3214结果:4
答案:n=n/10;
2.以下程序输入数值6,运行程序后输出结果2。
#include <stdio.h>
void main()
{ int i=0,t=1,n;
while( scanf("%d",&n),n<=0);
while(!(t<=n&&t*2>=n)) {
t=t*2;
答案
7
1.F2. T 3.F4.F5. T 6. F 7.F8.F9.F10.T
三、填空题(4)(评分标准10分,每空1分)
1.为读/写建立一个新的二进制文件,在fopen函数中打开文件的参数是________。
2.用于printf函数的控制字符常量中,代表“横向跳格”的字符常量是________。
#include <ctype.h>
void main()
{ char a[80]; int n[5]={0},i;
gets(a);
/* $1*/
switch(tolower(a[i])) {
case'a': n[0]++; break;
case 'e': n[1]++; break;
case 'i': n[2]++; break;
while( n%10 ) {
k++;
n=n-10;/*$1 */
}
printf("%d\n",k);
}
说明:
该程序中“/*$1*/”行中的语句n=n-10;有错误,请改正(注意:不得加行、减行、加句、减句)。该程序功能:在程序中输入n位整型数值,得到输入数值的位数。例如:在程序中输入3214,得到输入数值的位数4。
(D) double fun(int x, int y);
{ double z; z=x+y; return z; }
套数号
答案
1
1. C 2. D 3. B 4. B 5. A 6. D 7. B 8. B 9. D 10. A
二、判断题(评分标准20分,每小题2分)
1.C语言规定可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行。
void main()
{ int k, flag=1,n;
float s=0;
scanf("%d", &n);
for(k=1;k<n;k++) {
s=s+(float)1.0*k/(k+1)*flag ;
flag=-1;/* $1 */
}
printf("sum=%f\n",s);
}
说明:
该程序中“/*$1 * /”行中的语句flag=-1;有错误,请改正(注意:不得加行、减行、加句、减句)。该程序功能:在程序中输入一个正数n然后输出求和后的结果。例如:在程序中输入n的值为5,得到输出结果为:sum=-0.216667。
3int j;
4a[2] = 5;
5for (j=0, j<3, j++)
6a[0] = a[0] +a[j];
7printf(“a[0]=%d\n”,a[0]);
8}
(A) 3(B)5(C) 7(D)6
8.对以下语句的正确理解是。
int a[10] = {5, 6, 7, 8, 9, 10};
(A)将6个初值依次赋给a[1]到a[6]
参考答案:
第6套
(1)
wb+
(2)
\t
(3)
1
(4)
11,11,6
(5)
4,4,10,6
四、程序改错题(评分标准20分,每小题5分)
1.下列程序中输入3214,则输出4,即得到输入数值的位数。
#include <stdio.h>
void main()
{int n,k=0;
scanf("%d",&n);
10.以下正确的函数定义是。
(A)double fun(int x, int y)
{ double z; z=x+y; return z; }
(B)fun(int x, y)
{ int z; return z; }
(C) fun(x, y)
{ int x,y; double z;
z=x+y; return z; }
}
}
说明:
该程序中“/*$1*/”行是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句)。
答案:for(i=1;i<=n;i++)
六.程序设计(评分标准20分,每小题10分)
1.编制函数,其功能是在float类型1维数组中查找最大值、最小值,并将它们返回到调用程序,并输出,题目要求用scanf()函数输入7个实数数值。
i--;/* $1 */
}
printf("%d\n",i);
}
说明:
该程序中“/*$1*/”行中的语句i--;有错误,请改正(注意:不得加行、减行、加句、减句)。
运行样例1:6结果:2
答案:i++;
3.输入1个正整数n。假设n为5,下列程序的输出结果为:sum=-0.216667
#include <stdio.h>
3.在C语言中定义二维数组时,第________维数组的数量值可以省略。(请用数值表示)
4.求解赋值表达式a=5+(c=6)后,表达式值、a、c的值依次为_____、_____、_____。
5.求解赋值表达式a=(b=10)%(c=6),表达式值、a、b、c的值依次为_____、_____、_____、________。
case'o': n[3]++; break;
case 'u': n[4]++; break;
}
for(i=0;i<5;i++) printf("%d",n[i]);
}
说明:
该程序中“/*$1*/”行是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句)。
运行样例1:abcde结果:1 1 0 0 0
(C) (a <= ch) && (ch <= z)(D) (‘a’ <= ch) AND (ch <= z’)
5.C语言中while和do-while循环的主要区别是。
(A) while的循环体可能一次也不执行
(B) while的循环控制条件比do-while的严格
(C) do-while允许从该语句的外部跳转到循环体内
(B)将6个初值依次赋给a[0]到a[5]
(C)将6个初值依次赋给a[5]到a[10]
(D)因为数组长度与初值个数不同,所以此语句不正确
9.有两个字符数组a、b,则以下正确的输入语句是。
(A) gets(a,b);(B) scanf(a,b);
(C) scanf(“%s%s”,&a,&b);(D) gets(a); gets(b);
能用于判断c中的字符是否为大写字母。。
6.已知字符‘A’的ASCⅡ代码值是65,字符变量c1的值是‘A’,c2的值是‘D’。执行语句printf("%d,%d",c1,c2-2);后,输出结果是65,B。
7.当用户要求输入的字符串中含有空格时,可以使用scanf()函数来输入。
8.以下函数的功能是比较两个字符串的大小。
参考答案:
#include <stdio.h>
#include <stdlib.h>
void find(float num[],int n,float *min,float *max);
void main()
{ int i;
float min=10000.0,max=0,num[7];
for(i=0; i<7; i++ )
相关文档
最新文档