当前位置:文档之家› C语言程序设计练习题库

C语言程序设计练习题库

C语言习题集

1-4章练习题

一.选择题

1、以下叙述中正确的是()。

A、用C程序实现的算法必须要有输入和输出操作

B、用C程序实现的算法可以没有输出但必须要有输入

C、用C程序实现的算法可以没有输入但必须要有输出

D、用C程序实现的算法可以既没有输入也没有输出

2、以下叙述中错误的是()

A、用户所定义的标识符允许使用关键字

B、用户所定义的标识符应尽量做到“见名知意”

C、用户所定义的标识符必须以字母或下划线开头

D、用户定义的标识符中,大、小写字母代表不同标识

3、以下不正确的C语言标识符是()

A、int

B、a_1_2

C、ab1exe

D、_x

4、下面的注释那个写法是正确的()

A、/*this is a comment*\

B、/*this is a comment/* it is error*/

C、/*this is a comment*/

D、//this one seems like a comment doesn‟t it

5、C语言提供的不正确的转义字符是()

A、‟\\‟

B、‟\‟‟

C、‟074‟

D、‟\0‟

6、字符串常量"ab\\\c\ted\3\76"的长度是()

A、9

B、10

C、16

D、8

7、在定义变量时同时给a、b、c三个整型变量赋初值5的正确语句是()

A、int a=b=c=5;

B、int a, b, c = 5;

C、int a =5 ;b = 5; c =5 ;

D、int a =5, b = 5, c =5;

8、在C语言中,要求参加运算的数必须时整数的运算符是()

A、/

B、*

C、%

D、=

9、是C语言提供的合法的数据类型关键字()

A、Float

B、signed

C、int

D、Char

10、若int k=7,x=12;则能使值为3的表达式是()

A、x%=(k%=5)

B、x%=(k-k%5)

C、x%=k-k%5

D、(x%=k)-(k%=5)

11、对于下述语句,若将10赋给变量k1和k3,将20赋给变量k2和k4,则应按()方式输入数据。

int k1,k2,k3,k4;

scanf(“%d%d”,&k1,&k2);

scanf(“%d,%d”,&k3,&k4);

A、1020↙

B、10 20↙

C、10,20 ↙

D、10 20↙

1020↙10 20↙10,20↙10,20↙

12、若定义x为double型变量,则能正确输入x值的语句是()

A、scanf(“%f”,x);

B、scanf(“%f”,&x);

C、scanf(“%lf”,&x);

D、scanf(“%5.1f”,&x);

13、以下程序片段()

main ( )

