南通大学往年C语言程序设计复习题
本试卷为南通大学往年C语言程序设计复习题,题目包括:单项选择题,填空题,编程题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,结构体,程序题。
C语言程序设计复习题
一、单项选择题 (共20题,每题2分,共计40分)
( C )
1、设有int x=11;则表达式(x+1/3)的值是________。
( 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> 则输出结果是:________。
( B )
3、以下选项中不能正确把cl定义成结构体变量的是________。
( A )
4、已知 a=12, 则表达式 a+=a-=a*=a 的结果是 _________.
( D )
5、以下数组定义中不正确的是 __________.
( B )
6、设宏定义#define PI 3.1415926,用宏名PI替换的是________。
( A )
7、下列对字符数组进行初始化的语句中,______ 是正确的。
( A )
8、以下字符常量中不合法的一项是________。
( A )
9、下列程序是死循环的是________。
( C )
10、变量a所占的内存字节数是______。
union u{
char st[4];
int i;
long l;
};
struct A {
int c;
union u;
} a;
( B )
11、结构化程序设计方法的三种基本控制结构中不包括(. )。
( C )
12、程序的基本控制结构是______。
( 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));
}
( D )
14、c语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是________。
( D )
15、以下关于c语言标识符的描述中,正确的是________。
( C )
16、若有以下语句,则正确的描述是char a[] ="toyou";
char b[] ={′ t′ ,′o′ ,′ y′,′o′ ,′u′ };
( C )
17、下列不正确的转义字符是________。
( C )
18、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是________。
( B )
19、若有下列定义,则对a数组元素地址的正确引用是________。 int a[5],*p=a;
( B )
20、下列四个选项中,均是 C语言关键字的选项是()。
二、填空题 (共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
相关标签:
- C语言
- 南通大学
- 复习题