没有合适的资源?快使用搜索试试~ 我知道了~
C语言 C++编程题.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 169 浏览量
2022-07-01
23:54:08
上传
评论
收藏 687KB DOC 举报
温馨提示
试读
163页
C语言 C++编程题
资源推荐
资源详情
资源评论
1、歌星大奖赛
在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉
一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。
#include <stdio.h>
main( )
{ float integer, max, min, sum=0;
int i;
max=-32768.0; //先假设当前的最大值 max 为 C 语言整型数的最小值
min=32767.0; //先假设当前的最小值 min 为 C 语言整型数的最大值
for ( i=1; i<=10; i++)
{ printf("Input number %d=", i);
scanf("%f", &integer);
sum+=integer;
if (integer>max) max=integer;
if (integer<min) min=integer;
}
printf("Canceled max score: %fCanceled min score: %f", max, min);
printf("Average score: %f", (sum-max-min)/8);
}
2、水仙花数
水仙花数是指一个三位数,其各个数之立方和等于该数,例如 153,即为一水仙花数,因为
153=13+53+33。请用 C 语言编程实现水仙花数的程序。
#include <stdio.h>
int main(void)
{ int a,b,c;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
if(100*a+10*b+c==a*a*a+b*b*b+c*c*c)
printf("%d%d%d",a,b,c);
return 0;
}
3、编一程序,求由 200×200 个整数组成的 200×200 方阵的对角线元素之和。
#include <stdio.h>
int main(void)
{ long i, j, a[200][200],sum=0;
for(i=0;i<200; i++)
for(j=0;j<200; j++)
a[i][j]=I;
for(i=0;i<200; i++)
for(j=0;j<200; j++)
if (i==j ) sum+= a[i][j];
printf(“%d\n”,sum);
return 0;
}
4、有一圆柱体,半径为 r,高为 h,求这个圆柱体的表面积 S 和体积 V。程序要求半径 r 和
高 h 从键盘输入,输出时要求带有说明。
#include <stdio.h>
#define PI 3.14159
int main(void)
{ float r, h, S, V;
scanf(“%f, %f”, &r, &h) ;
S=2*PI*r*r+2*PI*r*h;
V= PI*r*r *h;
printf("圆柱体的表面积是:%f,体积是:%f \n", S, V);
return 0;
}
5、年龄问题
张三、李四、王五、刘六的年龄成一等差数列,他们四人的年龄相加是 26,相乘是 880,求
以他们的年龄为前 4 项的等差数列的前 20 项。
*题目分析与算法设计
设数列的首项为 a,公差 n,则前 4 项之和为"n+(n+a)+(n+a+a)+(n+a+a+a)=4*n+6*a",
前 4 项之积为"n*(n+a)*(n+a+a)*(n+a+a+a)"。同时"1<=a<=4","1<=n<=6"。可采用穷举法求出
此数列。
*程序说明与注释
#include<stdio.h>
void main()
{ int n, a, i;
printf("The series with equal difference are:\n");
for(n=1;n<=6;n++) /*公差 n 取值为 1~6*/
for(a=1;a<=4;a++) /*首项 a 取值为 1~4*/
if (4*n+6*a==26 && n*(n+a)*(n+a+a)*(n+a+a+a)==880) /*判断结果*/
for ( i=0; i<20; i++)
printf("%d ", n+i*a); /*输出前 20 项*/
}
6、三色球问题
若一个口袋中放有 12 个球,其中有 3 个红的。3 个白的和 6 个黒的,问从中任取 8 个共有
多少种不同的颜色搭配?
*题目分析与算法设计
设任取的红球个数为 i,白球个数为 j,则黒球个数为 8-i-j,根据题意红球和白球个数
的取值范围是 0~3,在红球和白球个数确定的条件下,黒球个数取值应为 8-i-j<=6。
*程序说明与注释
#include<stdio.h>
void main()
{
int i,j,count=0;
printf(" RED BALL WHITE BALL BLACKBALL\n");
printf("..................................................\n");
for(i=0;i<=3;i++) /*循环控制变量 i 控制任取红球个数 0~3*/
for(j=0;j<=3;j++) /*循环控制变量 j 控制任取白球个数 0~3*/
if((8-i-j)<=6)
printf(" %2d: %d %d %d\n",++count,i,j,8-i-j);
}
7、马克思手稿中的数学题
马克思手稿中有一道趣味数学问题:有 30 个人,其中有男人、女人和小孩,在一家饭馆吃
饭花了 50 先令;每个男人花 3 先令,每个女人花 2 先令,每个小孩花 1 先令;问男人、女
人和小孩各有几人?
*题目分析与算法设计
设 x,y,z 分别代表男人、女人和小孩。按题目的要求,可得到下面的方程:
x+y+z=30 (1)
3x+2y+z=50 (2)
用方程程序求此不定方程的非负整数解,可先通过(2)-(1)式得:
2x+y=20 (3)
由(3)式可知,x 变化范围是 0~10
*程序说明与注释
#include<stdio.h>
void main()
{
int x,y,z,count=0;
printf(" Men Women Children\n");
printf("........................................\n");
for(x=0;x<=10;x++)
{
y=20-2*x; /*x 定值据(3)式求 y*/
z=30-x-y; /*由(1)式求 z*/
if(3*x+2*y+z==50) /*当前得到的一组解是否满足式(2)*/
printf(" %2d: %d %d %d\n",++count,x,y,z);
}
}
8、螺旋方阵
螺旋方阵将从 1 开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。如 4 阶的螺旋
方阵形式为:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
请编程实现输出。
*问题分析与算法设计
程序中用二维数组存储该方阵,用 for-for 结构实现二重循环,将产生的从 1~4
2
的序列
值依次放入二维数组中。内重循环由 4 个并列的 for 语句构成,每个 for 语句产生一条边的
序列值,所以外层 for 语句的循环次数就为阶数的一半。
程序如下:
#include <stdio.h>
#define SIZE 4
main()
{
int mat[SIZE][SIZE];
int i,j,k=0,n,m;
n=SIZE;
m=(n+1)/2;
for(i=0;i<m;i++)
{
for(j=i;j<=n-i-1;j++) // 顶边,从左到右,行不变列变
mat[i][j]=++k;
for(j=i+1;j<=n-i-1;j++) // 右边,从上到下,行变列不变
mat[j][n-i-1]=++k;
for(j=n-i-2;j>=i;j--) // 底边,从右到左,行不变列变
mat[n-i-1][j]=++k;
for(j=n-i-2;j>=i+1;j--) // 左边,从下到上,行变列不变
mat[j][i]=++k;
}
for(i=0;i<n;i++) // 输出二维数组
{
for(j=0;j<n;j++)
printf("%d\t",mat[i][j]);
printf("\n");
}
}
9、编写一个函数 print,打印一个学生的成绩数组,该数组中有 5 个学生的数据记录,每个
记录包括 num,name,score[3],用主函数输入这些记录,用 print 函数输出这些记录。
#include<stdio.h>
struct st
{ int num; char name[20]; float score[3]; }a[5];
Print()
{ int I;
for (i=0; i<5; i++)
Printf(“Record %d : %d, %s, %f, %f, %f\n”, i+1, a[i].num, a[i].name, a[i].score[0],
a[i].score[1], a[i].score[2]);
}
void main()
{ int I;
for (i=0; i<5; i++)
scanf(“%d%s%f%f%f”, &a[i].num, a[i].name, &a[i].score[0], &a[i].score[1], &a[i].score[2]);
print();
}
10、最大公约数和最小公倍数
求任意两个正整数的最大公约数和(greatest common divisor, GCD)和最小公倍数(least
common multipler, LCM)。
*问题分析与算法设计
手工方式求两个正整数的最大公约数的方法是用辗转相除法,在程序中可以模拟这种方式。
*程序与程序注释
#include <stdio.h>
void main()
{ int a, b, num1, num2, temp;
printf("Input a & b:");
scanf("%d%d", &num1, &num2);
if(num1<num2) /*找出两个数中的较大值*/
{ temp=num1; num1=num2; num2=temp; /*交换两个整数*/
}
a=num1; b=num2;
while (b!=0) /*采用辗转相除法求最大公约数*/
{ temp=a%b;
a=b; /*将除数作为被除数*/
b=temp; /*将余数作为新的除数*/
}
printf("The GCD of %d and %d is: %d\n", num1, num2, a); /*输出最大公约数*/
printf("The LCM of them is: %d\n", num1*num2/a); /*输出最小公倍数*/
}
*运行结果
1.Input a & b: 20 55
The GCD of 20 and 55 is: 5
剩余162页未读,继续阅读
资源评论
oligaga
- 粉丝: 50
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功