{ int x=0,y=0,z=0;

if (x=y+z) printf(“***”);

else printf(“###”);

}

A、有语法错误,不能通过编译

B、输出:***

C、可以编译,但不能通过连接,所以不能运行

D、输出:###

14、下述程序的输出结果是()

main ( )

{ int a=0,b=0,c=0;

if (++a>0 | | ++b>0)

++c;

printf(“%d,%d,%d”,a,b,c);

}

A、0,0,0

B、1,1,1

C、1,0,1

D、0,1,1

15、以下程序输出结果是()

main ( )

{ int x=1,y=0,a=0,b=0;

switch(x) {

case 1:switch (y) {

case 0 : a++ ; break ;

case 1 : b++ ; break ;

}

case 2:a++; b++; break;

case 3:a++; b++;

}

printf(“a=%d,b=%d”,a,b);

}

A、a=1,b=0

B、a=2,b=1

C、a=1,b=1

D、a=2,b=2

16、下述程序的输出结果是()

main ( )

{ int a,b,c;

int x=5,y=10;

a=(--y==x++) ? –y : ++x ;

b=y++ ; c=x ;

printf(“%d,%d,%d”,a,b,c);

}

A、6,9,7

B、6,9,6

C、7,9,6 D 、7,9,7

17、当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是()

if (a

if (c

else

if (a

if (b

else x=3;

else x=6;

else x=7;

A、1

B、2

C、3

D、4

18、若有定义:int a=3,b=2,c=1;并有表达式:①a%b,②a>b>c,③b&&c+1,④c+=1,则表达式值相等的是()

A、①和②

B、②和③

C、①和③

D、③和④

19、以下程序的运行结果是()

int main()

{

int m=5;

if(m++>5)

printf( “%d\n”,m);

else

printf( “%d\n”,m--);

}

A、4

B、5

C、6

D、7

20、两次运行下面的程序,如果从键盘上分别输入7和5,则输出结果是()

int main()

{

int a;

scanf("%d",&a);

if(a++>6)

printf("%d",a);

else

printf("%d\n",a--)

}

A、7和5

B、8和6

C、8和5

D、7和6

二.填空题

1、C程序是由构成的,一个C程序中至少包含。因此,是C 程序的基本单位。

2、C 语言中的标识符只能由、和三种字符组成,且第一个字符必须是。

3、C语言中包含了三种基本的结构,它们分别为:、、

4、设x,i,j,k都是int型变量,表达式x=(i=4,j=16,k=32)计算后,x的值为。

5、一般地,调用标准字符或格式输入输出库函数时,文件开头应有以下预编译命令:。

6、C语言提供三种逻辑运算符,按优先级高低它们分别是,,。

7、将条件“y能被4整除但不能被100整除,或y能被400整除”写成逻辑表达式。

8、在C语言中的实型变量分为两种类型,它们是和双精度型。

9、执行以下程序段后,a= ,b= ,c= 。

int x=10,y=9 ;

int a,b,c ;

a = (x--=y++) ? x-- : y++ ;

b = x++ ;

c = y ;

三.编程题

1、输出1000以内所有的水仙花数(水仙花数是指一个正三位数,其各个位数的立方和等于该数本身)。

2、编写一个程序,输入三个数,使其按照从小到大的顺序输出。

循环练习题

一.选择题

1、C语言中while和do-while循环的主要区别是()

A.do-while的循环体至少无条件执行一次

B.while的循环控制条件比do–while的循环控制条件严格

C.do-while允许从外部转到循环体内

D.do-while的循环体不能是复合语句

2、以下描述中正确的是()

A.由于do -while循环中循环语句中只能是一条可执行语句,所以循环体内不能使用复合语句。

B.do-while循环由do开始,且while结束,在while(表达式)后面不能写分号。

C.在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作。

D.do-while循环中,根据情况可以省略while

3、下面有关for循环的正确描述是()

A.for循环只能用于循环次数已经确定的情况

B.for 循环是先执行循环体语句,后判断表达式

C.在for循环中,不能用break语句跳出循环体

D.for循环的循环体语句中,可以包含多条语句,但必须花括号括起来

4、对for(表达式1;; 表达式3)可理解为()

A.for(表达式1;0;表达式3)

B.for(表达式1;1;表达式3)

C.for(表达式1;表达式1;表达式3)

D.for(表达式1;表达式3;表达式3)

5、以下叙述正确的是:()

A.do---while语句构成的循环不能用其他语句构成的循环来代替。

B.do---while语句构成的循环只能用break语句退出。

C.用do---while语句构成的循环,在while 后的表达式为非零时结束循环。

D.用do---while语句构成的循环,在while后的表达式为零时结束循环。

6、for(i=0;i<10;i++);结束后,i的值是()

A. 9

B. 10

C. 11

D. 12

7、下面程序的循环次数是():

int k=0;

while(k<10)

{if(k<1) continue;

if(k==5) break;

k++;

}

A. 5

B. 6

C. 4

D. 死循环,不能确定循环次数

8、以下for循环的次数是()

for(x=0,y=0;(y=123)&&(x<4);x++);

A.是无限循环

B.循环次数不定

C.4次

D.3次

9、若i为整型变量,则以下循环执行的次数是()

for(i=2;i=0;) printf(“%d”,i--)

A.无限次

B.0次

C.1次

D.2次

10、若运行以下程序时,从键盘输入2473,则下面程序的运行结果是()

#include

main( )

{int c;

while((c=getchar( ))!=‟\n‟)

switch(c-…2‟)

{case 0:

case 1:putchar(c+4);

case 2:putchar(c+4);break;

case 3:putchar(c+3);

default:putchar(c+2);break;}

printf(“\n”);}

A.668977 B.668966 C.66778777 D.6688766

11、下面程序的功能是从键盘输入的一组字符中统计出大写字母个数m和小写字母个数n,并

输出m,n中较大者,请选择填空。

#include

main( )

{int m=0,n=0;

char c;

while(()!=‟\n‟)

{if(c>=‟A‟&&c<=‟Z‟) m++;

if(c>‟a‟&&c<=‟z‟) n++;}

printf(“%d\n”,m

A. c==getchar( )

B.getchar( )

C.c=getchar()

D.scanf(“%c”,c)

A. n:m

B.m:n

C.m:m

D.n:n

12、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等的数时结

束循环,请选择填空()。

main()

{int a,b,t;

scanf(“%d,%d”,&a,&b);

while( )

{if(a>b) {t=a;a=b;b=t;}

printf(“%d,%d\n”,a,b);

scanf(“%d,%d”,&a,&b);}

}

A.!a=b

B.a!=b

C.a==b

D.a=b

13、下面程序段的执行结果是()

a=1;b=2;c=2;

while(a

printf("%d,%d,%d",a,b,c);

A.1,2,0

B.2,1,0

C.1,2,1

D.2,1,1

14、下面程序的输出结果是()

main()

{

int s,k;

for(s=1,k=2;k<5;k++)

s+=k;

printf(“%d\n”,s);

}

A. 1

B. 9

C. 10

D. 15

15、要使下面程序输出10个整数,则在下画线处填入正确的数是():

for(i=0;i<= ;)

printf(“%d\n”,i+=2);

A. 9

B. 10

C. 18

D. 20

16、运行下面程序:

main()

{ int i=10,j=0;

do

{ j=j+i;

i--;

}while(i>5);

printf(“%d\n”,j);

}

输出结果是():

A. 45

B. 40

C. 34

D. 55

17、运行下面程序

main()

{ int k=0,a=1;

while(k<10)

{

for( ; ;)

{ if((k%10)==0) break;

else k--;

}

k+=11; a+=k;

}

printf(“%d %d\n”,k,a);

}

则输出的结果是()

A. 21 32

B. 21 33

C. 11 12

D. 10 11

18、有如下程序:

main()

{ int x=3;

do{

printf(“%d”,x--);

}while(!x);

}

该程序的执行结果是:()

A. 3 2 1

B. 2 1 0

C. 3

D. 2

19、若k为整型变量,则下面while循环执行的次数为:()k=10;

while(k==0) k=k-1;

A. 0

B. 1

C. 10

D. 无限次

20、若i为整型变量,则以下循环执行的次数是()

for(i=2;i==0;)printf(“%d”,i--);

A.无限次 B. 0次 C. 1次 D. 2次

21、以下循环体的执行次数是;()

main()

{

int i,j;

for(i=0,j=3;i<=j;i+=2,j--)

printf(“%d\n”,i);

}

A. 3

B. 2

C. 1

D. 0

22、执行以下程序后,输出结果是:()main()

{ int y=10;

do { y--;}while(--y);

printf(“%d”,y--);

}

A. -1

B. 1

C. 8

D. 0

23、以下程序的输出结果是:()

main()

{ int a,b;

for(a=1,b=1;a<=100;a++)

{

if(b>=10) break;

if(b%3==1) {b+=3; continue;}

}

printf(“%d”,a);

}

A. 101

B. 3

C. 4

D. 5

24、下列程序段不是死循环的是()

A.int I=100 ;

while(1){I=I%100+1;

if(I>100)break;}

B. for(;;)

C. int k=0;

do{++k;}while(k>=0);

D. int s=36; while(s); --s;

25、下面程序段的运行结果是()

for(x=3;x<6;x++)printf((x%2)?(“**%d”):(“##%d\n”),x); A.**3 B.##3 C.##3 D.**3##4 ##4 **4 **4##5 **5

**5 ##5

二.填空题

1、下面程序的运行结果为:

#include

main()

{int a=10,y=0;

do

{a+=2;y+=a;

if(y>10) break;

}while(a<8);

printf("a=%d,y=%d\n",a,y);

}

2、从键盘输入1 2 3 4 5 -1 回车,则下面程序运行的结果是:main()

{ int n,k=0;

do

{ scanf(“%d”,&n);

k+=n;

}while(n!=-1);

printf(“k=%d,n=%d”,k,n);

}

3、下面程序的运行结果为:

main()

{int i,j,s=0;

for(i=1,j=5;i

s+=i*10+j;

printf(“\n%d”,s);

}

4、下面程序的运行结果是

main()

{

int i=10,s=0;

for(;--i;)

if(i%3==0)

s+=i;

s++;

printf(“\ns=%d”,s);

}

5、下面程序的运行结果是

main()

{int a=2,n=5,s;

s=a;

for(;--n;)

s=s*10+a;

printf(“%d”,s);

}

6、下面的程序运行时,循环体语句“a++”运行的次数为:main()

{int i,j,a=0;

for(i=0;i<2;i++)

for(j=4;j>=0;j--)

a++;

printf("%d",a);

}

7、下面的程序运行后,a的值为:

main()

{ int i,j,a=0;

for(i=0;i<2;i++) a++;

for(j=4;j>=0;j--) a++;

printf("%d",a);

}

8、下面程序的运行结果为:

int i=1,s=3;

do{

s+=i++;

if(s%7==0) continue;

else ++i;

}while(s<15);

printf(“%d”,i);

9、当运行以下程序时,从键盘输入China# 回车,则下面程序的运行结果是:

#include “stdio.h”

main()

{ int v1=0,v2=0;

char c;

while((c=getchar())!=‟#‟)

{ switch(c)

{ case …a‟:

case …h‟:

default:v1++;

case …o‟:v2++;

}

}

printf(“%d,%d\n”,v1,v2);

}

10、以下程序输入一行字符(以回车结束输入),统计其中所有数字字符的个数。

#include “stdio.h”

main()

{ char ch;

int s=0;

while( (ch=getchar())!=…‟)

{if(ch>=…0‟ch<=…9‟)s++; }

printf(“%d\n”,s);

}

11、以下程序的功能是求两个整数的最大公约数,运行时输入两个数。

#include “stdio.h”

main()

{ int m,n,r,t;

scanf(“%d,%d”,&m,&n);

while( ){m=n; ;}

printf(“它们的最大公约数为%d\n”,n);

}

12、下面的程序输出200-300之间的全部素数的和,请填空:

main( )

{int i,j,f,s=0;

for(i=201;i<300;i+=2)

{f= ;

for(j=2;j<=i/2;j++)

if(i%j = =0)

{f=0;

;}

if( )s+=i;}

printf(“200-300之间的全部素数的和为%d\n”,s);}

三、编程题

1、求1-2+3-4+…+99-100。

2、任意输入10个数,分别计算输出其中的正数和负数之和。

3、计算1---100以内的所有含6的数的和。

4、编写程序输出下面图形。

1

23

456

7890

5、编写程序输出下面图形

*

***

*****

*******

*****

***

*

数组练习题

一、选择题

1、在C语言中,引用数组元素时,其数组下标的数据类型允许是()

A.整型常量

B.整型表达式

C.整型常量或整形表达式

D.任何类型的表达式

2、若有说明:int a[10];则对数组元素的正确引用是()

A.a[10]

B.a[3.5]

C.a(5)

D.a[10-10]

3、以下对一维整型数组a的定义正确是()

A.int a()

B. int n,a[10];

C.int n;

D. int n;

scanf(“%d”,&n); int a[n];

int a[n];

4、以下能对一维数组a进行正确初始化的语句是()

A.int a[10]=(0,0,0,0,0)

B.int a[10]={}

C.int a[ ]={0};

D.int a[10]={10*1};

5、以下对二维数组a的正确说明是()

A.int a[3][ ];

B.float a(3,4)

C.double a[1][4];

D.float a(3)(4)

6、以下不能对二维数组进行正确初始化的是()

A. int a[2][3]={0};

B.int a[ ][3]={{1,2},{0}}

C. int a[2][3]={{1,2},{3,4},{5,6}};

D. int a[ ][3]={1,2,3,4,5,6}

7、设有数组定义:char array[]=“china”,则数组array所占的空间为()

A.4个字节

B.5个字节

C.6个字节

D.7个字节

8、当执行下面的程序时,如果输入ABC,则输出结果是()

#include

#include

void main()

{char ss[10]=“1,2,3,4,5”;

gets (ss);

stract(ss,”6789”);

printf(“%s\n”,ss);}

9、为了判断两个字符串str1和str2是否相等,应当使用()

A.if(str1==str2)

B.if(str1=str2)

C.if(strcmp(str1,str2))

D.if(strcmp(str1,str2)==0)

10、以下程序运行后的输出结果是()

main()

{char str[][9]={“hello”, “student”, “computer” };

printf(“%s\n”,str[1]);}

A.h

B.hello

C.student

https://www.doczj.com/doc/e319047743.html,puter

11、以下程序的输出结果是()

void main()

{char k,

w[][10]={“ABCD”,“EFGH”,“IJKL”,“MNOP”};

for(k=1;k<3;k++) printf(“%s\n”,w[k]);

}

A.ABCD

B.ABCD

C.EFG

D.EFGH

FGH EFG JK IJKL

KL IJ O

M

12、以下程序的输出结果是()

main( )

{char arr[2][4];

strcpy(arr[0],“you”);

strcpy(arr[1],“me”);

arr[0][3]=‘&’;

printf(“%s\n”,arr);

} A.you&me B.you C.me D.err

13、以下对一维整型数组a的正确说明是。

A)int a(10) ; B)int n=10,a[n];

C)int n; D)#define SIZE 10

scanf(“%d”,&n); int a[SIZE];

int a[n];

14、若有说明:int a[3][4]={0};则下面正确的叙述是。

A)只有元素a[0][0]可得到初值0

B)此说明语句不正确

C)数组a中各元素都可得到初值,但其值不一定为0

D)数组a中每个元素均可得到初值0

15、若有说明:int a[][4]={0,0};则下面不正确的叙述是。

A)数组a的每个元素都可得到初值0

B)二维数组a的第一维大小为1

C)因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1 D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

16、下面是对s的初始化,其中不正确的是。

A)char s[5]={“abc”}; B)char s[5]={‘a’,’b’,’c’};

