南通大学往年C语言程序设计复习题

本试卷为南通大学往年C语言程序设计复习题,题目包括:单项选择题,填空题,编程题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,结构体,程序题。

C语言程序设计复习题

一、单项选择题 (共20题,每题2分,共计40分)

(  C  )
1、设有int x=11;则表达式(x+1/3)的值是________。
A、3
B、4
C、11
D、12
(  C  )
2、#include <stdio.h>
main()
{
char a,b,c,d;
scanf("%c%c",&a,&b);
c=getchar();
d=getchar();
printf("%c%c%c%c\n",a,b,c,d);
}
当执行程序时,按下列方式输入数据(从第一列开始,<cr>代表回车,注意:回车是一个字符) 12<cr> 34<cr> 则输出结果是:________。
A、1234
B、1.
C、12
D、12
3 34
(  B  )
3、以下选项中不能正确把cl定义成结构体变量的是________。
A、typedef struct
{
int red;
int green;
int blue;
} COLOR;
COLOR cl;
B、struct color cl
{
int red;
int green;
int blue;
};
C、struct color
{
int red;
int green;
int blue;
} cl;
D、struct
{
int red;
int green;
int blue;
} cl;
(  A  )
4、已知 a=12, 则表达式 a+=a-=a*=a 的结果是 _________.
A、0
B、144
C、12
D、-264
(  D  )
5、以下数组定义中不正确的是 __________.
A、int a[2][3];
B、int b[][3]={0,1,2,3};
C、int c[100][100]={0};
D、int a[3][]={{1,2},{1,2,3},{1,2,3,4}};
(  B  )
6、设宏定义#define PI 3.1415926,用宏名PI替换的是________。
A、算术表达式
B、字符串
C、单精度实型数
D、双精度实型数
(  A  )
7、下列对字符数组进行初始化的语句中,______ 是正确的。
A、char s 1[]=“abcd”;
B、char s2 [3]=”xyz”;
C、char s 3[] [3]={‘a’,‘x’,‘y’}
D、char s3 [][3]={“xyz”,“mnp”};
(  A  )
8、以下字符常量中不合法的一项是________。
A、'b
'
B、'
'
C、' '
D、'Y'
(  A  )
9、下列程序是死循环的是________。
A、for(;;)
B、int s=36;
while(s)=s;
C、int m=10;
dom--;while(m>0);
D、int n=5;
while(n>1)
n--;
if(n<0)break;
(  C  )
10、变量a所占的内存字节数是______。
union u{
char st[4];
int i;
long l;
};
struct A {
int c;
union u;
} a;
A、4
B、5
C、6
D、8
(  B  )
11、结构化程序设计方法的三种基本控制结构中不包括(. )。
A、循环结构
B、递归结构
C、顺序结构
D、选择结构
(  C  )
12、程序的基本控制结构是______。
A、顺序结构,多分支结构和单分支结构
B、顺序结构,支结构和循环结构
C、顺序结构,选择结构和循环结构。
D、单行结构和多行结构。
(  C  )
13、下面程序的输出结果为________。
struct st
{
int x;
int *y;
}
*p;
int dt[4]={10,20,30,40};
struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
void main()
{
p=aa;
printf("%d ", ++p->x);
printf("%d ", (++p)->x);
printf("%d ", ++(*p->y));
}
A、10 20 20
B、50 60 21
C、51 60 21
D、60 70 31
(  D  )
14、c语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是________。
A、地址传递
B、由用户指定传递方式
C、双向值传递
D、单向值传递:实参的值传给形参
(  D  )
15、以下关于c语言标识符的描述中,正确的是________。
A、标识符可以由汉字组成
B、标识符只能以字母开头
C、关键字可以作为用户标识符
D、Area与area是不同的标识符
(  C  )
16、若有以下语句,则正确的描述是char a[] ="toyou";
char b[] ={′ t′ ,′o′ ,′ y′,′o′ ,′u′ };
A、a 数组和b 数组的长度相同
B、a 数组长度小于b 数组长度
C、a 数组长度大于b 数组长度
D、a 数组等价于b 数组
(  C  )
17、下列不正确的转义字符是________。
A、\\'
B、\"
C、074'
D、\0'
(  C  )
18、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是________。
A、if(x++);
B、if(x>y && y!=0);
C、if(x>0) x--
D、if(y<0) {;}
(  B  )
19、若有下列定义,则对a数组元素地址的正确引用是________。 int a[5],*p=a;
A、&a[5]
B、p+2
C、a++
D、&a
(  B  )
20、下列四个选项中,均是 C语言关键字的选项是()。
A、auto enum include
B、switch typedef continue
C、signed union scanf
D、if struct type

二、填空题 (共10题,每题2分,共计20分)

1、下列程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。 int n=0, ch;
ch=getchar( );
while( ________ )
{
if ( ________ ) n++;
c=getchar( );
}
2、c语言程序的基本单位是________。
3、c语言中free(p)的作用是释放由________所指向的内存区间。
4、c语言规定,不能使用c语言中的________做标识符。
5、以下程序的运行结果是_____________。
main( )
{
int k, a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
for( k=0;k<4;k ++)printf("%d,",a[k][k]);
}
6、下面程序的功能是:输出100以内能被3整除且个位数为6的 所有整数,请填空。
7、若有定义: int a[3][4]={{1,2},{0},{4,6,8,10}};
则初始化后,a[1][2] 得到的初值是【1】, a[2][1] 得到的初值是【2】。
8、函数yahui 能够按以下形式构成一个杨辉三角形,请填空。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1⋯⋯⋯ ..
#define N 11
Yahui(int [][N])
{
int i,j;
for(i=1;i<N;i++)
{
a[i][1]=1;
a[i][i]=1;
}
for(【1】________;i<N;i++)
for(j=2; 【2】________;j++)
a[i][j]= 【3】________+a[i-1][j];
}
9、下面程序的运行结果是________。
main()
{
int i,j,a[2][3]={{2,4,6},{8,10,12}};
printf("the original array is:\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)printf("%4d",a[i][j]);
printf("\n");
}
printf("\nthe result is:\n");
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)printf("%4d",a[j][i]);
printf("\n");
}
}
10、在传值调用中,实际是把实参的______。

三、编程题 (共3题,每题0分,共计40分)

1、编写程序:计算正整数num的各位上的数字之积。 例如,若输入:252,则输出应该是:20。若输入:202,则输出应该是:0。
2、编写程序:从键盘上输入一个数字组成的字符串(字符串长度小于8),将该字符串转换成一个十进制数
例如:从键盘上输入2345,则程序运行的结果应当为:n=2345()
3、给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。
输入格式:
输入在一行中给出正整数N。随后N行,每行给出一位职员的信息,格式为“姓名 基本工资 浮动工资 支出”,中间以空格分隔。其中“姓名”为长度小于10的不包含空白字符的非空字符串,其他输入、输出保证在单精度范围内。
输出格式:
按照输入顺序,每行输出一位职员的姓名和实发工资,间隔一个空格,工资保留2位小数。
输入样例:
3
zhao 240 400 75
qian 360 120 50
zhou 560 150 80
输出样例:
zhao 565.00
qian 430.00
zhou 630.00