算法设计实验2----[算法与数据结构](C语言)
Posted 小智RE0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法设计实验2----[算法与数据结构](C语言)相关的知识,希望对你有一定的参考价值。
实验目的:掌握数组在算法设计中的应用技巧,能够使用数组等数据结构来进行进行算法设计的优化。
选票问题
#include<stdio.h>
int main(){
int i,xp,a[6]={0,0,0,0,0,0};
printf("输入数据直到输入-1\\n");
scanf("%d",&xp);
while(xp!=-1)
{
if(xp>=1&&xp<=5)
a[xp]=a[xp]+1;
else
printf("%d,输入错误! !\\n");
scanf("%d",&xp);
}
for(i=1;i<=5;i++)
printf("%d得到%d票\\n",i,a[i]);
}
统计身高问题
#include<stdio.h>
void main()
{
int i,sg,a[8]={0,0,0,0,0,0,0,0};
printf("输入数据直到输入-1\\n");
scanf("%d",&sg);
while(sg!=-1)
{
if(sg>179)
a[7]+=1;
else
if(sg<150)
a[0]+=1;
else
a[sg/5-29]+=1;
scanf("%d",&sg);
}
for(i=0;i<=7;i++)
printf("%d区间身高的人有%d个\\n",i+1,a[i]);
}
求三门课都不及格的学生。
(1)
#include<stdio.h>
void main()
{
int a[7],b[6],c[8],i,j,k,v;
for(i=0;i<7;i++)
scanf("%d",&a[i]);
for(i=0;i<6;i++)
scanf("%d",&b[i]);
for(i=0;i<8;i++)
scanf("%d",&c[i]);
for(i=0;i<7;i++)
{ v=a[i];
for(j=0;j<6;j++)
if(b[j]==v)
for(k=0;k<8;k++)
if(c[k]==v)
{
printf("%d\\n",v);
break;
}
}
}
(2)
#include<stdio.h>
int main(){
int i,xh,a[10]={0,0,0,0,0,0,0,0,0,0};
for(i=1;i<=21;i++)
{
scanf("%d",&xh);
a[xh]=a[xh]+1;
}
for(i=1;i<=9;i++)
if(a[i]==3)
printf("%d\\n",i);
return 0;
}
数字翻译英文。
(1)
#include<stdio.h>
void main()
{
int i,a[10],ind;
long num1,num2;
char eng[10][6]={"zero","one","two","three","four","five","six","seven","eight","nine"};
printf("put a number");
scanf("%ld",&num1);
num2=num1;
ind=0;
while(num2!=0)
{
a[ind]=num2%10;
ind++;
num2=num2/10;
}
printf("%ld English_exp: ",num1);
for(i=ind-1;i>=0;i--)
printf("%s--",eng[a[i]]);
printf("\\n");
}
(2)
#include<stdio.h>
int main()
{
int i=0,n;
char num[40];
char eng[10][6]={"zero","one","two","three","four","five","six","seven","eight","nine"};
printf("Input a number\\n");
scanf("%s",&num);
n=strlen(num);
if(n==0)
printf("input eror!");
else
{
printf("%s English_exp: ",num);
for(i=0;i<=n-1;i++)
printf("%s--",eng[num[i]-48]);
printf("\\n");
}
}
一个顾客买了价值x元的商品,并将y元的钱交给售货员。
#include <stdio.h>
#include <stdlib.h>
main( ){
int x,y;
while(scanf("%d %d", &x,&y)!=EOF){
int i,j,z,a,b[7]={0,50,20,10,5,2,1},s[7];
for(i=0;i<7;i++) s[i]=0;
z=y-x;
for(i=1;i<=6;i++){
a=z/b[i]; s[i]=s[i]+a; z=z-a*b[i];
}
for(i=1;i<=6;i=i+1)
if (s[i]!=0)
printf("%d yuan: %d\\n", b[i], s[i]);
printf("\\n");
}
}
求x,使得x^2为一个各位数字互不相同的9位数。
#include<stdio.h>
int main()
{
long x,y1,y2;
int p[10],i,t,k,num=0;
for(x=10000;x<=32000;x++)
{
for(i=0;i<=9;i++)
p[i]=1;
y1=x*x;
y2=y1;
k=0;
for(i=1;i<=9;i++)
{
t=y2%10;//拆分y2
y2=y2/10;
if(p[t]==1)
{
k=k+1;
p[t]=0;
}
else
break;
}
if(k==9)
{
num=num+1;
printf("num = %d , x = %ld , y1 = %ld\\n",num,x,y1); }
}
}
游戏问题。12个小朋友手拉手站成一个圈,从某一个小朋友开始报数,报到7的小朋友退出到圈外,然后他的下一位重新上报“1”,继续下去,直到剩下最后一个小朋友。
#include <stdio.h>
main()
{
int n,i,k,p,x,m;
int a[100];
printf("输入游戏总人数:");
scanf("%d",&n);
printf("输入开始报数人的编号:");
scanf("%d",&k);
printf("退出圈外人的报数点:");
scanf("%d",&m);
for(i=1;i<=n;i++)
a[i]=1; //初始状态表示都在圈内
p=0; //p表示退出圈外的人数
k--;
printf("在圈中的编号:");
for(i=1;i<=n;i++)
if(a[i]=1)
printf("i=%d\\t",i);
printf("\\n");
printf("出圈次序:");
while(p<n-1)
{
x=0;
while(x<m)
{
k=k+1;
if(k>n)
k=1;
x=x+a[k];
}
printf("%d\\t",k);
a[k]=0;
p=p+1;
}
printf("\\n");
}
高精度数据X长整数。
#include<stdio.h>
#include<string.h>
int main()
{
long b,c,d;
int a[256],i,j,n;
char s1[256];
printf("Input a great number:");
scanf("%s",s1);//作为乘数
printf("Input a long Intiger:");
scanf("%d",&c);//作为被乘数
n=strlen(s1);
d=0;//表示进位,从0开始(一开始还没有进位)
//取出所有中间计算结果的个位
for(i=0,j=n-1;i<n;i++,j--){
b=(s1[j]-'0')*c+d;
a[i]=b%10;
d=b/10;
}
//排除所有中间乘法个位后的整数
while(d!=0){
a[n]=d%10;
d/=10;
n++;
}
//逆序输出
for(i=n-1;i>=0;i--){
printf("%d",a[i]);
}
return 0;
}
编程求当n<=100时候,n!的精准值。
#include<stdio.h>
int main()
{
int a[256],b,d;//数组存储中间乘法结果
int m,n,i,j,cnt=1,flag=0;
scanf("%d",&n);//求n的阶乘
m=1;//表示占用格子数
a[1]=1;
for(i=2;i<=n;i++){//每次循环将2到n依次累乘到结果中
d=0;//表示进位
for(j=1;j<=m;j++){
b=a[j]*i+d;
a[j]=b%1000000;//保存每次结果的低六位
d=b/1000000;
}
if(d!=0){//如果进位不为0
a[j]=d;//将进位存在高位里面
m++;
}
}
printf("%d!\\t=%d\\t",n,a[m]);
for(i=m-1;i>=m-4;i--){
printf("%06d\\t",a[i]);
}
printf("\\n");
for(i=m-5;i>=1;i--){
printf("%06d\\t",a[i]);
if(cnt%6==0)
printf("\\n");
cnt++;
}
return 0;
}
编程打印nxn的方阵。
#include<stdio.h>
int main()
{
int i,j,a[100][100],n算法设计实验1----(循环与递归)[C语言]