C)char s[5]=” ”; D)char s[5]=”abcdef”;

17、有两个字符数组a,b,则以下正确的输入语句是。

A)gets(a,b); B)scanf(“%s%s”,a,b);

C)scanf(“%s%s”,&a,&b); D)gets(“a”),gets(“b”);

18、对两个数组a和b进行如下初始化:

char a[] = “ABCDEF”;

char b[] = {‘A’,‘B’,‘C’,‘D’,‘E’,‘F’};

则以下叙述正确的是

A) a与b完全相同 B) a与b长度相同

C) a与b中都存放字符串 D) a数组比b数组长度长

19、当运行以下程序时输入三行,每行都是在第一列上开始, 代表Entre键。

a

b

cdef

则程序的输出结果是

#include

#define N 6

main()

{ char c[N]; int i = 0;

for(i = 0; i < N; i++)

c[i] = getchar();

for(i = 0; i < N; i++)

putchar(c[i]);

}

A)abcdef B)a C)a D)a

b b b

c c

d cdef

d

e

f

20、以下程序段的输出结果是

pritnf(“%d\n”, strlen(“ATS\n012\1\\”));

A) 11 B) 10 C) 9 D)8

二、填空题

1、下面程序的功能是把以下给定的字符读入数组str1中,并输出行列号之和是2的数组元素。void main()

{char str[4][3]={‘A’,‘b’,’c’,‘d’,‘E’,‘f’,‘G’,‘h’,‘I’,‘j’,

‘K’,‘i’}; int x,y,z;

for(x=0;x<4;x++)

for(y=0;_______ y++)

{z=x+y;

if(_________) printf(“%c\n”,str[x][y]);

}

2、若有定义:double x[3][5];则x数组中行下标的下限为_________,列下标的上限为_________.

3、若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值

是_________,a[2][1]得到的初值为_________。

4、下面程序以每行4个数据的形式输出a数组,请填空。

#define N 20

main()

{int a[N],i;

for(i=0;i

for(i=0i

{if (_____________) _____________

printf("%3d",a[i]);

}

printf("\n");

}

5、下面程序可求出矩阵a的主对角线上的元素之和,请填空。

main()

{

int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

if(_____)sum=sum+_______;

printf("sum=%d\n",sum);

}

6、以下程序的输出结果是。

main()

{ int arr[10], i, k = 0;

for(i = 0; i < 10; i++)

arr[i] = i;

for(i = 0; i < 4; i++)

k += arr[i] + i;

printf(“%d \n”, k);

}

7、 给出以下程序,其功能是将a 矩阵和b 矩阵合并成c 矩阵,最后将c 矩阵按格式输出。请填空。

a = b= c = #include

main()

{ int a[3][4] = {{3, 1, 7, 5},{1, 2, 4, 3},{6, 3, 0, 2}};

int b[3][4] = {{2, 3, 1, 4},{5, 1, 3, 6},{1, 5, 2, 3}};

int i, j, c[3][4];

for(i = 0; i < 3; i++)

for(j = 0; j < 4; j++)

c[i][j] = ;

for(i = 0; i < 3; i++)

{ for(j = 0; j < 4; j++)

pritnf(“%5d”, c[i][j]);

;

}

}

8、 在C 语言中,二维数组的元素在内存中的存放顺序是 。

三.程序阅读题

1.写出下面程序的运行结果。

main ( )

{ int a[6][6],i,j ;

for (i=1; i<6 ; i++)

for (j=1 ; j<6 ; j++)

a[i][j]=(i/j)*(j/i) ;

for (i=1;i<6 ; i++) {

for (j=1 ; j<6 ; j++)

printf(“%2d”,a[i][j]) ;

printf(“\n”);

}

}

2.写出下面程序的运行结果。

main ( )

{ int i=0;

char a[ ]=”abm”, b[ ]=”aqid”, c[10];

while (a[i]!=’\0’ && b[i]!=’\0’) { 3 1 7 5 1 2 4 3 2 3 1 4 5 1 3 6 5 4 8 9

6 3 7

9

if (a[i]>=b[i]) c[i]=a[i]-32 ;

else c[i]=b[i]-32 ;

i++;

}

c[i]=’\0’;

puts(c);

}

3.当运行下面程序时,从键盘上输入AabD↙,则写出下面程序的运行结果。

main ( )

{ char s[80];

int i=0;

gets(s);

while (s[i]!=’\0’) {

if (s[i]<=’z’ && s[i]>=’a’)

s[i]=’z’+’a’-s[i] ;

i++;

}

puts(s);

}

4.写出下面程序的运行结果。

main ( )

{ int i,c;

char s[2][5]={“8980”,”9198”};

for (i=3; i>=0 ; i--) {

c=s[0][i]+s[1][i]-2*’0’;

s[0][j] = c % 10 + ‘\0’ ;

}

for (i=0; i<=1; i++) puts(s[i]);

}

5.当运行下面程序时,从键盘上输入7 4 8 9 1 5↙,则写出下面程序的运行结果。 main ( )

{ int a[6],i,j,k,m;

for (i=0 ; i<6 ; i++)

scanf (“%d”,&a[i]);

for (i=5 ; i>=0; i--) {

k=a[5];

for (j=4; j>=0; j--)

a[j+1]=a[j] ;

a[0]=k;

for (m=0 ; m<6 ; m++)

printf(“%d ”,a[m]);

printf(“\n”);

}

}

四.编程题

1.用选择法对10个整数排序。

2.有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。

3.有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母,小写字母,中文字母,中文字符,数字,空格及其他字符的个数。(提示:中文字符是两个字节,且数值均大于128的字符)。

4.对三人的四门课程分别按人和科目求平均成绩,并输出包括平均成绩的二维成绩表。

5.提高题:将一个数组中的值按逆序重新存放。例如:原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。

6.提高题:打印出杨辉三角形(要求打印出10行,课本P141页

7.6)

7.提高题:编写程序:

(1)求一个字符串S1的长度;

(2)将一个字符串S1的内容复制给另一个字符串S2;

(3)将两个字符串S1和S2连接起来,结果保存在S1字符串中;

(4)搜索一个字符在字符串中的位置(例如:’I’在”CHINA”中的位置为3)。如果没有搜索到,则位置为-1。

(5)比较两个字符串S1和S2,如果S1>S2,输出一个正数;如果S1=S2,输出0;如果S1

以上程序均使用gets或puts函数输入,输出字符串。不能使用string.h中的系统函数。

8.定义一个可以存放10个元素的int数组a,输入10个数,并逆序输出。

9.用数组来保存Fibonacci数列前20项数值,以每5个数据为一行进行输出。

10.统计具有10个元素的自然数数组num中的奇数个数。

函数练习题

一、选择题

1.有一下程序:

#include

int f(int x)

{

int y;

if(x==0||x==1)return (3);

y=x*x-f(x-2);

return y;

}

int main()

{

int z;

z=f(3);

printf("%d\n",z);

}

程序的运行结果是:

A 0

B 9

C 6

D 8

2.若有“fun(int a[],int n)”,以下说法正确的是()。

A)函数的类型为单精度类型

B) 第一个实参应该是数组名

C)实参和形参之间是一个值传递的过程

