1、C语言源程序C语言源程序1. #include void main() int a35,i; for(i=0;i3;i+) scanf(%d%d%d%d,&ai0,&ai1,&ai2,&ai3); ai4=ai0+ai1+ai2+ai3; for(i=0;i3;i+) printf(%4d%4d%4d%4d%4d,ai0,ai1,ai2,ai3,ai4); printf(n); 2.#include void main()int a35,i;for(i=0;i3;i+)scanf(%d%d%d%d,*(a+i),*(a+i)+1,*(a+i)+2,*(a+i)+3);*(*(a+i)+4)=*
2、(*(a+i)+*(*(a+i)+1)+*(*(a+i)+2)+*(*(a+i)+3);for(i=0;i3;i+)printf(%4d%4d%4d%4d%4d,*(*(a+i),*(*(a+i)+1),*(*(a+i)+2),*(*(a+i)+3),*(*(a+i)+4);printf(n);3.#include void main()int a35,i;for(i=0;i3;i+)scanf(%d%d%d%d,*a+i*5,*a+i*5+1,*a+i*5+2,*a+i*5+3);*(*a+i*5+4)=*(*a+i*5)+*(*a+i*5+1)+*(*a+i*5+2)+*(*a+i*5+3
3、);for(i=0;i3;i+)printf(%4d%4d%4d%4d%4d,*(*a+i*5),*(*a+i*5+1),*(*a+i*5+2),*(*a+i*5+3),*(*a+i*5+4);printf(n);(4):#include void main()int a35,*p;for(p=*a;p*a+15;p=p+5)scanf(%d%d%d%d,p,p+1,p+2,p+3);*(p+4)=*p+*(p+1)+*(p+2)+*(p+3);for(p=*a;p*a+15;p=p+5)printf(%4d%4d%4d%4d%4d,*p,*(p+1),*(p+2),*(p+3),*(p+4)
4、;printf(n);(5):#include void main()int a35,(*p)5;for(p=a;pa+3;p+)scanf(%d%d%d%d,*p,*p+1,*p+2,*p+3);*(*p+4)=*p+*(*p+1)+*(*p+2)+*(*p+3);for(p=a;pa+3;p+)printf(%4d%4d%4d%4d%4d,*p,*(*p+1),*(*p+2),*(*p+3),*(*p+4);printf(n);(6):#include void main()int a35,*p3,i;for(i=0;i3;i+)pi=ai;for(i=0;i3;i+)scanf(%d%d
5、%d%d,pi,pi+1,pi+2,pi+3);*(pi+4)=*(pi)+*(pi+1)+*(pi+2)+*(pi+3);for(i=0;i3;i+)printf(%4d%4d%4d%4d%4d,*(pi),*(pi+1),*(pi+2),*(pi+3),*(pi+4);printf(n);(7):#include int *f(int a,int b,int c,int d)int s;s=a+b+c+d;return &s;void main()int a35,*p,i;for(i=0;i3;i+)scanf(%d%d%d%d,*(a+i),*(a+i)+1,*(a+i)+2,*(a+i
6、)+3);p=f(*(*(a+i),*(*(a+i)+1),*(*(a+i)+2),*(*(a+i)+3);*(*(a+i)+4)=*p;for(i=0;i3;i+)printf(%4d%4d%4d%4d%4d,*(*(a+i),*(*(a+i)+1),*(*(a+i)+2),*(*(a+i)+3),*(*(a+i)+4);printf(n);(8):#include int f(int *a,int *b,int *c,int *d)int s;s=*a+*b+*c+*d;return s;void main()int a35,i;for(i=0;i3;i+)scanf(%d%d%d%d,*
7、(a+i),*(a+i)+1,*(a+i)+2,*(a+i)+3);*(*(a+i)+4)=f(*(a+i),*(a+i)+1,*(a+i)+2,*(a+i)+3);for(i=0;i3;i+)printf(%4d%4d%4d%4d%4d,*(*(a+i),*(*(a+i)+1),*(*(a+i)+2),*(*(a+i)+3),*(*(a+i)+4);printf(n);1.第一种方法:输入十个数,用指针输出#include void main()int a10,*p;printf(请输入十个数:n);for(p=a;pa+10;p+)scanf(%d,p);printf(请输出十个数:n);
8、for(p=a;pa+10;p+)printf(% d,*p);printf(n);2.方法二:输入十个数,用指针输出#include #define p printfvoid main()int a10,i;p(请输入十个数:n);for(i=0;i10;i+)scanf(%d,a+i);p(输出结果:n);for(i=0;i10;i+)p(%-5d,*(a+i);将大写字母变成小写字母,小写字母变成大写字母:#include void main()char a81;int i;gets(a);for(i=1;ai!=0;i+)if(ai=a&ai=A&ai=Z)ai+=32;/*注意一定要
9、加else,否则把小写字母变成大写字母*/puts(a);将二进制转化为十进制:#include #include void main( ) int s,t,i;char a16;gets(a);s=0;t=1;for(i=strlen(a)-1;i=0;i-)s+=(ai-48)*t;t*=2;printf(ns=%d,s); 将数组中第一个元素和第二个元素颠倒顺序:#include void f(int a,int n)int t;t=a0;a0=a1;a1=t;void main()int i,b5=1,2,3,4,5;f(b,5);for(i=0;i5;i+)printf(%d ,bi
10、);形参值的改变不会影响到实参:#include void f(int x,int y)int t; t=x;x=y;y=t;void main()int i,b5=1,2,3,4,5;f(b0,b1);for(i=0;i5;i+)printf(%d ,bi);用选择法将六个数进行排序(从小到大):#includevoid main()int a7,i,j,t;for(i=1;i7;i+)scanf(%d,&ai);for(i=1;i6;i+)for(j=1;jaj+i)t=ai;ai=aj+i;aj+i=t;printf(n);for(i=1;i7;i+)printf(%d ,ai);编一个
11、函数,将五个数倒序输出:#includevoid main()int b5=1,2,3,4,5,i;void f(int a,int n);f(b,5);for(i=0;i5;i+)printf(%d ,bi);void f(int a,int n)int t,i,j;for(i=0,j=n-1;i=j;i+,j-)t=ai;ai=aj;aj=t;编程实现三角形:#includevoid main()int i;void p(int,int);for(i=1;i=9;i+)p(i,0);p(10-i,1);printf(n);void p(int n,int m)int i;for(i=0;i
12、n;i+)if(m=1)printf(*); if(m=0)printf( );把a数组中的元素接到b数组中:#include #include void main()char a81,b81;int i,j;gets(a);gets(b);for(i=strlen(a),j=0;(ai=bj)!=0;i+,j+)puts(a);puts(b);求解满足条件1+2+3+n=500的最小n:#include void main()int n=0,s=0;don+;s+=n;while(s500);printf(n=%dn,n);分析程序结果:#include #define p printf#d
13、efine s scanfvoid main()int a,b,c;a=2;b=-1;c=2;if(ab) if(b0) c=0;else c+=0;p(%dn,c);【解】第一个if条件不为真,则直接执行printf语句,输出为2.注意:else与前面最近的if语句匹配,所以本题不会执行else语句。分析一下程序的运行结果:#include void main()int n=2;printf(%d,%d,%dn,+n,n+=2,-n);【解】n=2,执行printf()语句,其求值是从右向左进行的,先进行n,返回1,n=1;在进行+n,即n=3,最后进行+n,返回n=4.所以运行结果是4,3
14、,1.分析程序:#include #define p printf#define s scanfvoid main()int i,j,x=0;for(i=0;i2;i+)x+;for(j=0;j=3;j+)if(j%2)continue;x+;x+;p(x=%dn,x);【解】外层for循环,i=0:x+后x=1,进入里层for循环,其作用是j从0到3,j不为偶数时x增一,故该循环后x=3.又执行x+,之后x=4;i=1:x+后x=5,进入里层for循环,该循环后x=7,。又执行x+,之后x=8;里层循环结束。所以输出为:8.continue语句用来结束本次循环,即跳过循环体中尚未执行的语句。
15、用0到9之间的三个数组成一位三位数,统计共有多少种这样的三位数:#include void main()int i,j,k,count=0;for(i=1;i=9;i+) for(j=0;j=9;j+) if(i=j)continue; else for(k=0;k=9;k+) if(k=i|k=j)continue; else count+;printf(count=%dn,count);输入199之间不能被2和3整除的数,按10个数一行的格式排列:【解】从1到100循环,除掉其中能被2和3整除的数。本题程序如下:#include #define p printf#define s scan
16、fvoid main()int i,j=0;for(i=1;i100;i+)if(i%2=0|i%3=0)continue;p( %-4d,i);j+;if(j%10=0)p(n);p(n);输入一个正整数,把它的前后各位数字颠倒一下,并输出颠倒后的结果:【解】先从高位到低位求出该书的各位数字,边求边输出,本题程序如下:#include #define p printf#define s scanfvoid main()int n,d;p(输入一个正整数:);s(%d,&n);p(颠倒结果:);dod=n%10;p(%d,d);n/=10;while(n!=0);p(nn);在不知道字母的AS
17、CII码的情况下,将用户输入的大写字母转化成小写字母:#include #define p printf#define s scanfvoid main()char c,ch;p(输入一个大写字母:);s(%c,&c);ch=c-A+a;p(%c=%cn,c,ch);将输入的数字字符转换成相应的数字并输出:?对于水中字符c,直接使用(int)c转换成相应的数字是不正确的,应使用c-0转换。本题程序如下:#include void main()char c;int d;printf(输入一个数字字符:);scanf(%c,&c);d=c-0;printf(对应的数字为%d:nn,d);输出任意一
18、个十进制对应的八进制数和十六进制数:?直接使用printf()的格式符输出八进制数和十六进制数。本题程序如下:#include void main()int i;printf(输入一个整数:);scanf(%d,&i);printf(%d(10)%o(8)n,i,i);printf(%d(10)%x(16)nn,i,i);编写一个程序,求任意输入字符的ASCII码:#include void main()char c;int i;printf(输入一个字符:);scanf(%c,&c);i=(int)c;/*强制转换*/printf(%c的ASCII码为%dn,c,i);分析以下程序运行结果:
19、#include #define p printf#define s scanfvoid main()int x=0,y=2,z=3;switch(x)case 0:switch(y=2)case 1:p(*);break; case 2:p(%);break;case 1:switch(z) case 1:p($); case 2:p(*);break; default:p(#);p(n);【解】x=0,执行外层switch语句的case 0部分,y=2为真,则执行里层switch语句的case 1部分,输出“*”,遇到break语句,退出里层的switch语句,由于里层的switch语句之
20、后没有break语句,所以转而执行外层switch语句的case 1部分,这时z=3,故执行里层switch语句的default部分,输出“#”,整个程序执行完毕。所以输出为:*#。如果从键盘上输入a到z共26个字母,分析一下程序的运行结果:#include #define p printf#define s scanfvoid main()char c;int v0=0,v1=0;do switch(c=getchar()case a:case A: case e:case E: case i:case I: case o:case O: case u:case U:v1+=1; defau
21、lt:v0+=1;while(c!=n);p(%d,%dn,v0,v1);【解】实际上v1统计元音字母的个数,v0统计总的字符的个数,由于最后输入的一个回车符也算是一个字符,故最后,v1=5,v0=27,所以输出为:27,5.(易错)分析一下程序的运行结果:#include #define p printf#define s scanfvoid main()int k=2;switch(k)case 1:p(%dn,k+);break; case 2:p(%d ,k+); case 3:p(%dn,k+);break; case 4:p(%dn,k+); default:p(Full!n);【
22、解】k=2,执行case2:分支,k+返回k=3,屏幕输出2,后跟一空格。由于没有break语句,继续执行case3:分支,k+返回3,此时k=4,屏幕输出3,由于有一个break语句,退出switch语句。所以最后运行结果是2,3.用户输入日期,计算该日期是这一年的第几天:【解】本题使用switch语句,每个case语句均不带break语句,这样在某个case的条件满足后从case语句开始依次执行到最后,从而达到累计各月天数的目的。程序如下:#include #define p printf#define s scanfvoid main()int y,m,d,leap,days;p(输入日
23、期(格式:年.月.日):);s(%d.%d.%d,&y,&m,&d);if(y%4=0&y%100!=0)|(y%400=0)leap=1;/*闰年*/else leap=0;days=d;switch(m-1)case 12:days+=31; case 11:days+=30; case 10:days+=31; case 9:days+=30; case 8:days+=31; case 7:days+=31; case 6:days+=30; case 5:days+=31; case 4:days+=30; case 3:days+=31; case 2:if(leap=1)days
24、+=29;/*闰年的情况*/ else days+=28; case 1:days+=31;p(n%d.%d.%d是该年的第%d天nn,y,m,d,days);编程序将用户输入的十进制正整数转化成任意进制的整数:【解】采用辗转相除法进行进制间的转换,将结果储存在一维数组num中,最后显示其值即可,本题程序如下:#include #define p printf#define s scanfchar itc(int n)/*数字转换成字符表示,如10.*/char c;if(n=0&n=1;j-)p(%c,itc(numj);p(n);编写一个累加器,知道输入一个整数“0”结束:#include void main()float s=0,d;for(;d!=0;)/或while(1)即无条件循环,靠break语句终止循环过程printf(输入一个数:); scanf(%f,&d);s=s+d;printf(累次结果:%gn,s);将十进制数转化为二进制数:#include void main( ) int x,a16,i;printf(请输入一个十进制数:nt);scanf(%d,&x);for(i=0;x2;i+)ai=x%2;x/=2;ai=x;printf(n);printf(所求二进制数为:nt);for(;i=0;i-)printf(%d,ai);printf(n);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1