高级程序C语言经典50例后附答案手稿资料Word格式.docx
- 文档编号:22125183
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:41
- 大小:36.96KB
高级程序C语言经典50例后附答案手稿资料Word格式.docx
《高级程序C语言经典50例后附答案手稿资料Word格式.docx》由会员分享,可在线阅读,更多相关《高级程序C语言经典50例后附答案手稿资料Word格式.docx(41页珍藏版)》请在冰豆网上搜索。
*
***
*****
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,注
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 程序 语言 经典 50 例后附 答案 手稿 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)