D)以上说法都不对

二、填空题

1.以下程序的输出结果是:__________。

float fun(int x,int y)

{

return (x+y);

}

main()

{

int a=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));

}

2.以下程序的运行结果是__________。

#include "stdio.h"

int a=3, b=6;

main()

{ int a=4, c;

c=plus(a,b);

printf(“%d\n”,c);

}

plus(int x,int y)

{ int z;

z=x+y;

return(z);}

3. 以下程序的运行结果是__________。

#include "stdio.h"

#include "string.h"

main()

{ char str1[20]={"WO"},str2[20]={"ABC"};

strcpy(str1,str2);

printf("%s",str1);

}

4.以下程序运行后的输出结果是___ ______。

int x;

int main()

{ x=5;

cube();

printf(“%d\n”,x);

}

cube()

{

x=x*x*x;

}

5.以下程序运行后的输出结果是_____________________。#include

int main()

{ int a,b;

int *p,*q;

p=&a;q=&b;

*p=3;*q=a+*p;

printf("%d,%d\n",a,b);

return 0;

}

6.以下程序运行后的输出结果是_____________________。#include

void fun(double *x,double *y)

{ double *t;

t=x;

x=y;

y=t; }

int main()

{ double a=9.8,b=7.5;

fun(&a,&b);

printf("%.1f,%.1f\n",a,b);

return 0;

}

7.以下程序运行后的输出结果是_____________________。#include

void fun(double x,double y)

{ double t;

t=x;

x=y;

y=t;

}

int main()

{ double a=9.8,b=7.5;

fun(a,b);

printf("%.1f,%.1f\n",a,b);

return 0;

}

8.以下程序运行后的输出结果是_____________________。

#include

void fun(double *x,double *y)

{ double t;

t=*x;

*x=*y;

*y=t;

}

int main()

{ double a=9.8,b=7.5;

fun(&a,&b);

printf("%.1f,%.1f\n",a,b);

return 0;

}

9.编写一个函数,求一个5×5整型矩阵的两条对角线元素之和。

函数头部为 double fun(double a[5][5])

10.求字符串长度的标准库函数是 。

11.从函数的形式看,函数分为有参函数和。

12.已知int a[10],*q;q=a;,则*(q+1)的值为_____,*q+1的值为_____.

13根据变量存储方式的不同,变量共有auto、______、_______和________四种类型。

14静态局部变量在_________时被赋初值,并且如果在定义静态局部变量时不赋初值的话,则它的值为_______。

15.从函数的形式看,函数分为__________和无参函数,从用户使用的角度看,函数分为________和用户自定义函数。

16.在_________________________或____________________________情况下,在使用此函数时可以不写函数的声明;当被调用函数位于调用函数后面,并且函数的返回值不是整形时,在使用此函数前必须写函数的声明。

17.在d:\gm\101\目录下有文件mysource.c的文件,在此文件中有我们需要用的函数,我们需要将此文件包含到当前程序中,请写出包含的命令:

______________________________________________________。

18.形式参数简称_____,实际参数简称______。根据形成参数的不同,实际参数传给形式参数可以分为_________和地址传递两类。

19. 已知函数fun()存在,并且有调用表达式fun(a,(a,b)),则可以判断出此函数有_______个形式参数。

10. 已知double a=9;请定义一个指针p,并指向变量a,要求用一条语句实现:____________________.

21. 已知int a[]={2,4,6,8},*p=a;则p++执行后,p指向数组a的第____个元素。

四、编程题

1.有一个函数:

y= 58 x>11

x2+x+8 -9

2x+9 x≤-9

请编写一段程序,输入x的值,输出y的值(例如,从键盘输入5.8,打印出y=58.00)。

C语言程序设计模拟题(含答案)

