C语言程序设计教程

发布时间:   来源:文档文库   
字号:
C语言程序设计教程习题答案总主编杨路明主审郭浩志
文件摘自CSDN习题1
1、算法描述主要是用两种基本方法:第一是自然语言描述,第二是使用专用工具进行算法描述
2、c语言程序的结构如下:
1、c语言程序由函数组成,每个程序必须具有一个main函数作为程序的主控函数。
2、"/*"与"*/"之间的内容构成c语言程序的注释部分。3、用预处理命令#include可以包含有关文件的信息。4、大小写字母在c语言中是有区别的。
5、除main函数和标准库函数以外,用户可以自己编写函数,程序一般由多个函数组成,这些函数制定实际所需要做的工作。例如:
voidmain({
inta,b,c,s;a=8;b=12;c=6;s=a+b*c;
printf("s=%d\n",s;}
3、c语言的特点:
1、c语言具有结构语言的特点,程序之间很容易实现段的共享;

2、c语言的主要结构成分为函数,函数可以在程序中被定义完成独立的任务,独立地编译成代码,以实现程序的模块化。
3、c语言运算符丰富,运算包含的范围很广;4、c语言数据类型丰富。
5、c语言允许直接访问物理地址,即可直接对硬件进行操作,实现汇编语言的大部分功能;
6、c语言语法限制不太严格,程序设计自由度大,这样是c语言能够减少对程序员的束缚;
7、用c语言编程,生成的目标代码质量高,程序执行效率高,可移植性好;4、合法标识符:AB12、leed_3、EF3_3、_762、PAS、XYZ43K2
不合法标识符:a*b2、8stu、D.K.Jon、if、ave#xy、#_DT5、C.D5、F2:将当前编辑器中文件存盘F10:调用主菜单
F4:程序运行到光标所在行
Ctrl+F9:当前编辑环境下,进行编译、连接且运行程序;Alt+F5:将窗口切换到DOS下,查看程序运行结果6、(1:
********************welcomeyouverygood
********************(2:
pleaseinputthreenumber;5,7,8maxnumberis:87、main
8、Userscreen、Alt+F5
9、标识符必须是字母或下划线开头,大小写字母含义不同。由数字、字母和下划线组成;
关键字是一种语言中规定具有特定含义的标识符。关键字不能作为变量或函数名来使用,用户只能根据系统的规定使用它们。
10、选择主菜单File项下拉子菜单中Save项或直接按F2键存盘。习题2
1、符合C语法规定的常数为:0x1e、"ab\n"、1.e52、(1:
错误如下:intx,y=5,z=5,aver;
x=7;
aver=(x+y+x/3;
结果如下:AVER=5(2:
错误如下:charc1='a',c2='b',c3='c';
printf("a=%db=\'%c\'\"end\"\n",a,b;
结果如下:a=3b='A'"end"
aabccabc

3、
4、(1:9,11,9,10(2:3,1,0,0(3:11,19,31,15、(1:0(2:0
(3:9.500000(4:90(5:10(6:10(7:65(8:4
(9:4.500000(10:1(11:0(12:20(13:06、(5
7、求x的绝对值
8、c>(max=a>b?a:b?c:max;9、B10、D
习题3
1、输入函数scanf的参数错误,应该为:scanf("%f",&k;2、|12341234|3、ff104、1,3,15、原字符串
左边加空格再加字符串本省,字符个数总和为56、scanf("%d,%d,%c,%c",&a1,&a2,&c1,&c2;7、printf("a+b=%d\n",a+b;printf("a-b=%d\n",a-b;printf("a*b=%d\n",a*b;printf("a/b=%d\n",a/b;
printf("(floata/b=%f\n",(floata/b;printf("a%b=%d\n",a%b;8、voidmain({
floatr;floats,c;
printf("pleaseinputthenumber:";scanf("%f",&r;if(r>=0

{
s=3.14*r*r;c=2*3.14*r;
printf("s=%f,c=%f\n",s,c;}else
printf("youinputnumberiserror!";
}
9、voidmain({
intn;
printf("pleaseinputthenumber:";scanf("%d",&n;
if(n>=100&&n<=999
printf("%d%d%d",n%10,(n/10%10,n/100;else
printf("youinputnumberiserror!";
}
10、voidmain({
inti,j,k;
scanf("%d,%d,%d",&i,&j,&k;
((i%2!=0?1:0+(j%2!=0?1:0+(k%2!=0?1:0==2?printf("YES\n":printf("NO\n";}
11、voidmain({
chara;
scanf("%c",&a;
printf("%c,%c,%c",a-1,a,a+1;printf("%d,%d,%d",a-1,a,a+1;}
12、voidmain({
floata,b,c,s,Area;
scanf("%f,%f,%f",&a,&b,&c;
if(a+b>c||a+c>b||b+c>a{
s=(a+b+c/2;
Area=sqrt(s*(s-a*(s-b*(s-c;printf("%f\n",Area;}else
printf("youinputthenumberiserror!\n";

}
习题41:2:3:4:5:6:
020
(x<30&&x>20||(x<-100***a=25,b=14,c=16***37
if(a<=bprintf("1";elseprintf("2";
7、
#includevoidmain({chara,b,t1,t2;
scanf("%c,%c",&a,&b;t1=a>b?a:b;
t2=a
voidmain({inttemp1=0,temp2=0,x,y,i=1;
printf("Pleaseinput(x,y:";scanf("%d,%d",&x,&y;while((i*y<=x{if(x==(i*y{temp1=1;break;}
temp2=i;i++;
}
if(temp1
printf("%d/%d=%d",x,y,i;
else
printf("%d/%d--->
shang=%d,yushu=%d",x,y,temp2,x-y*temp2;
getch(;
}9、
#includevoidmain({floatx,y,m=0,n=0;
scanf("%f,%f",&x,&y;n=(x-2*(x-2;

m=(y-2*(y-2;if((m+n<=1
printf("(%.3f,%.3fIntheyuan",x,y;else
printf("(%.3f,%.3foutoftheyuan",x,y;getch(;
}10、
#includevoidmain({inttemp=0,month,year;
printf("Pleaseinput(year,month:";scanf("%d,%d",&year,&month;
if((year%400==0||(year%4==0&&year%100!=0temp=1;
if(month==2{if(tempprintf("%dyear%dmonthhave29",year,month;
elseprintf("%dyear%dmonthhave28",year,month;
}
elseif(month%2==0
printf("%dyear%dmonthhave30",year,month;
elseprintf("%dyear%dmonthhave31",year,month;getch(;
}11、
switch(a/10{case5:m=4;break;
case4:m=3;break;case3:m=2;break;case2:m=1;break;default:m=5;
}12、方法一:
#includevoidmain({intx,y;
scanf("%d",&x;if(x<0&&x>-5
y=x-1;
elseif(x==0
y=x;
elseif(x>0&&x<8
y=x+1;

printf("%d",y;getch(;
}
方法二:
#includevoidmain({intx,y;
scanf("%d",&x;if(x<8&&x>-5{if(x==0y=x;
elseif(x>0&&x<8y=y=x+1;elsey=x-1;
printf("%d",y;
}elseprintf("Inputerror!!!";getch(;
}
方法三:
#includevoidmain({intx,y,i;
scanf("%d",&x;if(x<8&&x>-5{if(x==0i=1;
elseif(x>0&&x<8i=2;elsei=3;
}elsei=4;switch(i{case1:y=x;printf("%d",y;break;
case2:y=x+1;printf("%d",y;break;case3:y=x-1;printf("%d",y;break;case4:printf("Inputerror!!";break;
}getch(;
}
习题5
1、voidmain({
intn,value;inti,count=0;floataverage=0;longintsum=0;scanf("%d",&n;
for(i=0;i<n;i++

{
scanf("%d",&value;if(value%2==0{
sum+=value;count++;
}
}
average=sum/(floatcount;
printf("theaverageis%f\n",average;}2、
#include"stdio.h"voidmain({
charch;
intzm=0,sz=0;ch=getchar(;
while(ch!='*'{
if((ch>='A'&&ch<='Z'||(ch>='a'&&ch
<'z'
zm++;
if(ch>='0'&&ch<='9'
sz++;
ch=getchar(;
}
printf("zm=%d;sz=%d\n",zm,sz;}3、
voidmain({
longi_value;intsum=0;inttemp=0;
scanf("%ld",&i_value;
if(i_value<0{printf("youinputtheintis
error!\n";return;}
for(;;{
temp=i_value%10;

i_value=i_value/10;sum+=temp;
printf("%d+",temp;if(i_value==0break;
}
printf("\b=%d\n",sum;}4、
#include"stdio.h"voidmain({
charch;
ch=getchar(;
while(ch!='.'{
if((ch>='A'&&ch<='Z'{
ch=ch+32;putchar(ch;
}
elseif((ch>='a'&&ch<'z'{
ch=ch-32;putchar(ch;
}else{
putchar(ch;
}
ch=getchar(;}
printf("\n";}5、
voidmain({
floatsum=200;intcount=0;for(;;{
sum=sum+sum*0.045;

count++;
if(sum>500break;
}
printf("the%dyearslatercomplete!\n",count;}6、
voidmain({
inti,temp=0,bit=0;
for(i=1;i<=999;i++{
if(i%3==0{
temp=i;
for(;temp!=0;{
bit=temp%10;
if(bit==5{printf("%d,",i;break;}temp=temp/10;
}
}
}
printf("\b\n";}
7、
#includeintmain(void{
intsteps=29,i=1;
while(steps%7{
steps=(30*++i-1;}
printf("Totalsteps:%d\n",steps;return0;}8、main(

{
inti,j,k,n;
printf("thenarcissusnumberis:\n";for(n=100;n<1000;n++{i=n/100;j=n/10-i*10;k=n%10;
if(i*i*i+j*j*j+k*k*k==nprintf("%d\n",n;}
}9、main(
{floati,j,temp,n,sum;intt;
i=2;j=1;sum=0;scanf("%d",&t;
for(n=1;n<=t;n++{sum=sum+i/j;
temp=i;i=i+j;j=temp;}
printf("2/1+3/2+5/3+8/5+13/8+...=%f\n",sum;}10、
voidmain({
intnWidth,a,b;
scanf("%d",&nWidth;
for(a=(nWidth%2;a<=nWidth;a+=2{
for(b=0;bchar="char"chout=''int="int"nleft="(nWidth"a="a"int="int"nright="(nWidth+a/2;"
if="if">=nleft&&bchout='*'printf="printf"printf="printf"void="void"main="main"int="int"i="1,j=1;"
for="1;i<=9;i++"for="1;j<=i;j++"printf="%d",i,j,i*j;"printf="printf"include="include"stdio="stdio"void="void"main="main"char="char"c="c"count1="count1"count2="count2"int="int"
count1="0,count2=0;"sum1="sum1"sum2="sum2"int="int"sum1="0,sum2=0;"int="int"flage="0;"c="getchar(;"while="while"if="="flage="1;"if="="sum1="(c-48;count1++;}"else="else"if="if"
sum2-="(c-48;flage=0;count2++;}}"c="getchar(;"printf="printf"
printf="printf"void="void"main="main"int="int"i="i"int="int"s="0;"for="100"i="i"i="i"s="0;"for="1;"j="j"i-1="i-1"j="j"if="if"i="="s="s"j="j"if="="i="i"include="include"stdio="stdio">#include

voidmain({
intn;
longk=1;floate=1;n=1;clrscr(;
while(fabs(1.0/k>=0.000001{
n++;
e=e+1.0/k;k=k*n;
}
printf("%f\n",e;
}15、
#include"math.h"main(
{floatx0,x1,x2,f0,f1,f2;x1=-10;
f1=2*x1*x1*x1-4*x1*x1+3*x1;x2=10;
f2=2*x2*x2*x2-4*x2*x2+3*x2;do
{x0=(x1+x2/2;
f0=2*x0*x0*x0-4*x0*x0+3*x0;if((f0*f1<0
{x2=x0;f2=f0;}else
{x1=x0;f1=f0;}
}
while(fabs(f0>1e-6;
printf("______2*x*x*x-4*x*x+3*x=0______\n";printf("therootis%f\n",x0;}
习题61、
#includeintdivisor(inta,intb{intr;
while((r=a%b!=0{a=b;
b=r;
}

returnb;
}
intmultiple(inta,intb{intd;
d=divisor(a,b;returna*b/d;
}
voidmain({inta,b,c,d;
printf("intput(a,b:";scanf("%d,%d",&a,&b;c=divisor(a,b;d=multiple(a,b;
printf("\ndivisor=%d\t\tmultiple=%d",c,d;
}2、
#includevoidtongji(chara[]{intb[3]={0,0,0},i=0;
while(a[i]!='\0'{
if((a[i]<=90&&a[i]>=65||(a[i]<=122&&a[i]>=97
b[0]++;
elseif(a[i]<=57&&a[i]>=48
b[1]++;
else
b[2]++;
i++;
}
printf("zimuhave:%d;shuzihave:%d;qita
have:%d",b[0],b[1],b[2];
getch(;
}
voidmain({chara[100];
printf("Pleaseinputastring:";gets(a;tongji(a;
}3、
#includeintflower(intn{intx=0,i,j,k;
i=(n%10;

j=(n/10%10;k=(n/100;
x=i*i*i+j*j*j+k*k*k;if(x==nreturn1;elsereturn0;
}
voidmain({inti,n;
printf("Pleaseintputn:";scanf("%d",&n;
if(n>999||n<100printf("Inputerror!!!";else{for(i=100;iif="if"i="i"getch="getch"
include="include">#defineSWAP(a,bt=b;b=a;a=t;main({floatx,y,t;
printf("Entertwonumber(x,y:";scanf("%f,%f",&x,&y;SWAP(x,y;
printf("\n\nExchanged:x=%f,y=%f",x,y;getch(;
}5、
#includeintfib(intn{intp;
if(n==0p=0;elseif(n==1p=1;
elsep=fib(n-1+fib(n-2;returnp;
}
voidmain({intn;
printf("Pleaseinputfib:";scanf("%d",&n;
printf("\n\nfibonacci=%d",fib(n;
}6、
#includelongfac(intn{longf;
if(n==0f=1;elsef=n*fac(n-1;

returnf;
}
voidmain({intm,n;
longf;
printf("Pleaseinput(m,n:";scanf("%ld,%ld",&m,&n;f=fac(n+m+fac(n;
printf("\n\nfibonacci=%ld",f;
}7、
#includevoidlist({inti,j;
for(i=1;i<=9;i++{for(j=1;j<=i;j++
printf("%d*%d=%d",i,j,i*j;printf("\n";}
}
voidmain({list(;}8、
#includeinthe(intn{inti,s=0;
for(i=1;iif="=0s+=i;"return="return"s="s"
void="void"main="main"int="int"i="i"for="1;i<30000;i++"for="1;j<30000;j++"if="=j&&(he(j==i&&(i!=j"printf="printf">%d",i,j;
}
}9、
#include#definemax100structwork{longsid;
charname[15];
}worker[max];intsize=0;
structwork*set_list({do
{printf("\n\nPleaseinput(sid,name:";

scanf("%ld,%s",&worker[size].sid,worker[size].name;size++;
}while(worker[size-1].sid!=0;returnworker;
}
voidpaixu(structworka[]{inti,j,k;longt;charv[15];
for(i=0;ik="i;"for="i;j
if="if">a[j].sidk=j;
if(k!=i{t=a[i].sid;a[i].sid=a[j].sid;a[j].sid=t;
strcpy(v,a[i].name;strcpy(a[i].name,a[j].name;strcpy(a[j].n
ame,v;
}
}
for(i=0;i<=size-2;i++
printf("sid:%ld\tname:%s\n\n",a[i].sid,a[i].name;
getch(;
}
voidselect(structworka[]{inti=0,found=1;longnum;
printf("Inputselectsid:";scanf("%ld",#
for(i=0;i<=size-2;i++{if(a[i].sid==num
{found=0;
printf("%ld:%s",num,a[i].name;break;
}
}
if(foundprintf("\n\nNOthissid!!!";getch(;
}
voidmain({structwork*p;
p=set_list(;paixu(p;select(p;
}10、
#includefloatjiecheng(intn{longs=1;inti;

for(i=1;i<=n;i++s=s*i;returns;
}
floatchengfang(floatx,intn{floats=1;inti;
for(i=1;i<=n;i++s=s*x;returns;
}
floatf(floatx,intn{floats=1,t=0;inti=1,j=-1;
for(i=1;i<=n;i++{t=j*chengfang(x,2*i/jiecheng(2*i;
s+=t;j=j*j;
}
returns;
}
main({floats1=0,s2=0,s3=0,s4=0,x=5.6;intn=7;
s1=f(x,n;
s2=f(x+2.3,n;s3=f(x-3.2,n+3;s4=s1/(s2+s3;printf("%f",s4;getch(;
}
习题7
1:(1)D
(2)A(3)D(4)B(5)D2:
(1)1
5446
782
34
(2)63333:
(1)a[8]=data;
k>=0
a[k]=temp
break
k<=8

(2"%s"str[i]<='Z'c[str[i]+26-'a']++i+'a'
4、/*题目:求一组成绩的平均分数以及高于平均分的成绩。*/#include#definemax100voidmain({
floata[max],s=0,average=0;inti,n;
printf("PleaseinputN:";/*输入要处理元素的个数*/scanf("%d",&n;
printf("\nPleaseinput%dgeshu:",n;/*输入90,85,92,
77,80,62*/
for(i=0;iscanf="scanf"s="a[i];"average="s"n="n"
printf="%.2f\n",average;"for="0;iif="if">average
printf("%.2f",a[i];/*输出90.00,85.00,92.00*/
}
5、/*题目:编写程序,输入一组整数,将他们排序后由小到大输出。*/#include#definemax100voidmain({
inta[max],j,i,k=0,t=0,n=0;
printf("PleaseinputN:";/*输入要处理元素的个数*/scanf("%d",&n;
for(i=0;iscanf="scanf"for="0;in-1="n-1"
k="i;"for="i+1;jn-="n-"if="if">a[j]
k=j;
if(k!=i/*元素排序前下标与排序后下标不符,则交换其
值*/
{t=a[i];a[i]=a[k];a[k]=t;}
}
printf("\n\n";
for(i=0;iprintf="printf"a="a"x4="x4"
include="include">#includevoidmain({
intd[4][4]={{0,0,0,0}},i,j;clrscr(;

printf("\nPleaseinput16num:";for(i=0;i<4;i++for(j=0;j<4;j++
scanf("%d",&d[i][j];for(i=0;i<4;i++for(j=0;j<4;j++
if(d[i][j]>d[j][i]/*左下角元素大于右上角元素则交
换*/
d[j][i]=d[i][j];
for(i=0;i<4;i++{printf("\n\n\n\n\n";/*为了保持每行的间隔与每列的相同
*/
for(j=0;j<4;j++
if(j>=i
printf("\t%d",d[i][j];/*为了使位数不同的数输出
依然保持三角型*/
else
printf("\t";
}}
7、*题目:输入一个3x4的二维数组,然后分别按行和按列输出。*/#include#includevoidmain({
intd[3][4]={{0,0,0,0}},i,j;
printf("Pleaseinput12num:";for(i=0;i<3;i++for(j=0;j<4;j++
scanf("%d",&d[i][j];printf("\n\nAnhang:";for(i=0;i<3;i++for(j=0;j<4;j++
printf("%d",d[i][j];
printf("\n\nAnlie:";for(i=0;i<4;i++for(j=0;j<3;j++
printf("%d",d[j][i];
}
8、/*题目:编写程序,将两个字符串连接起来,不用strcat函数。*/#include#includevoidmain(

{
chars1[50],s2[50];inti=0,j=0,t=0;
printf("Inputone:";gets(s1;
while(s1[i]!='\0'i++;/*统计s1中字符个数*/printf("\n\nInputsecond:";gets(s2;
while(s2[j]!='\0'j++;/*统计s2中字符个数*/for(t=0;t<=j;t++/*把s2中字符连接到s1后面*/{s1[i]=s2[t];i++;}
printf("\n\none+second:";puts(s1;
}
9、/*输入一行字符串,统计字符对ab的个数。*/#include#include#defineMAX100voidmain({
charstr[MAX];inti=0,flage=0;intcount=0;
printf("\nPleaseinputastring:";gets(str;while(str[i]{if(str[i]=='a'
flage=1;
elseif(str[i]=='b'{
if(flage==1
{count++;flage=0;}}
elseflage=0;i++;
}
printf("thedoublechar\"ab\"countis%d\n",count;
}10、
#include/*相对于第一种方法,这种方法能把同为最大的字符串全部打印出来。*/
#include
intpaixu(inta[],intn/*构造对长度为n的数组排序的函数*/{
inti,j,t,k,temp;

for(i=0;ik="i;"for="i+1;j
if="if">a[j]
k=j;
if(k!=i{t=a[i];a[i]=a[k];a[k]=t;}
}
temp=a[n-1];
returntemp;/*返回最大字符串的长度的值*/
}
voidmain({
charstr1[50],str2[50],str3[50],str4[50],str5[50],str6[50];charstr7[50],str8[50],str9[50],str10[50];intcount[10]={0},temp[10]={0},i,j;intpaixu(inta[],intn;
for(i=1;i<=10;i++/*输入10个字符串*/{
printf("\nPleaseinput%dstring:",i;if(i==1{
gets(str1;while(str1[count[0]]{count[0]++;temp[0]++;}}
if(i==2gets(str2;while(str2[count[1]]{count[1]++;temp[1]++;}}
if(i==3
{
{
gets(str3;while(str3[count[2]]{count[2]++;temp[2]++;}}
if(i==4
{gets(str4;while(str4[count[3]]{count[3]++;
temp[3]++;}}
if(i==5
{gets(str5;while(str5[count[4]]{count[4]++;
temp[4]++;}}
if(i==6
{gets(str6;while(str6[count[5]]{count[5]++;
temp[5]++;}}
if(i==7
{gets(str7;while(str7[count[6]]{count[6]++;
temp[6]++;}}
if(i==8

{gets(str8;while(str8[count[7]]{count[7]++;
temp[7]++;}}
if(i==9
{gets(str9;while(str9[count[8]]{count[8]++;
temp[8]++;}}
if(i==10{
gets(str10;while(str10[count[9]]{count[9]++;temp[9]++;}}
}
j=paixu(temp,10;for(i=1;i<=10;i++{
if(count[i-1]==j{/*只要字符串长度与最大长度相等
就打印出来*/
switch(i{case1:puts(str1;printf("\n";break;
case2:puts(str2;printf("\n";break;case3:puts(str3;printf("\n";break;case4:puts(str4;printf("\n";break;case5:puts(str5;printf("\n";break;case6:puts(str6;printf("\n";break;case7:puts(str7;printf("\n";break;case8:puts(str8;printf("\n";break;case9:puts(str9;printf("\n";break;case10:puts(str10;printf("\n";break;
}}}
}11、
/*给数组a输入m个按升序排列的数,给数组b输入n个按降序排列的数*//*将ab中的元素按降序排列存在数组c中。*/#includevoidmain({
inta[100],b[100],c[100],i,m,n,j,k,temp=0,s;printf("\nm=";scanf("%d",&m;/*确定M的个数*/printf("\nn=";scanf("%d",&n;/*确定N的个数*/printf("\nPleaseinputmgeshu:";
for(s=0;sscanf="scanf"printf="printf"input="input"n="n"ge="ge"shu:="shu:"for="0;sscanf="scanf"i="m-1;j=0;k=0;"i="i"for="for"if="=0"a="a"if="b[j]"a="b[]中当前元素*/"c="b[j];"k="k"j="j"else="else"c="a[i];"k="k"for="for"b="b"c="b[j];"j="j"

k="k"if="=n"b="1*/"temp="1;break;"if="=1break;"temp="1,全部处理结束*/"if="b[j]&&(i!=0&&(j!=n"c="b[j];"j="j"k="k"if="if">b[j]&&(i!=0&&(j!=n
{c[k]=a[i];i--;k++;}if(j==n/*b[]处理到完*/{for(;;/*把b[]数组接到c[]后面*/
{if(i==0/*如果a[]处理完,结束。并做标记temp=1*/
{c[k]=a[i];temp=1;break;}c[k]=a[i];i--;k++;}
}if(temp==1break;/*标记temp=1,全部处理结束*/}
for(s=0;sprintf="printf"c="c"getch="getch">

本文来源:https://www.2haoxitong.net/k/doc/15aaef0aa7c30c22590102020740be1e650ecc91.html

《C语言程序设计教程.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式