C语言:函数
来源:互联网 发布:国债期货模拟软件 编辑:程序博客网 时间:2024/06/04 01:08
任务代码:
任务1:星号图
#include <stdio.h>void printstars(int m) //定义能输出一行m个星号的函数{ int j; for (j=1; j<=m; ++j) printf("*");}int main( ){ int n=6; //n代表要输出的行数 int i; for(i=1; i<=n; ++i) { printstars(2*i-1); printf("\n"); } return 0;}
任务2:根据main函数中对printchs函数的调用,以及printchs的功能要求,编写printchs函数,使下面的程序能输出星号图:
//调用函数printchs输出星号图#include <stdio.h>//在下面写printchs函数的定义,功能是输出一行若干个指定字符void printchs(int,char);//函数声明可以不带有变量void printchs(int a,char b){ int i; for(i=0;i<a;i++) { printf("%c",b);//或者使用putchar(b); } return;}int main( ){ int n=6; //n代表要输出的行数 int i; //通过在下面的循环里调用printchs函数,输出右面的图 for(i=1; i<=n; ++i) { printchs(n-i,' '); printchs(2*i-1,'*') ; printf("\n"); } return 0;}
任务3:在上面的程序中,只改动一处,输出下面的图形
//调用函数printchs输出星号图#include <stdio.h>//在下面写printchs函数的定义,功能是输出一行若干个指定字符void printchs(int,int);//函数声明可以不带有变量void printchs(int a,int b){ int i; for(i=0;i<a;i++) { printf("%c",b);//或者使用putchar(b); } return;}int main( ){ int n=6; //n代表要输出的行数 int i; //通过在下面的循环里调用printchs函数,输出右面的图 for(i=1; i<=n; ++i) { printchs(n-i,32); printchs(2*i-1,64+i) ; printf("\n"); } return 0;}
任务4:
求解分段函数的值
#include<stdio.h>double f(double); //这一句是对自定义函数f的声明int main( ){ double x; printf("请输入x的值:"); scanf("%lf", &x); printf("解得:f(%.2f)=%.2f\n", x, f(x)); //调用函数f求解 return 0;} //将自定义函数f的定义写在下面double f(double a){ double result; int c; c=(a-0.3<0)+(a-0.8<0); switch(c) { case 0: //a>=0.3 result=1; break; case 1://a>=0.3&&a<=0.8 result=(a-0.3)/(0.8-0.3); break; case 2://x<0.3的情况 result=0; break; } return result;}
任务5:项目3-求最大公约数
#include <stdio.h>//int gcd(int x,int y) //定义用于求两数的最大公约数的函数,函数只管求值,不管输出。输出由main完成int gcd(int x,int y){ int c=1,z; while(1) { if(x<y) { z=x; x=y; y=z; } c=x%y; if(c==0)break; x=y; y=c; } return y;}int main(){ int a,b,g; printf("请输入两个数字:"); scanf("%d %d", &a, &b); g=gcd(a,b); printf("最大公约数是:%d\n", g); return 0;}
#include <stdio.h>//用于求四个数的最大公约数int gcds(int a,int b,int c, int d){ int result1,result2,result3; result1=gcd(a,b); result2=gcd(c,d); result3=gcd(result1,result2); return result3;}int gcd(int x,int y){ int c=1,z; while(1) { if(x<y) { z=x; x=y; y=z; } c=x%y; if(c==0)break; x=y; y=c; } return y;}int main(){ int a,b,c,d,g; printf("请输入4个数字:"); scanf("%d %d %d %d", &a, &b,&c,&d); g=gcds(a,b,c,d); printf("最大公约数是:%d\n", g); return 0;}
任务6:当年第几天
定义一个函数,其参数为年、月、日的值,返回这一天为该年的第几天。要求在main函数中输入年月日,然后调用这个函数求值,并在main函数中输出结果。
#include<stdio.h>int days(int y, int m, int d);int main(){ int year, month, day; printf("输入年 月 日: "); scanf("%d %d %d", &year, &month, &day); printf("这是该年的第 %d 天\n", days(year, month, day)); return 0;}int days(int y, int m, int d){ //输入日期判断 if(m>12) { printf("输入月份错误!\n"); main(); } else if(m==2) { if((y%4==0&&y%100!=0)||y%400==0)//闰年 { if(d>29){ printf("输入日错误!\n"); main();} } else if(d>28){ printf("输入日错误!\n"); main();} } else if(m==4||m==6||m==8||m==10||m==12) { if(d>30){ printf("输入日错误!\n"); main();} }else if(m==1||m==3||m==5||m==7||m==9||m==11) { if(d>31){ printf("输入日错误!\n"); main();} } int sum=d; //以下要加上前m-1天的天数 int i; for(i=1;i<m;i++)//从一月份开始计算 { switch(i) { case 2://二月份全年最特殊需要单独拿出来讨论 sum=sum+((y%4==0&&y%100!=0)||y%400==0)?29:28;//满足闰年的情况29天否则28天 case 4: case 6: case 8: case 10: case 12: sum=sum+30;//双数月份都是30天 default: sum=sum+31;//单数月份31天 }; } return sum;}数组解答:
#include<stdio.h> int days(int y, int m, int d); int main() { int year, month, day; printf("输入年 月 日: "); scanf("%d %d %d", &year, &month, &day); printf("这是该年的第 %d 天\n", days(year, month, day)); return 0; } int days(int y, int m, int d) { int sum=d; int a[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31}; int i; for(i=1; i<m; i++) { sum+=a[i]; } if(m>2&&((y%4==0&&y%100!=0)||y%400==0)) //若闰年,且晚于2月,加一天 sum++; return sum; }
任务7:Reverse()经典编法(可接受任意数)
#include<stdio.h>int reverse(int);//自定义函数的原型(即函数声明)int main(){ int m,n; printf("请输入任何数:"); scanf("%d", &m); n=reverse(m); printf("把这个数倒过来是%d\n", n); return 0;}int reverse(int x){ int m=0; while(x>0) { m=m*10+x%10;//很值得借鉴的算法 x=x/10; } return m;}
任务8:编制isPalindrome(),用于判断参数是否是回文数——回文数,即从前往后读和从后往前读都一样的数,如1221和121都是回文数,而1231、123都不是回文数。isPalindrome()函数的返回值是int型,是回文返回1(真),不是回文,返回0(假)。请编制isPalindrome(函数,在下面代码的基础上补充相关的部分,实现要求的功能。
#include <stdio.h>int isPalindrome(int);int main(){ int m; printf("请输入一个数字:"); scanf("%d", &m); if(isPalindrome(m)) printf("%d是回文数,噢耶!\n", m); else printf("%d不是回文数。回文有什么好!\n", m); return 0; }int isPalindrome(int n) //在这个函数中只管判断,不能出现printf语句!{ int palindrome=0,m,k; //为0代表假,默认不是回文数 m=n; k=0;//k用于求出n的反序数 while(m>0)//用于确定是否这个数还大于0 { k=k*10+m%10; m=m/10; } if(k==n) palindrome=1;//是回文,修改为1 return palindrome;}
任务9:
编制一个返回值为int型的函数isPrimer(),用于判断参数是否为素数(是素数返回1-真,不是回文,返回0-假),自编main函数用于测试。
#include<stdio.h> #include<math.h> int isPrime(int); int main() { int m; scanf("%d", &m); if(isPrime(m)) printf("%d是素数。\n", m); else printf("%d不是素数。\n", m); return 0; } int isPrime(int n) { int prime=1; int k=(int)(sqrt(n)); //简便穷举 int i; for(i=2; i<=k; i++) { if(n%i==0) { prime=0; break; } } return prime; }
知识总结:
心得体会:
阅读全文
0 0
- 【C语言】C语言函数
- C语言函数 --C
- C 语言图形函数
- C语言图形函数
- C语言图形函数
- C语言图形函数
- C语言函数
- C语言内联函数
- C语言return函数
- C语言 assert()函数
- c语言IO函数
- C语言图形函数
- C语言函数大全
- c语言函数指针
- C语言字符串函数
- C语言图形函数
- C语言字符串函数
- C语言图形函数...
- Android BigDecimal对金额进行精确计算
- Thrift——入门Demo(Java)
- nyoj-325 zb的生日
- [bzoj1180][CROATIAN2009]OTOCI Link-Cut-Tree
- JMeter-认识GUI界面基本元素及作用
- C语言:函数
- js三种弹出框的方式
- Ignatius and the Princess I(bfs+优先队列+输出路径)
- 用C写蓝牙通讯程序:扫描、读取、发送
- 通俗理解卷积神经网络
- node-webkit开发桌面应用
- 一个真正免费使用的微信营销平台
- 51nod 1681 公共祖先
- nginx+LVS+keepalived实现企业高可用