C语言程序设计.docx
《C语言程序设计.docx》由会员分享,可在线阅读,更多相关《C语言程序设计.docx(25页珍藏版)》请在冰豆网上搜索。
![C语言程序设计.docx](https://file1.bdocx.com/fileroot1/2023-1/11/4990b5d9-fb4d-4c70-a647-2404b4858ba9/4990b5d9-fb4d-4c70-a647-2404b4858ba91.gif)
C语言程序设计
江南大学现代远程教育第一阶段练习题
考试科目:
《C语言程序设计》第一章至第四章(总分100分)
学习中心(教学点)批次:
层次:
专业:
学号:
身份证号:
姓名:
得分:
一单选题(共20题,总分值40,下列选项中有且仅有一个选项符合题目要求,请在答题卡上正确填涂。
)
1.有以下程序
main()
{inti=1,j=1,k=2;
if((j++‖k++)&&i++)printf("%d,%d,%d\n",i,j,k);
}
执行后输出结果是(C)。
(2分)
A.1,1,2
B.2,2,1
C.2,2,2
D.2,2,3
2.已有定义:
intx=3,y=4,z=5;,则表达式!
(x+y)+z-1&&y+z/2的值是(D)。
(2分)
A.6
B.0
C.2
D.1
3.执行以下程序段后,变量a,b,c的值为(C)。
intx=11,y=10,a,b,c;
a=(--x==y++)?
--x:
++y;
b=x++;c=y;(2分)
A.a=10,b=10,c=9
B.a=9,b=9,c=12
C.a=9,b=9,c=11
D.a=1,b=9,c=11
4.以下程序的输出结果是用(D)表示。
main()
{intk=17;
printf("%d,%o,%x\n",k,k,k);
}(2分)
A.17,021,0x11
B.17,17,17
C.17,0x11,021
D.17,21,11
5.已知i、j、k为int型变量,若从键盘输入:
1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是(C)。
(2分)
A.scanf(“%2d%2d%2d”,&i,&j,&k);
B.scanf(“%d%d%d”,&i,&j,&k);
C.scanf(“%d,%d,%d”,&i,&j,&k);
D.scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);
6.以下非法的赋值语句是(C)。
(2分)
A.n=(i=2,++i);
B.j++;
C.++(i+1);
D.x=j>0;
7.已知c是字符型变量,以下不正确的赋值语句是
(A)。
(2分)
A.c=”a”
B.c=’a’
C.c=’\141’
D.c=’\x61’+3
8.以下不符合C语言语法的赋值表达式是(D)。
(2分)
A.d=9+e,e++,d+9
B.k=i==j
C.n1+=n2+3
D.a=b+c=a+7
9.若有以下程序:
main()
{intk=2,i=2,m;
m=(k+=i*=k);
printf(“%d,%d\n”,m,i);}
执行后的输出结果是(C)。
(2分)
A.8,6
B.8,3
C.6,4
D.7,4
10.字符串”\\\’abcd\123\xAB\t”的长度为()。
D(2分)
A.8
B.17
C.-9
D.10
11.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)
s=a;
for(b=1;b<=c;b++)s=s+1;
则与上述程序段功能等价的赋值语句是(B)。
(2分)
A.s=a+b;
B.s=a+c;
C.s=s+c;
D.s=b+c;
12.以下选项中合法的实型常数是(C)。
(2分)
A.5E2.0
B.E-3
C..2E1
D.1.3E
13.下列说法中正确的是(B)。
(2分)
A.在switch语句中一定要使用break语句
B.在switch语句中不一定要使用break语句
C.break语句是switch语句的一部分
D.break只能用于switch语句中
14.C语言中对于嵌套if语句规定else总是与(D)配对?
(2分)
A.第一个if
B.其之前最近的if
C.缩进位值相同的if
D.其之前最近的不带else的if语句
15.以下选项中,与k=n++完全等价的表达式是(A)。
(2分)
A.k=n,n=n+1
B.n=n+1,k=n
C.k=++n
D.k+=n+1
16.C语言中各种基本数据类型的存储空间长度排列为(C)。
(2分)
A.char≤long≤int≤float≤double
B.double≤float≤long≤int≤char
C.char≤int≤long≤float≤double
D.float≤int≤long≤char≤double
17.下面的for循环最多可执行(A)次。
for(x=0;y=0;(y!
=99)&&(x<4);x++);(2分)
A.4次
B.5次
C.99次
D.0次
18.下列关于C语言用户标识符的叙述中正确的是(B)。
(2分)
A.用户标识符中可以出现在下划线和中划线(减号)。
B.用户标识符中不可以出现中划线,但可以出现下划线。
C.用户标识符中可以出现下划线,但不可以放在用户标识符的开头。
D.用户标识符中可以出现在下划线和数字,它们都可以放在用户标识符的开头。
19.设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D)。
(2分)
A.6.500000
B.6
C.5.500000
D.6.000000
20.下列判断char类型变量C1是为数字的最简单且正确的表达式(B)。
(2分)
A.'0'<=C1<='9'
B.(C1>='0')&&(C1<='9')
C.(C1>=0)&&(C1<=9)
D.('0'<=C1)&&('9'<=C1)
二填空题(每空2分,总分值30)
21.break语句的功能___提前结束循环__,contitue语句的功能___结束本次循环_____。
22.以下程序实现求100~200,400~600间的全部素数,并以10个数一行的格式输出。
#include<math.h>
main()
{intm,k,I,n=0;
for(m=101;m<=600;m+=2)
{
if(m>200____&&_____m<400)
_______continue________;
k=sqrt(m);
for(I=2;I<=k;I++)
if(m%I==0)
_______break________;
if(______I>K_____________){printf(“%d”,m);n=n+1;}
if(n%10==0)printf(“\n”);
}
printf(“\n”);
}(6分)
23.下述程序段的运行结果是____________5______________。
intx,y;
x=17;y=26;
printf(“%d”,y/=(x%=6));
24.#include“stdio.h”
main()
{charc;scanf(“%c”,&c);
switch(c-‘2’)
{case0:
case1:
putchar(c+4);
case2:
putchar(c+4);break;
case3:
putchar(c+3);
default:
putchar(c+2);break;}
printf(“\n”);}
当分别输入1,2,5时,输出为____________3____________________、______________________66__________、________________87________________。
25.斐波纳契数列中头两个数是0和1,从第三个数开始,每个数等于前两个数的和,即:
0,1,1,2,3,5,8,13,21,……等。
求斐波纳契数列的前20个数。
要求每行输出5个数。
请填空。
#include<stdio.h>
main()
{intf,f1,f2,I;
printf(“Fibonacciseries:
\n”);
f1=0;f2=_______1______________;
printf(“%6d,%6d,”,f1,f2);
for(I=3;I<=20;____I++____________)
{f=_________f1+f2_____________;
printf(“%6d,”,f);
if(________I%5==0_____________)
printf(“\n”);
f1=f2;f2=______f_____________________;
}
printf(“\n”);
}
三编程题(共2题,总分值30)
26.利用循环实现打印以下图形。
(15分)
27.采用二分法求方程2(x³)-4(x²)+3x-6=0在(-10,10)之间的根。
(15分)
江南大学网络教育第二阶段练习题
考试科目:
《C语言程序设计》第章至第章(总分100分)
__________学习中心(教学点)批次:
层次:
专业:
学号:
身份证号:
姓名:
得分:
一单选题(共20题,总分值40分,下列选项中有且仅有一个选项符合题目要求,请在答题卡上正确填涂。
)
1.下述对C语言字符数组的描述中错误的是()。
(2分)
A.字符数组可以存放字符串
B.字符数组的字符串可以整体输入、输出
C.可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D.不可以用关系运算符对字符数组中的字符串进行比较
2.有以下程序
voidf(intv,intw)
{intt;
t=v;v=w;w=t;
}
main()
{intx=1,y=3,z=2;
if(x>y)f(x,y);
elseif(y>z)f(y,z);
elsef(x,z);
printf(“%d,%d,%d\n”,x,y,z);
}
执行后输出结果是()。
(2分)
A.1,2,3
B.3,1,2
C.1,3,2
D.2,3,1
3.有语句charstr1[10],str2[10]={"books"};则能将字符串books赋给数组str1的正确语句是()。
(2分)
A.str1={"Books"};
B.strcpy(str1,str2);
C.str1=str2;
D.strcpy(str2,str1);
4.若有变量说明:
chars,s1[20];执行语句:
s="student";s1=s;正确的叙述是()。
(2分)
A.二个语句都不正确
B.s所指向的字符串和s1的值都是"student"
C.第一个语句正确,而第二个语句不正确
D.第二个语句正确,而第一个语句不正确
5.C语言的编译系统对宏命令是()时候处理的。
(2分)
A.在程序运行
B.在程序连接时
C.和源程序其它C语言同时进行编译时
D.对源程序其它成份正式编译之前进行处理的
6.下列说法不正确的是()。
(2分)
A.宏替换不占用运行时间
B.宏无类型
C.宏替换只是字符替换
D.宏名必须用大写字母表示
7.若有以下说明和语句,则输出结果是()。
charsp[]="\x69\082\n";
printf("%d",strlen(sp));(2分)
A.3
B.5
C.1
D.字符串中有非法字符,输出值不定
8.以下函数调用中有()个实参。
expd((a1,a2,a3),(a4,a5),a7,a8)
(2分)
A.4个
B.3个
C.8个
D.5个
9.执行完下面的程序段后,屏幕显示的内容为()。
main()
{inta=2,i;
for(i=0;i<3i=""printf=""d=""f=""a="">
}
f(inta)
{intb=0;
staticintc=3;
b++;
c++;
return(a+b+c);
}
(2分)
A.777
B.777
C.789
D.789
10.若有宏定义与变量说明如下:
#defineX5
#defineYX+1
#defineZY*X/2
inta;a=Y;
则执行以下printf语句后输出的结果是()。
Printf("%d%d\n",Z,--a);(2分)
A.75
B.126
C.125
D.76
11.函数调用可以……,以下错误的是()。
(2分)
A.出现在执行语句中
B.出现在一个表达式中
C.作为一个函数的实参
D.作为一个函数的形参
12.C语言中函数能否嵌套调用和递归调用?
以下说法正确的是()。
(2分)
A.二者均不可
B.前者可,后者不可
C.前者不可,后者可
D.二者均可
13.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是()。
(2分)
A.float型
B.int型
C.long型
D.double型
14.有两个字符数组a,b,则以下正确的输入语句是()。
(2分)
A.gets(a,b);
B.scanf("%s%s",a,b);
C.scanf("%s%s",&a,&b);
D.gets("a"),gets("b");
15.数组名作为参数传递给函数,此时作为实在参数的数组名被处理为()。
(2分)
A.该数组的长度
B.该数组的元素个数
C.该数组中各元素的值
D.该数组的首地址
16.以下能正确定义一维数组的选项是()。
(2分)
A.intnum[];
B.#defineN100
intnum[N];
C.intnum[0..100];
intnum[N];
D.intN=100;
17.若程序中定义了以下函数
doublemyadd(doublea,doubleB)
{return(a+B);}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是()。
(2分)
A.doublemyadd(doublea,B);
B.doublemyadd(double,double);
C.doublemyadd(doubleb,doubleA);
D.doublemyadd(doublex,doubley);
18.以下描述中,正确的是()。
(2分)
A.调用函数时,实参可以是表达式
B.调用函数时,将为形参分配内存单元
C.调用函数时,实参与形参的原型必须一致
D.调用函数时,实参与形参可以用内存单元
19.在C语言中,引用数组元素时,其下标的数据类型允许是()。
(2分)
A.整型常量
B.整型表达式
C.整型常量或整型表达式
D.任何类型的表达式
20.变量的有效范围与其定义位置有关,(),其作用域在整个源程序文件中都有效。
(2分)
A.在第一个函数中定义的变量
B.在定义第一个函数之前所定义的变量
C.在主函数中定义的变量
D.在函数中定义的静态变量
二填空题(共7题,总分值28分)
21.以下程序运行后的输出结果是__9____。
#defineSQR(x)x*x
main()
{inta,k=3;
a=++SQR(k+1);
printf("%d\n",a);}
(4分)22.有以下程序
voidswap1(intc[])
{intt;
t=c[0];c[0]=c[1];c[1]=t;
}
voidswap2(intc0,intc1)
{intt;
t=c0;c0=c1;c1=t;
}
main()
{inta[2]={3,5},b[2]={3,5};
swap1(A);swap2(b[0],b[1]);
printf(“%d,%d,%d,%d\n”,a[0],a[1],b[0],b[1]);
}
其输出结果是_5,3,3,5__。
(4分)
23.在C语言中,二维数组元素在内存中的存放顺序是按_行_存放的。
(4分)
24.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为_auto(动态存储)__。
(4分)
25.以下函数的功能是删除字符串s中的所有数字字符。
请填空。
void dele(chars[])
{ intn=0,i;
for(i=0,s[i];i++)
if(__s[i]<'0'||s[i]>'9'__)
s[n++]=s[i];
s[n]=_'\0'_;
}
(4分)
26.执行以下程序后,输出的结果是__4___。
intm=10;
intf(intx,inty)
{intm=5;
m+=x*y;
returnm;}
main()
{inta=6,b=7;
printf(“%d\n”,f(a,b)/m);}
(4分)27.以下程序实现从键盘上输入一个字符,用折半查找法找出该字符在已排序的字符串a中的位置。
若字符不在,则打印**。
请完善以下程序。
#include”stdio.h”
#include”string.h”
main()
{charstr[100],ch;
intbot=0,top,mid,flag=0;
gets(str);
getchar(ch);
top=___strlen(str)-1_;
while((top-bot)>=0)
{mid=___(top+bot)/2_;
if(str[mid]==c)
{___flag=1__;__break__;}
elseif(str[mid]
bot=_mid+1__;
else
top=_mid-1__;
}
if(flag)
printf(“%c字符在已知字符串中位置是%d\n”,c,mid+1);
else
printf(“**”);}
(4分)
三编程题(共2题,总分值32分)
28.编写程序将下标为奇数的数组元素从数组中删除,然后排序输出。
(16分)
29.编写程序实现输入一个十进制数,将其转化为指定进制的数制字符。
(16分)
28.
#define N 10
void sort(inta[],intn)
{intI,j,t;
for(I=1;I<=n-1;I++)
for(j=0;jif(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}}
main()
{inta[N],I,k=0;
for(I=0;Iscanf("%d",&a[I]);
for(I=0;Iif(I%2==0)a[k++]=a[I];
sort(a,k);
for(I=0;Iprintf("%d",a[I]);
29.
#include"string.h"
#include"stdio.h"
voidf(intm,intr,chara[])
{inti=0,k;
charb[17]="0123456789ABCDEF",t;
While(m!
=0)
{a[i++]=b[m%r];
m=m/r;
}
a[i]='\0' ;
puts(a) ;
k=strlen(a) ;
for(i=0;i{t=a[i];a[i]=a[k-1-i];a[k-l-i]=t;}
puts(a);
}
main()
{intr,m,i=0;
chara[16];
printf("pleaseinputm,r\n");
do
{scanf("%d,%d",&m,&r);
}while(m<0||r<2ll||r>16);
f(m,r,a);
printf("%dzhuan huan cheng %d jin zhi zi fu chuan wei %s\n", m,r,a) ;
}
江南大学网络教育第三阶段练习题
考试科目:
《C语言程序设计》第章至第章(总分100分)
__________学习中心(教学点)批次:
层次:
专业:
学号:
身份证号:
姓名:
得分:
江南大学现代远程教育第三阶段练习题
考试科目:
《C语言程序设计》第10章至第13章(总分100分)
学习中心(教学点)批次:
层次:
专业:
学号:
身份证号:
姓名:
得分:
一、单项选择题(本题共20小题,每小题2分,共40分。
)
1、若有说明:
intn=2,*p=&n,*q=p;,则以下非法的赋值语句是()。
A、p=q;B、*p=*q;C、n=*q;D、p=n;
2、已定义以下函数
fun(int*p)
{return*p:
}
该函数的返回值是()。
A、不确定的值B、形参p中存放的值
C、形参p所指存储单元中的值D、形参p的地址值
3、有以下程序
main()
{char*s[]={"one","two","three"},*p;
p=s[1];
printf("%c,%s\n",*(p+1),s[0]);
}
执行后输出结果是()。
A、n,twoB、