练习题
来源:互联网 发布:安卓网络直播电视软件 编辑:程序博客网 时间:2024/04/28 01:23
1. 将华氏温度转换为摄氏温度和绝对温度的公式分别为:
c= (f-32) (摄氏温度)
k=273.16+c (绝对温度)
请编程序:当给出f时,求其相应摄氏温度和绝对温度。
测试数据:① f=34
② f=100
float f,k,c;
printf("please input f:");
scanf("%f",&f);
c=(f-32);
k=273.16+c;
printf("摄氏温度是c=%-5.2f,绝对温度是k=%-5.2f",c,k);
return 0;
2. 写一个程序把极坐标(r,θ) (θ之单位为度)转换为直角坐标( X,Y)。转换公式是:
x=r.cosθ
y=r.sinθ
测试数据:① r=10 θ=45°
② r=20 θ=90°
const double PI=3.14;
double r,s;
double x,y;
printf("please input r and s like(r,s):");
scanf("%lf,%lf",&r,&s);
x=r*cos(s*PI/180);
y=r*sin(s*PI/180);
printf("x=%lf,y=%lf",x,y);
5. 输入一个3位整数,求出该数每个位上的数字之和。如123,每个位上的数字和就是1+2+3=6。
int num=0;
int sum=0;
printf("please input a number:");
scanf("%d",&num);
while (num) {
sum += num %10;
num /=10;
}
printf("每个位上的数字和就是sum=%d",sum);
return 0;
6. 打印出以下图形
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
int i,j,k;
for (i=0;i<=3;i++)
{
for (j=0;j<=2-i;j++)
printf(" ");
for (k=0;k<=2*i;k++)
printf("*");
printf("\n");
}
for (i=0;i<=2;i++)
{
for (j=0;j<=i;j++)
printf(" ");
for (k=0;k<=4-2*i;k++)
printf("*");
printf("\n");
}
7. 准备客票。某铁路线上共10个车站,问需要准备几种车票?
int i,j,station,total=0;
printf("输入车站数:");
scanf("%d",&station);
for (i=1;i<station;i++)
for (j=i+1;j<=station;j++)
total=total+1;
printf("车票种类=%d \n",total);
return 0;
}
*/
1. 计算n的阶乘
int n=0,mul=1;
printf("please input n:");
scanf("%d",&n);
for (int i=1; i<=n; i++) {
mul *=i;
}
printf("mul=%d",mul);
2. 求 1到 100之间的奇数之和、偶数之积。
int sumj=0,sumo=0;
for (int i=1; i<=100; i++) {
if (i%2==0)
{
sumo +=i;
}
else
{
sumj +=i;
}
}
printf("奇数之和sumj=%d,偶数之和sumo=%d",sumj,sumo);
4. 用循环语句编写求2^0+2^1+2^2+2^3+.....+2^63 的程序。
double sum=1;//跳过2^0从2^1开始
double mul=1;
for (int i=1; i<64; i++) {
mul *=2;
sum +=mul;
}
printf("sum=%.0lf",sum);
5.求1!+2!+3!+...+20!
double sum=0;
double mul=1;
for (int i=1; i<=20; i++) {
mul *=i;
sum +=mul;
}
printf("sum=%.0lf",sum);
6. 有一分数序列 2/1,3/2,4/3,5/4......,求出这个数列的前20项之和。
float a[21]={0};
float sum=0;
a[0]=1;
a[1]=2;
for (int i=2; i<21; i++)
{
a[i]=a[i-1]+a[i-2];
}
for (int i=0;i<20; i++)
{
sum += a[i+1]/a[i];
}
printf("sum=%f",sum);
12. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数, 其各位数字立方和等于该数本身。例如 153是一个水仙花数,因为 153= (要求分别用一重循环和三重循环实现)。
//方法1
int x=0,y=0,z=0;//z,y,z 分别对应的是个 十 百
for (int data=100; data<10000; data++)
{
x=data%10;
y=data/10%10;
z=data/10/10%10;
if (data==x*x*x+y*y*y+z*z*z) {
printf("%d\n",data);
}
}
//方法2
int data=0;
for (int x=0; x<=9; x++)
{
for (int y=0; y<=9; y++)
{
for (int z=1; z<=9; z++)
{
data=z*100+y*10+x;
if (data==x*x*x + y*y*y +z*z*z) {
printf("%d\n",data);
}
}
}
}
14. 3025这个数具有一种独特的性质:将它平分为两段,即30和25,使之相加后求平方,即(30+25),恰好等于3025本身。请求出具有这样性质的全部四位数。
int x=0,y=0;
for(int data=1000;data<10000;data++)
{
x=data%100;
y=data/100%100;
if (data==(x+y)*(x+y)) {
printf("%d\n",data);
}
}
8. 求一个 3×3矩阵两条对角线上元素之和(每个元素只加一次)。
int a[3][3]={0};
for (int i=0; i<3; i++)
{
for (int j=0; j<3; j++)
{
a[i][j]=rand()%10;
}
}
int sum=0;
for (int i=0; i<3; i++)
{
for (int j=0; j<3; j++)
{
if (i==j || i+j==2)
{
sum +=a[i][j];
}
}
}
for (int i=0; i<3; i++)
{
for (int j=0; j<3; j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
printf("对角线的和为sum=%d",sum);
9. 打印如下形式的杨辉三角形
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
输出前10行,从 0行开始,分别用一维数组和二维数组实现。
int a[10][10]={0};
for (int i=0; i<10; i++)
{
for (int j=0; j<=i; j++)
{
if (j==0 || i==j)
{
a[i][j]=1;
}
else
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
printf("%6d",a[i][j]);
}
printf("\n");
}
10. 有一个二维数组整型数组中,每一行都有一个最大值,编程求出这些最大值以及它们的和。
int a[5][5]={0};
for (int i=0; i<5; i++)
{
for (int j=0; j<5; j++) {
a[i][j]=rand()%10;
}
}
for (int i=0; i<5; i++)
{
for (int j=0; j<5; j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
int max=0,sum=0;
for (int i=0; i<5; i++)
{
max=a[i][0];
for (int j=1; j<5; j++)
{
if (max<a[i][j])
{
max=a[i][j];
}
}
printf("第%d行的最大值是%d\n",i+1,max);
sum +=max;
}
printf("最大值的和为%d\n",sum);
2. 有一个数组,内放10个整数。要求找出最小的数和它的下标,然后把它和数组中最前面的元素对换位置。
int a[10]={0};
for (int i=0;i<10; i++) {
a[i]=rand()%100;
printf("%4d",a[i]);
}
int min=0;
int k=0;
min=a[0];
for (int i=1; i<10; i++)
{
if (min > a[i]) {
min=a[i];
k=i;
}
}
printf("\nk=%d,min=%d\n",k,min);
if(k!=0)
{
a[0]=a[0]+a[k];
a[k]=a[0]-a[k];
a[0]=a[0]-a[k];
}
for (int i=0;i<10; i++) {
printf("%4d",a[i]);
}
1. 在数组中同时查找最大元素下标和最小元素下标,分别存放在main函数的变量max和min中。
void find(int *a,int n ,int *max,int *min)
{
int i;
*max=*min=0;
for(i=1;i<n;i++)
if(a[i]>a[*max])
{
*max=i;
}
else if(a[i]<a[*min])
{
*min=i;
}
return;
}
int a[7]={5,8,7,6,2,7,3};
int max,min;
find(a,7,&max,&min);
printf("%d,%d\n",max,min);
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- 练习题
- matlab GUI
- ES6学习——新的语法:块级作用域概述
- PHP 使用 phpqrcode生成二维码附在线演示地址
- Call Function in a ViewController from UITableViewCell
- <LeetCode OJ> (104 / 111) Maximum & Minimum Depth of Binary Tree
- 练习题
- vector——序列式容器
- dd大牛的背包九讲
- 计算机端口与socket的相关概念
- unrecognized selector sent to instance 0x266070
- 转 最全的常用正则表达式大全
- 段子
- Qt4添加QSerialPort模块
- LeetCode 88:Merge Sorted Array