高级程序C语言经典50例后附答案手稿资料Word格式.docx

上传人:b****8 文档编号:22125183 上传时间:2023-02-02 格式:DOCX 页数:41 大小:36.96KB
下载 相关 举报
高级程序C语言经典50例后附答案手稿资料Word格式.docx_第1页
第1页 / 共41页
高级程序C语言经典50例后附答案手稿资料Word格式.docx_第2页
第2页 / 共41页
高级程序C语言经典50例后附答案手稿资料Word格式.docx_第3页
第3页 / 共41页
高级程序C语言经典50例后附答案手稿资料Word格式.docx_第4页
第4页 / 共41页
高级程序C语言经典50例后附答案手稿资料Word格式.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

高级程序C语言经典50例后附答案手稿资料Word格式.docx

《高级程序C语言经典50例后附答案手稿资料Word格式.docx》由会员分享,可在线阅读,更多相关《高级程序C语言经典50例后附答案手稿资料Word格式.docx(41页珍藏版)》请在冰豆网上搜索。

高级程序C语言经典50例后附答案手稿资料Word格式.docx

*

***

*****

25.用冒泡排序法将10个整数由大到小排序。

26.输入任意正整数,编程判断该数是否为回文数(回文数是指从左到右读与从右到左读一样,如12321)。

27.求出10至1000之内能同时被2、3、7整除的数,并输出。

28.输入一字符串,检查是否回文(回文是指正反序相同,如,LeveL),若是则输出“Yes”,否则输出“No”。

29.设计一个函数,用来判断一个整数是否为素数。

30.从键盘上输入若干学生成绩(成绩在0~100之间),计算平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。

31.设计一个函数,用来判断一个整数是否为素数。

 

32.从键盘上输入若干学生成绩(成绩在0~100之间),计算平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。

33.输入三个整型数,找出其中数值最大者并输出。

34.编写程序在屏幕上显示如下图形:

12345

51234

45123

34512

23451

35.编写猜数游戏,程序给定某个整数,从键盘上反复输入数据进行猜测。

如果未猜中,程序提示输入过大或者过小;

如果猜中,则输出猜的次数,最多允许猜10次

36.将一个数组中的值按逆序重新存放。

例如,原来顺序为a,b,c,d,e,f,g,现在顺序为g,f,e,d,c,b,a.(数组长度不限)

37.有一篇文章,共有3行文字,每行有80个字符。

要求分别统计出其中英文大写字母,小写字母,数字,空格以及其他字符的个数。

38.求

39.将十个整数输入数组,求出其平均值并输出。

40.将十个实型数输入数组(floatn[10];

)逆序存放后再输出。

41.编写程序:

输出x2的值,x取值从1到10。

42.设计程序:

定义可以存储1000个整数的数组;

在该数组中依次存入1到1000;

在屏幕上打印出数组中所有17的倍数。

43.设计一个函数,用来判断一个整数是否为素数;

并在main()函数中调用该函数,在屏幕上打印出100以内的所有素数。

44.写出一个函数,求n!

.(n!

=1*2*3*………*n)

45.使用一维数组计算学生的平均成绩。

用输入负数结束输入。

46.从键盘上输入一个3*3的矩阵,并求其主对角线元素的和。

47.写一个函数is_prime,判断整数n是否素数。

如果n是素数,则返回1;

如果n不是素数,则返回0。

48.从键盘输入任意一串字符串,程序输出同样的一串字符,要求输出字符串中大小写相互转化,其他符号不变。

如输入“a123BxC”,则输出“A123bXc”

49.任意输入10个整数,打印出10个数中的最大值

50.输入三个整数a,b,c,请按从小到大的顺序输出这三个数

51、输入一个整数n,请判断n是否是质数,如果是,打印n是质数,否则打印n不是质数

52编程,先输入n,再输入n个实数并分别统计正数的和、负数的和,然后输出统计结果。

53.编程,输入a1、a2、...、a15后,计算下列表达式的值并输出。

54.编程,设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。

55.编程,从键盘上输入一个字符串,将其中的小写字母转换成大写字母,大写字母转换成小写字母,输入字符串以“!

”结束,将转换后的字符串输出到电脑屏幕。

1.解答

/*从键盘输入3个整数,求其中的最大数和最小数,并输出结果*/

#include"

stdio.h"

voidmain()