C语言程序设计模拟题(含答案) C语言程序设计试题 一、单项选择题(本题共25小题,每小题2分,共50分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其正确答案涂写在答题卡上。错选、多选或未选均无分。 1. 以下正确的C语言自定义标识符是__A____。 A. _1a B. 2a_ C. do D. a.12 2. 在C语言中,错误的常数表示是___D____。 A. 0L B.-0x6aL C. '6' D. 1.234E3.5 3. 设int a, x=2; 执行语句a=x>0?3*x:x=10;后,变量x的值是___B____。 A. 1 B. 2 C. 6 D. 10 4.设有以下程序段: int x=2,y=2,z=0,a; a=++x||++y&&z++; printf("%d,%d,%d\n",x,y,z); 执行后输出的结果是___C______。 A. 2, 2, 0 B. 3, 3,1 C. 3, 2, 0

D. 3, 2, 1 5. 在C语言中,字符串"\\TOP\t\65\""的长度是__B_____。 A. 5 B.7 C. 8 D. 12 6. 设float x,由键盘输入:12.45, 能正确读入数据的输入语句是___C_____A_。 A. scanf("%5f",&x) B. scanf("%5d",&x); C. scanf("%f",x); D. scanf("%s",&x); 7.逗号表达式a=2*6,a*3,a+5的值是___B______。 A. 12 B. 17 C.36 D. 41 8. C语言程序中,整型常量的书写形式不包括___A______。 A. 二进制 B. 八进制 C. 十进制 D. 十六进制 9. 在C语言中,下列运算符中结合性属于自右向左的是________B_。 A. && B. -- C.<< D. -> 10. 设int x;,则与计算︱x︱等价的表达式是___B______。 A. x>0?-x:x B. x>0?x:-x C. x<0?x:-x D. x<0?-x:-x 11.执行下面的程序段后,k的值是__A_____B。

C语言程序设计题库及答案

第1次客观题作业 一、单选题(共30题,每题3分) 1 .下面表示正确的是__A___。 A.C语言中的逗号是一种运算符 B.在C语言中,一行只能有一个语句 C.C中的变量不区分大小写 D.c中的关键字可以做为变量名 2 .字符型常量在内存中存放的是__A____代码值。 A.ASCII B.二进制 C.十进制D.八进制 3 .以下不正确的C语言标识符是(C )。 A.AB1 B._ab3 C.4ab D.a2_b 4 .以下运算符中优先级最低的运算符是_D____。 A.&& B.& C.|| D.= 5 .在C语言中,要求运算数必须是整型的运算符是___A___。A.% B./ C.< D.! 6 . C语言程序的基本单位是__C_____。 A.程序行B.语句C.函数D.字符 7 .将高级语言编写的程序翻译成目标程序的是___B____程序。A.解释程序B.编译程序C.汇编程序D.源程序8 .以下选项中,与k=n++完全等价的表达式是__A___。 A.k=n,n=n+1 B.n=n+1,k=n C.k=++n D.k+=n+1 9 .下列(A )不属于结构化程序设计的循环结构。 A.For B.While C.if-else D.do-while

10 .以下叙述中错误的是__A___。 A.用户所定义的标识符允许使用关键字 B.用户所定义的标识符应尽量做到“见名知意 C.用户所定义的标识符必须以字母或下划线开头 D.用户定义的标识符中,大、小写字母代表不同标识 11 .若有输入语句scanf( %d%d%d,&x,&y,&z);则不能使x值为5,y值为6,z值为7的输入是__A____。 A.5,6 ,7 B.5回车换行 6 7 C.5 6 7 D.5,6,7 12 .若i,j已定义为int类型,则下程序段中内循环体的总的执行次数是( B )。 for (i=3;i>0;i--) for (j=0;j<=4;j++){...} A.12 B.15 C.16 D.20 13 .下列选项中,合法的C语言关键字是_D___。 A.VAR B.Cher C.Integer D.default 14 .C语言中___A____。 A.能使用do-while语句构成的循环 B.do-while语句构成的循环必须用break语句才能退出 C.do-while语句构成的循环,当while语句中的表达式为非零时结束循环D.do-while语句构成的循环,当while语句中的表达式值小于零时结束循环15 .以下__D_____不是高级语言。 A.Basic语言 B.C语言 C.JAVA语言 D.汇编语言 16 .已知int x=2,y=3;则计算表达式y+=x-=x*=y后,x和y分别为(B )。 A.6,5 B.0,3 C.0,5 D.-4,2 •

C语言程序设计试题及答案

C语言程序设计试题及 答案 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

C语言程序设计 一、选择题(共40分,每小题2分) 1、以下叙述不正确的是(D ) A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个main函数 C、C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 2、下列四个选项中,是不合法的用户标识符的选项是( B ) A、abc B、12AC C、sun D、 A 3、设有语句int a=4;则执行了语句a+=a- =a*a后,变量a的值是(A ) A、-24 B、0 C、4 D、16 4、下列运算符中优先级最高的是( B ) A、< B、+ C、&& D、== 5、在C语言中,运算对象必须是整型数的运算符是( A ) A、% B、/ C、%和/ D、 + 6、以下关于运算符的优先顺序的描述正确的是( C ) A、关系运算符<算术运算符<赋值运算符<逻辑与运算符 B、逻辑与运算符<关系运算符<算术运算符<赋值运算符 C、赋值运算符<逻辑与运算符<关系运算符<算术运算符 D、算术运算符<关系运算符<赋值运算符<逻辑与运算符 7、在C语言中,如果下面的变量都是int类型,则输出的结果是( C )

sum=pad=5;pAd=sum++,pAd++,++pAd; printf(“%d\n”,pad); A、7 B、6 C、5 D、4 8、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是( B ) A、 INPUT x、y、z; B、scanf(“%d%d%d”,&x,&y,&z); C、 scanf(“%d%d%d”,x,y,z); D、read(“%d%d%d”,&x,&y,&z); 9、假定从键盘输入23456< 回车 >,下面程序的输出结果是:( C ) void main ( ) { int m,n; scanf(“%2d%3d”,&m,&n); printf(“m=%d n=%d\n”,m,n); } A、m=23 n=45 B、m=234 n=56 C、m=23 n=456 D、语句有错误 10、若运行时,给变量x输入12,则以下程序的运行结果是( A ) 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 11、C语言中while和do-while循环的主要区别( A )

《C语言程序设计》题库及答案

《C 语言程序设计》复习题库 1、计算下面公式的值。T=1/1!+1/2!+1/3!+ ⋯⋯+1/m! 当m=5 时的结果(按四舍五入保留 3 位小数)。(注:所有变量用float 数据类型定义!)答案:1.717 2、程序填空:用* 号输出字母C的图案。 #include "stdio.h" #include "conio.h" main() { _____________ printf(" *\n"); _____________ _____________ getch(); } 3、8232 和9678,它们的个、十、百、千各位数字之和是15 的倍数,8+2+3+2=15,9+6+7+8=30 。 编写程序,求四位数的所有奇数中,这样的数(各位数字之和是15 的倍数)的总和。(注:所 有变量用long 数据类型定义!) 答案: 1533459 4、/*下面程序的功能是:计算并输出700 以内的最大的10 个能被13 或者17 整除的自然 数之和。请改正程序中的错误,并运行,最后给出程序运行的正确结果。(注:只有一处错 误!)*/ 答案:6591 #include void main() { int total=0, mc=1, k=700; int pm[10],count=0; while( (k>=2) && mc<=10 ) { if ((k%13==0) || (k%17==0)) { pm[mc] = k; mc++; } k--; } for( k=1;k<=10;k++ ) total += pm[k-1]; printf(" %d\n",total); } 5、求 x = 1+1/5+1/7+1/9+ ⋯的近似值,直到最后一项的绝对值小于10 -5 为止。 6、计算如下公式的A20值。A1=1, A2=1/(1+A1), A3=1/(1+A2), A4=1/(1+A3), ...... (按 四舍五入保留10 位小数)。答案:0.6180339850 7、求[10,1600] 之间能被7 整除的奇数之和。答案:90965

C语言练习题1及参考答案

C语言考试系统练习题1 一、判断题 1.变量根据其作用域的范围可以分为局部变量和全局变量。(Y / N)YES 2.C语言的switch语句中case后只能为常量或常量表达式。(Y / N)NO(字符等都可以) 3.两个字符串中的字符个数不相同时也可进行字符串大小的比较。 (Y / N)YES 4.循环结构中的continue语句是使整个循环终止执行。(Y / N)NO(继续进行) 5.char *p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。NO(字符串) 二、单选 1.设有说明:char w; int x; float y; double z; 则表达式w*x+z-y值的数据类型为(D)。 A.float B.int C.char D.double 2.C语言规定,在一个源程序中,main函数的位置(C )。 A.必须在最开始 B.必须在系统调用的库函数的后面 C.可以任意 D.必须在后面 3.C语言的if语句嵌套时,if与else的配对关系是(A)。 A.每个else总是与它上面的最近的if配对 B.每个else总是与最外层的if配对 C.每个else与if的配对是任意的 D.每个else总是与它上面的if配对 4.下列字符序号中,不可用作C语言标识符的是(B)。 A.b70 B.#ab C.symbol D.a_1 5.整形变量x=1,y=3,经过下列计算后,x的值不等于6的是 (B) A.x=(x=1+2,x*2) B.x=y>2?6:5 C.x=9-(--y)-(y--) D.x=y*4/2 6.若有下列定义,则对a数组元素地址的正确引用是(CD)。

c语言编程题库100题

c语言编程题库100题 C语言是一门广泛应用于计算机领域的高级编程语言。对于学习者来说,掌握C语言编程是一项必修课程。为此,我们为大家整理了100道C语言编程题,供大家练练手,锻炼编程能力。 以下是题目列表: ##### 基础篇 1、编写一个C程序,输出“Hello, World!”。 2、编写一个C程序,输入两个数,求和并输出结果。 3、编写一个C程序,输入三个数,求平均值并输出结果。 4、编写一个C程序,输入三个数,比较大小并输出最大值。 5、编写一个C程序,输入一个数,判断奇偶性并输出结果。 6、编写一个C程序,输入一个数,判断是否为质数并输出结果。 7、编写一个C程序,输入一个数,判断是否为闰年并输出结果。 8、编写一个C程序,输入一个字符,判断是否为字母并输出结果。

9、编写一个C程序,输入一个数,判断是否为回文数并输出结果。 10、编写一个C程序,输入一个年份和月份,输出该年该月的天数。 ##### 数组篇 11、编写一个C程序,输入一个整数数组,求所有元素之和并输出结果。 12、编写一个C程序,输入一个数组,找出最大值并输出结果。 13、编写一个C程序,输入一个数组,找出最小值并输出结果。 14、编写一个C程序,输入一个数组,计算平均值并输出结果。 15、编写一个C程序,输入一个数组,判断是否为升序或降序排列并输出结果。 16、编写一个C程序,输入一个数组,将数组元素逆序排列并输出结果。 17、编写一个C程序,输入两个数组,将两个数组合并后按照升序或降序排列并输出结果。

18、编写一个C程序,输入一个数组,输出数组中出现次数最多的元素。 19、编写一个C程序,输入一个数组,删除指定位置上的元素并输出结果。 20、编写一个C程序,输入一个数组和一个数,将该数插入到数组中并输出结果。 ##### 字符串篇 21、编写一个C程序,输入一个字符串,统计字符串中的字符个数并输出结果。 22、编写一个C程序,输入一个字符串,统计字符串中的单词个数并输出结果。 23、编写一个C程序,输入两个字符串,比较大小并输出结果。 24、编写一个C程序,输入一个字符串,将该字符串逆序输出。 25、编写一个C程序,输入一个字符串和一个字符,统计该字符在字符串中的出现次数并输出结果。 26、编写一个C程序,输入一个字符串,判断是否为回文字符串并输

C语言程序设计练习题(含程序及参考答案)

C语言程序设计练习题(含程序及参考答案) C语言程序设计练习题(含程序及参考答案) 一、简介 C语言是一种通用的编程语言,被广泛应用于软件开发和系统编程中。为了提高编程技巧和加深对C语言的理解,我们编制了一系列的C语言程序设计练习题。本文将逐题介绍练习题的具体内容,并提供相应的程序及参考答案。 二、练习题列表 1. 求两个数的和 题目描述:输入两个整数,求它们的和。 程序: ``` #include int main() { int num1, num2, sum; printf("请输入两个整数:\n"); scanf("%d %d", &num1, &num2); sum = num1 + num2; printf("它们的和是:%d\n", sum);

return 0; } ``` 参考答案: 输入两个整数,例如:5 3 它们的和是:8 2. 判断一个数是否为奇数 题目描述:输入一个整数,判断它是否为奇数。程序: ``` #include int main() { int num; printf("请输入一个整数:\n"); scanf("%d", &num); if (num % 2 == 1) { printf("该数是奇数。\n"); } else {

printf("该数不是奇数。\n"); } return 0; } ``` 参考答案: 输入一个整数,例如:7 该数是奇数。 3. 计算一个数的平方 题目描述:输入一个整数,计算它的平方。程序: ``` #include int main() { int num, square; printf("请输入一个整数:\n"); scanf("%d", &num); square = num * num;

C语言程序设计试卷含答案

C语言程序设计试卷含答案 一、选择题(共20题,每题2分,共40分。下面每题后面用小括号内标注了正确答案) 1. 下列关键字中,用于定义变量的是(A) A. int B. if C. while D. for 2. 变量的作用域是指变量的(C) A. 大小 B. 类型 C. 可访问范围 D. 值 3. 下列语句中,用于输出字符的是(B) A. scanf B. printf C. input D. output 4. 已知整型变量a和b,那么a += b; 等价于(D) A. a = a + b; B. a -= b; C. a = a - b; D. a = a + b; 5. 在C语言中,用于表示“不等于”的运算符是(C) A. = B. == C. != D. >= 6. 下面哪个for循环语句是正确的(A) A. for(int i=0; i<10; i++) B. for(int i<10; i++) C. for(int i=0; i<10) D. for(i=0; i<10; i++) 7. 下列选项中,表示“或”运算符的是(D) A. & B. && C. | D. ||

8. 在C语言中,用于声明宏定义的关键字是(B) A. define B. #define C. const D. int 9. 如果要判断一个整数是否为负数,正确的if条件语句是(C) A. if(n > 0) B. if(n => 0) C. if(n < 0) D. if(n <= 0) 10. 下列哪个不是C语言的基本数据类型(D) A. int B. float C. char D. string 11. 下列关键字中,用于定义函数的是(C) A. main B. include C. void D. for 12. 在C语言中,表示“或者”的条件语句是(B) A. if B. else if C. switch D. while 13. C语言中的“++”运算符表示(A) A. 自增 B. 自减 C. 相加 D. 相减 14. 下列哪个语句用于在C语言中声明字符类型的变量(C) A. String name; B. var name; C. char name; D. character name; 15. 下列哪个不是C语言的关键字(D) A. enum B. long C. double D. true 16. 在C语言中,用于跳出当前循环并继续执行下一次循环的关键字是(D)

c语言编程题经典100例

c语言编程题经典100例 下面是经典的c语言编程题100例,每道题目都涵盖了c语言编程的各个方面,包括基本数据类型、条件语句、循环结构、函数与指针等。通过这100道题目的练习,可以帮助初学者快速掌握c语言编程的基础知识,也有助于进一步深入了解c语言的高级特性。 1. 打印Hello World。 2. 输入一个整数,判断是否为偶数。 3. 输入两个整数,求它们的和、差、积、商和余数。 4. 输入一个整数,求它的绝对值。 5. 输入一个字符,判断它是否为字母。 6. 输入三个整数,找出其中的最大值。 7. 输入一个字符,判断它是否为数字。 8. 输入一个整数,判断它是否为质数。 9. 输入两个字符串,比较它们的大小。 10. 输入一个字符,将它转换为大写或小写。 11. 输入一个浮点数,求它的平方根。 12. 输入一个整数,将它按位取反。 13. 输入一个字符串,翻转它的顺序。 14. 输入一个字符串,统计其中的元音字母个数。 15. 输入一个整数,将它转换为二进制数。 16. 输入两个整数,交换它们的值。

17. 输入一个二维数组,输出它的转置矩阵。 18. 输入一个数组,找出其中的最大值和最小值。 19. 输入一个数组,求它的平均数、中位数和众数。 20. 输入一个数组,判断它是否为回文数。 21. 输入一个字符串,统计其中的单词数量。 22. 输入一个字符串,统计其中的字符数、单词数和行数。 23. 输入两个字符串,判断它们是否为同构字符串。 24. 输入一个字符数组,将它转换为整数。 25. 输入一个浮点数,将它转换为分数。 26. 输入一个浮点数,将它四舍五入到整数。 27. 输入一个字符串,将其中的数字字符替换为其他字符。 28. 输入两个数组,把它们合并成一个新的数组。 29. 输入一个二维数组和一个数值,查找并输出它在二维数组中的位置。 30. 输入一个字符串,判断它是否为回文字符串。 31. 输入两个整数,求它们的最大公约数和最小公倍数。 32. 输入一个表达式,求它的值。 33. 输入一个字符串,将其中的大写字母转换为小写字母。 34. 输入一个字符串,将其中的小写字母转换为大写字母。 35. 输入两个字符串,找出它们的最长公共子串。 36. 输入一个字符串,找出其中的最长回文子串。 37. 输入一个字符串,找出其中出现最多的字母和它出现的次数。 38. 输入一个字符串,去掉其中的空格。 39. 建立一个链表,输入若干个数值并输出它们的平均数。 40. 输入一个字符串,将其中的空格转换为其他字符。

计算机系C语言编程50题(含答案)

1、输入1~10之间的一个数字,输出它对应的英文单词。 #include"stdio.h" main() { int x; printf("please input x(1-10):\n"); scanf("%d",&x); switch(x) { case 1:printf("one");break; case 2:printf("two");break; case 3:printf("three");break; case 4:printf("four");break; case 5:printf("five");break; case 6:printf("six");break; case 7:printf("server");break; case 8:printf("eight");break; case 9:printf("nine");break; case 10:printf("ten");break; } } 2、用自然语言描述程序逻辑如下,试写程序。 ①设置环境; ②定义变量i、j、s,以及用于放置结果的变量sum,并令sum初值为0; ③i=1; ④如果i≤100,则转⑤,否则转⑧; ⑤令s=0,求前i个自然数之和,并放于变量s之中; ⑥sum=sum+s; ⑦i增加1,转④; ⑧输出和sum,结束。 #include"stdio.h" main() { int i,j,s; long sum=0; for(i=1;i<=100;i++) { s=0; for(j=1;j<=i;j++) { s=s+j; } sum=sum+s; }

printf("sum=%d",sum); } 3、用自然语言描述的程序逻辑为:(假设正确口令为123456) ①设置环境; ②定义变量i、flag和password,并令flag=0,i=0; ③用户回答口令,将其赋于password变量; ④口令正确?如果是,则flag=1,转⑥。否则转⑤; ⑤回答三次口令了吗?如果没有,计数器加1后(i++),转③,否则转⑥; ⑥根据flag之值输出相应信息。 #include"stdio.h" main() { long i=0,flag=0,password; printf("please input password:\n"); scanf("%ld",&password); do { if(password==123456) flag=1; i++; }while(i<3); if(flag==1) printf("口令正确!"); else printf("口令不正确!"); } 4、用自然语言描述的程序逻辑如下: ①设置环境; ②定义变量digit、x、y分别表示原始数、原始数的个位数和逆数; ③输入原始正整数x; ④从x中分解出个位数字digit; ⑤合并个位digit至逆数y中; ⑥原始数x缩小10倍:x=x/10; ⑦如果x非零,则转④; ⑧输出逆数y,结束 #include"stdio.h" main() { int digit,x,y=0; printf("please input x:\n"); scanf("%d",&x); do { digit=x%10; y=y*10+digit; x=x/10; } while(x);

C语言经典程序100题(完整版)

【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。#include "stdio.h" #include "conio.h" main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k); } getch(); } ============================================================== 【程序2】题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 #include "stdio.h" #include "conio.h" main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0. 1; bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15; if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; else if(i<=400000) bonus=bonus2+(i-200000)*0.05; else if(i<=600000) bonus=bonus4+(i-400000)*0.03; else if(i<=1000000) bonus=bonus6+(i-600000)*0.015; else bonus=bonus10+(i-1000000)*0.01; printf("bonus=%d",bonus); getch(); } ============================================================== 【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析: #include "math.h" #include "stdio.h" #include "conio.h" main() { long int i,x,y,z; for (i=1;i<100000;i++) { x=sqrt(i+100); /*x为加上100后开方后的结果*/ y=sqrt(i+268); /*y为再加上168后开方后的结果*/

C语言上机程序设计题库及答案

C语言上机程序设计题库及答案在计算机科学与技术领域中,C语言是一门非常重要的编程语言。 作为高级语言,C语言广泛应用于软件开发、系统编程以及嵌入式系 统等领域。针对C语言的上机程序设计,我整理了一份题库,并提供 了相应的答案,供学习和参考使用。 1. 题目1:求给定整数数组中的最大值 题目描述:给定一个整数数组,编写一个程序找到数组中的最大值,并将其输出。 代码示例: ```c #include int findMax(int arr[], int n) { int max = arr[0]; for (int i = 1; i < n; i++) { if (arr[i] > max) { max = arr[i]; } } return max;

} int main() { int arr[] = {1, 2, 3, 4, 5}; int n = sizeof(arr) / sizeof(arr[0]); int max = findMax(arr, n); printf("The maximum value is: %d\n", max); return 0; } ``` 2. 题目2:判断一个字符串是否为回文字符串 题目描述:给定一个字符串,判断它是否为回文字符串(正读和倒读都相同)。编写一个程序实现此功能。 代码示例: ```c #include #include int isPalindrome(char str[]) { int len = strlen(str); for (int i = 0; i < len / 2; i++) {

