c程序.docx
《c程序.docx》由会员分享,可在线阅读,更多相关《c程序.docx(62页珍藏版)》请在冰豆网上搜索。
c程序
1.有1,2,3,4四个数字,能组成多少个互不相同且无重复数字的三位数?
都是多少?
#include
intmain()
{
inti=0,j=0,k=0,m=0;
intcount=0;
printf("%组成的无重复数字的三位数分别是:
\n");
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
for(k=1;k<=4;k++)
{
if(i==j||i==k||j==k)
continue;
m=100*i+10*j+k;
count++;
printf("%d\t",m);
}
printf("\n");
printf("总的个数是:
%d\n",count);
return0;
}
2.一个非负整数它加上100后是一个完全平方数,再加上168又是一个完全平方数,求1000以内满足条件的数字。
#include
#include
intmain()
{
intx,y,i;
printf("1000以内满足条件的数字有:
");
for(i=0;i<=1000;i++)
{
x=sqrt(i+100);
y=sqrt(i+100+168);
if(x*x==i+100&&y*y==i+268)
printf("%5d",i);
}
return0;
}
3.输出打印九九乘法表。
#include
voidmain()
{
inti,j,result;
printf("\n");
for(i=1;i<10;i++)
{
for(j=1;j<10;j++)
{
result=i*j;
printf("%d*%d=%-3d",i,j,result);//-3d表示左对齐,占三位
}
printf("\n");
}
}
4.请输入一个五位数,判断是不是回文数。
即12321是回文数,个位与万位相同,十位与千位相同。
#include
intmain()
{
longintm,a,b,c,d,e;
printf("请输入一个五位整数:
");
scanf("%d",&m);
a=m/10000;
b=m%10000/1000;
c=m%10000%1000/100;
d=m%10000%1000%100/10;
e=m%10000%1000%100%10;
if(a==e&&b==d)
printf("是回文数。
");
else
printf("不是回文数。
");
return0;
}
5.写一个函数,输入一行字符,将此字符串中最长的单词输出。
#include
#include
intmain()
{
intzifu(charc);
intlongest(char[]);
inti;
charline[100];
printf("%请输入一行字符串:
");
gets(line);
printf("%这一行字符串中最长的单词是:
");
for(i=longest(line);zifu(line[i]);i++)
{
printf("%c",line[i]);
}
printf("\n");
return0;
}
intzifu(charc)
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
return1;
else
return0;
}
intlongest(charstring[])
{
intlen=0,i,length=0,flag=1,place=0,point;
for(i=0;i<=strlen(string);i++)
if(zifu(string[i]))
if(flag)
{
point=i;
flag=0;
}
else
len++;
else
{
flag=1;
if(len>=length)
{
length=len;
place=point;
len=0;
}
}
return(place);
}
6.写一个判素数的函数,在主函数中输入一个整数,输出是否为素数的信息。
#include
intsushu(intn)
{
inti,flag=1;
for(i=2;iif(n%i==0)
flag=0;
return(flag);
}
intmain()
{
intn;
printf("请输入一个数:
");
scanf("%d",&n);
if(sushu(n))
printf("%d是素数",n);
else
printf("%d不是素数",n);
return0;
}
7.写一个函数,输入一个十六进制数,输出相应的十进制数。
#include
#defineMAX1000
intzhuanhuan(chars[])
{
inti,n;
n=0;
for(i=0;s[i]!
='\0';i++)
{
if(s[i]>='0'&&s[i]<='9')
n=n*16+s[i]-'0';
if(s[i]>='a'&&s[i]<='f')
n=n*16+s[i]-'a'+10;
if(s[i]>='A'&&s[i]<='F')
n=n*16+s[i]-'A'+10;
}
returnn;
}
intmain()
{
intc,i=0,flag=0,flag1=1;
chart[MAX];
printf("请输入一个十六进制数:
");
while((c=getchar())!
='\0'&&i{
if((c>='0'&&c<='9')||(c>='a'&&c<='f')||(c>='A'&&c<='F'))
{
flag=1;
t[i++]=c;
}
elseif(flag)
{
t[i]='\0';
printf("转换成十进制数后是%d\n",zhuanhuan(t));
printf("是否继续?
(y/n)\n");
c=getchar();
if(c=='n')
{
flag1=0;
printf("程序运行结束!
");
}
else
{
flag=0;
i=0;
printf("请输入一个十六进制数:
");
}
}
}
return0;
}
8.编制程序,输入k(k>0)个整数,输出其中第m个最大值,和第n个最小值。
#include
intmain()
{
inti,k,a[30];
intm,n;
printf("请输入总的整数个数:
");
scanf("%d",&k);
printf("请输入这%d个整数:
",k);
for(i=0;iscanf("%d",&a[i]);
inttemp,j;
for(j=0;jfor(i=0;iif(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
printf("排序后的数字顺序是:
");
for(i=0;iprintf("%5d",a[i]);
printf("\n");
printf("请输入你需要的最大值号码:
");
scanf("%d",&m);
printf("第%d个最大值是%d\n",m,a[k-m]);
printf("请输入你需要的最小值号:
");
scanf("%d",&n);
printf("第%d个最小值是%d\n",n,a[n-1]);
return0;
}
9.编写程序,输入一个m*n的整数矩阵,输出其中所有不同元素值。
20602015
例如输入80203510
18201555
输出:
2060158035101855.
#include
#defineM3
#defineN4
intmain()
{
inta[M][N],b[M*N];
inti,j,k,n=0,flag;
printf("Enter%d*%dinteger\n",M,N);
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
b[n++]=a[0][0];
for(i=0;ifor(j=0;j{
flag=1;
for(k=0;kif(a[i][j]==b[k])
flag=0;
if(flag)
b[n++]=a[i][j];
}
printf("Theresult\n");
for(i=0;iprintf("%5d",b[i]);
printf("\n");
return0;
}
10.请输入M*N阶矩阵,然后按从小到大的顺序输出矩阵中不同的数。
例如,
20602015
例如输入80203510
18201555
输出后的数为10,15,18,20,35,55,60,80.
#include
#defineM3
#defineN4
intmain()
{
inta[M][N],b[M*N];
inti,j,k,n=0,temp=0,flag;
printf("Enter%d*%dinteger\n",M,N);
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
b[n++]=a[0][0];
for(i=0;ifor(j=0;j{
flag=1;
for(k=0;kif(a[i][j]==b[k])
flag=0;
if(flag)
b[n++]=a[i][j];
}
printf("Theresult\n");
for(j=0;jfor(i=0;iif(b[i]>b[i+1])
{
temp=b[i];
b[i]=b[i+1];
b[i+1]=temp;
}
for(i=0;iprintf("%5d",b[i]);
printf("\n");
return0;
}
11.输入8个正整数,要求输出其中的奇数及奇数个数。
#include
intmain()
{
inti,a[8],count=0;
printf("请输入8个正整数:
");
for(i=0;i<8;i++)
scanf("%d",&a[i]);
printf("%奇数是:
");
for(i=0;i<8;i++)
{
if(a[i]%2!
=0)
{
printf("%5d",a[i]);
count++;
}
}
printf("\n");
printf(“奇数个数是:
%d",count);
return0;
}
12..输入一个3*3的矩阵,要求输出其中最小的数,并输出在哪行那列。
(若矩阵中有多个最小值,只输出第一个的行和列)
#include
intmain()
{
inta[3][3],i,j,k=0;
intb[9],min,flag;
printf("请输入3*3的矩阵:
\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
b[k]=a[i][j];
k++;
}
min=b[0];
for(k=0;k<9;k++)
{
if(b[k]{
min=b[k];
flag=k+1;
}
}
if(flag%3==0)
{
i=flag/3;
j=3;
}
if(flag%3!
=0)
{
i=flag/3+1;
j=flag%3;
}
printf("最小的数是%d:
",min);
printf("最小的数在第%d行第%d列:
",i,j);
return0;
}
13.输入二叉树,求先中后序遍历,输出结果。
#defineSTACK_INIT_SIZE100/*定义栈的初始化大小*/
#defineSTACKINCREMENT10/*定义栈的增长长度*/
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"conio.h"
/*自定义栈的结构体*/
typedefstruct
{
char*base;
char*top;
intstacksize;/*记录栈的实时长度*/
}SqStack;
/*自定义二叉树的结构体*/
typedefstructNode
{
chardata;
structNode*lchild;
structNode*rchild;
}BiTNode,*BiTree;
/*初始化栈*/
intInitStack(SqStack&s)
{
s.base=(char*)malloc(STACK_INIT_SIZE*sizeof(char));
if(!
s.base)exit(-1);
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return1;
}
/*入栈操作*/
intpush(SqStack&s,BiTreee)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(char*)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(char));/*追加栈长*/
if(!
s.base)exit(-1);
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*s.top=e->data;
s.top++;
return1;
}
/*出栈操作*/
intpop(SqStack&s,BiTreee)
{
if(s.top==s.base)return0;
e->data=*--s.top;
return1;
}
/*判断栈空*/
intStackEmpty(SqStacks)
{
if(s.top==s.base)return1;
else
return0;
}
BiTreegettop(SqStacks,BiTreee)
{
if(s.top==s.base)e->data='0';
e->data=*(s.top-1);
returne;
}
//创建二叉树
BiTreecreatBiTree()
{
charch;
BiTrees;
ch=getchar();
if(ch=='#')
returnNULL;
else
{
s=(BiTree)malloc(sizeof(BiTNode));
s->data=ch;
s->lchild=creatBiTree();
s->rchild=creatBiTree();
returns;
}
}
//递归遍历二叉树
//先序
voidpreorder(BiTreeroot)
{
if(root!
=NULL)
{
printf("%c",root->data);
preorder(root->lchild);
preorder(root->rchild);
}
}
//中序
voidinorder(BiTreeroot)
{
if(root!
=NULL)
{
inorder(root->lchild);
printf("%c",root->data);
inorder(root->rchild);
}
}
//后序
voidpostorder(BiTreeroot)
{
if(root!
=NULL)
{
postorder(root->lchild);
postorder(root->rchild);
printf("%c",root->data);
}
}
//非递归遍历二叉树
//先序
voidpre_order(BiTreeroot)
{
SqStacks;
BiTreep;
p=root;
InitStack(s);
while(p||!
StackEmpty(s))
{
if(p)
{
printf("%c",p->data);
push(s,p);
p=p->lchild;
}
else
{
pop(s,p);
p=p->rchild;
}
}
}
//中序
voidin_order(BiTreeroot)
{
SqStacks;
InitStack(s);
BiTreep;
p=root;
while(p||!
StackEmpty(s))
{
if(p)
{
push(s,p);
p=p->lchild;
}
else
{
pop(s,p);
printf("%c",p->data);
p=p->rchild;
}
}
}
//后序
voidpost_order(BiTreeroot)
{
SqStacks;
InitStack(s);
BiTreep,q;
p=root;
q=NULL;
while(p||!
StackEmpty(s))
{
if(p)
{
push(s,p);
p=p->lchild;
}
else
{
gettop(s,p);
p=p->rchild;
if(p==NULL||p==q)
{
pop(s,p);
printf("%c",p->data);
q=p;
p=NULL;
}
}
}
}
voidmain()
{
BiTreep;
printf("按先序创建二叉树:
");
p=creatBiTree();
/*printf("按先序输出二叉树:
");
preorder(p);
printf("\n");
printf("按中序输出二叉树:
");
inorder(p);
printf("\n");
printf("按后序输出二叉树:
");
postorder(p);*/
pre_order(p);
printf("\n");
getch();
}
28.制作一个随机点名器,由老师输入班级的最大学号,进行随机抽取学号回答问题,
中途可以选择结束抽取。
回答过问题的学员不再抽取,如果全班学员都回答过问题了,结束抽取,注意随机抽取的学号不能是负数。
#include
#include
#include
intmain()
{
intnum;
charans;
inta[18];
charb[18][18]={"马振磊","王开泰","韩雪诗","樊新健","孔凯瑜","崔智勇","黄传奇","李成森","李亚奇","庙存发","杨晓佳","郑洁","李燕","陈仟","张越","王浩田","姜涛","李玉冰"};
intrandNum;
inti=0;
printf("请输入班级的最大人数:
");
scanf("%d",&num);
for(i=0;i{
a[i]=0;
}
i=0;
do
{
srand(time(0));//改变随机值
randNum=rand()%num;
if(a[randNum]==1)
continue;
if(a[randNum]==0)
{
printf("请%s同学回答问题。
。
。
\n",b[randNum]);
a[randNum]=1;
printf("\n");
i++;
printf("继续提问吗?
y/n:
");
fflush(stdin);//清除缓存
ans=getchar();
printf("\n");
}
}while(iprintf("提问结束!
\n");
return0;
}
方法二:
#include
#include
#include
#include
voidmenu();
voidselect(char(*)[10],int*,char(*)[10]);
voidstyle1(char(*)[10]);
voidstyle2(char(*)[10],int*,char(*)[10]);
voidstyle3(char(*)[10],int*,char(*)[10]);
intmain()
{
charname[19][10]={"","陈仟","郑洁","孔凯瑜","韩雪诗","杨晓佳","王浩田","崔智勇",
"王开泰","樊新健","马振磊","李成森","李卓轩","李玉冰","苗存发",
"黄传奇","李燕","李亚奇","姜涛"};
intteam[19]={0,1,1,1,2,2,3,3,4,4,4,5,5,5,6,6,6,7,7};
charteamList[8][10]={""