C语言源程序.docx

上传人:b****6 文档编号:4152880 上传时间:2022-11-28 格式:DOCX 页数:17 大小:19.82KB
下载 相关 举报
C语言源程序.docx_第1页
第1页 / 共17页
C语言源程序.docx_第2页
第2页 / 共17页
C语言源程序.docx_第3页
第3页 / 共17页
C语言源程序.docx_第4页
第4页 / 共17页
C语言源程序.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C语言源程序.docx

《C语言源程序.docx》由会员分享,可在线阅读,更多相关《C语言源程序.docx(17页珍藏版)》请在冰豆网上搜索。

C语言源程序.docx

C语言源程序

C语言源程序

1.#include

voidmain()

{inta[3][5],i;

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

{scanf("%d%d%d%d",&a[i][0],&a[i][1],&a[i][2],&a[i][3]);

a[i][4]=a[i][0]+a[i][1]+a[i][2]+a[i][3];}

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

{printf("%4d%4d%4d%4d%4d",a[i][0],a[i][1],a[i][2],a[i][3],a[i][4]);

printf("\n");

}

}

2.#include

voidmain()

{inta[3][5],i;

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

{scanf("%d%d%d%d",*(a+i),*(a+i)+1,*(a+i)+2,*(a+i)+3);

*(*(a+i)+4)=*(*(a+i))+*(*(a+i)+1)+*(*(a+i)+2)+*(*(a+i)+3);}

for(i=0;i<3;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

voidmain()

{inta[3][5],i;

for(i=0;i<3;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);}

for(i=0;i<3;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

voidmain()

{inta[3][5],*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));

printf("\n");

}

}

(5):

#include

voidmain()