{

printf("

从键盘输入3个整数,求其中的最大数和最小数,并输出结果\n\n"

);

inta,b,c,max;

/*定义三个整数和形参变量*/

请输入三个整数,用空格隔开\n"

scanf("

%d%d%d"

&

a,&

b,&

c);

if(a>

=b)

{

max=a;

/*将两者中的大的值赋予参数*/

if(max>

=c&

&

b>

=c)/*同时找出最大的数和最小的数,下面类似*/

printf("

三者中最大的数是a=%d\n三者中最小的数是c=%d\n"

a,c);

elseif(max>

b<

c)

三者中最大的数是a=%d\n三者中最小的数是b=%d\n"

a,b);

elseif(max<

三者中最大的数是c=%d\n三者中最小的数是b=%d\n"

c,b);

}

else

max=b;

a>

=c)

三者中最大的数是b=%d\n三者中最小的数是c=%d\n"

b,c);

a<

三者中最大的数是b=%d\n三者中最小的数是a=%d\n"

b,a);

三者中最大的数是c=%d\n三者中最小的数是a=%d\n\n"

c,a);

}

2.解答:

inti,j,a[3][3];

/*定义i,j为计数器*/

floatave1,ave2,ave3;

/*平均值要保留小数,故用实型*/

请按提示从键盘输入整数\n"

for(i=0;

i<

=2;

i++)

for(j=0;

j<

j++)/*用双循环来从键盘接收a[3][3]的3*3矩阵。

ij都不能大于2,与数组定义有关*/

{

请输入(按回车确认)\na[%d][%d]="

i,j);

scanf("

%d"

a[i][j]);

/*接收键盘输入*/

}

\n您输入的矩阵为:

\n"

i++)/*这个嵌套循环用来打印出所输入的矩阵*/

j++)

printf("

%d"

a[i][j]);

ave1=(a[0][0]+a[0][1]+a[0][2])*1/3.0;

/*求平均值。

注意这里的1/3.0,这是为了使整型转为实型,以保留小数*/

ave2=(a[1][0]+a[1][1]+a[1][2])*1/3.0;

ave3=(a[2][0]+a[2][1]+a[2][2])*1/3.0;

第一行的平均值为ave1=%.2f\n"

ave1);

第二行的平均值为ave2=%.2f\n"

ave2);

第三行的平均值为ave3=%.2f\n"

ave3);

3.解答:

intx;

for(x=0;

x<

=10;

x++)

%d*%d=%d\n"

x,x,x*x);

4.解答:

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

/*定义矩阵和计数器*/

intm,n;

/*用来记录行号和列号*/

请按提示输入\n"

3;

4;

j++)/*双嵌套接收3*4矩阵*/

max=a[0][0];

if(a[i][j]>

max)/*用双嵌套寻遍数组的元素,用if来实现符合条件的命令*/

max=a[i][j],/*这个式子来获得所用循环中的最大值*/

m=i,n=j;

/*记录最大值的行号和列号*/

\n矩阵中的最大值是max=%d\n\n"

max);

行号为:

%d列号为:

%d\n"

m,n);

5.解答:

inta[10],max,i;

10;

请输入第%d个数:

"

i+1);

scanf("

a[i]);

max=a[0];

if(max<

a[i])

max=a[i];

/*同前几道题类似,用max取出数组里最大值*/

这十个数中最大的是:

%d\n"

6.解答:

voidsum(intn)/*编写函数*/

intj;

floats=0;

for(j=1;

=n;

s=s+1.0/(2*j-1);

s=%.2f\n"

s);

intn;

n);

sum(n);

/*调用函数*/

7.解答:

inti;

for(i=1000;

=1999;

i++)/*定义循环变量*/

if(i%4==0&

i%100!

=0)/*筛选符合条件的年份*/

this%dyearisaleapyear\n"

i);

elseif(i%400==0)/*筛选符合条件的年份*/

8.解答:

inta,b,c,x,i;

以下程序打印出所有的水仙花数\n\n"

//下面三层嵌套循环可寻遍所有的三位数

for(a=1;

a<

=9;

a++)/*a作为百位,不能为0,从1开始取*/

for(b=0;

b<

b++)

for(c=0;

c<

c++)

if(a*100+b*10+c==a*a*a+b*b*b+c*c*c)/*满足水仙花条件*/

x=a*100+b*10+c,/*赋值,可以省略*/

printf("

三位数%d是水仙花数\n"

x);

9.解答:

inti,j,k,x,y;

请输入一个三位数:

x);

//下面是提取出这个三位数的百位、十位和各位

//用三层循环寻遍所有三位数

if(x>

100&

x<

999)

