发布网友 发布时间:2022-04-22 04:05
共5个回答
热心网友 时间:2023-06-26 04:15
Neusoft
《C语言程序设计》习题集
《C程序设计》习题集
第一章C语言基础知识
1.1 填空题
1.要把高级语言编写的源程序转换为目标程序,需要使用
A) 编辑程序 B) 驱动程序 C) 诊断程序 D) 编译程序
2. 若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是
A) scanf("%d%d%d",&a,&b,d); B) scanf("%d%d%d",&a,&b,&d);
C) scanf("%d%d%d",a,b,d); D) scanf("%d%d%d",a,b,*d);
3.以下选项中合法的用户标识符是______。
A) long B) _2Test C) 3Dmax D) A.dat
4.设a和b均为double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是______。
A) 6.500000 B) 6 C) 5.500000 D) 6.000000
5.已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是______。
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语言程序的执行,总是起始于()。
A) 程序中的第一条可执行语句
B) 程序中的第一个函数
C) main函数
D) 包含文件中的第一个函数
7.下列说法中正确的是()
A) C程序书写时,不区分大小写字母
B) C程序书写时,一行只能写一个语句
C) C程序书写时,一个语句可分成几行书写
D) C程序书写时每行必须有行号
8.若有说明语句:int a; float b;,以下输入语句正确的是()
A) scanf("%f%f",&a,&b);
B) scanf("%f%d",&a,&b);
C) scanf("%d,%f",&a,&b);
D) scanf("%6.2f%6.2f",&a,&b);
9.以下程序的输出结果是()
main( )
{ int x=11,y=11;
printf("%d%d\\n",x--,--y);
}
A) 11,11 B) 10,10 C) 10,11 D) 11,10
10.执行下面程序段,给x、y赋值时,不能作为数据分隔符的是()
int x,y;
scanf("%d%d",&x,&y);
A) 空格 B) Tab键 C) 回车 D) 逗号
11.执行下面程序时,欲将25和2.5分别赋给a和b,正确的输入方法是。
int a;
float b;
scanf("a=%d,b=%f",&a,&b);
A) 25□2.5
B) 25,2.5
C) a=25,b=5.5
D) a=25□b=2.5
12.英文小写字母d的ASCII码为100,英文大写字母D的ASCII码为
A) 50 B) 66 C) 52 D) 68
13.以下定义语句中错误的是( )。
A)int a=3,b=5; B)float x1; x2;
C)char c1,c2,c3; D)double y3, y4;
14.若将整数4和5赋给整型变量a和b,对于语句scanf("%d%d" , &a,&b);在从键盘输入数据时,正确的数据输入格式为( )。
A)4,5 B)4 5 C)4:5 D)4#5
15.若整型变量a和b的值分别为6和8,则下列语句printf("a=%d,b=%d",a,b); 的输出结果为( )。
A)6, 8 B)6 8 C)a=6 b=8 D)a=6, b=8
16.C语言中的字符常量是以( )括起来的一个字符。
A)双引号 B)单引号 C)\……\ D)*……*
17.C语言中的转义字符\n的作用是( )。
A)回车换行 B)横向跳格
C)纵向跳至本列下行 D)将光标移至本行行首
18.若有定义:int a=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为
A) 1.4 B) 1 C) 2.0 D) 2
19.如果要把常量327存入变量a中,a可以定义成哪些类型?(多选)
A. int B. char
C. long D. float
20.下面哪个表达式的值为4.(单选)
A. 11/3 B. 11.0/3
C. (float)11/3 D. (int)(11.0/3+0.5)
#include<stdio.h>
#include<math.h>
main( )
{int a=1,b=4,c=2;
float x=5.5,y=9.0,z;
z=(a+b)/c+sqrt((double)y)*1.2/c+x;
printf("%f\n",z);
}
A).9.800000 B).9.300000 C).8.500000 D).8.000000
21.main( )
{int x = 10, y = 3;
printf("%d\n",y=x/y);
}
A).0 B).1 C).3 D).不确定的值
22.main( )
{int a;
printf("%d\n";(a=3*5,a*4,a+5));
}
A).65 B).20 C).15 D).10
23.已知小写字母a的ASCII码为97,大写字母A的ASCII码为65。以下程序
main()
{ unsigned int a=32, b=66;
printf("%c\n", a+b);
}
的结果为:
A).66 B).98 C).b D).B
24.设有如下定义
int x=10,y=3,z;
则语句
printf("%d\n",z=(x%y,x/y));
的输出结果是
A).1 B).0 C).4 D).3
25.#define SQR(X) X*X
main()
{
int a=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n",a);
}
A).10 B).1 C).9 D).0
26.#define MAX(x, y) (x)>(y)?(x):(y)
main()
{ int a=1, b=2, c=3, d=2, t;
t=MAX(a+b, c+d)*100;
printf("%d\n",t);
}
的运行结果为:
A).500 B).5 C).3 D).300
27.以下程序的输出结果是
main()
{
int x=10,y=10;
printf("%d %d\n",x--,--y);
}
A).10 10 B).9 9 C).0 10 D).10 9
28.语句:printf("%d",(a=2)&&(b= -2));的输出结果是
A).无输出 B).结果不确定 C).-1 D).1
33、当c的值不为0时, 能正确将c的值赋给变量a、b
A).c=b=a;
B).(a=c)||(b=c)
C).(a=c)&&(b=c)
D).a=c=b
29.能正确表示a和b同时为正或同时为负的逻辑表达式是
A).(a>=0||b>=0)&&(a<0||b<0) B).(a>=0&&b>=0)&&(a<0&&b<0)
C).(a+b>0)&&(a+b<=0) D).a*b>0
30.下面合法的赋值语句是
A) x+y=2002; B) ch="green"; C) x=(a+b)++; D) x=y=0316;
31.下面哪个表达式的值为4.(单选)
A. 11/3 B. 11.0/3
C. (float)11/3 D. (int)(11.0/3+0.5)
32.已知a为整型变量,那么与表达式 a!=0 真假值情况相同的表达式有哪些?(多选)
A. a>0||a<0 B. a
C. !a= =0 D. !a
33.以下非法的赋值语句是
A) n=(i=2,++i); B) j++; C) ++(i+1); D) x=j>0;
34.若有以下程序:
main()
{int k=2,i=2,m;
m=(k+=i*=k); printf("%d,%d\n",m,i);
}
执行后的输出结果是______。
A) 8,6 B) 8,3 C) 6,4 D) 7,4
35.已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1&&y+z/2的值是______。
A) 6 B) 0 C) 2 D) 1
36.以下程序的输出结果是
main()
{
int a=3;
printf("%d\n",(a+=a-=a*a) );
}
A) -6 B)12 C) 0 D) –12
37.设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为
A) 0 B) 1 C)2 D) 3
38.假定w、x、y、z、m均为int型变量,有如下程序段:
w=1; x=2; y=3; z=4;
m=(w<x)?w: x;
m=(m<y)?m:y;
m=(m<z)?m: z;
则该程序运行后,m的值是
A) 4 B) 3 C) 2 D) 1
1.2 填空题
1.下面程序段的输出结果是。
int k=10;
float a=3.5,b=6.7,c;
c=a+k%3*(int)(a+b)%2/4;
2.表达式5%(-3)的值是,表达式-5%(-3)的值是。
3.已知:int a=5;则执行a+=a-=a*a;语句后,a的值为。
4.下面程序的运行结果是x=,y=。
main( )
{ float x=4.9;int y;
y=(int)x;
printf ("x=%f , y=%d", x ,y); }
5.若有定义:int a=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为。
6.以下程序的输出结果是。
main()
{ int a=5,b=4,c=6,d;
printf("%d\n",d=a>b?(a>c?a:c):(b));
}
7.以下程序的输出结果是。
main()
{ int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);
}
8.当a=3,b=4,c=5时,写出下列各式的值。
a<b的值为___, a<=b的值为___,
a==c的值为___, a!=c的值为___,
a&&b的值为___, !a&&b的值为___,
a||c的值为___, !a||c的值为___,
a+b>c&&b==c的值为___。
9.整型变量a的值是5,表达式a/=a+a;的值。
10.已知a=3,b=4,c=5,逻辑表达式a||b+c&&b-c的值
11.已知a=3,b=4,c=5,逻辑表达式!(a>b)&&!c||1的值
1.3 程序设计题
1.编写程序:在屏幕上显示一句话“hello neusoft!”。
2.编写程序在屏幕上输出如下图型:
*
***
*****
*******
3.已知圆的半径是5.6,求其直径、周长、面积并输出。
4.从键盘输入圆的半径,求其直径、周长、面积并输出。
5.编写程序求任意圆的体积
6.求任意一元二次方程度两个实根。
第二章 顺序程序结构设计
2.1 填空题
1.计算机语言提供三种基本控制结构,即,,。人们提倡使用这三种结构编写程序,并称这样的程序设计为。
2.2 程序设计题
1.从键盘输入5个整数,求它们的和、平均值并输出。
2.编写程序,从键盘输入两个整数分别存放在变量c1,c2中,要求通过程序交换它们的值。
第三章 分支结构程序设计
3.1 填空题
1.能正确表示“当x的值在[1,10]和[200,210]范围内为真,否则为假”的表达式是()。
A)(x>=1)&& (x<=10) && (x>=200) || (x<=210)
B)(x>=1)|| (x<=10) || (x>=200) || (x<=210)
C)(x>=1)&& (x<=10) || (x>=200) && (x<=210)
D)(x>=1)|| (x<=10) && (x>=200) || (x<=210)
2.判断char型变量ch是否为大写字母的正确表达式是()。
A)’A’<=ch<=’Z’ B) (ch>=’A’) & (ch<=’Z’)
C) (ch>=’A’) && (ch<=’Z’) D)(‘A’<=ch) AND (‘Z’>=ch)
3.请阅读以下程序:
main()
{ int a=5, b=0, c=0;
if (a=b+c) printf(“***\n”);
else printf(“$$$\n”);
}
以上程序()。
A) 有语法错误不能通过编译 B) 可以通过编译但不能通过连接
C) 输出*** D) 输出$$$
4.当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
5.以下程序的输出结果是()。
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
6.若运行时给变量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
3.2 填空题
1.输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其它字符不变。请在横线上填写正确的内容。
main()
{ char ch;
scanf(“%c”, &ch);
if () ch=ch+32;
else if ( ch>=’a’ && ch<=’z’ ) ;
printf(“%c”, ch);
}
2.以下程序实现:输入三个整数,按从大到小的顺序进行输出。请在横线上填写正确内容。
main()
{ int x, y, z, c;
scanf(“%d %d %d”, &x, &y, &z);
if ( )
if ( )
if ()
printf(“%d, %d,%d”, x, y, z);
}
3.以下程序的运行结果是。
main()
{ int a, b, c, d, x;
a=c=0; b=1; d=20;
if (a) d=d-10;
else if (!b)
if (!c) x=15;
else x=25;
printf(“%d\n”,d);
}
4.下面程序根据以下函数关系,对输入的每个x值,计算出y值。请在横线上填写正确内容。
x y
2<x<=10 x(x+2)
-1<x<=2 2x
X<=-1 x-1
main()
{ int x, y;
scanf(“%d”, &x);
if () y=x*(x+2);
else if () y=2*x;
else if ( x<=-1 ) y=x-1;
else ;
if (y!=-1) printf(“%d”, y);
else printf(“error”);
}
5.设有程序片段:
switch (grade)
{ case ‘A’ : printf(“ 85-100\n”);
case ‘B’ : printf(“ 70-84\n”);
case ‘C’ : printf(“ 60-69\n”);
case ‘D’ : printf(“<60\n”);
default : printf(“error!\n”);
}
若grade的值为’C’,则输出结果是。
6.以下程序段的运行结果是。
int x=1, y=0;
switch (x)
{ case 1:
switch (y)
{ case 0 : printf(“**1**\n”); break;
case 1 : printf(“**2**\n”); break;
}
case 2: printf(“**3**\n”);
}
3.3 程序设计题
1.写一程序,从键盘上输入一年份year(为十进制数),判断其是否为闰年。(闰年的条件是:能被4整除、但不能被100整除,或者能被400整除)
2.从键盘输入x的值,求y的值并输出。
3.从键盘输入四个整数,输出其中的最大者。
4.求任意二次方程的根。(包括虚根)
5.根据输入的X值计算并输出如下分段函数的值。
6.某百货公司采用购物打折扣的方法来促销商品,该公司根据输入的购物金额,计算并输出顾客实际付款金额,顾客一次性购物的折扣率是:
(1)少于500元不打折;
(2)500元以上且少于1000元者,按九五折优惠;
(3)1000元以上且少于2000元者,按九折优惠;
(4)2000元以上且少于3000元者,按八五折优惠;
(5)3000元以上者,按八折优惠。
7.根据输入的三个边长a,b,c,判断它们能否构成三角形;若能构成三角形,继续判断该三角形是等边、等腰还是一般三角形。
第四章 循环结构程序设计
4.1 选择题
1.设有程序段
int k=10;
while (k=0) k= k—1;
则下面描述中正确的是()
A) while循环执行10次 B)循环是无限循环
C)循环体语句一次也不执行 D)循环体语句执行一次
2.下面程序的功能是计算:至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
3.下面程序段的运行结果是
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
4.下面程序的功能是计算 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
5.下面程序段:
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个非负整数
6.下面程序的运行结果是:
#include "stdio.h"
main()
{int i;
for(i=1;i<=5;i++)
{if (i%2) printf("*");
else continue;
printf("#");
}
printf("#");}
A) *#*#$ B) #*#*#*$ C) *#*#$ D)#*#*$
7.设有程序段
int k=10;
while(k=5) k=k-1;
则下面描述正确的是
A)while循环执行10次 B)是死循环
C)循环语句一次也不执行 D)循环体语句执行一次
8.以下程序运行后的输出结果是________。
main()
{int x=15;
while(x>10&&x<50)
{x++;
if(x/3)
else continue;
}
printf("%d\n",x);
}
4.2 程序设计题
1.求1~1000内所有能被3整除的整数,所有数右对齐,每行输出10个数,每屏输出20行。
2.从键盘上接受10个数,求和。要求:
(1)、先提示“请输入第1个数:” ,输入第一个数后再提示“请输入第2个数”,依次类推;
(2)、输入完十个数后,输出十个数求和的结果。
3.求n! ,n的值从键盘输入.
4.从键盘上输入一个正整数(VC下少于10位,winTC下小于32767),求其各数位之和.
5.从键盘输入10个数,找出其中最大的数。分别用while和for语句实现。
6.输出2~100(不含100)之间的全部同构数。所谓同构数是指:如果某数与其右起若干位的平方数相等,则称该数为同构数。
7.编写输出以下图形的程序(要求行数从键盘输入)。
1
12
123
1234
12345
123456
……
8.计算200以内的所有素数的和。
5.1 选择题
1.以下对一维数组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];
2.对以下说明语句的正确理解是( )
int a[10]=;
(A)将5个初值依次赋给a[1]至a[5]
(B)将5个初值依次赋给a[0]至a[4]
(C)将5个初值依次赋给a[6]至a[10]
(D)因为数组长度与初值的个数不相同,所以此语句不正确
3.下面程序的运行结果是( )
char c[5]=; printf(“%s”,c);
(A)ab (B)abc (C)abc+乱码 (D)ab\0c\0
4.对两个数组a和b进行如下初始化
char a[]=”ABCDEF”;
char b[]=;
则以下叙述正确的是 ( )
(A)a与b数组完全相同 (B)a与b长度相同
(C)a和b中都存放字符串 (D)a数组比b数组的长度长
5.下面是对s的初始化,其中不正确的是( )
(A)char s[5]=; (B)char s[5]=;
(C)char s[5]=””; (D)char s[5]=”abcdef”;
6.以下程序运行的结果是( )
char s[6];
s=”abcd”;
printf(“%s\n”,s);
(A)”abcd” (B)abcd (C)abcd+乱码 (D)编译出错
7.若有说明语句char u[]=”Microsoft”,则数组的大小是( )
(A)100 (B)80 (C)10 (D)9
8.以下不正确的定义语句是 ( )
(A)double y[5]=;
(B)int y[5]=;
(C)char c[]=;
(D)char c[]=;
9.当执行下面的程序时,如果输入ABC,则输出结果是( )
A) ABC67 B) ABC67 C) 12345ABC6 D) ABC4567
#include "stdio.h"
#include "string.h"
main()
{ char ss[10]="1,2,3,4,5";
gets(ss); strcat(ss, "67"); printf("%s\n",ss);
}
10.下列程序段的输出结果是 。
main()
{ char b[]="Hello,you";
b[5]=0;
printf("%s \n", b );
}
11. 以下程序的输出结果是( )
main()
{ int i, a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
}
A) 258 B) 741 C) 852 D) 369
12.在定义int a[10];之后,对a的引用正确的是( )。
A.a[10] B.a[6.3] C.a(6) D.a[10-10]
13.以下对一维数组a进行正确初始化的是( )。
A.int a[10]=(0,0,0,0,0); B.int a[10]={};
C.int a[]=; D.int a[10]=;
14.以下对字符数组word进行不正确初始化的是( )。
A.char word[]=’Trubo\0’;
B.char word[]=;
C.char word[]=;
D.char word[]=”Trubo\0”;
15.以下正确的定义语句是( )。
A.int A[‘a’]; B.int A[3,4]; C.int A[][3]; D.int A[10];
16.以下给字符数组str定义和赋值正确的是( )。
A.char str[10]; str=;
B.char str[]=;
C.char str[10]; strcpy(str,“abcdefghijklmnop”);
D.char str[10]=;
17.在执行char str[10]=”China\0”; strlen(str)的结果是( )。
A.5 B.6 C.7 D.9
18.在执行char str[10]=”Ch\nina\0”; strlen(str)的结果是( )。
A.5 B.6 C.7 D.9
19.当接受用户输入的含空格的字符串时,应使用( )函数。
A.scanf() B.gets() C.getchar() D.getc()
20.当输出含空格的字符串时,应使用( )函数。
A.printf() B.puts() C.putchar() D.putc()
5.2 填空题
1. 若有定义语句char c[10]=”hello”,s[]=”world”;,则字符数组c的长度为,字符数组c的长度为,字符串”hello”的长度是,字符串“world”的长度为_。
2. 字符串”hello,world!”的长度为,若有说明语句char s[]=”hello,world!”,则数组s的大小是。
3.以下程序执行时输入Language Programming<回车>的结果是。
#include <stdio.h>
main( )
{
char str[30];
scanf(“%s”, str);
printf(“str=%s\n”, str);
}
4.以下程序执行时输入Language Programming<回车>的结果是。
#include <stdio.h>
main( )
{
char str[30];
gets(str);
printf(“str=%s\n”, str);
}
5.以下程序的执行结果是。
#include <stdio.h>
main( )
{
int a[]=, i, j, s=0;
j=0;
for (i=3; i>=0; i--)
{
s=s+a[i]*j;
j=j*10;
}
printf(“s=%d\n”, s);
}
6.以下程序的执行结果是。
#include <stdio.h>
main( )
{
char str[]=;
int i;
for (i=0; str[i]!=’\0’; i++)
if (str[i]>=’0’ && str[i]<=’9’)
printf(“%c”, str[i]);
printf(“\n”);
}
5.3 程序设计题
1.从键盘输入5个整数,保存到数组a中,先正序输出再逆序输出
2.从键盘输入6个整数保存到数组中,求值最大的元素,将这个值最大的元素与数组的最后一个元素交换。最后输出整个数组
3.从键盘输入8个整数保存到数组中,运用选择法按从大到小排序后输出数组。
4.编程实现:从键盘输入10个字符,存储到字符型一维数组str中,再从键盘上输入另一个字符ch,要求将str中出现的第一个ch字符删除。将删除ch后的数组str输出到屏幕上。
5.编写程序实现:将两个字符串数组进行交换。
6.编程求两个3×4 (3行4列)矩阵之和,然后输出(矩阵元素的值从键盘输入)
7.定义一个4行5列的二维整型数组,对其进行赋值,然后从该数组中选择出一个最小数及该数的下标值(行和列的下标值都要记录)。
另外,虚机团上产品团购,超级便宜
热心网友 时间:2023-06-26 04:16
B
strlen的原理是从字符串的开始读取,每读一个字符里面有一个计数器就加1
直到读到\0为止
因此 你只要数一下数组中字符的个数就OK了
c h \n i n a 一共是6个 注意读到\0为止那个\0不算在内的
另外\n是转意字符,它算一个字符
热心网友 时间:2023-06-26 04:16
strlen返回的是实际字符串长度,长度是指从数组下标为0开始,直到非'\0'字符的下标前一位的长度。所以答案是B、6。\n算一个。
热心网友 时间:2023-06-26 04:17
选C,因为字符串,字符串后面系统自动加上\0,所以是7个
热心网友 时间:2023-06-26 04:17
B6 \n是转义字符,是一个字符