C语言程序设计练习题附答案

C语言程序设计练习题附答案 C语言程序设计练习题附答案 一、填空题 1.如果将调用一个函数的过程分为3个步骤,第1步是转去执行被调用函数,第2步是执行被调用函数的语句,第3步是返回操作。 2.函数的存储类分两种,它们分别是外部函数和内部函数,其中内部函数的存储类说明不可省略,该说明符是static 。 3.使用关键字inline说明的函数称为内联函数,具有相同函数名但具有不同实现的函数称为重载函数。 4.在调用一个函数过程中可以直接或间接地调用该函数,则该函数称为被调用函数。这种调用称为嵌套调用。 5.在引用调用中,函数实参用变量名,形参用引用名。 二、简单回答下列问题 . 没有返回值的函数是否有函数类型?函数参数类型与函数的类型是否有关系? 答:没有返回值的函数的类型为void。没有关系。 . 函数的缺省的存储类是什么?函数的存储类与函数什么关系?

答:函数的缺省的存储类是外部类。函数的存储类决定了函数的'作用域。 . 函数的调用方式有哪两种?传址和引用调用方式有何不同? 答:函数的调用方式有两种:传值调用和引用调用。传址调用时实参用地址值,形参用指针,引用调用时实参用变量名,形参用引用名。 . 内联函数与一般函数有何不同? 答:内联函数的函数体是在编译时被替换,一般函数的函数体是在调用时被转去执行。前者可以提高速度,后者可以减少代码,各有利弊。 . 对重载函数设置默认参数值,对重载函数的选择是否会有影响? 答:是会有影响的。 三、通过对1.5题中3个程序的修改,回答下列问题 从1.5题中第1题程序的修改中,总结出编程应该注意哪些问题。 答:C++程序要包含iostraem.h,main函数前应加类型说明符void。

