c语言算法编程题编程题

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
简单的C语言编程题例题
下载积分:1000
内容提示:简单的C语言编程题例题
文档格式:DOC|
浏览次数:749|
上传日期: 16:06:48|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1000 积分
下载此文档
该用户还上传了这些文档
简单的C语言编程题例题
关注微信公众号查看: 2278|回复: 45
【参赛】C语言程序设计大赛题目和答案
TA的每日心情衰 12:42签到天数: 6 天[LV.2]偶尔看看I
本帖最后由 Dobbie 于
11:00 编辑
【附件】游客,如果您要查看本帖隐藏内容请
C语言程序设计大赛题目和答案 /*------------------- 第一题 某人到商店购物,身上有钱m元,商店里有商品n件,如果只能买1件或2件商品,且想一次性把钱花完,编程求是否可行? 输入数据:第一行输入两个整数n和m(1≤n≤30000,1≤m≤10000),下面n行中每一行都是一个整数a,表示商店中商品的价格,1≤a≤10000。 输出数据:如果可以恰好用m元钱买到1件或者是2件东西,则第一行输出YES,随后的一行或两行输出所买商品的价格;否则输出NO。
输入样例: 5&&201 3 7 13 18 输出样例: YES 7 13 -----------------------*/ &font face=&宋体& size=&3&&#include &stdio.h&
#include &malloc.h&
void main(){
scanf(&%d%d&,&n,&m);&&//输入商品数及钱的多少
a=(int*)malloc(n*sizeof(int));
& & for(i=0;i&n;i++) scanf(&%d&,a+i);&&//输入每件商品的价格
for(i=0;i&n;i++)
&&if(a[i]==m) {printf(&%s\n%d\n&,&YES&,a[i]);}
&&else
& &for(j=i+1;j&n;j++)
& & if(a[i]+a[j]==m) {printf(&%s\n%d\n%d\n&,&YES&,a[i],a[j]);}
if (i==n) printf(&\nNO\n&);
}&/font&复制代码
/*---------------------- 第二题 写出一个程序,接受一个以N/D的形式输入的分数,其中N为分子,D为分母,输出它的小数形式。 如果它的小数形式存在循环,则要将其用括号括起来。例如: 1/3= 0.(3) 41/333= 0.(123) 22/5=4.4
1/7=0.(142857) 3/8=0.375 45/46=0.9() 本题中,0≤N≤65535,0≤D≤65535,设运算结果小数点后最多保留100位。
输入样例: 1, 7 输出样例: 1/7=0.(142857)
-----------------------*/
&font face=&宋体& size=&3&&#include &stdio.h&
void main(){
long int digit[101];&&//存放结果的数组,0号元素放整数部分,其余放小数部分
long int remainder[101];& &//存放余数
int state=0; //是否是循环小数,默认不是
long int repetendstart=0; //循环节的开始位置和结束位置
long int n,d; //输入的分子和分母
printf(&input N/D:&);
scanf(&%d/%d&,&n,&d); //输入分子和分母
digit[0]=n/d;
remainder[0]=n%d; //求出第一个余数
while(remainder[i] && !state && i&100){ //求小数部分
&&i++;& && &&&//i记录了求了多少位小数
&&digit[i]=remainder[i-1]*10/d; //求出一位小数
&&remainder[i]=remainder[i-1]*10%d; //求余数即下一次的被除数
&&for(int j=0;j&i;j++){ //判断是否出现循环节
& &if(remainder[j]==remainder[i]){//如果出现循环节则记下节开始的位置
& & repetendstart=j+1;
& & state=1; //置是循环小数状态
& &
& &}
&&}
//以下是打印部分
printf(&%d&,digit[0]);& &&&//打印整数部分
if(remainder[0]!=0) printf(&.&);& & //如有小数则打印小数点
for(int j=1;j&=i;j++){& && &//打印小数部分
&&if(j==repetendstart) printf(&(&);
&&printf(&%d&,digit[j]);
if(state) printf(&)&);
printf(&\n&);
}&/font&复制代码
【剩余题目请下载第一行“附件”进行阅读】
该用户从未签到
C语言,超喜欢的。
该用户从未签到
本帖最后由 小龙人 于
20:51 编辑
帖子太乱了。一点都不美观。
TA的每日心情衰 12:42签到天数: 6 天[LV.2]偶尔看看I
测试CW 发表于
C语言,超喜欢的。
你懂吗?{:12:}
TA的每日心情衰 12:42签到天数: 6 天[LV.2]偶尔看看I
小龙人 发表于
帖子太乱了。一点都不美观。
我已尽可能的使其整齐了。
该用户从未签到
叹世残者 发表于
你觉得我会告诉你吗?
TA的每日心情衰 12:42签到天数: 6 天[LV.2]偶尔看看I
测试CW 发表于
你觉得我会告诉你吗?
该用户从未签到
可惜青鸟不教开发的不教C,测试的才教
该用户从未签到
{:109:}顶帖需要输验证码真是很麻烦的
该用户从未签到
叹世残者 发表于
既然你都说会吧,那我就不教了
Beijing Aptech Beida Jade Bird Information Technology Co.,Ltd
北大青鸟IT教育 北京阿博泰克北大青鸟信息技术有限公司 版权所有c语言10个经典小程序
字体:[ ] 类型:转载 时间:
c语言的经典程序,学习c语言的初学者可以参考下
【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去       掉不满足条件的排列。 2.程序源代码: 代码如下:main() { int i,j,k; printf("\n"); for(i=1;i&5;i++)    /*以下为三重循环*/  for(j=1;j&5;j++)    for (k=1;k&5;k++)    {     if (i!=k&&i!=j&&j!=k)    /*确保i、j、k三位互不相同*/     printf("%d,%d,%d\n",i,j,k);     } } 【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高    于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提    成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于    40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于    100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。       2.程序源代码:
代码如下:main() {
int bonus1,bonus2,bonus4,bonus6,bonus10, scanf("%ld",&i); bonus1=.1;bonus2=bonus1+.75; bonus4=bonus2+.5; bonus6=bonus4+.3; bonus10=bonus6+.15;  if(i&=100000)   bonus=i*0.1;  else if(i&=200000)      bonus=bonus1+(i-.075;     else if(i&=400000)         bonus=bonus2+(i-.05;        else if(i&=600000)            bonus=bonus4+(i-.03;           else if(i&=1000000)               bonus=bonus6+(i-.015;              else               bonus=bonus10+(i-.01; printf("bonus=%d",bonus); }
【程序3】 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后       的结果满足如下条件,即是结果。请看具体分析: 2.程序源代码:
代码如下:#include "math.h" main() { long int i,x,y,z; for (i=1;i&100000;i++)  { x=sqrt(i+100);   /*x为加上100后开方后的结果*/   y=sqrt(i+268);   /*y为再加上168后开方后的结果*/    if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/     printf("\n%ld\n",i);   } }
【程序4】 题目:输入某年某月某日,判断这一天是这一年的第几天? 1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊       情况,闰年且输入月份大于3时需考虑多加一天。 2.程序源代码:
代码如下:main() { int day,month,year,sum, printf("\nplease input year,month,day\n"); scanf("%d,%d,%d",&year,&month,&day); switch(month)/*先计算某月以前月份的总天数*/ {  case 1:sum=0;  case 2:sum=31;  case 3:sum=59;  case 4:sum=90;  case 5:sum=120;  case 6:sum=151;  case 7:sum=181;  case 8:sum=212;  case 9:sum=243;  case 10:sum=273;  case 11:sum=304;  case 12:sum=334;  defaultrintf("data error"); } sum=sum+  /*再加上某天的天数*/  if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/   leap=1;  else   leap=0; if(leap==1&&month&2)/*如果是闰年且月份大于2,总天数应该加一天*/ sum++; printf("It is the %dth day.",sum); }
【程序5】 题目:输入三个整数x,y,z,请把这三个数由小到大输出。 1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x&y则将x与y的值进行交换,       然后再用x与z进行比较,如果x&z则将x与z的值进行交换,这样能使x最小。 2.程序源代码:
代码如下:main() { int x,y,z,t; scanf("%d%d%d",&x,&y,&z); if (x&y) /*交换x,y的值*/ if(x&z) /*交换x,z的值*/ if(y&z) /*交换z,y的值*/ printf("small to big: %d %d %d\n",x,y,z); }
【程序6】 题目:用*号输出字母C的图案。 1.程序分析:可先用&|&*&|&号在纸上写出字母C,再分行输出。 2.程序源代码:
代码如下:#include "stdio.h" main() { printf("Hello C-world!\n"); printf(" ****\n"); printf(" *\n"); printf(" * \n"); printf(" ****\n"); }
【程序7】 题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful! 1.程序分析:字符共有256个。不同字符,图形不一样。       2.程序源代码:
代码如下:#include "stdio.h" main() { char a=176,b=219; printf("%c%c%c%c%c\n",b,a,a,a,b); printf("%c%c%c%c%c\n",a,b,a,b,a); printf("%c%c%c%c%c\n",a,a,b,a,a); printf("%c%c%c%c%c\n",a,b,a,b,a); printf("%c%c%c%c%c\n",b,a,a,a,b); }
【程序8】 题目:输出9*9口诀。 1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 2.程序源代码:
代码如下:#include "stdio.h" main() {  int i,j,  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表示左对齐,占3位*/      }    printf("\n");/*每一行后换行*/    } }
【程序9】 题目:要求输出国际象棋棋盘。 1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 2.程序源代码:
代码如下:#include "stdio.h" main() { int i,j; for(i=0;i&8;i++)  {   for(j=0;j&8;j++)    if((i+j)%2==0)     printf("%c%c",219,219);    else     printf(" ");    printf("\n");   } }
【程序10】 题目:打印楼梯,同时在楼梯上方打印两个笑脸。 1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 2.程序源代码:
代码如下:#include "stdio.h" main() { int i,j; printf("\n");/*输出两个笑脸*/ for(i=1;i&11;i++)  {  for(j=1;j&=i;j++)    printf("%c%c",219,219);  printf("\n");   } }
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具"大一c语言编程题if条件"的糗事
你可能感兴趣:
糗事百科为大家收集了很多的大一c语言编程题if条件的糗事,各种关于大一c语言编程题if条件的爆笑经历、尴尬时刻和开心视频,想持续关注大一c语言编程题if条件的糗事就收藏本页吧.
扫码下载糗事百科app}

我要回帖

更多关于 c语言基础编程题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信