资源描述
《高级程序设计基础(C语言)》考试题一
一、选择题(共20题,每题2分)
1.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是()。
if (a<b)
if(c<d) x=1;
else
if (a<c)
if (b<d) x=2;
else x=3;
else x=6;
else x=7;
A) 1 B) 2 C) 3 D) 6
2.以下程序的输出结果是()。
main()
{ int x=2, y=-1, z=2;
if (x<y)
if (y<0) z=0;
else z=z+1;
printf(“%d\n”, z);
}
A) 3 B) 2 C) 1 D) 0
3.若运行时给变量x输入12,则以下程序的运行结果是()。
main()
{ int x, y;
scanf(“%d”, &x);
y=x>12?x+10:x-12;
printf(“%d\n”, y);
}
A) 0 B) 22 C) 12 D) 10
4.设有程序段
int k=10;
while (k=0) k= k—1;
则下面描述中正确的是()
A) while循环执行10次 B)循环是无限循环
C)循环体语句一次也不执行 D)循环体语句执行一次
5.下面程序的功能是计算:至50中是7的倍数的数值之和,请选择填空。
#include <stdio.h>
main()
{int i,sum= 0;
for(i=1;i<=50;i++)
if( () ) sum+=i;
printf("%d",sum);
}
A) (int)(i/7)==i/7 B) (int)i/7==i/7
C) i%7= 0 D) i%7==0
6.下面程序段的运行结果是
a=1;b= 2;c=2;
while(a<b<c)
{
t= a;
a= b;
b=t;
c- -;
}
printf("%d,%d,%d",a,6,c);
A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,1
7.下面程序的功能是计算 1至10之间的奇数之和及偶数之和。请选择填空
#include <stdio.h>
main()
{int a,b,c,i;
a=c=0;
for(i=0;i<=10;i+=2)
{ a+=i;
() ;
c+=b;
}
printf("偶数之和=%d\n",a);
printf("奇数之和=%d\n",c-11),
}
A)b=i-- B) b=i+1 C)b=i++ D)b=i-1
7.下面程序段:
for (t=1; t<=100;t++)
{
scanf("%d",&x);
if(x<0) continue;
printf("%3d",t);
}
A) 当x<0时整个循环结束
B) x>=0时什么也不输出
C) printf函数永远也不执行
D)最多允许输出100个非负整数
8.下面程序的运行结果是:
#include "stdio.h"
main()
{int i;
for(i=1;i<=5;i++)
{if (i%2) printf("*");
else continue;
printf("#");
}
printf("#");}
A) *#*#$ B) #*#*#*$ C) *#*#$ D)#*#*$
9.设有程序段
int k=10;
while(k=5) k=k-1;
则下面描述正确的是
A)while循环执行10次 B)是死循环
C)循环语句一次也不执行 D)循环体语句执行一次
10.当已存在一个abc.txt文件时,执行函数fopen(“abc.txt”, “r+”)的功能是( )。
A.打开abc.txt文件,清除原有内容
B.打开abc.txt文件,只能写入新的内容
C.打开abc.txt文件,只能读取原有内容
D.打开abc.txt文件,可以读取和写入新的内容
11.fopen()函数的mode取值”r”和”w”时,它们之间的差别是( )。
A.”r”可向文件写入,”w”不可向文件写入
B.”r”不可向文件写入,”w”可向文件写入
C.”r”不可由文件读出,”w”可由文件读出
D.文件不存在时,”r”建立新文件,”w”出错
12.以下对一维数组a的正确说明是( )
(A)int a(10);
(B)int n=10,a[n];
(C)int n; scanf(“%d”,&n); int a[n];
(D)#define SIZE 10
int a[SIZE];
13.对以下说明语句的正确理解是( )
int a[10]={6,7,8,9,10};
(A)将5个初值依次赋给a[1]至a[5]
(B)将5个初值依次赋给a[0]至a[4]
(C)将5个初值依次赋给a[6]至a[10]
(D)因为数组长度与初值的个数不相同,所以此语句不正确
14.下面程序的运行结果是( )
char c[5]={‘a’,’b’,’\0’,’c’,’\0’}; printf(“%s”,c);
(A)ab (B)abc (C)abc+乱码 (D)ab\0c\0
15.对两个数组a和b进行如下初始化
char a[]=”ABCDEF”;
char b[]={‘A’,’B’,’C’,’D’,’E’,’F’};
则以下叙述正确的是 ( )
(A)a与b数组完全相同 (B)a与b长度相同
(C)a和b中都存放字符串 (D)a数组比b数组的长度长
16.下面是对s的初始化,其中不正确的是( )
(A)char s[5]={“abc”}; (B)char s[5]={‘a’,’b’,’c’};
(C)char s[5]=””; (D)char s[5]=”abcdef”;
17.以下程序运行的结果是( )
char s[6];
s=”abcd”;
printf(“%s\n”,s);
(A)”abcd” (B)abcd (C)abcd+乱码 (D)编译出错
18.若有说明语句char u[]=”Microsoft”,则数组的大小是( )
(A)100 (B)80 (C)10 (D)9
19.以下不正确的定义语句是 ( )
(A)double y[5]={2.0,4.0,6.0,8.0,10.0};
(B)int y[5]={0,1,3,5,7,9};
(C)char c[]={‘1’,’2’,’7’,’4’,’5’};
(D)char c[]={“abcdf”};
20.当执行下面的程序时,如果输入ABC,则输出结果是( )
A) ABC6789 B) ABC67 C) 12345ABC6 D) ABC456789
#include "stdio.h"
#include "string.h"
main()
{ char ss[10]="1,2,3,4,5";
gets(ss); strcat(ss, "6789"); printf("%s\n",ss);
}
二、分析程序题(共10题,每题3分)
1、以下程序的输出结果是 ()
main()
{
int x=10,y=10;
printf("%d %d\n",x--,--y);
}
2、以下程序的输出结果是 ()
main()
{ int a=32, b=66;
printf("%c\n", a+b);
}
3、若运行时输入:16<回车>,则以下程序的运行结果是( )。
#include <stdio.h>
main()
{
int age;
printf(“Input your age : “);
scanf(“%d”, &age);
if (age>=18)
printf(“your $4.5yuan/hour”);
else
printf(“Your $3.0yuan/hour”);
}
4、以下程序的执行结果是__________。
typedef struct{
int y[4];
char z[8];
} MYTYPE;
main(){
MYTYPE a = { {2,3,5,6},"Tom"};
puts(a.z);
}
5、有如下结构体类型说明:
struct test {
char a[20] ;
double b;
struct test *next ;
} ;
如果head ,p,q都是该类型的指针变量且三者按head-p-q的顺序构成了一个链表,现在要求我们仅用两条条语句从该链表中删除p并释放p所占的空间,那么这两条语句正确的形式是________________。
6、以下程序的输出结果是( )。
#include <stdio.h>
func(int a)
{
int b;
for(b=0; b<a; b++)
printf("*");
}
main()
{
int a = 2;
func(a);
}
7、下面程序的运行结果是( )
#include<stdio.h>
main()
{ int n;
for(n=0;n<4;n++)
{ printf("%d%d%d%d",n,n,n,n);
}
}
8、下面程序的运行结果是( )
#include<stdio.h>
main()
{ int n=1,i=1;
while(i<6)
{ n=n*i;
i=i+2;
}
printf("n=%d",n);
}
9、下面程序的运行结果是( )
#include<stdio.h>
main()
{ int i;
for(i=4;i<=8;i++)
{ switch(i/j)
{ case 0:
case 1:printf("*");break;
case 2:printf("#");
}
}
}
10、下面程序的运行结果是( )
#include<stdio.h>
main()
{ int a[8]={1,3,5,7,9,11,13,15},i,j,k;
for(i=0,j=7;i<j;i++,j--)
{ k=a[i];a[i]=a[j];a[j]=k;
}
k=a[2]+a[3];
printf("%d",k);
}
三、编写程序题(共3题,每题10分)
1、编程对从键盘输入的任意两整数x和y进行求x3+y2 - 3x/y的值
2、编写一个程序,要求程序的功能是:从键盘输入20个整数,存入一个数组中,然后输出该数组中的最小值。其中确定最小值的下标的操作在detect()函数中实现。请编写函数detect()的代码,并在主函数中调用它,以正确完成本题要求的功能。
3、某百货公司采用购物打折扣的方法来促销商品,顾客一次性购物的折扣率是:
1、少于800元不打折;
2、800元以上且少于1200元者,按九折优惠;
3、1200元以上且少于2200元者,按九折优惠;
4、2200元以上且少于3200元者,按八五折优惠;
5、3200元以上者,按八折优惠。
请编写程序根据输入的购物金额,计算并输出顾客实际的付款金额。
第一套考试题 参考答案
一、 选择题
1、B
2、B
3、A
4、C
5、D
6、A
7、B
7、D
8、??
9、B
10、D
11、B
12、D
13、B
14、A
15、D
16、D
17、D
18、C
19、B
20、A
二、程序分析题
1、10,9
2、b
3、your$3.0yuan/hour
4、Tom
5、head->next=p->next;free(p);
6、**
7、0000111122223333
8、n=15
9、题目有问题
10、20
三、编程题
1
#include <stdio.h>
main()
{
int x,y,result;
printf("input x and y:");
scanf("%d%d",&x,&y);
result=x*x*x+y*y-3*x/y;
printf("result=%d",result);
}
2
#include <stdio.h>
#define N 30
int detect(int p[],int n);
main()
{
int a[N],i,min_id;
printf("input %d integers:",N);
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
min_id=detect(a,N);
printf("min number is %d",a[min_id]);
}
int detect(int p[],int n)
{
int i,min_id;
min_id=0;
for(i=1;i<n;i++)
{
if(p[min_id]>p[i])
min_id=i;
}
return min_id;
}
3
#include <stdio.h>
main()
{
double currency,money;
printf("input:");
scanf("%lf",&money);
if(money>=3200)
currency=money*0.8;
else if (money>2200)
currency=money*0.85;
else if (money>1200)
currency=money*0.9;
else if (money>800)
currency=money*0.95;
else
currency=money;
printf("after discount:%.2lf",currency);
}
展开阅读全文