(完整版)C语言程序设计题库

、选择题(每题 1 分,共 20 分) 1. C 语言程序从 main () 函数开始执行,所以这个函数要写在( D )。 A .程序文件的开始 B .程序文件的最后 C.它所调用的函数的前面 D •程序文件的任何位置 2. 下列方法中错误的是( D )。 A •主函数可以分为两个部分:主函数说明部分和主函数体。 B. 主函数可以调用任何非主函数的其它函数。 C. 任何非主函数可以调用其它任何非主函数。 D. 程序可以从任何非主函数开始执行。 5. 下列可以正确表示字符型常量的是( A )。 A .'\t ' B .”a ” C .”\n ” D .297 6. 在C 语言中,字符型数据所占的内存空间是( C )。 A. 2个字节 B . 4 字节 C . 1 字节 D .由用户自定义 7. 若 int 类型数据占 2 个字节 ,则 unsigned int 类型数据的取值范围是( B )。 A. 0〜255 B . 0 〜65535 C . -32768 〜32767 D . -256 〜255 8. 若有以下类型说明语句: char a ;int b; float c; double d; 则表达式 a*b+d-c 的结果 类型为( D )。 A .float B .char C .int D . double 9. 下列正确的预编译命令是( D )。 A .define PI 3.14159 B . #define P(a,b)=strcpy(a,b) C .#define stdio.h D .#define PI 3.14159 10. 为表示逻辑表达式 7979 )&&( X<90 ) B .( X>79 )!=( X<90 ) C .7979 )||( X<90 ) 11. 设有语句 “int a=2,b=3,c=-2,d=2; ”, 则逻辑表达式 A .1 B.0 C .-1 D 12. 字符串 “ABCD 在内存占用的字节数是( D )。 A. 4 B . 6 C . 1 13. 若有“ int a=1,x=1; ” ,则循环语 3. 下列正确的标识符是( C )。 A. -a1 B • a[i] 4. C 语言中的简单数据类型包括( D A. 整 型、实型、逻辑型 B C.整型、字符型、逻辑型 D C . a2_i D . int t )。 .整型、实型、逻辑型、字符型 .整型、实型、字符型 a>0&&b&&c<0&&d>”0 的值是 ( A )。 .出错 D . 5

