编写一个程序,其功能为:从键盘上输入两个整型数据,分别存放在整型数据a和b中,然后输出表达式a/b

编写一个程序,其功能为:从键盘上输入两个整型数据,分别存放在整型数据a和b中,然后输出表达式a/b和a%b的值。... 编写一个程序,其功能为:从键盘上输入两个整型数据,分别存放在整型数据a和b中,然后输出表达式a/b和a%b的值。 展开
 我来答
请珍惜每一滴爱
2016-03-16 · TA获得超过951个赞
知道小有建树答主
回答量:1110
采纳率:0%
帮助的人:88.1万
展开全部
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define ARR_SIZE 20 //array数组大小
int getkey(int key[]);
int getarray(int array[]);
int insert(int array[],int key,int vol);
int result(int flag);
int main()
{
int M,n,flag,vol;
int array[ARR_SIZE];
int *key;
memset(array,0,sizeof(array));//初始化数组为0
printf("请输入M:\n");
scanf("%d",&M);
while(M)//循环M次
{
getarray(array);
printf("请输入n:\n");
scanf("%d",&n);
key=(int *)malloc(n);//根据输入n申请数组大小
//将数组大小放入数组首位,主要由于你给的 getkey(int key[])只
//有一个参数,无法传递数组大小,因此放到手位置传递
key[0]=n;
getkey(key);
for(int i=0;i!=n;i++)//key[]中有n个值,因此n次判断
{
result(insert(array,key[i],ARR_SIZE));
}
memset(array,0,sizeof(array));//清空数组,为下次数据准备
M--;
}
}

int getarray(int array[])
{
printf("\n请输入array[](<=%d):\n",ARR_SIZE);
int tmp,i=0;
while(1)
{
scanf("%d",&tmp);
if(tmp==0)
return 0;
array[i]=tmp;
i++;
}
}

int getkey(int key[])
{
int num=key[0];
for(int i=0;i!=num;i++)
scanf("%d",key++);
}

int insert(int array[],int key,int vol)
{
int now_size=0,p=0;
for(int i=0;i!=ARR_SIZE;i++)
{
if(array[i])
now_size++;//统计array[]数组值的个数
if(array[i]==key)
return -2;// The key is already in this array!
if(key>array[i]&&array[i])
p++; //该位置就是需要插入的位置
}
if(now_size==ARR_SIZE)
return -1;//The array if full!
for(int i=now_size;i>=p;i--)
array[i+1]=array[i];
array[p]=key;
return p; //返回插入位置
}

int result(int flag)
{
if(flag==-1)
printf("The array if full! ");
else if(flag==-2)
printf("The key is already in this array! ");
else
printf("The key is inserted in position %d ",flag);
}

昨天写好没测试,今天测了才发给你。这道题目确实不难,只是题目长。另外关于输出格式有点含糊,如果我理解有偏差,你看了我的代码改下就好。主要逻辑都已经实现了。
追问
没这么复杂!这个题只是书上的习题!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式