
C语言程序设计
链接:> 提取码:8uar复制这段内容后打开百度网盘手机APP, *** 作更方便哦!
若资源有问题欢迎追问~
1.5请参照本章例题,编写一个C程序,输出以下信息:
Very Goodj!
解:
main()
{
printf(" \n");
printf("\n");
printf(" Very Good! \n");
printf("\n");
printf(" \n");
}
16编写一个程序,输入a b c三个值,输出其中最大者。
解:main()
{int a,b,c,max;
printf("请输入三个数a,b,c:\n");
scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(max<b)
max=b;
if(max<c)
max=c;
printf("最大数为:%d",max);
}
第三章
33 请将下面各数用八进制数和十六进制数表示:
(1)10 (2)32 (3)75 (4)-617
(5)-111 (6)2483 (7)-28654 (8)21003
解:十 八 十六
(10)=(12)=(a)
(32)=(40)=20
(75)=(113)=4b
(-617)=(176627)=fd97
-111=177621=ff91
2483=4663=963
-28654=110022=9012
21003=51013=520b
35字符常量与字符串常量有什么区别?
解:字符常量是一个字符,用单引号括起来。字符串常量是由0个或若干个字符
而成,用双引号把它们括起来,存储时自动在字符串最后加一个结束符号'\0'
36写出以下程序的运行结果:
#include<stdioh>
void main()
{
char c1='a',c2='b',c3='c',c4='\101',c5='\116';
printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);
printf("\t\b%c %c\n",c4,c5);
解:程序的运行结果为:
aabb cc abc
A N
37将"China"译成密码密码规律:用原来的字母后面第4个字母代替原来的字母,
例如,字母"A"后面第4个字母是"E",用"E"代替"A"因此,"China"应译为"Glmre"
请编一程序,用赋初值的议程使c1,c2,c3,c4,c5分别变成'G','1','m','r','e',并
输出
main()
{char c1="C",c2="h",c3="i",c4='n',c5='a';
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
38例36能否改成如下:
#include<stdioh>
void main()
{
int c1,c2;(原为 char c1,c2)
c1=97;
c2=98;
printf("%c%c\n",c1,c2);
printf("%d%d\n",c1,c2);
}
解:可以因为在可输出的字符范围内,用整型和字符型作用相同
39求下面算术表达式的值
(1)x+a%3(int)(x+y)%2/4=25(x=25,a=7,y=47)
(2)(float)(a+b)/2+(int)x%(int)y=35(设a=2,b=3,x=35,y=25)
310写出下面程序的运行结果:
#include<stdioh>
void main()
{
int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d\n",i,j,m,n);
}
解:结果: 9,11,9,10
第4章
44a=3,b=4,c=5,x=12,y=24,z=-36,u=51274,n=128765,c1='a',c2='b'想得
到以下的输出格式和结果,请写出程序要求输出的结果如下:
a= 3 b= 4 c= 5
x=1200000,y=2400000,z=-3600000
x+y= 360 y+z=-120 z+x=-240
u= 51274 n= 128765
c1='a' or 97(ASCII)
c2='B' or 98(ASCII)
解:
main()
{
int a,b,c;
long int u,n;
float x,y,z;
char c1,c2;
a=3;b=4;c=5;
x=12;y=24;z=-36;
u=51274;n=128765;
c1='a';c2='b';
printf("\n");
printf("a=%2d b=%2d c=%2d\n",a,b,c);
printf("x=%86f,y=%86f,z=%96f\n",x,y,z);
printf("x+y=%52f y=z=%52f z+x=%52f\n",x+y,y+z,z+x);
printf("u=%6ld n=%9ld\n",u,n);
printf("c1='%c' or %d(ASCII)\n",c1,c2);
printf("c2='%c' or %d(ASCII)\n",c2,c2);
}
45请写出下面程序的输出结果
结果:
57
5 7
67856400,-789123962
67856400 ,-789123962
6786,-78912,67856400,-789123962,67856400,-789123962
6785640e+001,-789e+002
A,65,101,41
1234567,4553207,d687
65535,17777,ffff,-1
COMPUTER, COM
46用下面的scanf函数输入数据,使a=3,b=7,x=85,y=7182,c1='A',c2='a',
问在键盘上如何输入
main()
{
int a,b;
float x,y;
char c1,c2;
scanf("a=%d b=%d,&a,&b);
scanf(" x=%f y=%e",&x,&y);
scanf(" c1=%c c2=%c",&c1,&c2);
}
解:可按如下方式在键盘上输入:
a=3 b=7
x=85 y=7182
c1=A c2=a
说明:在边疆使用一个或多个scnaf函数时,第一个输入行末尾输入的"回车"被第二
个scanf函数吸收,因此在第二\三个scanf函数的双引号后设一个空格以抵消上行
入的"回车"如果没有这个空格,按上面输入数据会出错,读者目前对此只留有一
初步概念即可,以后再进一步深入理解
47用下面的scanf函数输入数据使a=10,b=20,c1='A',c2='a',x=15,y=-375,z=578,请问
在键盘上如何输入数据?
scanf("%5d%5d%c%c%f%f%f %f",&a,&b,&c1,&c2,&y,&z);
解:
main()
{
int a,b;
float x,y,z;
char c1,c2;
scanf("%5d%5d%c%c%f%f",&a,&b,&c1,&c2,&x,&y,&z);
}
运行时输入:
10 20Aa15 -375 +15,678
注解:按%5d格式的要求输入a与b时,要先键入三个空格,而后再打入10与20。%f是用来禁止赋值的。在输入时,对应于%f的地方,随意打入了一个数15,该值不会赋给任何变量。
38设圆半径r=15,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积,用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后两位数字请编程
解:main()
{
float pi,h,r,l,s,sq,vq,vz;
pi=31415926;
printf("请输入圆半径r圆柱高h:\n");
scanf("%f,%f",&r,&h);
l=2pir;
s=rrpi;
sq=4pirr;
vq=40/30pirrr;
vz=pirrh;
printf("圆周长为: =%62f\n",l);
printf("圆面积为: =%62f\n",s);
printf("圆球表面积为: =%62f\n",sq);
printf("圆球体积为: =%62f\n",vz);
}
49输入一个华氏温度,要求输出摄氏温度,公式为C=5/9(F-32),输出要有文字说明,取两位小数
解: main()
{
float c,f;
printf("请输入一个华氏温度:\n");
scanf("%f",&f);
c=(50/90)(f-32);
printf("摄氏温度为:%52f\n",c);
}
第五章 逻辑运算和判断选取结构
54有三个整数a,b,c,由键盘输入,输出其中最大的数
main()
{
int a,b,c;
printf("请输入三个数:");
scanf("%d,%d,%d",&a,&b,&c);
if(a<b)
if(b<c)
printf("max=%d\n",c);
else
printf("max=%d\n",b);
else if(a<c)
printf("max=%d\n",c);
else
printf("max-%d\n",a);
}
方法2:使用条件表达式
main()
{int a,b,c,termp,max;
printf(" 请输入 A,B,C: ");
scanf("%d,%d,%d",&a,&b,&c);
printf("A=%d,B=%d,C=%d\n",a,b,c);
temp=(a>b)a:b;
max=(temp>c) temp:c;
printf(" A,B,C中最大数是%d,",max);
}
55 main()
{int x,y;
printf("输入x:");
scanf("%d",&x);
if(x<1)
{y=x;
printf("X-%d,Y=X=%d \n",x,y);
}
else if(x<10)
{y=2x-1;
printf(" X=%d, Y=2X-1=%d\n",x,y);
}
else
{y=3x-11;
printf("X=5d, Y=3x-11=%d \n",x,y);
}
}
57给一个不多于5位的正整数,要求:1求它是几位数2分别打印出每一位数字3按逆序打印出各位数字例如原数为321,应输出123
main()
{
long int num;
int indiv,ten,hundred,housand,tenthousand,place;
printf("请输入一个整数(0-99999):");
scanf("%ld",&num);
if(num>9999)
place=5;
else if(num>999)
place=4;
else if(num>99)
place=3;
else if(num>9)
place=2;
else place=1;
printf("place=%d\n",place);
printf("每位数字为:");
ten_thousand=num/10000;
thousand=(num-tenthousand10000)/1000;
hundred=(num-tenthousand10000-thousand1000)/100;
ten=(num-tenthousand10000-thousand1000-hundred100)/10;
indiv=num-tenthousand10000-thousand1000-hundred100-ten10;
switch(place)
{case 5:printf("%d,%d,%d,%d,%d",tenthousand,thousand,hundred,ten,indiv);
printf("\n反序数字为:");
printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,tenthousand);
break;
case 4:printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);
printf("\n反序数字为:");
printf("%d%d%d%d\n",indiv,ten,hundred,thousand);
break;
case 3:printf("%d,%d,%d\n",hundred,ten,indiv);
printf("\n反序数字为:");
printf("%d%d%d\n",indiv,ten,hundred);
case 2:printf("%d,%d\n",ten,indiv);
printf("\n反序数字为:");
printf("%d%d\n",indiv,ten);
case 1:printf("%d\n",indiv);
printf("\n反序数字为:");
printf("%d\n",indiv);
}
}
58 1if语句
main()
{long i;
float bonus,bon1,bon2,bon4,bon6,bon10;
/初始化变量/
bon1=10000001;
bon2=1000000075+bon1;
bon4=200000005+bon2;
bon6=200000003+bon4;
bon10=4000000015+bon6;
printf("请输入利润");
scanf("%ld",&i);
/计算/
if(i<=le5)
bonus=i01;
else if(i<2e5)
bonus=bon1+(1-100000)0075;
else if(i<=4e5)
bonus=bon2+(i-200000)005;
else if(i<=6e5)
bonus=bon4+(i-400000)003;
else if(i<=le6)
bonus=bon6+(i-600000)0015;
else
bonus=bon10+(i-1000000)001;
printf("奖金是 %102f",bonus);
}
用switch语句编程序
main()
{long i;
float bonus,bon1,bon2,bon4,bon6,bon10;
int branch;
/初始化变量/
bon1=10000001;
bon2=bon1+1000000075
bon4=bon2+200000005;
bon6=bon4+200000003;
bon10=bon6+4000000015;
printf("请输入利润:");
scanf("%ld",&i);
branch=i/100000;
if(branch>10)
branch=10;
/计算/
switch(branch)
{case 0:bonus=i01;break;
case 1:bonus=bon1+(i-100000)0075;break;
case 2:
case 3:bonus=bon2+(i-200000)005;break;
case 4:
case 5:bonus=bon4+(i-400000)003;break;
case 6:
case 7:
case 8:
case 9:bonus=bon6+(i-600000)0015;break;
case 10:bonus=bon10+(i-1000000)001;
}
printf(" 奖金是 %102f",bonus);
}
59 输入四个整数,按大小顺序输出
main()
{int t,a,b,c,d;
printf("请输入四个数:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("\n\n a=%d,b=%d,c=%d,d=%d \n",a,b,c,d);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(a>d)
{t=a;a=d;d=t;}
if(b>c)
{t=b;b=c;c=t;}
if(b>d)
{t=b;b=d;d=t;}
if(c>d)
{t=c;c=d;d=t;}
printf("\n 排序结果如下: \n");
printf(" %d %d %d %d \n",a,b,c,d);
}
510塔
main()
{
int h=10;
float x,y,x0=2,y0=2,d1,d2,d3,d4;
printf("请输入一个点(x,y):");
scanf("%f,%f",&x,&y);
d1=(x-x0)(x-x0)+(y-y0)(y-y0);
d2=(x-x0)(x-x0)+(y+y0)(y+y0);
d3=(x+x0)(x+x0)+(y-y0)(y-y0);
d4=(x+x0)(x+x0)+(y+y0)(y+y0);
if(d1>1 && d2>1 && d3>1 && d4>1)
h=0;
printf("该点高度为%d",h);
}
第六章 循环语句
61输入两个正数,求最大公约数最小公倍数
main()
{
int a,b,num1,num2,temp;
printf("请输入两个正整数:\n");
scanf("%d,%d",&num1,&num2);
if(num1<num2)
{
temp=num1;
num1=num2;
num2=temp;
}
a=num1,b=num2;
while(b!=0)
{
temp=a%b;
a=b;
b=temp;
}
printf("它们的最大公约数为:%d\n",a);
printf("它们的最小公倍数为:%d\n",num1num2/2);
}
62输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数
解:
#include <stdioh>
main()
{
char c;
int letters=0,space=0,degit=0,other=0;
printf("请输入一行字符:\n");
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>'A'&&c<='Z')
letters++;
else if(c==' ')
space++;
else if(c>='0'&&c<='9')
digit++;
else
other++;
}
printf("其中:字母数=%d 空格数=%d 数字数=%d 其它字符数=%d\n",letters,space,
digit,other);
}
63求s(n)=a+aa+aaa+…+aa…a之值,其中工是一个数字
解:
main()
{
int a,n,count=1,sn=0,tn=0;
printf("请输入a和n的值:\n");
scanf("%d,%d",&a,&n);
printf("a=%d n=%d \n",a,n);
while(count<=n)
{
tn=tn+a;
sn=sn+tn;
a=a10;
++count;
}
printf("a+aa+aaa+…=%d\n",sn);
}
64 求1+2!+3!+4!+…+20!
main()
{
float n,s=0,t=1;
for(n=1;n<=20;n++)
{
t=tn;
s=s+t;
}
printf("1!+2!+…+20!=%e\n",s);
}
65 main()
{
int N1=100,N2=50,N3=10;
float k;
float s1=0,s2=0,s3=0;
for(k=1;k<=N1;k++)/计算1到100的和/
{
s1=s1+k;
}
for(k=1;k<=N2;k++)/计算1到50各数平方和/
{
s2=s2+kk;
}
for(k=1;k<=N3;k++)
{
s3=s3+1/k;
}
printf("总和=%82f\n",s1+s2+s3);
}
66水仙开花
main()
{
int i,j,k,n;
printf(" '水仙花'数是:");
for(n=100;n<1000;n++)
{
i=n/100;
j=n/10-i10;
k=n%10;
if(i100+j10+k==iii+jjj+kkk)
{
printf("%d",n);
}
}
printf("\n");
}
67完数
main()
#include M 1000/定义寻找范围/
main()
{
int k0,k1,k2,k3,k4,k5,k6,k7,k8,k9;
int i,j,n,s;
for(j=2;j<=M;j++)
{
n=0;
s=j;
for(i=1;i<j;i++)
{
if((j%i)==0)
{
if((j%i)==0)
{
n++;
s=s-i;
switch(n)/将每个因子赋给k0,k1…k9/
{
case 1:
k0=i;
break;
case 2:
k1=i;
break;
case 3:
k2=i;
break;
case 4:
k3=i;
break;
case 5:
k4=i;
break;
case 6:
k5=i;
break;
case 7:
k6=i;
break;
case 8:
k7=i;
break;
case 9:
k8=i;
break;
case 10:
k9=i;
break;
}
}
}
if(s==0)
{
printf("%d是一个'完数',它的因子是",j);
if(n>1)
printf("%d,%d",k0,k1);
if(n>2)
printf(",%d",k2);
if(n>3)
printf(",%d",k3);
if(n>4)
printf(",%d",k4);
if(n>5)
printf(",%d",k5);
if(n>6)
printf(",%d",k6);
if(n>7)
printf(",%d",k7);
if(n>8)
printf(",%d",k8);
if(n>9)
printf(",%d",k9);
printf("\n");
}
}
方法二:此题用数组方法更为简单
main()
{
static int k[10];
int i,j,n,s;
for(j=2;j<=1000;j++)
{
n=-1;
s=j;
for(i=1;i<j;i++)
{
if((j%i)==0)
{
n++;
s=s-i;
k[n]=i;/将每个因子赋给k0,k1k9/
}
}
if(s==0)
{
printf("%d是一个完数,它的因子是:",j);
for(i=0;i<n;i++)
printf("%d,",k[i]);
printf("%d\n",k[n]);
}
}
58 有一个分数序列:2/1,3/2,5/3,8/5……求出这个数列的前20项之和
解: main()
{
int n,t,number=20;
float a=2,b=1,s=0;
for(n=1;n<=number;n++)
{
s=s+a/b;
t=a,a=a+b,b=t;
}
printf("总和=%96f\n",s);
}
69球反d问题
main()
{
float sn=1000,hn=sn/2;
int n;
for(n=2;n<=10;n++)
{
sn=sn+2hn;/第n次落地时共经过的米数/
hn=hn/2;/第n次反跳高度/
}
printf("第10次落地时共经过%f米 \n",sn);
printf("第10次反d%f米\n",hn);
}
610猴子吃桃
main()
{
int day,x1,x2;
day=9;
x2=1;
while(day>0)
{
x1=(x2+1)2;
x2=x1;
day--;
}
printf("桃子总数=%d\n",x1);
}
614打印图案
main()
{
int i,j,k;
for(i=0;i<=3;i++)
{
for(j=0;j<=2-1;j++)
printf(" ");
for(k=0;k<=2i;k++)
printf("");
printf("\n");
}
for(i=0;i<=2;i++)
{
for(j=0;j<=i;j++)
printf(" ");
for(k=0;k<=4-2i;k++)
printf("");
printf("\n");
}
615乒乓比赛
main()
{
char i,j,k;/i是a是对手;j是b是对手;k是c的对手/
for(i='x';i<='z';i++)
for(j='x';j<='z';j++)
{
if(i!=j)
for(k='x';k<='z';k++)
{
if(i!=k&&j!=k)
{if(i!='x' && k!='x' && k! ='z')
printf("顺序为:\na-%c\tb--%c\tc--%c\n",i,j,k);
}
}
}
}
71用筛选法求100之内的素数
/用筛选法求100之内的素数/
#include<mathh>
#define N 101
main()
{
int i,j,line,a[N];
for(i=2;i<N;i++) a[i]=i;
for(i=2;i<sqrl(N);i++)
for(j=i+1;j<N;j++)
{
if(a[i]!=0 && a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;
printf("\n");
for(i=2,line=0;i<N;i++)
{
if(a[i]!=0)
{
printf("%5d",a[i]);
line++;
if(line==10)
{
printf("\n");
line=0;}
}
}
72用选择法对10个数排序
/选择法排序/
#define N 10
main()
{ int i,j,min,temp,a[N];
/输入数据/
printf("请输入十个数:\n");
for (i=0;i<N;i++)
{ printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n");
/排序/
for (i=0;i<N-1;i++)
{ min=i;
for(j=i+1;j<N;j++)
if(a[min]>a[j]) min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
/输出/
printf("\n排序结果如下:\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
}
73对角线和:
/计算矩阵对角线元素之和/
main()
{
float a[3][3],sum=0;
int i,j;
printf("请输入矩阵元素:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%f",&a[i][j]);
for(i=0;i<3;i++)
sum=sum+a[i][i];
printf("对角元素之和=62f",sum);
}
74插入数据到数组
/插入数据到数组/
main()
{int a[11]={1,4,6,9,13,16,19,28,40,100};
int temp1,temp2,number,end,i,j;
printf("初始数组如下:");
for (i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("输入插入数据:");
scanf("%d",&number);
end=a[9];
if(number>end)
a[10]=number;
else
{for(i=0;i<10;i++)
{ if(a[i]>number)
{temp1=a[i];
a[i]=number;
for(j=i+1;j<11;j++)
{temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
}
}
for(i=0;j<11;i++)
printf("a%6d",a[i]);
}
75将一个数组逆序存放。
/数组逆序存放/
#define N 5
main()
{ int a[N]={8,6,5,4,1},i,temp;
printf("\n 初始数组:\n");
for(i=0;i<N;i++)
printf("%4d",a[i]);
for(i=0;i<N/2;i++)
{ temp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
}
printf("\n 交换后的数组:\n");
for(i=0;i<N;i++)
printf("%4d",a[i]);
}
76杨辉三角
/打印杨辉三角形/
#define N 11
main()
{ int i,j,a[N][N];
for(i=1;i<N;i++)
{a[i][i]=1;
a[i][1]=1;
}
for(i=3;i<N;i++)
for(j=2;j<=i-1;j++)
a[i][j]=a[i01][j-1]+a[i-1][j];
for(i=1;i<N;i++)
{ for(j=1;j<=i;j++)
printf("%6d",a[i][j];
printf("\n");
}
printf("\n");
}
78鞍点
/查找鞍点/
#define N 10
#define M 10
main()
{ int i,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj;
printf("\n输入行数n:");
scanf("%d",&n);
printf("\n输入列数m:");
scanf("%d",&m);
for(i=0;i<n;i++)
{ printf("第%d行\n",i);
for(j=0;j<m,j++);
scanf("%d",&a[i][j];
}
for(i=0;i<n;i++)
{ for(j=0;j<m;j++)
printf("%5d",a[i][j]);
pritf("\n");
}
flag2=0;
for(i=0;i<n;i++)
{ max=a[i][0];
for(j=0;j<m;j++)
if(a[i][j]>max)
{ max=a[i][j];
maxj=j;
}
for (k=0,flag1=1;k<n && flag1;k++)
if(max>a[k][max])
flag1=0;
if(flag1)
{ printf("\n第%d行,第%d列的%d是鞍点\n",i,maxj,max);
flag2=1;
}
}
if(!flag2)
printf("\n 矩阵中无鞍点! \n");
}
79变量说明:top,bott:查找区间两端点的下标;loca:查找成功与否的开关变量
/折半查找/
#include<stdioh>
#define N 15
main()
{ int i,j,number,top,bott,min,loca,a[N],flag;
char c;
printf("输入15个数(a[i]>[i-1])\n);
scanf("%d",&a[0]);
i=1;
while(i<N)
{ scanf("%d",&a[i]);
if(a[i]>=a[i-1])
i++;
esle
{printf("请重输入a[i]");
printf("必须大于%d\n",a[i-1]);
}
}
printf("\n");
for(i=0;i<N;i++)
printf("%4d",a[i]);
printf("\n");
flag=1;
while(flag)
{
printf("请输入查找数据:");
scanf("%d",&number);
loca=0;
top=0;
bott=N-1;
if((number<a[0])||(number>a[N-1]))
loca=-1;
while((loca==0)&&(top<=bott))
{ min=(bott+top)/2;
if(number==a[min])
{ loca=min;
printf("%d位于表中第%d个数\n",number,loca+1);
}
else if(number<a[min])
bott=min-1;
else
top=min+1;
}
if(loca==0||loca==-1)
printf("%d不在表中\n",number);
printf("是否继续查找Y/N!\n");
c=getchar();
if(c=='N'||c=='n')
flag=0;
}
}
710/统计字符数/
main()
{ int i,j,uppn,lown,dign,span,othn;
char text[3][80];
uppn=lown=dign=span=othn=0;
for(i=0;i<3;i++)
{ printf("\n请输入第%d行:\n",i);
gets(text[i]);
for(j=0;j<80 && text[i][j]!='\0';j++)
{if(text[i][j]>='A' && text[i][j]<='Z')
uppn+=1;
else if(text[i][j]>='a' && text[i][j]<='z')
lown+=1;
else if(text[i][j]>='1' && text[i][j]<='9')
dign+=1;
else if(text[i][j]=' ')
span+=1;
else
othn+=1;
}
}
for(i=0;i<3;i++)
printf("%s=n",text[i]);
printf("大写字母数:%d\n",uppn);
printf("小写字母数:%d\n",lown);
printf("数字个数:%d\n",dign);
printf("空格个数:%d\n",span);
printf("其它字符:%d\n",othn);
}
711/打印图案/
main()
{static char a[5]={'','','','',''};
int i,j,k;
char space=' ';
for(i=0;i<=5;i++)
{printf("\n");
for(j=1;j<=3i;j++)
printf("%lc",space);
for(k=0;k<=5;k++)
printf("%3c",a[k];
}
}
712/译电文/
#include<stdioh>
main()
{int i,n;
char ch[80],tran[80];
printf("请输入字符:");
gets(ch);
printf("\n密码是%c",ch);
i=0;
while(ch[i]!='\0')
{if((ch[i]>='A')&&(ch[i]<='Z'))
tran[i]=26+64-ch[i]+1+64;
else if((ch[i]>='a')&&(ch[i]<='z'))
tran[i]=26+96-ch[i]+1+96;
else
tran[i]=ch[i];
i++;
}
n=i;
printf("\n原文是:");
for(i=0;i<n;i++)
putchar(tran[i]);
}
713/连接两个字符串(不用'stract')/
main()
{
char s1[80],s2[40];
int i=0,j=0;
printf("\n请输入字符串1:");
scanf("%s",s1);
printf("\n请输入字符串2:");
scanf("%s",s2);
while(s1[i]!='\0')
i++;
while(s2[j]!='\0')
s1[i++]=s2[j++];
s1[i]='\0';
printf("\n连接后字符串为:%s",s1);
}
714/字符串比较/
#include<stdioh>
main()
{int i,resu;
char s1[100],s2[100];
printf("请输入字符串1:\n");
gets(s1);
printf("\n 请输入字符串2:\n");
gets(s2);
i=0;
while((s1[i]==s2[i]) && (s1[i]!='\0'))i++;
if(s1[i]=='\0' && s2[i]=='\0')resu=0;
else
resu=s1[i]-s2[i];
printf(" %s与%s比较结果是%d",s1,s2,resu);
}
715/字符串复制/
#include<stdioh>
main()
{
char from[80],to[80];
int i;
printf("请输入字符串");
scanf("%s",from);
for(i=0;i<=strlen(from);i++)
to[i]=from[i];
printf("复制字符串为:%s\n",to);
}
第八章 函数
81(最小公倍数=uv/最大公约数)
hcf(u,v)
int u,v;
(int a,b,t,r;
if(u>v)
{t=u;u=v;v=t;}
a=u;b=v;
while((r=b%a)!=0)
{b=a;a=r;}
return(a);
}
lcd(u,v,h)
int u,v,h;
{int u,v,h,l;
scanf("%d,%d",&u,&v);
h=hcf(u,v);
printf("HCF=%d\n",h);
l=lcd(u,v,h);
printf("LCd=%d\n",l);
}
{return(uv/h);}
main()
{int u,v,h,l;
scanf("%d,%d",&u,&v);
h=hcf(u,v);
printf("HCF=%d\n",h);
l=lcd(u,v,h);
printf("LCD=%d\n",l);
}
82求方程根
#include<mathh>
float x1,x2,disc,p,q;
greater_than_zero(a,b)
float a,b;
{
x1=(-b+sqrt(disc))/(2a);
x2=(-b-sqrt(disc))/(2a);
}
equal_to_zero(a,b)
float a,b;
{x1=x2=(-b)/(2a);}
smaller_than_zero(a,b)
float a,b;
{p=-b/(2a);
最多就到82。。。。。。
你的邮箱在哪儿啊?
44 若a=3,b=4,c=5,x=12,y=24,z=-36,u=51274,n=128765,c1='a',c2='b',想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。要求输出的结果如下:
a=凵3凵凵b=凵4凵凵c=凵5
x=1200000,y=2400000,z=-3600000
x+y=凵360凵凵y+z=-120凵凵z+x=-240
c1='a'凵or凵97(ASCII)
c2='B'凵or凵98(ASCII)
解:
#include <stdioh>
main()
{ int a,b,c;
long int u,n;
float x,y,z;
char c1,c2;
a=3;b=4;c=5;
x=12;y=24;z=-36;
u=51274;n=128765;
c1='a';c2='b';
printf("\n");
printf("a=%2d b=%2d c=%2d\n",a,b,c);
printf("x=%86f,y=%86f,z=%96f\n",x,y,z);
printf("x+y=%52f y+z=%52f z+x=%52f\n",x+y,y+z,z+x);
printf("u=%6ld n=%9ld\n",u,n);
printf("c1='%c' or %d(ASCII)\n",c1,c1);
printf("c2='%c' or %d(ASCII)\n",c2-32,c2);
}
45 请写出下面程序的输出结果:
#include <stdioh>
main()
{ int a=5,b=7;
float x=678564,y=-789124;
char c='A';
long n=1234567;
unsigned u=65535;
printf("%d%d\n",a,b);
printf("%3d%3d\n",a,b);
printf("%f,%f\n",x,y);
printf("%-10f,%-10f\n",x,y);
printf("%82f,%82f,%4f,%4f,%3f,%3f\n",x,y,x,y,x,y);
printf("%e,%102e\n",x,y);
printf("%c,%d,%o,%x\n",c,c,c,c);
printf("%ld,%lo,%x\n",n,n,n);
printf("%u,%o,%x,%d\n",u,u,u,u);
printf("%s,%53s\n","COMPUTER","COMPUTER");
}
运行结果:(在TC20中)
57
凵凵5凵凵7
67856400,-789124023
67856400凵,-789124023
凵凵凵6786,凵-78912,678564,-7891240,67856400,-789124023
6785640e+Ol,凵凵-79e+02
A,65,10l,4l
1234567,4553207,d687
65535,177777,ffff,-1
COMPUTER,凵凵COM
46 用下面的scanf函数输入数据,使a=3,b=7,x=85,y=7182,c1='A',c2='a'。问在键盘上如何输入
#include <stdioh>
main()
{ int a,b;
float x,y;
char c1,c2;
scanf("a=%d凵b=%d",&a,&b);
scanf("%f凵%e",&x,&y);
scanf("凵%c凵%c",&c1,&c2);
printf("a=%d,b=%d,x=%f,y=%f,cl=%c,c2=%c\n,a,b,x,y,c1,c2);
}
解:可按如下方式在键盘上输入:
a=3凵b=7↙
85凵7182↙
A凵a↙
输出为:
a=3,b=7,x=8500000,y=71820000,cl=A,c2=a
请注意:在第三个scanf函数双引号中第一个字符为空格字符。如果没有这个空格字符,而写成:
scanf("%c%c,&c1,&c2);
按以上的输入,输出就会变成以下两行:
a=3,b=7,x=8500000,y=71820000,cl=
,c2=A
这是因为在输入完第二行数据后按的回车键被作为一个字符送到内存输入缓冲区中,因此第三个scanf函数中的第一个变量c1读人了回车符(实际上是回车符的ASCII码)。第三行输入的第一个字符A被c2读取,所以在执行printf函数输出cl时,就输出一个回车符,输出c2时就输出字符A。我们在程序第三个scanf函数双引号中第一个字符处放了一个空格字符,这样第二行末尾输入的回车符就不会输入给c1,而是与该空格字符对应,第三行输入的第一个字符A就被cl读取。也可以不在scanf函数中加空格,而在第三个函数前加一个getchar函数:getchar(); 用它将前面的回车符“吃掉”。
在一个函数中如果有几个scanf函数,在输人数据时往往会出现一些想象不到的情况(例如前面碰到的情况),其中一个重要的原因就是由回车符引起的。C语言很灵活,书上不可能把一切细节都讲到,读者在遇到类似情况时,上机多试验一下就可以找出规律来。
47 用下面的scanf函数输入数据,使a=10,b=20,c1='A',c2='a',x=15,y=-375,z=678,请问在键盘上如何输入数据
scanf("%5d%5d%c%c%f%f%f,%f",&a,&b,&c1,&c2,&x,&y,&z);
解:
#include <stdioh>
main()
{
int a,b;
float x,y,z;
char cl,c2;
scanf("%5d%5d%c%c%f%f%f,%f",&a,&b,&cl,&c2,&x,&y,&x);
printf("a=%d,b=%d,c1=%c,c2=%c,x=%62f,y=%62f,z=%62f\n",a,b,c1,c2,x,y,z);
}
运行情况如下:
凵凵凵10凵凵凵20Aa15凵-375凵15,678↙ (此行为输人的数据)
a=10,b=20,cl=A,c2=a,x=凵凵150,y=凵-375,x=凵6780 (此行为输出)
说明:按%5d格式的要求输入a与b时,要先键入三个空格,然后再键人10与20。%f是用来禁止赋值的。在输入时,对应于%f的地方,随意打人了一个数如15,该值不会赋给任何变量。
48 设圆半径r=15,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。请编程序。
解:
#include <stdioh>
main()
{ float pi,h,r,l,s,sq,vq,vz;
pi=31415926;
printf("请输入圆半径r,圆柱高h:\n");
scanf("%f,%f",&r,&h);
l=2pir;
s=rrpi;
sq=4pirr;
vq=30/40pirrr;
vz=pirrh;
printf("圆周长为:1=%62f\n",l);
printf("圆面积为:s=%62f\n",s);
printf("圆球表面积为:sq=%62f\n",sq);
printf("圆球体积为:sv=%62f\n",vq);
printf("圆柱体积为:sz=%62f\n",vz);
}
运行结果:
请输入圆半径r,圆柱高h;
15,3↙
圆周长为:l= 942
圆面积为:s= 707
圆球表面积为:sq= 2827
圆球体积为:sv= 795
圆柱体积为:sz= 2121
49 输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9,输出要有文字说明,取2位小数。
解:
#include <stdioh>
main()
{ float c,f;
printf("请输入一个华氏温度:\n");
scanf("%f",&f);
c=(50/90)(f-32); /注意5和9要用实型表示,否则5/9的值为0/
printf("摄氏温度为:%52f\n",c);
}
运行结果:
请输入一个华氏温度:
78
摄氏温度为:2556
410 编程序,用getchar函数读入两个字符给cl、c2,然后分别用putchar函数和printf函数输出这两个字符。并思考以下问题:(1)变量c1、c2应定义为字符型或整型抑或二者皆可?(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整型变量与字符变量是否在任何情况下都可以互相代替?如char"c1,c2;" 与"int cl,c2;" 是否无条件地等价
解:
#include <stdioh>
main()
{ char c1,c2;
printf("请输入两个字符c1,c2:\n");
c1=getchar();
c2=getchar();
printf("用putchar语句输出结果为:\n");
putchar(c1);
putchar(c2);
printf("\n");
printf("用printf语句输出结果为:\n");
printf("%c,%c\n",c1,c2);
}
运行结果:
请输入两个字符c1,c2:
ab↙
用putchar语句输出结果为:
ab↙
用printf语句输出结果为:
a,b
请注意连续用两个getchar函数时怎样输入字符。不应当用以下方法输入:
a↙
b↙
因为第一行将a和回车符输入到内存的输入缓冲区,因此c1得到a,c2得到一个回车符。在输出c2时就会产生一个回车换行,而不会输出任何可显示的字符。在实际 *** 作时,只要输入了"a↙"后,屏幕显示马上从用户屏切换到TC窗口,程序接着执行下去。因为系统认为用户已输入了两个字符,所以我们连续输入ab两个字符然后再按回车键,就保证了c1和c2分别得到字符a和b。
回答思考问题:
(1) c1和c2可以定义为字符型或整型,二者皆可。
(2) 在printf函数中用%d格式符输出,即:
printf("%d,%d\n",c1,c2);
(3) 字符变量在计算机内占一个字节,而整型变量占两个字节,因此整型变量在可输出字符的范围内(ASCII码为0~255之间的字符)是可以与字符数据互相转换的。如果整数在此范围外,则不能代替,请分析以下三个程序。
程序1:(4-10-1c)
#include <stdioh>
main()
{ int c1,c2; /定义为整型/
printf("请输入两个整数c1,c2:\n");
scanf("%d,%d",&c1,&c2);
printf("按字符输出结果为:\n");
printf("%c,%c\n",c1,c2);
printf("按ASCII码输出结果为:\n");
printf("%d,%d\n",c1,c2);
}
运行结果:
请输入两个整数c1,c2:
97,98↙
按字符输出结果为:
a,b
按ASCII码输出结果为:
97,98
程序2:(4-10-2c)
#include <stdioh>
main()
{ char c1,c2; / 定义为字符型/
int i1,i2; / 定义为整型 /
printf("请输入两个字符c1,c2:\n");
scanf("%c,%c",&c1,&c2);
i1=c1; / 将字符型赋值给整型变量/
i2=c2;
printf("按字符输出结果为:\n");
printf("%c,%c\n",i1,i2); / 将整型变量按字符输出/
printf("按整数输出结果为:\n");
printf("%d,%d\n",c1,c2); / 将字符变量按整型输出/
}
运行结果:
请输入两个字符c1,c2:
a,b↙
按字符输出结果为:
a,b
按整数输出结果为:
97,98
程序3:(4-10-3c)
#include <stdioh>
main()
{ char c1,c2;/ 定义为字符型 /
char i1,i2;/ 定义为整型 /
printf("请输入两个整数i1,i2:\n");
scanf("%c,%c",&i1,&i2);
c1=i1; / 将整数赋给字符变量 /
c2=i2;
printf("按字符输出结果为:\n");
printf("%c,%c\n",c1,c2);
printf("按整数输出结果为:\n");
printf("%d,%d\n",c1,c2);
}
运行结果:
请输入两个整数i1,i2:
289,330↙
按字符输出结果为:
!,J
按整数输出结果为:
33,74
请注意c1和c2是字符变量,只占一个字节,只能存放0~255范围内的整数,而现在输入给i1和i2的值已超过0~255的范围,所以只将i1和i2在内存中两个字节的低8位赋给c1和c2。可以看到,289-255=33,330-255=74;而与ASCII码33和74相应的字符为"!"
中文名:C语言程序设计
作者:吴国凤
图书分类:科技
资源格式:PDF
版本:高清文字版
出版社:合肥工业大学出版社
书号:9787565008405
发行时间:2012年8月1日
地区:大陆
语言:简体中文
本书是高清文字版非扫描拒绝模糊享受清晰!
无法下载的用户请到评论区一楼查看网盘地址!
内容介绍:
本文章由第1章 C语言概述、第2章 数据类型、运算符与表达式等组成。
内容截图:
目录:
第1章 C语言概述10
11 程序设计与C语言10
12 C程序初识12
13 程序设计方法与算法16
14 C程序运行环境与学习方法20
15 例题精解24
16 本章小结25
习题25
第2章 数据类型、运算符与表达式27
21 C语言基础27
22 常量30
23 变量32
24 基本运算符与表达式33
25 不同数据类型间的转换和运算39
26 例题精解41
27 本章小结42
习题43
第3章 顺序结构程序设计45
31 C语言中的语句45
32 数据的输入输出47
33 例题精解54
34 本章小结57
习题57
第4章 选择结构程序设计62
41 关系运算和逻辑运算62
42 if语句65
43 switch语句70
44 例题精解72
45 本章小结75
习题75
第5章 循环结构程序设计80
51 概述80
52 while语句80
53 dowhile语句82
54 for语句84
55 循环嵌套88
56 break语句、continue语句和goto语句与标号90
57 例题精解92
58 本章小结97
习题97
第6章 数组105
61 一维数组105
62 二维数组108
63 字符数组和字符串112
64 例题精解117
65 本章小结121
习题122
第7章 指针126
71 指针的基本概念126
72 指针与数组133
73 指针数组和指向指针的指针142
74 例题精解147
75 本章小结149
习题150
第8章 函数154
81 函数的基本概念154
82 函数参数和函数的值155
83 函数的调用157
84 数组作为函数参数158
85 指针作为函数参数161
86 嵌套调用与递归调用163
87 存储类型166
88 命令行参数170
89 例题精解171
810 本章小结175
习题175
第9章 编译预处理181
91 宏定义181
92 文件包含184
93 条件编译185
94 例题精解186
95 本章小结188
习题189
第10章 结构体与共用体192
101 结构体192
102 共用体208
103 枚举211
104 用户定义类型212
105 例题精解213
106 本章小结214
习题215
第11章 位运算219
111 位运算的概念219
112 位运算219
113 位域(位段)223
114 本章小结226
习题226
第12章 文件228
121 文件概念228
122 文件指针229
123 文件的打开与关闭230
124 文件的读写231
125 文件的定位 *** 作238
126 文件的错误检测240
127 本章小结241
习题241
附录243
1 常用字符与ASCII代码对照表243
2 C语言运算符的优先级与结合性244
3 C库函数245
4 常见错误信息表252
下载地址:
以上就是关于谁能给我发一个谭浩强的《C语言程序设计》最新版的电子书,应该是今年的第三版了吧,谢谢全部的内容,包括:谁能给我发一个谭浩强的《C语言程序设计》最新版的电子书,应该是今年的第三版了吧,谢谢、我要c语言第三版谭浩强8.3的答案、谁有谭浩强著的C程序设计第三版课后习题答案等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)