C语言编程题及答案

C语言编程题及答案 1、下列shape类是一个表示形状的抽象类,area( )为求图形面积的函数,total( )则是一个通用的用以求不同形状的图形面积总和的函数。请从shape类派生三角形类(triangle)、矩形类(rectangle)、并给出具体的求面积函数。 class shape{ public: virtual float area( )=0 }; float total(shape *s[ ],int n) { float sum=0.0; for(int i=0; i 1分 class triangle:public shape{ 1分 public: virtual float area( ) { float s=(a+b+c)/2; return sqrt(s*(s-a)*(s-b)*(s-c)); 3分 } private: float a,b,c; 1分 }; class rectangle:public shape{ 1分 public: virtual float area( ) { return a*b; 2分 } private: float a,b; 1分 }; 2、创建一个记录通讯录内容的新类Caddrlist,包含:姓名、住址、电话、出生日期,并使该类可以实现串行化。请写出可以实现要求的CAddrlist.h和CAddrlist.cpp文件的内容。 答案: 2、 //Addrlist.h文件内容:

class CAddrlist : public CObject { 1分 public: CString Name; CString Address; CString Tel; CTime Birth; CAddrlist(); 3分 DECLARE_SERIAL(CAddrlist) // 使对象可串行化1分 virtual void Serialize( CArchive & ar ); //重载串行化函数1分}; // Addrlist.cpp文件内容: IMPLEMENT_SERIAL(CAddrlist,CObject, 0) 1分 void CAddrlist::Serialize(CArchive & ar) { CObject::Serialize(ar); 1分 if ( ar.IsStoring() ) { ar<>Name>>Tel>>Address>>Birth; 1分 } } 3.(10分)已知点类的定义如下: class Point{ …… private: double x,y; }; 分别用成员函数和友元函数实现计算两点间的距离,函数名为distance。 答案: (10分) 用成员函数实现(5分) double Point::distance( const Point &a ) { double dx,dy; dx = x-a.x; dy = y-a.y; return sqrt( dx*dx + dy*dy ); } 用友元函数实现(5分) double distance( const Point &a, const Point &b )

C语言程序设计_习题大全(含答案)

C语言基础一: 1.下列四组选项中,均不是C语言关健字的选项是( A )。 A) define B) gect C) include D) while IF char scanf go type printf case pow 2.下面四个选项中,均是合法整型常量的选项是( A )。 A)160 B)-0xcdf C) -01 D)-0x48a -0xffff 01a 986,012 2e5 011 0xe 0668 0x <<02>>B>>2 3.下面四个选项中,均是不合法的转义符的选项是( B )。 A) '\"' B) '\1011' C) '\011' D) '\abc' '\\' '\' '\f' '\101' 'xf' '\A' '\}' 'x1f' 4.下面不正确的字符串常量是( A )。 A)'abc' B)"12'12" C)"0" D)" " 5.以下选项中不合法的用户标识符是( A )。 A)abc.c B)file C)Main D)PRINT 6.C语言提供的合法关键字是( D )。 A) swith B) cher C) Case ). Default 7.下列标识符组中,合法的用户标识符为 A A)_0123与ssiped B)del-word与signed C)list与*jer D) keep%与wind 8.在C语言中,逻辑值"真"的表示是用( C )。 A) true B) 整型值0 C)非另整型值 D) T 9若有以下定义 char s='\092'; 则该语句( B ) A)使s的值包含一个字符 B)定义不合法,s的值不确定 C)使s的值包含4个字符 D)使s的值包含3个字符 10设C语言中,int类型数据占2个字节,则float类型数据占( D )个字节。 A)1 B)2 C)8 D)4 11已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3'后,c2中的值为( A )。 A)D B)68 C)不确定的值 D)C 12逻辑运算符两侧运算对象的数据类型是 ( D )。 A) 只是0或1 B) 只能是0或非0正数 C) 只能是整型或字符型数据 D) 可以是任何合法的类型数据 13TURBO C中int类型变量所占字节数是( B )。

(完整版)C语言程序设计习题集及答案

C语言程序设计 习题集 东华理工大学 2014.9

基础知识 一单项选择题(每题2分,共44分) 1 以下叙述正确的是___。 A C程序基本组成单位是语句 B C程序每一行只能写一个语句 C 简单C语句必须以分号作为结束符 D 注释语句可以嵌套 2 一个C语言程序是从___开始执行的。 A 程序中第一个函数 B 名为main的函数 C 包含文件(头文件)的第一个函数 D 程序中的第一个语句 3 请选出合法的C语言赋值语句___。 A a=b=58 B i++; C a=58,b=58 D k=int(a+b); 4 下面标识符中,合法的用户标识符是___。 A 1abc B include C a-b-c123 D char 5 以下所列的C语言整形常量中,正确的是___。 A 0x10 B 0976 C 076L D 01ff 6 C语言中下列运算符的操作数必须为整型的是___。 A % B ++ C / D = 7 设a和b均为int型变量,则执行以下语句后的输出为___。 int a=20; int b=3; printf("%d\n",a+=(b%=2)); A 20 B 21 C 0 D 23 8 已知int i;,则执行语句 i=2.6;后,i的值为___。 A 2 B 3 C 2.6 D 不确定 9 以下合法的字符常量为___。 A 'ab' B '\482' C '\' D '\xaf' 10 若y为int型变量,则执行以下语句后,y的值是___。 y=8; y+=y-=y*y; A 64 B –56 C –112 D –48 11 以下合法的浮点型常量是___。 A e-3 B 1.5e+2.4 C 3.14e+2L D 3.14 e +5 12 设int数据占用两个字节,float数据占用四个字节,double数据占用8个字节,且已 知float a=2;int b=3;则执行下列语句输出为___。 printf("%d",sizeof(a*b)+2/5); A 4 B 8 C 6 D 7 13 设int型占2个字节,且int i=-2;,则语句printf("%u",i);的输出结果为___。 A 0 B -2 C 65534 D 65535 14 若x、y、z均为整型常量,且a=100,则执行下列语句后的z值为___。 x=a++; y=--a; z=x+y-a--; A 100 B 400 C 200 D 300 15 若有以下定义和语句:int u=010,v=0x10,w=10,printf("%d,%d,%d\n",u,v,w);,则输出 结果是___。 A 8,16,10 B 10,10,10 C 8,8,10 D 8,10,10 16 设x、y为int型变量,则执行下列语句后,y的值是___。 x=5; y=x++*x++; y=--y*--y; A 529 B 2401 C 1209 D 625

相关主题
文本预览
相关文档 最新文档