首页 > 电脑 > C语言编程简单问题

C语言编程简单问题

电脑 2023-07-20

简单c语言编程题?

根据题意,程序分三个主要功能:1、从数组中查找一个整数。2、向数组插入一个整数。3、数组升序排列。

一、其中查找功能,数组无序或升序对应二种写法(直接遍历比较、二分法)。

对于升序数组用二分法查找更快(本案例只有10个数,如数字量大则效果更明显)。

二、数组插入功能,将插入位置及其往后的元素均后移一位(数组大小需多预留1位)。

另外:重复的代码段要写成独立函数,避免代码冗余。

下面是代码(数值我用的随机数填充,你想手动输入自添scanf函数):

#include

#include

#include

#define M 10//最大整数个数

void input(int nums[],int len);//输入

void showNum(int nums[],int len);// 打印数组

void px(int nums[],int len);//排序

int checkNum(int nums[],int len,int n);//检查n是否存在于无序数组num,是返回下标,否将n插入数组并返回-1。

int checkNumPX(int nums[],int len,int n);//检查n是否存在于升序数组num,是返回下标,否将n插入对应位置并返回-1。

void move1(int nums[],int len,int inx);//从下标inx开始的元素,全部往后移动1位(inx下标空出来给插入)

int main()

{

int nums[M+1],len=M+1,inx,n;//预留一位给插入

srand(time(NULL));

input(nums,len-1);

showNum(nums,len-1);

printf("请输入要查找的数n:"),scanf("%d",&n);

inx=checkNum(nums,len-1,n);

if(inx!=-1) printf("存在!下标是%d\n",inx);

if(inx==-1) printf("不存在!已在数组末尾插入,插入后的数组为:\n"),showNum(nums,len);

printf("\n-----------------------下面是问题2-------------------------------\n");

input(nums,len-1);

px(nums,len);

showNum(nums,len-1);

printf("请输入要查找的数n:"),scanf("%d",&n);

inx=checkNumPX(nums,len-1,n);

if(inx!=-1) printf("存在!下标是%d\n",inx);

if(inx==-1) printf("不存在!已在插入数组对应的位置\n"),showNum(nums,len);

return 0;

}

void input(int nums[],int len)

{

int i;

for(i=0,printf("生成%d个2位随机整数......\n",len);i

}

void showNum(int nums[],int len)

{

int i;

for(i=0,printf("当前数组元素为:\n");i

printf("\n");

}

void px(int nums[],int len)

{

int i,j;

for(i=0,printf("对数组进行升序排序......\n");i

for(j=i+1;j

if(nums[i]>nums[j]) nums[i]^=nums[j],nums[j]^=nums[i],nums[i]^=nums[j];

}

int checkNum(int nums[],int len,int n)

{

int i;

for(i=0,printf("数组中按元素顺序查找%d......\n",n);i

if(nums[i]==n) return i;

if(i==len) nums[len]=n;

return -1;

}

int checkNumPX(int nums[],int len,int n)

{

int bInx=0,eInx=len-1,mInx;

printf("对升序数组按二分法查找%d......\n",n);

while(eInx-bInx>1)//当序列区间元素大于2个时,取中间值

{

mInx=bInx+(eInx-bInx)/2;

if(nums[mInx]==n) return mInx;

if(n

if(n>nums[mInx]) bInx=mInx;//n比中间值大,取后半区间中间继续比较

}

if(nums[eInx]==n) return eInx;

if(nums[bInx]==n) return bInx;

if(n

if(n>nums[bInx] && n

if(n>nums[eInx]) move1(nums,len+1,eInx+1),nums[eInx+1]=n;

return -1;

}

void move1(int nums[],int len,int inx)

{

int i;

for(i=len-1;i>inx;nums[i]=nums[i-1],i--);

}

C语言编程问题,刚开始学,麻烦简单些,谢谢。

#include

int main()

{ int a,b,c,t;

scanf("%d%d%d",&a,&b,&c);

if(a>b){t=a;a=b;b=t;}

if(a>c){t=a;a=c;c=t;}

if(b>c){t=b;b=c;c=t;}

printf("%d %d %d\n",a,b,c);

return 0;

}

C语言编程简单题目求解 急!

a数组定义的太小了,作为同时被这种测试系统虐过的人,可以告诉你,你根本想象不到那个测试会给你加多少大的数。10不可能够用,至少100,建议你用内存分配函数malloc 把int a[10]那行改成a=(int *)malloc(sizeof(int)*n) 头文件stdlib.h 不想改也行,试试看100 1000……,总会够大的 还有,就是你的程序本身也有错 do(j++)while……是先j自加再去判断while后面的条件,就是说你没有比较a[0]和x的大小,这样如果加进来的数是这一串数中的最小值时,就会出错,建议是用把j的初值赋为-1 希望能帮到你

C语言编程问题,初学者,麻烦简单些,谢谢

#include int main() { int sex,h,h1; float w,x,w0; scanf("%d%f%d",&sex,&w,&h); if(sex==0) { h1=80; x=0.7; } if(sex==1) { h1=70; x=0.6; } w0=(h-h1)*x; if(w>=0.9*w0&&w<=1.1*w)printf("正常体重\n"); else if(w>1.1*w0) { if(w<=1.2*w0)printf("体重过重\n"); else printf("肥胖\n"); } else { if(w>=0.8*w0)printf(

C语言编程问题?

#include

#include//数学函数头文件

#include

void fun1();//函数声明

void fun2();

int main()

{

while(1)

{

int x;

for(int i=0;i<20;i++)

printf("*");

printf("\n1,求整数n的立方\n");

printf("2,判断是否能构成三角形\n");

printf("3,结束程序\n");

for(int i=0;i<20;i++)

printf("*");

printf("\n");

scanf("%d",&x);

if(x==1)

{

printf("求整数n的立方\n");

fun1();

}

if(x==2)

{

printf("判断是否能构成三角形\n");

fun2();

}

if(x==3)

exit(0);//结束程序

else if(x!=1&&x!=2&&x!=3)

printf("请输入正确指令\n\n");

}

return 0;

}

void fun1()//立方函数

{

int n;

scanf("%d",&n);

printf("%d\n",n*n*n);

}

void fun2()//判断三角形

{

int a, b, c;

scanf("%d%d%d",&a,&b,&c);

if(a+b>c&&a+c>b&&c+b>a)

printf("%d %d %d可以构成三角形\n",a,b,c);

else

printf("%d %d %d不可以可以构成三角形\n",a,b,c);

}


标签:CC++ C(编程语言) 编程 编程语言 信息技术

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved. 京ICP备11019930号-18