资源描述
C语言程序设计(一)
一、单项选择题
1. C语言规定,在一个C程序中,main()函数的位置(_______) 。
A) 必须在开始 B) 必须在最后
C) 可以任意 D) 必须在系统调用的库函数之后
2. 下列四组C语言标识符中,正确的一组是(_______) 。
A) name Char _abc A223
B) abC?c 5bytes -Tianjin _54321
C) print const type define
D) include integer Double short_int
3. 已知字母‘A’的十进制ASCII代码值为65,下面程序段的输出是(_______)。
char ch1, ch2;
ch1=‘A’+‘5’-‘3’;
ch2=‘A’+‘6’-‘3’;
printf("%d,%c\n",ch1,ch2);
A) 67, D B) B, C
C) 不确定的值 D) C, D
4. 若有定义: int x=3, y=2; float a=2.5, b=3.5; 则表达式 (x+y)%2+(int)a/(int)b的值是(_______)。
A) 0 B) 2 C) 1.5 D) 1
5. 设 int a=1,b=2,c=3,d=4,z;则表达式(a>b)?(z=c):(z=d)的值为(_______)。
A) 4 B) 2 C) 1 D) 3
6. 以下程序段
int x;
scanf("%d",&x);
switch (x)
{ case 5: printf("Excellent");
default: printf("Poor");
case 4: printf("Good");
case 3: printf("Pass");
case 2: printf("Fail");
}
在执行时,若从键盘输入3,则输出为(_______)。
A) Pass B) Passpoor
C) PoorPassFail D) PassFail
7. 若用数组名作为函数调用的实参,则传递给形参的是 (_______)。
A) 数组的首地址 B) 数组第一个元素的值
C) 数组中全部元素的值 D) 数组元素的个数
8. 若有说明 double b[7][6]; 则对其元素的非法引用是(_______)。
A) b[3][5] B) b[7][5]
C) b[2*3][4] D) b[0][9-6]
9. 程序
main()
{ char name[7];
scanf("%s",name);
printf("name=%s",name);
}
执行时输入:China Tianjin,则程序的输出为_________ 。
A) name=China B) name=China Tianjin
C) name=China T D) name=Tianjin
10. 完成编译预处理的工作是在(_______)完成的。
A) 编译时 B) 编译前
C) 编译后 D) 执行时
11. 程序中定义以下宏
#define w 3
#define L w+4
若定义int val;且令val=L*L,则变量val的值为(_______)。
A) 14 B) 19 C) 24 D) 49
12. 若定义 int a,b,*p1=&a,*p2=&b; 使p2指向a的赋值语句是(_______)。
A) *p2=&a; B) p2=&p1;
C) p2=&*p1 D) p2=*&a;
13. 定义以下结构体数组
struct
{ int num;
char name[10];
}
x[3]={1,"china",3,"USA",4,"England"};
语句printf("\n%d,%s",x[1].num,x[2].name)的输出结果为(_______)。
A) 2,USA B) 4,England
C) 3,USA D) 3,England
14. 定义联合数据类型
union
{ int a;
int b;
int c;
int d;
}x;
执行语句 x.a=2;x.b=3;x.c=4;x.d=5;后,x.c的值为(_______)。
A) 2 B) 3 C) 4 D) 5
15. 程序
int f(int a)
{ static int b=2;
b++;
return(a+b);
}
main()
{ int a=2,i;
for (i=0;i<3;i++)
printf("%d ",f(a));
}
执行时,输出结果为________ 。
A) 5 5 5 B) 5 6 7 C) 4 5 6 D) 6 6 6
二、读程序,写出程序的运行结果
1. 程序
void test( int *x,int *y)
{ *x=9; *y=10; }
main()
{ int a=5,b=7;
test(&a,&b);
printf("\n%d,%d",a,b);
}
执行时的输出结果是_______________________。
2. 程序
#include "stdio.h"
main()
{ int i=0;
while(i<7)
{ if(i%3) printf("*");
else printf("+");
i++;
}
}
执行时的输出结果是_______________________。
三、编程题
1. 编写程序,输入一个华氏温度F,要求输出摄氏温度C。计算公式为:c=5/9(f-32).
2. 有一函数, 编写程序,输入x,输出函数值y。
3. 有一分数序列,
计算上述分数列,前20项之和。
4. 有一个一维数组a[10],求数组中数值最小的元素,及其下标值。
main()
{ int a[10]={12,34,23,56,78,11,45,66,79,32};
}
5. 按行列方式输出二维数组a[3][4],并计算其中所有值大于10的元素之和。
main()
{ int a[3][4]={2,4,12,16,8,13,5,6,9,32,10,14};
6. 编写函数void fun(char *s1,char *s2),其功能是将字符串s2连接到s1后边。
Eg: 字符串s1为: This is a boy!
字符串s2为: That is a girl!
连接后,字符串s1为:This is a boy! That is a girl!
void fun(char *s1,char *s2)
{
}
main()
{ char sa[50]=” This is a boy!”
char sb[50]=” That is a girl!”
fun(sa,sb);
printf(“\nThe result string is: %s”,sa);
}
7. 编写函数 fun(int s[],int n,int x),其功能是删除数组s[]中的一个值为x的元素。
Eg: s[10]: 2,4,6,9,10,12,14,15,16,18
x=6
删除后,数组s[10]:2,4,9,10,12,14,15,16,18,剩余9个有效元素。
void fun(int *s,int n,int x)
{
}
main()
{ int a[10]={ 2,4,6,7,6,8,16,6,9,12};
int x,int y;
printf(“\nPlease enter x:”);
scanf(“%d”,&x):
printf(“\n The original array is:”):
for (i=0;i<10;i++)
printf(“%d”, a[i]);
fun(a,10,x);
printf(“\n The result is:”):
for (i=0;i<9;i++)
printf(“%d”, a[i]);
}
展开阅读全文