c语言答案
更新时间:2024-04-21 10:48:01 阅读量: 综合文库 文档下载
//1.1编写一程序,在屏幕上输出如下内容: // X | X | X //---+---+--- // | | //---+---+--- // 0 | 0 | 0
#include
//1.2输出\语句 #include
//2.1编写一程序,接受用户输入的两个整数,并计算它们的和、差、积、商,程序运行结果应如下所示。
//注意,尖括号部分表示用户输入数据或要被替换的输出内容,尖括号本身并不需要输入或输出。
//多使用几组整数尝试一下,你发现了什么?
//The program gets two integers,and computes their sum,difference,product and quotient. //The first number:<第一个整数在此输入> //The second number:<第二个整数在此输入> //Results as follows:
//<第一个整数>+<第二个整数>=<和> //<第一个整数>-<第二个整数>=<差> //<第一个整数>*<第二个整数>=<积> //<第一个整数>/<第二个整数>=<商> #include
computes their sum,difference,product and
quotient.\\n\ printf(\ scanf(\ printf(\ scanf(\ printf(\ printf(\ printf(\ printf(\ printf(\ //做除法时要注意,除得的结果是实数 }
//2.2输入半径r的值,求出圆周长,圆面积 #include
//3.1如何实现下述输出要求?
//A.输出整数1234,输出共占8位,数据左对齐。
//B.输出整数1234,输出共占10位,数据右对齐。
//C.输出十六进制整数0xFFDE3C02,输出共占8位,数据左对齐。
//D.输出十六进制整数0xFFDE3C,输出共占8位,数据右对齐,前补0。
//E.输出浮点数10.36,输出共占6位,数据右对齐。
//F.输出浮点数123.4567890,输出共占12位,精度6位,数据右对齐。
//G.输出浮点数123.4567890,精度3位,数据左对齐。 #include
void main() { printf(\ printf(\ printf(\ printf(\ printf(\ printf(\ printf(\}
//3.2编制程序,接受用户输入的数值,输出以该值为半径的圆面积,
//以该值为半径的球体表面积与体积,pi取值3.1415926536,结果保留10位有效数字。 #include
#define PI 3.1415926536 void main() { float r,yuan,qiu,tiji; //分别为半径,圆面积,球面积,球体积 printf(\ scanf(\ yuan=PI*r*r; qiu=4*PI*r*r; tiji=4.0/3*PI*r*r*r; printf(\n,qiu,tiji); }
//4.1给出一个百分制成绩,要求输出成绩等级'A','B','C','D','E'。
//90分以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下为'E'。 //分别用if和switch语句实现。 #include
case 7:printf(\
case 6:printf(\ default:printf(\ } }
/*以下为if结构 #include
//5.1使用循环结构打印下述图形,打印行数n由用户输入。图中每行事实上包括两部分,中间间隔空格字符数m也由用户输入。 // * ********* // *** ******* // ***** ***** // ******* *** // ********* *
#include
for(i=1;i<9;i++) 控制行数
{ printf(\ for(j=1;j<=n-i;j++) printf(\ printf(\---------\\n\ for(j=1;j<=2*i-1;j++) //输出星号 for(i=1;i<=9;i++) //此双循 printf(\环结构为本题核心
{ printf(\ for(j=1;j<=10;j++) //输出中间 for(j=1;j<=i;j++) 的空格
printf(\ printf(\
printf(\ for(j=2*(n-i+1)-1;j>=1;j--) //输出 } 星号
printf(\ printf(\ printf(\------\\n\ } } } //5.3存在自然数,其所有小于自身的因子之//5.2编制程序,按照下述格式打印九九乘法和等于该数,这样的数称为完数。 表。 //设计算法,判断某个给定的自然数n是否//Nine - by - nine Multiplication Table 为完数,要求具有容错处理功能。 //-------------------------------------------------------#include
--------------- void main() // 1 2 3 4 5 6 7 { 8 9 int n; //------------------------------------------------------- int sum=0; //sum保存自然数n的因子
--------------- 之和 //1 1 int i; //2 2 4 printf(\//3 3 6 9 scanf(\//4 4 8 12 16 for(i=1;i --------------- printf(\#include //17 18 19 20 21 22 23 //24 25 26 27 28 29 30 //31 //------------------------------------------------------ #include for(i=0;i<5;i++) printf(\ \ for(i=1;i<=31;i++) { printf(\ if(i%7==2) printf(\ } printf(\--\\n\} //6.2打印所有100至999之间的水仙花数。所谓水仙花数是指满足其各位数字立方和为该数字本身的整数。 #include //6.3接受用户输入的正整数n,计算f(n)=1+1/2!+1/3!+...+1/n!的值。 #include //6.4接受用户从键盘输入的年份值与月份值,打印2009年以后(含)任意月份的日历,2009年前的拒绝打印。 #include month:\输入月份 /////////////////////////////////////// ///////////求得输入的年月之前有多少天——x=x1+x2,x1是之前年天数,x2是当年前面月天数 /////////////////////////////////////// for(i=2009;i if((i%4==0&&i0!=0)||(i@0==0)) //如果i年是闰年 x1=x1+366; else x1=x1+365; } if((year%4==0&&year0!=0)||(year@0==0)) run=1; else run=0; for(i=1;i case 1:j=5;break; case 2:j=6;break; case 3:j=7;break; case 4:j=1;break; case 5:j=2;break; case 6:j=3;break; } ////////////////////////////////////////定输入的月份有多少天 if(month==4||month==6||month==9||month==11) day=30; else { if(month!=2) day=31; else {if(month==2&&run==1) //2月份并且是闰年 day=29; else day=28; } } //////////////////////////////////////////////////确定j和day后,开始输出 for(i=1;i //7.1编程实现用数组打印Fibonacci数列的前20项。 #include for( i = 3 ; i < 21 ; i ++ ) a[i] = a[i-1] + a[i-2] + a[i-3] ; for( i = 0 ; i < 20 ; i ++ ) { if( i != 0 && i%5 == 0 ) printf(\ printf( \ } } //7.2编程实现从键盘输入的一组数中找出其中最大值和最小值。 #include //7.3编程实现用一、二维数组分别输出杨辉三角 #include #include //8.1编程实现将二维数组行列元素互换。 #include //8.2编程实现求二维数组中最大元素值及其行号、列号。 #include //8.3假设有一对兔子,一个月后成长为大兔子,从第二个月开始,每对大兔子生一对小兔子。不考虑兔子的死亡,设计算法求第n个月的兔子总数。 //此题是杨辉三角形的变型题 #include //9.1编写一个函数max,用于比较两个整数的大小。 #include void main() { int a,b; scanf(\ printf(\} //9.2编写一函数IsPrime,判断某个大于2的正整数是否为素数 #include {int i; for(i=2;i<=sqrt(x);i++) if(x%i==0) return 0; return 1; } void main() { int x; scanf(\ if(IsPrime(x)) printf(\ else printf(\} //10.1编写一函数gcd,求两个正整数的最大公约数 //分析:用这两个数的乘积再除以它们的最大公约数就会得到他们的最小公倍数。所以问题的关键就变成了求两个数的最大公约数。代码如下: #include \main() { int p,r,m,n,temp; printf(\ scanf(\ if(m>n) /*将m和n比较大的数字放在n中*/ { temp=n; n=m; m=temp; } p=m*n; /*计算两个数的乘积,为了在后面求最小公倍数*/ while(m!=0) /*用循环和求余数的方法计算m和n的最小大公约数,放在n中*/ { r=n%m; n=m; m=r; } printf(\ printf(\ /*输出最小公倍数*/ } //10.2使用递归的方法实现求n!的函数f(n) #include void main() { int n; printf(\ scanf(\ printf(\ } //11.1编写通用的排序的函数,实现冒泡、选择排序方法 #include void maopao(int a[],int n) //冒泡排序函数 { int i,j,t; for(i=0;i<=n-1;i++) for (j=0;j void xuanze(int a[],int n) //选择排序函数 { int i,j,t; for(i=0;i void main() { int a[10],i; for(i=0;i<10;i++) scanf(\ maopao(a,10); //xuanze(a,10); for(i=0;i<10;i++) printf(\} //11.2给定一个自然数n,求其各位数字之和,重复上一过程,一直得到1~9之间的数。 //例如数1234的各位数字之和为10,继续计算,得到10的各位数字之和为1。 //没有用子函数,而是通过goto语句来反复运算 //其实反复调用同样一种算法就是递归,即自己调用自己,通过goto的方式了解了这个原理以后,再写成递归函数的形式就容易些了 #include { n=s; printf(\ //输出每次求得得和,可做验证用 goto L1; } printf(\ } /*递归方法 #include int fun(long n) { int s=0; s=0; while(n) { s+=n; n/=10; } if(s<10) return s; else return fun(s); } void main() { long n; //输入的数 printf(\input x(1——4294967295):\ scanf(\ printf(\} */ //11.3题目:编写一掷骰子游戏,首先由计算机生成一个随机数, //然后接受用户输入的字符串\命令后生成用户的随机数(模拟用户掷了一次骰子), //比较它们的大小,如果用户得到的随机数小于计算机得到的,则输出用户输了,否则输出用户赢了。 #include #include int ren; //人产生的随机数 srand((unsigned)time(NULL)); jsj=rand()+2; //既然是骰子,假设2颗,点数就是2到12,那么y=12,x=2,即rand()%(Y-X+1)+X; printf(\point:%d(go or not?)\ if(getchar()=='g') //如果输入的是字母g { ren=rand()+2; printf(\ point:%d\\n\ if(ren>jsj) printf(\ else printf(\ } } //11.4编写一函数,返回1-52之间的随机数,模拟发不含大小王牌的扑克牌,将生成的随机数映射为每张扑克牌。 //按照花色(梅花、方块、红桃、黑桃)和大小(2~10、J、Q、K、A)顺序进行映射。 #include void main() { int n,p,i,j; n=fun(); i=n%4; //余得得数就是 1 2 3 0中得一个 switch(i) //将余得的数对应成正确得花色对应ASCII码 { case 1:i=5;break; //草花 case 2:i=4;break; //方片 case 3:i=3;break; //红桃 case 0:i=6; //黑桃 } j=(n-1)/4+2; //将1-52映射成扑克牌 2、3、4、5...14 p=j; switch(p) //将11、12、13、14映射成J Q K J { case 11: p='J';break; case 12: p='Q';break; case 13: p='K';break; case 14: p='A'; } printf(\ if(j<=10) printf(\ else printf(\} //11.5面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。 //要求(1)只出10道题,每题10分,程序结束时显示学生得分; //(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的; //(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案; //(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分; //(5)当学生输入了正确得数后,随机显示评价结果,例如\、\,\the answer\等, //若答案错误,则按照\answer is ?\输出答案。 #include //////////////////////////////fun2:计算学生每题得分///////////////////////////////////////////////// int fun2(int a3) { int x; //x为学生输入的结果 scanf(\ if(x==a3) return 10; else { printf(\ scanf(\ if(x==a3) return 7; else { printf(\ scanf(\ if(x==a3) return 5; else return 0; } } } //////////////////////////////fun1:确定运算是加法还是减法以及相应标准答案/////////////////////////// int fun1(int a1,int a2) { int a3; //标准答案; char bln; //加法或减法的标识 if(rand()%2==1) //只产生0或1,不妨设置1为加法,0为减法 { a3=a1+a2; bln='+'; } else { a3=a1-a2; bln='-'; } printf(\ return fun2(a3); } //////////////////////////////////////////////////////////////////////////////////////////////////// void main() { int a1,a2,i,sum=0; //a1 a2为计算机随机生成的数,sum为最终学生得分。 srand((unsigned)time(NULL));//做种 for(i=1;i<=10;i++) { a1=rand()&; //产生第一个随机数,根据题目要求,这个数要>=0,<=25 a2=rand()&; while(a1 //12.1编写函数,求包含n个元素的整数数组中元素的平均值。要求在函数内部使用指针操纵数组元素。 #include void main() { int a[10]; int i; float ave; for(i=0;i<10;i++) scanf(\ ave=fun(a); //调用fun函数计算平均值,参数传递方式为:数组名做实参,传递的是地址 printf(\} //12.2题目:独立实现标准字符串库的strcmp函数。 //题意是编写一个自定义函数,实现strcmp函数的功能,而不是让我们去调用strcmp函数。 //那么做题之前就要弄清楚strcmp的原型及含义,查书后附录的函数表可找到。 #include int fun(char *p,char *q) { int i; for(i=0;(*(p+i)!='\\0')||(*(q+i)!='\\0');i++) { if(*(p+i)>*(q+i)) return 1; if(*(p+i)<*(q+i)) return -1; } return 0; } void main() { char a[100]; char b[100]; int x; printf(\ gets(a); printf(\ gets(b); x=fun(a,b); //数组名做实参,传递的是地址 printf(\} //13.2接受用户输入的整数n,随机生成n个0~100间的整数 //使用动态数组存储所有元素,分别统计0~59,60~84,85~100之间的元素个数。 #include int fun(int *p,int n,int x,int y) //参数分别是:数组、元素个数、下限、上限 { int i,num=0; for(i=0;i void main() { int n,i,num1,num2,num3; int *p=NULL; printf(\ scanf(\ p=(int *)malloc(sizeof(int)*n); //生成动态数组(生成一段连续空间,p指向其首地址) srand((unsigned)time(NULL)); for(i=0;i //14.1给定字符串s,其内容为英语长句,其中包含英语单词、标点符号、空格等内容 //每个英语单词使用标点符号、一个或多个 空格分隔。将英语长句分隔成英语单词序列输出,并输出其单词数目。 #include int fun(char *s) { char *p=NULL,*q=NULL; //p表示每个单词的初始位置,q表示每个单词的结束位置 int num=0; p=q=s; while(*p!='\\0') //p从字符串s的初始位开始,直到s最后。 { for(;p void main() { char s[100]; puts(\ gets(s); printf(\} //14.2有3个学生,每个学生的数据包括学 号、三门课的成绩, //要求用input函数实现从键盘输入学生数据,用average函数求每个人的平均分 //用output函数打印学生数据及平均成绩。 #include struct student //定义全局结构体类型student { int number; float score[3]; }; float average(struct student p) //计算平均值函数,形参是结构体变量 { int i; float sum=0; for(i=0;i<3;i++) sum=sum+p.score[i]; return sum/3; } void output(struct student *stu) //输出结构体函数,形参是结构体指针 { int i,j; printf(\ for(i=0;i<3;i++) { printf(\ for(j=0;j<3;j++) printf(\ printf(\ ave=%.2f\\n\题目中说用output函数输出平均值,而平均值又让编写成一个函数,那么这里采用out中调用average函数。 } printf(\} void input(struct student *stu) //对结构体数组赋值函数,形参是结构体指针 {int i,j; for(i=0;i<3;i++) {printf(\ scanf(\//建立链表 printf(\{ for(j=0;j<3;j++) struct stu *p,*q; scanf(\ q=(struct stu*)malloc(sizeof(struct stu)); } //分配空间 } printf(\void main() scanf(\{ printf(\ struct student stu[3]; scanf(\ printf(\//定义结构体数组 input(stu); scanf(\ head=q; //数组名做参数,传递的是地址 output(stu); while(q->grade!=0) } //当分数为0时结束 { //14.3静态链表的建立,有三个学生,包括 p=(struct stu*)malloc(sizeof(struct 学号(sno char(8)),姓名(sname char(20)), stu)); 分数(grade float[]), printf(\//定义结构体类型数组存学生信息,使用链 scanf(\表所有学生,实现链表的输入输出。 printf(\//静态的书上有原题目,我写成动态的了, scanf(\用子函数的方式实现 #include } //定义全局结构体 { q->next=NULL; char sno[8]; return head; char sname[20]; //返回链表的头指针 float grade; } struct stu *next; ////////////////////////////////////////////////////////// } ; void print(struct stu *head) //////////////////////////////////////////////////////// //输出链表 void main( ) { { struct stu *p; struct stu *creat(struct stu *); //设游标指针 void print(struct stu*); p=head; struct stu *head; //取得链表的头指针 head=NULL; printf(\ head=creat(head); while(p->next!=NULL) print(head); { } printf(\///////////////////////////////////////////////////////// printf(\struct stu *creat(struct stu*head) printf(\ printf(\ p=p->next; } } //14.5递归方法实现快速排序算法。快速排序的基本原理是: //(1)选择一个充当划分较小和较大元素的界限的元素,称其为基准值。 //(2)将数组中的元素重新排列使得较大元素向数组尾端移动,较小元素向数组首端移动。 //如此在形式上将数组分成两部分,界限左边元素都小于基准值,而界限右边元素都大于基准值,此过程称为分解。 //在分解完成后,充当界限的数组首元素可能需要和中间某元素对调。 //(3)排序两个子数组中元素。因为基准值左边元素都小于基准值右边元素,所以将两个子数组分别排序后即使得整个数组有序。 #include void fun(int *p,int left,int right) { int i=left,j=right,middle,temp; middle=p[(left+right)/2]; //求中间值 while(i<=j) //如果两边扫描的下标交错,就停止 { while((p[i] i++; while((p[j]>middle) && (j>left))//从右扫描小于中值的数 j--; if(i<=j) //找到了一对值,交换 { temp=p[j]; p[j]=p[i]; p[i]=temp; i++; j--; } } if(left ='a'&&*p<='z')||(*p>='A'&&*p<='Z')) { num++; break; } for(q=p;(*q>='a'&&*q<='z')||(*q>='A'&&*q<='Z');q++) //确定q的位置,q是每个单词结束位置 ; for(;p
正在阅读:
c语言答案04-21
给自己洗头日记10-29
2014年度广东省广播影视奖获奖作品篇目01-25
上海新教材5B牛津英语周末卷1012-02
政治学概论复习笔记(新)05-27
信息设备对我们学习和生活的影响09-22
2019年金融系统反洗钱知识考试多选题100题及答案05-25
《金属切削机床概论》-习题与答案集05-29
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 答案
- 语言
- 简析小学学习困难生的成因及对策(DOC)
- 氡的运移规律
- Sphinx的配置使用(超详细分析conf)
- 数学课堂充分发挥学生错误资源
- 小学三年级四年级语文听力训练题,含答案和听力稿
- 2017-2018年新课标人教版小学数学三年级上册《多位数乘一位数(
- 煤炭知识 - 图文
- 和田县第二中学关于落实“三重一大”和党政“一把手”“三不直接
- 命运
- 广州市天河区小学体育(体育与健康)水平二
- 安全培训班的讲课稿
- 闲置及低效利用土地等问题的处置意见
- 中等职业学校英语教学大纲
- 上海市各区2017-2018年初三英语二模试题分类汇编:首字母填空-学
- 2013年辽宁科技大学专升本考试大纲 - 《自动化》
- 第四届校园“文明行”手绘漫画设计大赛策划书(新)
- 故障树分析法--最新,最全 - 图文
- 监区党支部对照检查材料
- 江西省建筑物防雷装置检测原始记录表填写实例1
- PA6的生产流程