c程序.docx

上传人:b****8 文档编号:11087287 上传时间:2023-02-25 格式:DOCX 页数:62 大小:170.48KB
下载 相关 举报
c程序.docx_第1页
第1页 / 共62页
c程序.docx_第2页
第2页 / 共62页
c程序.docx_第3页
第3页 / 共62页
c程序.docx_第4页
第4页 / 共62页
c程序.docx_第5页
第5页 / 共62页
点击查看更多>>
下载资源
资源描述

c程序.docx

《c程序.docx》由会员分享,可在线阅读,更多相关《c程序.docx(62页珍藏版)》请在冰豆网上搜索。

c程序.docx

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;i

if(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;i

scanf("%d",&a[i]);

inttemp,j;

for(j=0;j

for(i=0;i

if(a[i]>a[i+1])

{

temp=a[i];

a[i]=a[i+1];

a[i+1]=temp;

}

printf("排序后的数字顺序是:

");

for(i=0;i

printf("%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;i

for(j=0;j

scanf("%d",&a[i][j]);

b[n++]=a[0][0];

for(i=0;i

for(j=0;j

{

flag=1;

for(k=0;k

if(a[i][j]==b[k])

flag=0;

if(flag)

b[n++]=a[i][j];

}

printf("Theresult\n");

for(i=0;i

printf("%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;i

for(j=0;j

scanf("%d",&a[i][j]);

b[n++]=a[0][0];

for(i=0;i

for(j=0;j

{

flag=1;

for(k=0;k

if(a[i][j]==b[k])

flag=0;

if(flag)

b[n++]=a[i][j];

}

printf("Theresult\n");

for(j=0;j

for(i=0;i

if(b[i]>b[i+1])

{

temp=b[i];

b[i]=b[i+1];

b[i+1]=temp;

}

for(i=0;i

printf("%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(i

printf("提问结束!

\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]={""

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1