教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 范文大全 > 行业范文 >

C语言经典编程题

来源:网络收集 时间:2026-08-05
导读: “蓝桥杯”软件大赛练习题 1、求101~200之间一共有多少个素数 #include stdio.h #include math.h int su(int m) { int i,n=1; for(i=2;i=sqrt(m);i++) if (m%i==0) { n=0; break; } return n; } main() { int i,num=0; for(i=101;i=200;i++) if(su(i)) num++

“蓝桥杯”软件大赛练习题

1、求101~200之间一共有多少个素数

#include <stdio.h>

#include <math.h>

int su(int m)

{

int i,n=1;

for(i=2;i<=sqrt(m);i++)

if (m%i==0)

{

n=0; break;

}

return n;

}

main()

{

int i,num=0;

for(i=101;i<=200;i++)

if(su(i)) num++;

printf("101~200之间素数个数是%d",num);

}

2、求最大公约数和最小公倍数

#include <stdio.h>

int zdgxs(int x,int y)

{

int t;

if(x<y)

{

t=x;x=y;y=t;

}

t=x%y;

while(t)

{

x=y;

y=t;

t=x%y;

}

return y;

}

int zxgbs(int x,int y)

{

return (x*y/zdgxs(x,y));

}

main()

{

int a,b,gxs,gbs;

printf("please input two numbers:");

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

gxs=zdgxs(a,b);

gbs=zxgbs(a,b);

printf("%d和%d的最大公约数是%d\n",a,b, gxs);

printf("%d和%d的最小公倍数是%d\n",a,b, gbs);

}

3、请找出十个最小的连续自然数,它们个个都是合数(非素数) #include <stdio.h>

#include <math.h>

int su(long m)

{

int i,n=1;

for(i=2;i<=sqrt(m);i++)

if (m%i==0)

{

n=0; break;

}

return n;

}

main()

{

int num=0;

long i,a[10];

for(i=1;;i++)

{

if(!su(i))

a[num++]=i;

else

num=0;

if(num>=10) break;

}

for(i=0;i<num;i++)

printf("%ld\n",a[i]);

}

4、分数比较

比较两个分数的大小。

*问题分析与算法设计

人工方式下比较分数大小最常用的方法是:进行分数的通分后比较分子的大小。可以编程模拟手式方式。

#include <stdio.h>

int zdgxs(int x,int y)

{

int t;

if(x<y)

{

t=x;x=y;y=t;

}

t=x%y;

while(t)

{

x=y;

y=t;

t=x%y;

}

return y;

}

int zxgbs(int x,int y)

{

return (x*y/zdgxs(x,y));

}

main()

{

int a,b,c,d,gbs,a1,c1;

printf("请输入第一个数的分子和分母:");

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

printf("请输入第二个数的分子和分母:");

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

printf("你所输入的两个分数是%d/%d,%d/%d\n",a,b,c,d);

gbs=zxgbs(b,d);

a1=gbs/b*a;

c1=gbs/d*c;

if(a1>c1) printf("%d/%d>%d/%d\n",a,b,c,d);

else if(a1<c1) printf("%d/%d<%d/%d\n",a,b,c,d);

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

}

5、猜数字游戏

#include <stdio.h>

main()

{

int num1,num2;

srand(time(NULL));

num1=rand()%100;

printf("请输入一个0到100之间的整数:");

scanf("%d",&num2);

while(1)

{

scanf("%d",&num2);

if(num1==num2)

{

printf("你真棒,猜对了!");

break;

}

else

{

if(num1<num2) printf("猜大了,重猜!");

else printf("太小了,重猜!");

}

}

}

6、抓交通肇事犯 一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。 *问题分析与算法设计

按照题目的要求造出一个前两位数相同、后两位数相同且相互间又不同的整数,然后判断该整数是否是另一个整数的平方。

#include <stdio.h>

#include <math.h>

main()

{

int num,i,j,k;

for(i=1;i<=9;i++)

for(j=0;j<=9;j++)

if(i!=j)

{

num=i*1000+i*100+j*10+j;

for(k=1;k*k<=num;k++)

if(k*k==num)

printf("num=%d,k=%d\n",num,k);

}

}

7、排队

把N个同学排成一排, 由前向后按1,2,1,2......报数, 报单数的走出队伍, 报双数的向前靠拢重新组成一排, 然后再1,2,1,2......报数, 报单数的走出队伍, 问剩下最后一个人时, 这个人原来在哪个位置.(N由键盘输入)

#include <stdio.h>

#include <malloc.h>

struct node

{

int data1;

int data2;

struct node *next;

};

struct node * create_list(int n)

{

struct node *head,*p,*q;

int i;

head=(struct node *)malloc(sizeof(struct node));

head->data1=1;

head->data2=1;

p=head;

for(i=2;i<=n;i++)

{

q=(struct node *)malloc(sizeof(struct node));

q->data1=i;

q->data2=i;

p->next=q;

p=q;

}

p->next=NULL;

return(head);

}

struct node * delete_node(struct node *head,struct node *p)

{

struct node *q;

if(p==head)

{

head=p->next;

p->next=NULL;

}

else

{

q=head;

while(q->next!=p)

q=q->next;

q->next=p->next;

}

free(p);

return (head);

}

main()

{

struct node *head,*p,*q;

int num,i;

printf("请输入人数:");

scanf("%d",&num);

head=create_list(num);

while(num>1)

{

p=head;

while(p)

{

if((p->data1)%2)

{

q=p;

p=p->next;

head=delete_node(head,q);

num--;

}

else

p=p->next;

}

p=head;

i=1;

while(p)

{

p->data1=i;

i++;

p=p->next;

}

}

printf("最后剩下的人原来的位置是%d\n",head->data2);

}

8、古堡算式

福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:

ABCDE * ? = EDCBA

他对华生说:ABCDE应该代表不同的数字,问号也代表某个数字!华生:“我猜也是!于是,两人沉默了好久,还是没有算出合适 …… 此处隐藏:6963字,全部文档内容请下载后查看。喜欢就下载吧 ……

C语言经典编程题.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/fanwen/983491.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)