for(i=1;

for(j=0;

for(k=0;

k<

k++)/*个位倒序后成百位,个也不能为零*/

{

if(i*100+j*10+k==x)/*找到和x相等的数,记录i,j,k*/

if(k==0)/*排除个位为0的数*/

printf("

这个三位数个位为0,不能倒序\n"

else

y=k*100+j*10+i,/*依据i,j,k来逆向形成*/

这个倒序的三位数是:

y);

}

你的输入有误!

10.解答:

inta[10],max=0,m,i,k,j=0;

floatave;

请按提示输入十个同学的成绩\n\n"

i++)/*接收成绩*/

请输入第%d位同学的成绩:

"

if(a[i]>

=max)

max=a[i],m=i+1;

/*找出最高成绩,并记录是第几位同学*/

=60)

j++;

/*计算及格同学的个数*/

ave=(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]+a[9])/10.0;

/*平均成绩*/

成绩中最高的是第%d位同学的:

%d分\n"

m,max);

及格的个数为:

j);

平均成绩为:

%.2f\n"

ave);

11.解答:

charch;

ch=getchar();

/*只接收第一个字符*/

if(ch>

='

0'

&

ch<

9'

)/*带单引号表示ASCLL码值的比较*/

anumericalcharacter\n"

othercharacter\n"

12.解答:

参考第四题答案。

13.解答:

参考第八题答案。

14.解答:

voidchange(inta[3][3])

inti,j,k;

for(j=i+1;

j++)/*注意这里的j=i+1不能是j=0,想想为什么*/

k=a[i][j];

/*借用参量k完成两者的值互换*/

a[i][j]=a[j][i];

a[j][i]=k;

i++)/*接收数组*/

请输入a[%d][%d]="

原来的矩阵:

%d"

转换后的矩阵:

change(a);

15.解答:

math.h"

/*这个是需要引用数学函数*/

输入a、b、c的值后,输出一元二次方程ax2+bx+c=0的解\n"

inta,b,c;

floatn,x1,x2,m;

请输入a的值:

a="

a);

请输入b的值:

b="

b);

请输入c的值:

c="

//以下实际为求根公式

m=b*b-4*a*c;

/*这个是Δ=b*b-4ac*/

if(m>

=0)

n=sqrt(m);

/*对Δ开方。

math.h这个里面包含开放函数sqrt()*/

x1=(-b+n)/(2*a);

x2=(-b-n)/(2*a);

方程的根为:

x1=%.2fx2=%.2f\n"

x1,x2);

该方程没有实数解\n"

16.解答:

参见课本69页。

17.解答:

#include<

stdio.h>

#include<

string.h>

/*定义字符串处理函数*/

intmain()

charch[80];

//这里需要定义一个数组

inti,n,s=0;

请输入一串字符串:

gets(ch);

//为了输入空格,必须要用gets输入

//gets送一字符串到流中

n=strlen(ch);

//计算字符串长度

n;

if(ch[i]==32)//空格的ASCII码值为32

s=s+1;

//不能用i求和,因为i用在了for循环

字符串中的空格数有:

%d个\n"

18.解答:

//采用二维数组输入多个学生五门课的成绩,分别求出每个学生的平均成绩和每门课的平均成绩

inta[100][5],i,j,n;

floatave1[100]={0};

floatave2[80]={0};

请输入你要计算几个人成绩,n="

5;

\n请输入第%d位同学的第%d门成绩:

i+1,j+1);

/*接收成绩*/

ave1[i]=ave1[i]+a[i][j];

/*对每位学生的成绩求和*/

ave1[i]=ave1[i]/5;

/*求出每位学生的平均成绩*/

for(j=0;

for(i=0;

ave2[j]=ave2[j]+a[i][j];

/*对每门课成绩求和*/

ave2[j]=ave2[j]/n;

/*求出每门课平均成绩*/

第%d位同学的平均成绩为:

i+1,ave1[i]);

第%d门课的平均成绩为:

j+1,ave2[j]);

19.解答:

string.h"

/*调用库函数*/

charch[100];

intn,i;

请输入字符串:

/*接收一串字符*/

/*求取字符串长度*/

逆转字符串为:

%c"

ch[n-i-1]);

/*这里注意%c和%s的区别,输出的为连续多个单字符*/

20.解答:

inti,j=0,n;

请输入一个英语文本:

/*接收一个字符串*/

/*获取字符串长度,以便控制循环次数*/

/*单词的个数也就是空格的个数,每个单词后都有空格*/

if(ch[i]==32)/*空格的ASCLL码为32,注

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

当前位置:首页 > 解决方案 > 学习计划

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

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