问两个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做)

希望能帮我做一下 谢谢了
展开
 我来答
wei19850828
2009-02-01 · 超过24用户采纳过TA的回答
知道答主
回答量:140
采纳率:22%
帮助的人:43.8万
展开全部
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);
}
还请各位多指教!!!
BlueWanderer
2009-02-01 · TA获得超过9209个赞
知道大有可为答主
回答量:5673
采纳率:83%
帮助的人:2003万
展开全部
第一个
#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]);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hgreminem
推荐于2018-05-11 · TA获得超过724个赞
知道小有建树答主
回答量:350
采纳率:0%
帮助的人:375万
展开全部
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]);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式