C语言程序设计题库二.docx

上传人:b****6 文档编号:3866746 上传时间:2022-11-26 格式:DOCX 页数:29 大小:26.36KB
下载 相关 举报
C语言程序设计题库二.docx_第1页
第1页 / 共29页
C语言程序设计题库二.docx_第2页
第2页 / 共29页
C语言程序设计题库二.docx_第3页
第3页 / 共29页
C语言程序设计题库二.docx_第4页
第4页 / 共29页
C语言程序设计题库二.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

C语言程序设计题库二.docx

《C语言程序设计题库二.docx》由会员分享,可在线阅读,更多相关《C语言程序设计题库二.docx(29页珍藏版)》请在冰豆网上搜索。

C语言程序设计题库二.docx

C语言程序设计题库二

C语言程序设计题库二

1、写出下面函数的运行结果。

#include

voidfx701(intk,intn,floata);

intmain()

{

intk=1,n=5;

floata=3.2,b=8.5;

printf("调用前:

k=%dn=%da=%.2fb=%.2f\n",k,n,a,b);

fx701(k,n,a);

printf("调用后:

k=%dn=%da=%.2fb=%.2f\n",k,n,a,b);

return0;

}

voidfx701(intk,intn,floata)

{

intq=100;

floatb,x=6.2;

k+=q;n*=q;a-=x;b=3.5*a;

printf("函数中:

k=%dn=%da=%.2fb=%.2f\n",k,n,a,b);

}

解:

调用前:

k=1n=5a=3.20b=8.50

函数中:

k=101n=500a=-3.00b=-10.50

调用后:

k=1n=5a=3.20b=8.50

2、编写一个函数,实现从键盘输入一个整数,如果该整数为素数,则返回1,否则返回0。

解:

#include

#include

intIs_prime(inti)

{

intj=0;

for(j=2;j

{

if(0==(i%j))

{

return0;

}

}

return1;

}

intmain()

{

inti;

printf("Pleaseinputanumber:

");

scanf("%d",&i);

if(1==Is_prime(i))

{

printf("%disaprime.\n",i);

}

else

printf("%disnotaprime.\n",i);

system("pause");

return0;

}

程序运行结果如下:

Pleaseinputanumber:

13↙

13isaprime.

Pleaseinputanumber:

8↙

8isnotaprime.

3、设计两个函数,分别求矩形的周长和面积,并在主函数中调用这两个函数。

解:

#include

floatarea(floata,floatb)

{

floats;

s=a*b;

return(s);

}

floatzc(floata,floatb)

{

floatp;

p=2*(a+b);

return(p);

}

intmain()

{

floata,b,s,p;

printf("请输入长方形的边长a,b:

");

scanf("%f%f",&a,&b);

s=area(a,b);

p=zc(a,b);

printf("长方形的周长为p=%f,长方形的面积为s=%f",p,s);

}

程序运行情况如下:

请输入长方形的边长a,b:

34↙

长方形的周长为p=14.000000,长方形的面积为s=12.000000

4、编写一个函数求一个整数n的阶乘,在主函数中计算并输出10!

的值。

解:

#include

floatfc(intn)

{

floats;

if(n==1||n==0)s=1;

elses=n*fc(n-1);

return(s);

}

intmain()

{

floatk;

k=fc(10);

printf("10!

=%f\n",k);

return0;

}

程序运行结果如下:

10!

=3628800.000000

5、已知函数fun2的原型说明为“longfun2(intm,intn);”,调用该函数计算m~n的和(其中n>m>0),例如:

若m=5,n=20,则计算5+6+7+8+…+20的值。

要求在主函数中通过键盘输入m和n的值,并输出和的值。

解:

#include

longfun2(intm,intn)

{

longs;

inti;

s=0;

for(i=m;i<=n;i++)

s=s+i;

return(s);

}

intmain()

{

intn,m,sum;

printf("请输入m,n的值n>m:

\n");

scanf("%d%d",&m,&n);

sum=fun2(m,n);

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

return0;

}

程序运行结果如下:

请输入m,n的值n>m:

520↙

sum=200

6、编写一个函数重复打印给定的字符n次。

解:

#include

voidfun2(charm,intn)

{

inti;

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

printf("%c",m);

printf("\n");

}

intmain()

{

charm;

intn;

printf("请输入给定的字符\n");

scanf("%c",&m);

printf("请输入打印的次数\n");

scanf("%d",&n);

fun2(m,n);

return0;

}

程序运行结果如下:

请输入给定的字符

*↙

请输入打印的次数

5↙

*****

7、写出程序的运行结果,并上机验证其结果。

#include

voidfun1()

{

intx=5;

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

}

voidfun2(intx)

{

printf("x=%d\n",++x);

}

intmain()

{

intx=2;

fun1();

fun2(x);

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

return0;

}

解:

x=5

x=3

x=2

8、指出下列程序中各变量的存储属性,并写出程序的执行结果。

(1)#include

voidadd(inti);

intmain()

{

inti=1;

add(i);

printf("main:

i=%d\n",i);

return0;

}

voidadd(inti)

{

i=i+3;

printf("add:

i=%d\n",i);

}

解:

add:

i=4

main:

i=1

其中,i是自动型变量。

(2)#include

inti=1;

voidadd1();

intmain()

{

add1();

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

return0;

}

voidadd1()

{

i=i+3;

}

解:

i=4

其中,该变量是外部型变量。

(3)#include

voidadd2(inti);

intmain()

{

inti=2;

add2(i);

add2(i);

return0;

}

voidadd2(inti)

{

staticintj=5;

j=i+j;

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

}

解:

j=7

j=9

其中,变量i是静态型变量。

9、编写程序实现以下图形的输出。

解:

#include

voidmain()

{

inti,j,k;

for(i=1;i<=5;i++)//先打印上边的四行

{

for(j=1;j<=5-i;j++)//控制要打印的空格数量

printf("");

for(k=1;k<=2*i-1;k++)//控制要打印的星号数

printf("*");

printf("\n");

}

}

10、写出程序的运行结果。

#include

#defineX5

#defineYX+1

#defineZY*X/2

intmain()

{

inta;

a=Y;

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

return0;

}

解:

75

11、编写一个函数,将一个十进制整数转换为二进制数。

解:

#include

voidmain()

{

longnum;

intozb();

printf("请输入一个十进制数:

");

scanf("%ld",&num);

printf("%ld的二进制数为:

",num);

ozb(num);

}

intozb(longnum)

{

inta[32]={0},i=0;

while(num>=1)

{

a[i]=num%2;

num=num/2;

i++;

}

for(i=i-1;i>=0;i--)

{

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

}

printf("\n");

return(a[i]);

}

程序运行结果如下:

请输入一个十进制数:

5↙

5的二进制数为:

101

12、编写一个函数,找出任意整数的全部因子。

解:

#include

intN;

voidmain()

{

voidyz();

scanf("%d",&N);/*输入N的值*/

yz(N);

}

voidyz()

{

inti,p=1;

for(i=1;i

{

if(N%i==0)/*判断是否是N的因子,如果是则加上*/

{

p=i;

printf("%d",p);

}

}

}

程序运行结果如下:

15↙

13515

13、数组是相同数据类型的集合,分为一维数组、二维数组及多维数组。

在什么情况下使用数组?

在什么情况下使用一维数组?

解:

当需要处理的数据为相同类型的数据的集合时,可以使用数组。

如果这些数据的描述用一个量就可以,这时就用一维数组。

例如,一组学生的学号,就可以使用一维数组。

14、数组元素又称为下标变量,数组元素的下标有何意义?

解:

下标的意义是对数组的各个数组元素进行标识和区分。

由数组名和下标结合起来形成数组元素的名字。

15、使用字符数组来存储字符串应注意什么问题?

解:

需要注意的问题是字符数组在存储字符串时是以'\0'作为结束标记的。

这个'\0'是系统自动加上的。

所以字符数组的长度需要比它要存储的字符串的长度至少多1。

例如,要存储字符串"abcd",因为它的长度为4,所以存储它的字符数组的长度至少为5。

16、常用的字符处理函数有哪些?

解:

常用的字符处理函数有以下8个。

(1)puts(字符串):

作用为将一个字符串输出到终端。

(2)gets(字符数组):

作用为从终端输入一个字符串到字符数组,并且得一个函数值。

(3)strcat(字符串1,字符串2):

作用为进行字符串的连接。

(4)strcpy(字符串1,字符串2):

作用为进行字符串的复制。

(5)strcmp(字符串1,字符串2):

作用为进行字符串的比较。

(6)strlen(字符串):

作用为求字符串的长度。

(7)strlwr(字符串):

作用为将字符串中的大写字母转换成小写字母。

(8)strupr(字符串):

作用为将字符串中的小写字母转换成大写字母。

17、随机产生10个两位整数存储到一个一维数组中,找出其中的最大数。

解:

#include

#include

#definerandom(x)(rand()%x)

intmain()

{

inta[10],max;

intx;

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

a[x]=random(100);

max=a[0];

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

{

if(a[x]>max)

max=a[x];

printf("%4d",a[x]);

}

printf("\nmax=%d\n",max);

return0;

}

程序运行结果如下:

4167340692478586264

max=78

18、输入10个整数,要求按照从小到大的顺序输出。

解:

#include

voidmain()

{

inti,j,min,t,a[10];

printf("请输入10个数:

\n");

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

{

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

}

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

{

min=i;

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

if(a[min]>a[j])min=j;

t=a[i];

a[i]=a[min];

a[min]=t;

}

printf("\n排序结果如下:

\n");

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

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

}

程序运行情况如下:

请输入10个数:

6904556115447858101

排序结果如下:

1615444556587890101

19、输入10个字符,并将它们的顺序颠倒后输出。

解:

#include

#defineN10

voidmain()

{

chara[N],t;

inti;

/*输入10个字符并输出*/

printf("请输入10个字符:

\n");

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

{

scanf("%c",&a[i]);

}

/*顺序颠倒*/

for(i=0;i

{

t=a[i];

a[i]=a[N-i-1];

a[N-i-1]=t;

}

printf("顺序颠倒后的字符:

\n");

for(i=0;i

printf("%c",a[i]);

}

程序运行情况如下:

请输入10个字符:

0123456789↙

顺序颠倒后的字符:

9876543210

20、写出下列程序的运行结果。

(1)#include

voidfun(intb[])

{

inti=0;

while(b[i]<=10)

{

b[i]+=2;

i++;

}

}

intmain()

{

inti,a[]={1,5,7,9,11,13,15};

fun(a+2);

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

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

return0;

}

解:

15911111315

(2)#include

intmain()

{

inta[3][3],i,j;

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

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

a[i][j]=i;

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

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

return0;

}

解:

111

(3)#include

intmain()

{

intk;

inta[3][3]={1,2,3,4,5,6,7,8,9};

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

printf("%d",a[k][2-k]);

return0;

}

解:

357

(4)#include

#include

intmain()

{

charp[20]={'a','b','c','d'},q[]="abc",r[]="abcde";

strcpy(p+strlen(q),r);strcat(p,q);

printf("%d\n%d\n",sizeof(p),strlen(p));

return0;

}

解:

20

11

(5)#include

#include

voidf(charp[][10],intn)/*字符串从小到大排序*/

{

chart[10];

inti,j;

for(i=0;i

for(j=i+1;j

if(strcmp(p[i],p[j])>0)

{strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[i],t);}

}

intmain()

{

charp[5][10]={"abc","aabdfg","abbd","dcdbe","cd"};

f(p,5);

printf("%d\n",strlen(p[0]));

return0;

}

解:

3

21、求一个3×3矩阵对角线元素之和。

解:

#include

main()

{

floata[3][3],sum=0;

inti,j;

printf("请输入矩阵元素:

\n");

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

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

scanf("%f",&a[i][j]);

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

sum=sum+a[i][i];

printf("对角线元素之和=%.2f\n",sum);

}

程序运行情况如下:

请输入矩阵元素:

123456789↙

对角线元素之和=15.00

22、找出一个二维数组中的鞍点,所谓鞍点是指该位置上的数在该行最大,在该列最小。

需要注意的是,并不是所有的二维数组都有鞍点。

解:

#defineN10

#defineM10

#include

voidmain()

{

inti,j,k,m,n,flag1,flag2,a[N][M],max,maxj;

printf("\n输入行数n:

");

scanf("%d",&n);

printf("\n输入列数m:

");

scanf("%d",&m);

for(i=0;i

{

printf("第%d行?

\n",i);

for(j=0;j

scanf("%d",&a[i][j]);

}

for(i=0;i

{

for(j=0;j

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

printf("\n");

}

flag2=0;

for(i=0;i

{

max=a[i][0];

maxj=0;

for(j=0;j

if(a[i][j]>max)

{

max=a[i][j];

maxj=j;

}

for(k=0,flag1=1;k

if(max>a[k][maxj])

flag1=0;

if(flag1)

{

printf("\n第%d行,第%d列的%d是鞍点\n",i,maxj,max);

flag2=1;

}

}

if(!

flag2)

printf("\n矩阵中无鞍点!

\n");

}

矩阵中有鞍点,运行情况如下:

输入行数n:

2↙

输入列数m:

2↙

第0行?

4↙

5↙

第1行?

4↙

6↙

45

46

第0行,第1列的5是鞍点

矩阵中无鞍点,运行情况如下:

输入行数n:

2↙

输入列数m:

2↙

第0行?

90↙

7↙

第1行?

5↙

8↙

907

58

矩阵中无鞍点!

23、某班有30个学生,每个学生参加了5门课程的考试,请编程显示该班的期末成绩单,并求出每个学生的所有课程的总分。

解:

#include

voidmain()

{

intscore[31][7];

inti,j;

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

score[i][0]=i;

printf("请依次输入30个学生的五门课的成绩\n");

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

{

printf("请依次输入第%d个学生的五门课的成绩\n",i);

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

scanf("%d",&score[i][j]);

}

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

{

score[i][6]=0;

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

score[i][6]+=score[i][j];

}

printf("期末成绩单\n");

printf("%10s%10s%10s%10s%10s%10s%10s\n","学号","课程1","课程2","课程3","课程4","课程5","总分");

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

{

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

printf("%10d",score[i][j]);

printf("\n");

}

}

程序运行情况如下:

请依次输入30个学生的五门课的成绩

请依次输入第1个学生的五门课的成绩

7889989698↙

请依次输入第2个学生的五门课的成绩

8995989796↙

请依次输入第3个学生的五门课的成绩

7879747875↙

按照上面示例自行输入27个学生的五门课的成绩。

期末成绩单

学号课程1课程2课程3课程4课程5总分

17889989698459

28995989796475

37879747875384

程序将在此处依次打印出另外27个学生的成绩。

24、打印出如下方阵:

13141516

9101112

5678

1234

解:

#include

voidmai

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1