{inta[3][5],(*p)[5];

for(p=a;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;p

{printf("%4d%4d%4d%4d%4d",**p,*(*p+1),*(*p+2),*(*p+3),*(*p+4));

printf("\n");

}

}

(6):

#include

voidmain()

{inta[3][5],*p[3],i;

for(i=0;i<3;i++)p[i]=a[i];

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

{scanf("%d%d%d%d",p[i],p[i]+1,p[i]+2,p[i]+3);

*(p[i]+4)=*(p[i])+*(p[i]+1)+*(p[i]+2)+*(p[i]+3);}

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

{printf("%4d%4d%4d%4d%4d",*(p[i]),*(p[i]+1),*(p[i]+2),*(p[i]+3),*(p[i]+4));

printf("\n");

}

}

(7):

#include

int*f(inta,intb,intc,intd)

{ints;s=a+b+c+d;return&s;

}

voidmain()

{inta[3][5],*p,i;

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

{scanf("%d%d%d%d",*(a+i),*(a+i)+1,*(a+i)+2,*(a+i)+3);

p=f(*(*(a+i)),*(*(a+i)+1),*(*(a+i)+2),*(*(a+i)+3));

*(*(a+i)+4)=*p;}

for(i=0;i<3;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

intf(int*a,int*b,int*c,int*d)

{ints;s=*a+*b+*c+*d;returns;

}

voidmain()

{inta[3][5],i;

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

{scanf("%d%d%d%d",*(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;i<3;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

voidmain()

{inta[10],*p;

printf("请输入十个数:

\n");

for(p=a;p

printf("请输出十个数:

\n");

for(p=a;p

printf("\n");

}

2.方法二:

输入十个数,用指针输出

#include

#definepprintf

voidmain()

{inta[10],i;

p("请输入十个数:

\n");

for(i=0;i<10;i++)scanf("%d",a+i);

p("输出结果:

\n");

for(i=0;i<10;i++)p("%-5d",*(a+i));

}

将大写字母变成小写字母,小写字母变成大写字母:

#include

voidmain()

{chara[81];

inti;

gets(a);

for(i=1;a[i]!

='\0';i++)

{if(a[i]>='a'&&a[i]<='z')a[i]-=32;

elseif(a[i]>='A'&&a[i]<='Z')a[i]+=32;}/*注意一定要加else,否则把小写字母变成大写字母*/

puts(a);

}

将二进制转化为十进制:

#include

#include

voidmain()

{ints,t,i;chara[16];

gets(a);

s=0;t=1;

for(i=strlen(a)-1;i>=0;i--)

{s+=(a[i]-48)*t;t*=2;}

printf("\ns=%d",s);

}

将数组中第一个元素和第二个元素颠倒顺序:

#include

voidf(inta[],intn)

{intt;t=a[0];a[0]=a[1];a[1]=t;}

voidmain()

{inti,b[5]={1,2,3,4,5};

f(b,5);

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

printf("%d",b[i]);

形参值的改变不会影响到实参:

#include

voidf(intx,inty)

{intt;

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

voidmain()

{inti,b[5]={1,2,3,4,5};

f(b[0],b[1]);

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

printf("%d",b[i]);

}

用选择法将六个数进行排序(从小到大):

#include

voidmain()

{inta[7],i,j,t;

for(i=1;i<7;i++)scanf("%d",&a[i]);

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

{for(j=1;j<6-i;j++)

if(a[i]>a[j+i]){t=a[i];a[i]=a[j+i];a[j+i]=t;}

}printf("\n");

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

printf("%d",a[i]);

}

编一个函数,将五个数倒序输出:

#include

voidmain()

{intb[5]={1,2,3,4,5},i;

voidf(inta[],intn);

f(b,5);

for(i=0;i<5;i++)printf("%d",b[i]);

}

voidf(inta[],intn)

{intt,i,j;

for(i=0,j=n-1;i<=j;i++,j--)

{t=a[i];a[i]=a[j];a[j]=t;}

}

编程实现三角形:

#include

voidmain()

{inti;voidp(int,int);

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

{p(i,0);p(10-i,1);printf("\n");}

}

voidp(intn,intm)

{inti;

for(i=0;i

{if(m==1)printf("*");

if(m==0)printf("");}

}

把a数组中的元素接到b数组中:

#include

#include

voidmain()

{chara[81],b[81];

inti,j;

gets(a);gets(b);

for(i=strlen(a),j=0;(a[i]=b[j])!

='\0';i++,j++)

puts(a);puts(b);

}

求解满足条件1+2+3+…+n>=500的最小n:

#include

voidmain()

{intn=0,s=0;

do

{n++;

s+=n;

}while(s<500);

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

}

分析程序结果:

#include

#definepprintf

#definesscanf

voidmain()

{inta,b,c;

a=2;b=-1;c=2;

if(a

if(b<0)

c=0;

else

c+=0;

p("%d\n",c);

}

【解】第一个if条件不为真,则直接执行printf语句,输出为2.

注意:

else与前面最近的if语句匹配,所以本题不会执行else语句。

分析一下程序的运行结果:

#include

voidmain()

{intn=2;

printf("%d,%d,%d\n",++n,n+=2,--n);

}

【解】n=2,执行printf()语句,其求值是从右向左进行的,先进行—n,返回1,n=1;在进行++n,即n=3,最后进行++n,返回n=4.所以运行结果是4,3,1.

分析程序:

#include

#definepprintf

#definesscanf

voidmain()

{inti,j,x=0;

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

{x++;

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

{if(j%2)continue;x++;}

x++;

}

p("x=%d\n",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语句用来结束本次循环,即跳过循环体中尚未执行的语句。

用0到9之间的三个数组成一位三位数,统计共有多少种这样的三位数:

#include

voidmain()

{inti,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;

elsecount++;

printf("count=%d\n",count);

}

输入1~99之间不能被2和3整除的数,按10个数一行的格式排列:

【解】从1到100循环,除掉其中能被2和3整除的数。

本题程序如下:

#include

#definepprintf

#definesscanf

voidmain()

{inti,j=0;

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

{if(i%2==0||i%3==0)continue;

p("%-4d",i);

j++;

if(j%10==0)p("\n");

}

p("\n");

输入一个正整数,把它的前后各位数字颠倒一下,并输出颠倒后的结果:

【解】先从高位到低位求出该书的各位数字,边求边输出,本题程序如下:

#include

#definepprintf

#definesscanf

voidmain()

{intn,d;

p("输入一个正整数:

");

s("%d",&n);

p("颠倒结果:

");

do

{d=n%10;

p("%d",d);

n/=10;

}while(n!

=0);

p("\n\n");

}

在不知道字母的ASCII码的情况下,将用户输入的大写字母转化成小写字母:

#include

#definepprintf

#definesscanf

voidmain()

{charc,ch;

p("输入一个大写字母:

");

s("%c",&c);

ch=c-'A'+'a';

p("%c==>%c\n",c,ch);

}

将输入的数字字符转换成相应的数字并输出:

?

对于水中字符c,直接使用(int)c转换成相应的数字是不正确的,应使用c-‘0’转换。

本题程序如下:

#include

voidmain()

{charc;intd;

printf("输入一个数字字符:

");

scanf("%c",&c);

d=c-'0';

printf("对应的数字为%d:

\n\n",d);

}

输出任意一个十进制对应的八进制数和十六进制数:

?

直接使用printf()的格式符输出八进制数和十六进制数。

本题程序如下:

#include

voidmain()

{inti;

printf("输入一个整数:

");

scanf("%d",&i);

printf("%d(10)<=>%o(8)\n",i,i);

printf("%d(10)<=>%x(16)\n\n",i,i);

}

编写一个程序,求任意输入字符的ASCII码:

#include

voidmain()

{charc;inti;

printf("输入一个字符:

");

scanf("%c",&c);

i=(int)c;/*强制转换*/

printf("%c的ASCII码为%d\n",c,i);

}

分析以下程序运行结果:

#include

#definepprintf

#definesscanf

voidmain()

{intx=0,y=2,z=3;

switch(x)

{case0:

switch(y==2)

{case1:

p("*");break;

case2:

p("%");break;

}

case1:

switch(z)

{case1:

p("$");

case2:

p("*");break;

default:

p("#");}

}

p("\n");

}

【解】x=0,执行外层switch语句的case0部分,y==2为真,则执行里层switch语句的case1部分,输出“*”,遇到break语句,退出里层的switch语句,由于里层的switch语句之后没有break语句,所以转而执行外层switch语句的case1部分,这时z=3,故执行里层switch语句的default部分,输出“#”,整个程序执行完毕。

所以输出为:

*#。

如果从键盘上输入a到z共26个字母,分析一下程序的运行结果:

#include

#definepprintf

#definesscanf

voidmain()

{charc;intv0=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;

default:

v0+=1;

}

}while(c!

='\n');

p("%d,%d\n",v0,v1);

}

【解】实际上v1统计元音字母的个数,v0统计总的字符的个数,由于最后输入的一个回车符也算是一个字符,故最后,v1=5,v0=27,所以输出为:

27,5.

(易错)分析一下程序的运行结果:

#include

#definepprintf

#definesscanf

voidmain()

{intk=2;

switch(k)

{case1:

p("%d\n",k++);break;

case2:

p("%d",k++);

case3:

p("%d\n",k++);break;

case4:

p("%d\n",k++);

default:

p("Full!

\n");}

}

【解】k=2,执行case2:

分支,k++返回k=3,屏幕输出2,后跟一空格。

由于没有break语句,继续执行case3:

分支,k++返回3,此时k=4,屏幕输出3,由于有一个break语句,退出switch语句。

所以最后运行结果是2,3.

用户输入日期,计算该日期是这一年的第几天:

【解】本题使用switch语句,每个case语句均不带break语句,这样在某个case的条件满足后从case语句开始依次执行到最后,从而达到累计各月天数的目的。

程序如下:

#include

#definepprintf

#definesscanf

voidmain()

{inty,m,d,leap,days;

p("输入日期(格式:

年.月.日):

");

s("%d.%d.%d",&y,&m,&d);

if((y%4==0&&y%100!

=0)||(y%400==0))leap=1;/*闰年*/

elseleap=0;

days=d;

switch(m-1)

{case12:

days+=31;

case11:

days+=30;

case10:

days+=31;

case9:

days+=30;

case8:

days+=31;

case7:

days+=31;

case6:

days+=30;

case5:

days+=31;

case4:

days+=30;

case3:

days+=31;

case2:

if(leap==1)days+=29;/*闰年的情况*/

elsedays+=28;

case1:

days+=31;

}

p("\n%d.%d.%d是该年的第%d天\n\n",y,m,d,days);

}

编程序将用户输入的十进制正整数转化成任意进制的整数:

【解】采用辗转相除法进行进制间的转换,将结果储存在一维数组num中,最后显示其值即可,本题程序如下:

#include

#definepprintf

#definesscanf

charitc(intn)/*数字转换成字符表示,如10—>...*/

{charc;

if(n>=0&&n<=9)

c='0'+n;

else

c='a'+n-10;

returnc;

}

voidmain()

{inti=0,base,n,j,num[20];

p("输入正十进制整数:

");

s("%d",&n);

p("输入要转换的进制:

");

s("%d",&base);

do

{i++;

num[i]=n%base;

n/=base;

}while(n!

=0);

p("转换的结果:

");

for(j=i;j>=1;j--)

p("%c",itc(num[j]));

p("\n");

}

编写一个累加器,知道输入一个整数“0”结束:

#include

voidmain()

{floats=0,d;

for(;d!

=0;)//或while

(1)即无条件循环,靠break语句终止循环过程

{printf("输入一个数:

");

scanf("%f",&d);

s=s+d;

}

printf("累次结果:

%g\n",s);

}

将十进制数转化为二进制数:

#include

voidmain()

{intx,a[16],i;printf("请输入一个十进制数:

\n\t");

scanf("%d",&x);

for(i=0;x>2;i++)

{a[i]=x%2;x/=2;}

a[i]=x;printf("\n");

printf("所求二进制数为:

\n\t");

for(;i>=0;i--)

printf("%d",a[i]);

printf("\n");}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1