问两个C语言的问题 谢谢了
1.若有已按降序排列的数列20,18,16,14,12,10,8,6,4,2,现要求将键盘输入的一个数插入到该数列中,要求按原来的排序规律插入。2.掷100次骰子,统计各...
1.若有已按降序排列的数列20,18,16,14,12,10,8,6,4,2,现要求将键盘输入的一个数插入到该数列中,要求按原来的排序规律插入。
2.掷100次骰子,统计各点数出现的次数(用rand()%k做)
希望能帮我做一下 谢谢了 展开
2.掷100次骰子,统计各点数出现的次数(用rand()%k做)
希望能帮我做一下 谢谢了 展开
3个回答
展开全部
1题如下;
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void output(int *p)
{
int a,*q;
q=p-1;
for(a=0;a<*q;a++)
printf("%4d",*(p++));
}
void input(int *pp,int c)
{
int aa,*qq,*j,save;
qq=pp;
qq--;
*qq=*qq+1;
for(aa=0;aa<*qq;aa++)
{
if(c>*(pp++))
{
j=--pp;
++pp;
break;
}
else
if(aa==*qq)
j=(--pp);
}
if(j==pp)
*pp=c;
else
{
save=*j;
*j=c;
j++;
for(aa;aa<(*qq-1);aa++)/*save与j++换值*/
{
c=*j;
*j=save;
save=c;
j++;
}
}
}
void main()
{
char yn;
int a[400]={10,20,18,16,14,12,10,8,6,4,2},b;
printf("原来里面的%d个数为:\n",a[0]);
output(&a[1]);
printf("\n");
awei:printf("请输入一个新数:");
scanf("%d",&b);
input(&a[1],b);
printf("加入一个数后为%d个数:\n",a[0]);
output(&a[1]);
printf("\n");
scanf("%c",&yn);
printf("是否继续加入一个数?<y/n>");
scanf("%c",&yn);
if(yn=='y'||yn=='Y')
goto awei;
else
exit(0);
}
还请各位多指教!!!
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void output(int *p)
{
int a,*q;
q=p-1;
for(a=0;a<*q;a++)
printf("%4d",*(p++));
}
void input(int *pp,int c)
{
int aa,*qq,*j,save;
qq=pp;
qq--;
*qq=*qq+1;
for(aa=0;aa<*qq;aa++)
{
if(c>*(pp++))
{
j=--pp;
++pp;
break;
}
else
if(aa==*qq)
j=(--pp);
}
if(j==pp)
*pp=c;
else
{
save=*j;
*j=c;
j++;
for(aa;aa<(*qq-1);aa++)/*save与j++换值*/
{
c=*j;
*j=save;
save=c;
j++;
}
}
}
void main()
{
char yn;
int a[400]={10,20,18,16,14,12,10,8,6,4,2},b;
printf("原来里面的%d个数为:\n",a[0]);
output(&a[1]);
printf("\n");
awei:printf("请输入一个新数:");
scanf("%d",&b);
input(&a[1],b);
printf("加入一个数后为%d个数:\n",a[0]);
output(&a[1]);
printf("\n");
scanf("%c",&yn);
printf("是否继续加入一个数?<y/n>");
scanf("%c",&yn);
if(yn=='y'||yn=='Y')
goto awei;
else
exit(0);
}
还请各位多指教!!!
展开全部
第一个
#include <stdio.h>
#include <string.h>
int main()
{
char a[11] = {20, 18, 16, 14, 12, 10, 8, 6, 4, 2};
int b, p0, p1, n;
scanf("%d", &b);
n = 10;
p0 = 0;
p1 = 10 / 2;
for (;;)
{
char t = a[p0 + p1];
if (b < t)
{
n -= p1 + 1;
p0 = p0 + p1 + 1;
p1 = n / 2;
if (n < 1)
{
break;
}
}
else if (b > t)
{
n = p1;
p1 = n / 2;
if (n < 1)
{
break;
}
}
else
{
break;
}
}
p0 += p1;
memmove(a + p0, a + p0 + 1, 10 - p0);
}
第二个
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
int main()
{
char a[6] = {0};
int i;
srand(time(0));
for (i = 100; --i;)
{
a[rand() % 6]++;
}
for (i = 0; i < 6; i++)
{
printf("%d: %d\n", i, a[i]);
}
}
#include <stdio.h>
#include <string.h>
int main()
{
char a[11] = {20, 18, 16, 14, 12, 10, 8, 6, 4, 2};
int b, p0, p1, n;
scanf("%d", &b);
n = 10;
p0 = 0;
p1 = 10 / 2;
for (;;)
{
char t = a[p0 + p1];
if (b < t)
{
n -= p1 + 1;
p0 = p0 + p1 + 1;
p1 = n / 2;
if (n < 1)
{
break;
}
}
else if (b > t)
{
n = p1;
p1 = n / 2;
if (n < 1)
{
break;
}
}
else
{
break;
}
}
p0 += p1;
memmove(a + p0, a + p0 + 1, 10 - p0);
}
第二个
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
int main()
{
char a[6] = {0};
int i;
srand(time(0));
for (i = 100; --i;)
{
a[rand() % 6]++;
}
for (i = 0; i < 6; i++)
{
printf("%d: %d\n", i, a[i]);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、
#include "stdio.h"
void main()
{
int a[100]={20,18,16,14,12,10,8,6,4,2};
int i,j,b,temp=10;
printf("input a number:\n");
scanf("%d",&b);
for(i=0;i<10;i++)
{
if(a[i]<b)
break;
}
for(j=0;j<=10-i;j++)
{
a[temp]=a[temp-1];
temp--;
}
a[i]=b;
for(i=0;i<11;i++)
printf("%d ",a[i]);
}
2、=======================================
#include "stdlib.h"
void main()
{
int a[6]={0},i;
srand(time());
for(i=0;i<100;i++)
{
int temp;
do {
temp=rand()%7;
} while(temp==0);
a[temp-1]++;
}
for(i=0;i<6;i++)
printf("点数为 %d 的次数是:%d\n",i+1,a[i]);
}
#include "stdio.h"
void main()
{
int a[100]={20,18,16,14,12,10,8,6,4,2};
int i,j,b,temp=10;
printf("input a number:\n");
scanf("%d",&b);
for(i=0;i<10;i++)
{
if(a[i]<b)
break;
}
for(j=0;j<=10-i;j++)
{
a[temp]=a[temp-1];
temp--;
}
a[i]=b;
for(i=0;i<11;i++)
printf("%d ",a[i]);
}
2、=======================================
#include "stdlib.h"
void main()
{
int a[6]={0},i;
srand(time());
for(i=0;i<100;i++)
{
int temp;
do {
temp=rand()%7;
} while(temp==0);
a[temp-1]++;
}
for(i=0;i<6;i++)
printf("点数为 %d 的次数是:%d\n",i+1,a[i]);
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询