您的位置:首页 > 编程语言 > C语言/C++

20130822C语言编程实践课第四天

2013-08-22 13:56 176 查看
/*赛利有12枚银币。其中有11枚真币和1枚假币。假币看起来和真币没有区别,但是重量不同。赛利不知道假币比真币轻还是重。于是他向朋友借了一架天平。赛利希望称三次就能找出假币并且确定假币是轻是重。例如:如果赛利用天平称两枚硬币,发现天平平衡,说明两枚都是真的。如果赛利用一枚真币与另一枚银币比较,发现它比真币轻或重,说明它是假币。经过精心安排每次的称量,赛利保证在称三次后一定能够确定假币。

任务

编写一个程序,根据三次称量的结果,确定哪一个是假币,并指出其轻重。

*/

(作业)

/***********************************第一题*****************************************/

//数组:学生成绩的录入和输出

/*#include<stdio.h>

main()

{

int i,j,student[3][2];

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

{

printf("\n输入学号%d两个学期的成绩:",i+1);

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

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

}

printf("\n学员的学号及其两个学期的成绩为:\n");

printf("\n\t学号\t第一学期\t第二学期");

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

{

printf("\n\t");

printf("%d\t",i+1);

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

printf("%d\t\t",student[i][j]);

printf("\n");

}

}*/

/***********************************第一题*****************************************/

/***********************************第二题*****************************************/

/*在一些数中找到最大值和最小值*/

#include<stdio.h>

main()

{

int num[5],max,min,i;

printf("请输入5个数:\n");

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

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

max=num[0];

min=num[0];

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

{

if(max<num[i])

max=num[i];

if(min>num[i])

min=num[i];

}

printf("\n最大值为:%d\n",max);

printf("\n最小值为:%d\n",min);

}

/***********************************第二题*****************************************/

/***********************************第三题*****************************************/

#include<stdio.h>

main()

{

int i,j,num[7],search;

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

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

printf("\n 请输入要查找的数字:");

scanf("%d",&search);

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

{

if(num[i]==search)

{

printf("\n在数组的第%d个位置找到了数字%d!\n",i+1,search);

break;

}

}

if(i==7)

printf("\n没有找到!");

}

/***********************************第三题*****************************************/

/***********************************第四题*****************************************/

#include<stdio.h>

#define N 5

main()

{

int grade
,temp,i,j;

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

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

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

{

for(j=0;j<N-i-1;j++)

{

if(grade[j]<grade[j+1])

{

temp=grade[j+1];

grade[j+1]=grade[j];

grade[j]=temp;

}

}

printf("%d",grade[j]);

}

}

/***********************************第四题*****************************************/

/***********************************第四题*****************************************/

#include<stdio.h>

#define N 5

main()

{

int grade
,temp,i,j;

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

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

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

{

for(j=0;j<N-i-1;j++)

{

if(grade[j]<grade[j+1])

{

temp=grade[j+1];

grade[j+1]=grade[j];

grade[j]=temp;

}

}

// printf("%d\n",grade[j]);

}

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

printf("%d\n",grade[i]);

}

/***********************************第四题*****************************************/

/***********************************第五题*****************************************/

#include<stdio.h>

void main()

{

int n,i;

printf("input number please:");

scanf("%d",&n);

printf("%d=",n);

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

{

while(n!=i)

{

if(n%i==0)

{

printf("%d*",i);

n=n/i;

}

else

break;

}

}

printf("%d",n);

}

/***********************************第五题*****************************************/

/***********************************第六题*****************************************/

/***********************************第六题*****************************************/

/*输入两个正整数m和n,求其最大公约数和最小公倍数

1辗转相除法求最大公约数

当输入两个数m,n后比较m和n的大小,m中要是较大的一个数,n中放较小的那个数;

m去除以n,余数如果为0的话,则n就为最大公约数,否则的话,就做一个循环,

(把n的值赋给m,把前两个数相除得到的值赋给n)直到余数为0;求出来的n就为最大公约数;

再利用:m*n=最小公倍数*最大公约数;

2当输入两个数m,n后比较m和n的大小,m中要是较大的一个数,n中放较小的那个数;

m去除以n,余数如果为0的话,则m就为最小公倍数,否则的话,让m去乘以i(是依次增加的);

利用得到的这个值去继续除以n,直到余数为零,得到的m就为最小公倍数

*/

#include "stdio.h"

#include "conio.h"

main()

{

int a,b,num1,num2,temp;

printf("please input two numbers:\n");

scanf("%d,%d",&num1,&num2);

if(num1<num2)/*交换两个数,使大数放在num1上*/

{

temp=num1;

num1=num2;

num2=temp;

}

a=num1;

b=num2;

while(b!=0)/*利用辗除法,直到b为0为止*/

{

temp=a%b;

a=b;

b=temp;

}

printf("公约数为:%d\n",a);

printf("公倍数为::%d\n",num1*num2/a);

}

/***********************************第六题*****************************************/

/***********************************第七题*****************************************/

//输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

//利用while语句,条件为输入的字符不为'\n'.

/*

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int i,a[4];

char t;

int main()

{

for(i=0;;i++)

{

scanf("%c",&t);

if(t=='\n')

break;

else if

(t>='A'&&t<='Z')

a[0]++;

else if(t>='a'&&t<='z')

a[0]++;

else if(t==' ')

a[1]++;

else if(t>='0'&&t<='9')

a[2]++;

else

a[3]++;

}

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

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

system("pause");

return 0;

}

*/

/***********************************第七题****************************************/

/***********************************第八题****************************************/

/*求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

例如2+22+222+2222+22222(此时共有5个数相加),几个数相由键盘控制。*/

#include<stdio.h>

main()

{

int a,n,count=1;

long int sn=0,tn=0;

printf("please input a and n \n");

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

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

while(count<=n)

{

tn=tn+a;//一个数

sn=sn+tn;//前几个数的和

a=a*10;

++count;

}

printf("a+aa+...=%ld\n",sn);

} /***********************************第八题****************************************/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: