A. c语言:一个大小是10的数组,已经存放有9个数字,且按从小到大排列.现插入一个数,用函数写
void insertSortedArray( int arr[], int insertNum )
{
int i = 0;
int midArr[10] = {0};
memcpy( midArr, arr, sizeof(midArr) );
for ( ; i < 10; i ++ )
{
if ( insertNum < arr[i] )
{
arr[i] = insertNum;
i ++;
break;
}
}
for ( ; i < 10; i ++ )
{
arr[i] = midArr[i-1];
}
}
B. 用C语言将9个不同大小的数字按从大到小排列
#include<iostream>
using namespace std;
void input (int[] ,int);
void getHighest(int[],int,int&);
const int NUM=9;
int main()
{
int Num[NUM];
int max;
int m;
input(Num,NUM);
for(m=0;m<NUM;m++)
{
getHighest(Num,NUM,max);
cout<<max<<endl;
}
return 0;
}
void input( int Num[], int n)
{
int m;
cout<<"Please enter "<<n<<" numbers."<<endl;
for(m=0;m<n;m++)
{
cout<<"Enter the number("<<m+1<<"): ";
cin>>Num[m];
}
}
void getHighest (int Num[], int n, int&max)
{
int m;
max=Num[0];
for(m=0;m<n;m++)
{
if(Num[m]>max)
{
int temp;
temp=max;
max=Num[m];
Num[m]=temp;
}
}
}
//我用的是int型,要是数据类型不一样的话,要用模块。
C. C语言:从键盘输入9个数(按九宫格排序3*3)保存至数组中,现按原来位置输出第一行和第一列。求大神!
位置不对
D. 1到9组成的9位数(无重复的)用c语言怎么写
你是求个数还是输出?个数是9!=362880。下面是输出的C代码。
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "string.h"
#include "time.h"
#include "stdlib.h"
int main(void){
int Dec,i,j,k,l,f;
char a[10];
for(l=0,i=123456789;i<987654322;i+=9){
for(itoa(i,a,10),f=j=0;j<8;j++)
for(k=j+1;k<9;k++)
if(a[j]==a[k] || a[k]=='0'){
f=1;
j=8;
break;
}
if(f==0) printf(++l%10 ? "%s " : "%s\n",a);
}
return 0;
}
E. C语言编程实现用9个数字排成没有重复数字的完全平方数
#include<stdio.h>
intok(intn)
{
inti=n%10,j=n/10%10,k=n/100%10;
returni!=j&&j!=k&&k!=i;
}
intok3(inti,intj,intk)
{
inta[9],m,n;
a[0]=i%10;
a[1]=i/10%10;
a[2]=i/100%10;
a[3]=j%10;
a[4]=j/10%10;
a[5]=j/100%10;
a[6]=k%10;
a[7]=k/10%10;
a[8]=k/100%10;
for(m=0;m<8;m++)
for(n=m+1;n<9;n++)
if(a[m]==a[n])return0;
return1;
}
intmain()
{
inti,j,k,a[20],n=0;
for(i=13;i<32;i++)
if(ok(i*i))a[n++]=i*i;
for(i=0;i<n-2;i++)
for(j=i+1;j<n-1;j++)
for(k=j+1;k<n;k++)
if(ok3(a[i],a[j],a[k]))
printf("%d%d%d ",a[i],a[j],a[k]);
return0;
}
F. c语言0~9十个数排列组合,每次运行可以得到不同的排列组合
这个是排列,如果是组合最后一个循环判断时候有相等的: #include<stdio.h> int main() { for(int i0=0;i0<9;i0++) for(int i1=0;i1<9;i1++) for(int i2=0;i2<9;i2++) for(int i3=0;i3<9;i3++) for(int i4=0;i4<9;i4++) for(int i5=0;i5<9;i5++) for(int i6=0;i6<9;i6++) for(int i7=0;i7<9;i7++) for(int i8=0;i8<9;i8++) for(int i9=0;i9<9;i9++) printf("\n%d%d%d%d%d%d%d%d%d%d",i0,i1,i2,i3,i4,i5,i6,i7,i8,i9); }
G. c语言 在任意给定的9个正整数中,找出按升序排列时处于中间的数
存储这九个数的是一维数组a[10];
int i,j=0;
for(i=0;i<10;i++)
{ if(a[i]<a[i+1]) j++;
if(j==5) printf("中间数%d“,a[i]);
}
H. 求C语言程序编程,将1-9 9个数字填入下表,使每横行、每竖列的数字之和
#include<stdio.h>
intmain(intargc,char*argv[]){
charRoom9[3][3]={0},i,j,k;
for(i=0,j=k=1;k<10;k++,i--,j++){
if(i==-1&&j<3)i+=3;
elseif(j==3&&i>-1)j-=3;
elseif(i==-1&&j==3||Room9[i][j]!=0){
i+=2;
j-=1;
}
Room9[i][j]=k;
}
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%3d",Room9[j][i]);
printf(" ");
}
return0;
}
I. 九九宫格有多少种求用c语言编写代码显示!注:要求显示总的个数!
首先贴效果:
initial array is :
1 2 3
4 5 6
7 8 9
2 7 6
9 5 1
4 3 8
2 9 4
7 5 3
6 1 8
4 3 8
9 5 1
2 7 6
4 9 2
3 5 7
8 1 6
6 1 8
7 5 3
2 9 4
6 7 2
1 5 9
8 3 4
8 3 4
1 5 9
6 7 2
8 1 6
3 5 7
4 9 2
total solving :8
不能构成的情况:
initial array is :
0 9 4
7 5 3
6 1 8
The number you input can not be jiuGongGe!
再贴源代码:
#include <stdio.h>
#include "conio.h"
long n = 0;
void swap(int *a, int *b)
{
int m;
m = *a;
*a = *b;
*b = m;
}
int isJiuGongGe(int array[])
{
int sum=(array[0]+array[1]+array[2]);
if(sum==(array[3]+array[4]+array[5])&&sum==(array[6]+array[7]+array[8])&&
sum==(array[0]+array[4]+array[8])&&sum==(array[2]+array[4]+array[6])&&
sum==(array[0]+array[3]+array[6])&&
sum==(array[1]+array[4]+array[7])&&
sum==(array[2]+array[5]+array[8]))
return 1;
else
return 0;
}
void printfArray(int array[])
{
int i=0;
for(i=0;i<9;i++)
{
printf("%2d",array[i]);
if((i+1)%3==0)
{
printf("\n");
}
}
printf("\n");
}
void findAllJiugongge(int list[], int k, int m)
{
int i;
if(k > m)
{
if(isJiuGongGe(list))
{
printfArray(list);
n++;
}
}
else
{
for(i = k; i <= m; i++)
{
swap(&list[k], &list[i]);
findAllJiugongge(list, k + 1, m);
swap(&list[k], &list[i]);
}
}
}
int main()
{
int list[] = {0, 9, 4, 7, 5,3,6,1,8};
int i=0;
/*for(i=0;i<9;i++)
{
scanf("%d",&array[i]);
}*/
printf("initial array is :\n");
printfArray(list);
findAllJiugongge(list, 0, 8);
if(n>0)
{
printf("total solving :%ld\n", n);
}
else
{
printf(" The number you input can not be jiuGongGe!\n");
}
getch();
}
再说说思路:
1、 9个数放到一个9个元素的数组中。
2、对9个数进行全排列,没排列一种可能都判断下是否满足九宫格情况。满足就输出。
3、提高篇:这个方式是最直观的一种方法,最好懂的一种方法。
当然也可以用深度搜索,宽度搜索或者是A*算法搜索出所有的解。但是没有多大的意义,在游戏开发中到可以使用。尤其是8数码问题、拼图、华容道等难题中。
4、方便测试,我直接把数组赋值了。你要自己输入的话,注释那段代码用起来就可以了。
楼主好运!
J. C语言:1~9九个数字不重复组成3个三位数,使其2个之和等于第三个;以A+B=C形式输出所有情况,咋编
代码文本:
#include "stdio.h"
int main(int argc,char *argv[]){
int a,b,c,u,v,w,x,y,z,r,s,t,k;
for(k=0,a=1;a<10;a++)
for(b=1;b<10;b++)
if(b!=a)
for(c=1;c<10;c++)
if(c-b && c-a)
for(u=1;u<10;u++)
if(u-c && u-b && u-a)
for(v=1;v<10;v++)
if(v-u && v-c && v-b && v-a)
for(w=1;w<10;w++)
if(w-v && w-u && w-c && w-b && w-a)
for(x=1;x<10;x++)
if(x-w && x-v && x-u && x-c && x-b && x-a)
for(y=1;y<10;y++)
if(y-x && y-w && y-v && y-u && y-c && y-b && y-a)
for(z=1;z<10;z++)
if(z-y && z-x && z-w && z-v && z-u && z-c && z-b && z-a
&& (r=a*100+b*10+c)+(s=u*100+v*10+w)==(t=x*100+y*10+z))
printf(++k%8 ? "%d+%d=%d " : "%d+%d=%d ",r,s,t);
if(k%8)
putchar(' ');
return 0;
}