第一篇:C语言课后习题
习题
第三章
#include
int d,p;
double r,a,m;
scanf(“%d %d %lf”,&d,&p,&r);
a=(p/(p-d*r));
m=log(a)/log(1+r);
if(p>0&&d>0)
{
if(d<=m*p)
printf(“%.1f”,m);
else
printf(“God”);
}
else
printf(“0.0”);
return 0;}
勾股数
#include
int a,b,c,n;
scanf(“%d”,&n);
for(a=1;a<=n;a++)
{
for(b=1;b<=n;b++)
{
for(c=1;c<=n;c++)
{
if(c*c==a*a+b*b)
{
if(a<=b)
{
printf(“%d %d %dn”,a,b,c);
}
}
}
}
}
return 0;}
第四章
计算分段函数值 #include
float x,y;
scanf(“%f”,&x);
if(x<1)y=x;
else if(x>=1&&x<10)y=2*x-1;
else if(x>=10)y=3*x-11;
printf(“%.2f”,y);
return 0;}
找出三个数中最大的数 #include
int a,b,c,max;
scanf(“%d%d%d”,&a,&b,&c);
max=a>b?a:b;
if(c>max)
max=c;
printf(“%d”,max);
return 0;}
10844成绩等级评分 #include
int x;
scanf(“%d”,&x);
if(x>=0&&x<=100)
{
switch(x/10)
{
case 10:
case 9: printf(“A”);break;
case 8 : printf(“B”);break;
case 7 : printf(“C”);break;
case 6 : printf(“D”);break;
default:
printf(“E”);break;
}
}
else
printf(“error”);
return 0;}
前续和后续字符 #include
char x;
x=getchar();switch(x){ case'0':printf(“first”);printf(“ %c”,x+1);break;case'9':printf(“%c ”,x-1);printf(“last”);break;case'1': case'2': case'3': case'4': case'5': case'6': case'7': case'8': printf(“%c ”,x-1);printf(“%c”,x+1);break;default: printf(“error”);break;
} return 0;}
20秒后的时间 #include
int h,m,s;
scanf(“%d:%d:%d”, &h,&m,&s);
s=s+20;
if(s>59)
{
s=s%60;
m++;
if(m>59)
{
m=m%60;
h++;
if(h>23)
h=0;
}
}
printf(“%02d:%02d:%02dn”, h, m, s);
return 0;}
分期还款
#include
int d,p;
double r,a,m;
scanf(“%d %d %lf”,&d,&p,&r);
a=(p/(p-d*r));
m=log(a)/log(1+r);
if(p>0&&d>0)
{
if(d<=m*p)
printf(“%.1f”,m);
else
printf(“God”);
}
else
printf(“0.0”);
return 0;}
第五章
字母分类统计 #include
char ch;
int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;
while((ch=getchar())!='n')
{
if(ch<=127&&ch>=123)
a++;
else if(ch>=97&&ch<=122)
b++;
else if(ch<=96&&ch>=91)
c++;
else if(ch<=90&&ch>=65)
d++;
else if(ch>=58&&ch<=64)
e++;
else if(ch>=48&&ch<=57)
f++;
else if(ch>=33&&ch<=47)
g++;
else if(ch==32)
h++;
else
i++;
}
printf(“%d %d %d %d”,d+b,f,h,a+c+e+g+i);}
水仙花数
#include
int n,a,b,c;
for(n=100;n<1000;n++)
{
a=n/100;
b=(n%100)/10;
c=n%10;
if(n==a*a*a+b*b*b+c*c*c)
{
printf(“%dn”,n);
}
}
return 0;}
计算数列和
#include
int a=1,n,i,sum=0;
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{
sum=sum+a;
a=a+2;
}
printf(“%d”,sum);
return 0;}
自由落体
#include
int i,n;
double h=100.0,s=0.0,c=100.0;
scanf(“%d”,&n);
{
s=s+c;
h=h/2;
c=2*h;
}
printf(“%.3lf”,s);
printf(“%.3lf”,h);
return 0;}
迭代法求平方根 #include
float x1,x2,a;
x2=1;
scanf(“%f”,&a);
x1=a/x2;
while(fabs(x1-x2)>=1e-5)
{
x1=x2;
x2=0.5*(x1+a/x1);
}
printf(“%.4fn”,x2);
return 0;}
打印三角形
#include
int n,k,i,j;
scanf(“%d”,&n);
for(i=0;i<2*n-1;i++)
{
k=abs(n-1-i);
for(j=0;j { printf(“"); } for(j=0;j { printf(”*“); } printf(”n“); } return 0;} 勾股数 #include int a,b,c,n; scanf(”%d“,&n); for(a=1;a<=n;a++) { for(b=1;b<=n;b++) { for(c=1;c<=n;c++) { if(c*c==a*a+b*b) { if(a<=b) { printf(”%d %d %dn“,a,b,c); } } } } } return 0;} 第六章 18052插入数据 int x,i,t; scanf(”%d“,&x); a[15]=x; for(i=15;i>0;i--){ if(a[i] { t=a[i]; a[i]=a[i-1]; a[i-1]=t; } } 大于平均分 #include int a[10]; int i,sum=0,average,count; for(i=0;i<10;i++) { scanf(”%d“,&a[i]); } for(i=0;i<10;i++) { sum=sum+a[i]; } average=sum/10; count=0; for(i=0;i<10;i++) { if(a[i]>average) count++; } printf(”%d“,count); return 0;} 输出不同的数据 #include int a[20]; int i,t,p=0; for(i=0;i<10;i++) { scanf(”%d“,&a[i]); } for(i=0;i<10;i++) { for(t=0;t if(a[t]==a[i])break; if(t==i)printf(”%dn“,a[i]); } } 主对角线上的元素之和 #include int a[3][4],i,j,sum=0; for(i=0;i<3;++i) { for(j=0;j<4;++j) { scanf(”%d“,&a[i][j]); } } for(i=0;i<3;++i) { sum+=a[i][i]; } printf(”%dn“,sum); return 0;} 1051 鞍点 #include for(j=0;j<4;j++) { scanf(”%d“,&a[i][j]); } } for(i=0;i<3;i++){ max=a[i][0]; for(j=0;j<4;j++) { if(max { max=a[i][j];m=i;n=j; } } for(k=0;k<3;k++) { min=a[m][n]; if(min>a[k][n]) flag=1; } if(flag==0) { t=1; printf(”%dn“,a[m][n]);} flag=0;} if(t==0) printf(”NO“); return 0;} ASCII码值之和的差 #include char s1[80]; char s2[80]; int i,sum1=0,sum2=0; gets(s1); gets(s2); for(i=0;i { sum1+=s1[i]; } for(i=0;i { sum2+=s2[i]; } printf(”%d“,sum1-sum2); return 0;} 第七章 所有数字之和 #include if(n<10) return n; int res=0; res=(n%10)+sum(n/10); return res;} main(){ int n; scanf(”%d“,&n); printf(”%d“,sum(n));} 元音字母 #include int i,k=0; char c; for(i=0;*(s+i)!=' ';i++) { c=*(s+i); switch(c) { case'a': case'e': case'i': case'o': case'u': case'A': case'E': case'I': case'O': case'U':*(s2+k)=c;k++;break; default:break; } } *(s2+k)=' ';} int main(){ char str[81],str2[81]; gets(str); yuan(str,str2); printf(”%s“,str2);} 字符统计 #include int nS=0,a; while(*s!=' ') { a=*s; if(a==' ') nS++; else { if(a>='1'&&a<='9') nN++; else if((a>='a'&&a<='z')||a>='A'&&a<='Z') nL++; } s++; } return nS;} int main(){ char s[81]; int nS; gets(s); nS=statistics(s); printf(”%d%d%dn“,nL,nN,nS); return 0;} 选择排序 #include int i,j,k,tmp; for(i=0;i { k=i; for(j=i+1;j if(a[j] tmp=a[k];a[k]=a[j];a[i]=tmp; } } int main(){ int a[10]; int i; for(i=0;i<10;i++)scanf(”%d“,&a[i]); sort(a,10); for(i=0;i<10;i++)printf(”%dn“,a[i]); return 0;} X的N次方 #include if(n==0)return 1; else return x*F(x,(n-1));} int main(){ int x,n; scanf(”%d%d“,&x,&n); printf(”%d“,F(x,n)); return 0;} 行列互换 #include int temp; temp=*a;*a=*b;*b=temp;} void col(int a[][4],int i,int j){ int k; for(k=0;k<4;k++) swap((*(a+k)+i),(*(a+k)+j));} void row(int a[][4],int i,int j){ int k; for(k=0;k<4;k++) swap((*(a+i)+k),(*(a+j)+k));} int main(){ int a[4][4]; int i,j; for(i=0;i<4;i++) for(j=0;j<4;j++) scanf(”%d“,&a[i][j]); col(a,0,2); row(a,0,2); col(a,1,3); row(a,1,3); col(a,0,3); row(a,0,3); for(i=0;i<4;i++) { for(j=0;j<4;j++) printf(”%d“,a[i][j]); printf(”n“); } return 0;} 学生信息统计 #include int i,j; for(i=0;i { double sum=0,av; for(j=0;j<5;j++) sum=sum+a[i][j]; av=sum/5.0; printf(”%.2f “,av); } printf(”n“);} void average2(double a[][5],int n){ int i,j; for(j=0;j<5;j++) { double sum=0,av; for(i=0;i sum=sum+a[i][j]; av=sum/n; printf(”%.2f “,av); } printf(”n“);} void top(double a[][5],int n){ int i,j; double max; for(j=0;j<5;j++) { max=a[0][j]; for(i=0;i { if(a[i][j]>max)max=a[i][j]; } printf(”%.2f “,max); } } int main(){ double a[10][5]; int i,j; for(i=0;i<10;i++) for(j=0;j<5;j++) scanf(”%lf",&a[i][j]); average(a,10); average(a,10); top(a,10); return 0;} C语言程序设计实验报告 学院 数学与信息技术 班级 学号 11130730 姓名 指导教师 实验1 简单程序设计 1.实验目的 (1)熟悉C语言开发环境并掌握在该环境下如何编辑、编译、连接和运行一个C程序。(2)通过运行一个简单的C程序过程,初步了解C程序的基本结构及特点。 2. 实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)输入三个整数,请把这三个数由小到大输出。试编写多种方法。(3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 3.实验重点和难点 (1)C程序是由一个个函数构成,当一个函数调用另一个函数时,需要对被调函数作声明。(2)用户自定以的函数最好写在一个头文件中,在需要的地方用文件包含命令即可。 (3)system(“cls”)函数的作用是清屏,它的声明在头文件stdlib.h中。如果是在Linux操作系统的gcc环境下,清屏用system(”clear”)。 4. 常见错误 (1)数据声明或语句后面缺少分号。(2)对被调函数没有声明。 (3)没有main函数或者有多个main函数。 5. 程序代码 #include t=a;a=b;b=t;} if(a>c){t=a;a=c;c=t;} if(b>c){t=b;b=c;c=t;} printf(“%5.2f,%5.2f,%5.2fn”,a,b,c);} 6. 实验结果 7. 心得体会 刚开始学习C语言,有一些小问题,数据声明时,分号会忘记,语句后面缺少分号。而且n斜杠会写反,有时会忘记声明函数。 实验2 顺序结构程序设计 1.实验目的 (1)掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量。(2)掌握数据的输入输出的方法,能正确使用各种格式控制符。(3)掌握算术运算符和赋值运算符。 2. 实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)输入圆半径和圆柱高,求圆周长、圆面积、圆球表面积、圆球体积和圆柱体积。输入输出要有文字说明,输出结果取小数点后2位。(3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 3.实验重点和难点 (1)用scanf和printf对数据进行输入输出时,不同的数据类型用不同的格式控制符。(2)scanf函数中的格式控制后面应当是变量地址,而不是变量名。 4. 常见错误 (1)变量没有定义,直接使用。 (2)企图利用整数除以整数得到精确结果。例如1/4结果不是0.25而是0,1/4.0结果才是0.25。(3)printf和scanf函数中格式控制符的个数与变量或变量地址的个数不一致。(4)scanf函数的地址表列因该是变量地址,而不是变量名。 (5)scanf函数在格式控制字符串中除了格式说明以外还有其他字符时,在输入数据时(6)没有在对应的位置输入与这些字符相同的字符。 5. 程序代码 #include s=r*r*p;//圆面积 sq=4*p*r*r;//圆球表面积 vq=4.0/3.0*p*r*r*r;//圆球体积 vz=p*r*r*h;//圆柱体积 printf(“圆周长为: l=%6.2fn”,l);printf(“圆面积为: s=%6.2fn”,s);printf(“圆球表面积为: sq=%6.2fn”,sq);printf(“圆球体积为: vq=%6.2fn”,vq);printf(“圆柱体积为: vz=%6.2fn”,vz);return 0;} 6. 实验结果 7. 心得体会 这边是基础的用scanf和printf对数据进行输入输出,不同的数据类型用不同的格式控制符。有点小睇混淆。才刚开始,还是觉得挺简单的。 实验3 选择结构程序设计 1.实验目的 (1)了解C语言表示逻辑变量的方法(2)学会正确使用关系运算符和逻辑运算符。(3)熟练掌握if语句和switch语句。 2. 实验要求 (1)认真阅读和掌握和本实验相关的教材内容。(2)把百分制成绩转换成5级记分制,要求分别用if else 和switch语句。 90分以上(包括90): A 80至90分(包括80):B 70至80分(包括70):C 60至70分(包括60):D 60分以下:E (3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 3.实验重点和难点 (1)注意关系运算符==和复制运算符=的区别。(2)if和else的匹配原则。 (3)在switch语句中正确使用break。 4. 常见错误 (1)赋值运算符=和关系运算符等号=搞混。(2)在if语句为复合语句时,忘记写{}。(3)if语句出现嵌套时,没正确配对。(4)switch语句中,没正确使用break。 5. 程序代码 #include printf(“n输入有误,请重新输入!”); scanf(“%f”,&score);} switch((int)(score/10)){ case 10: case 9:grade='A';break;case 8:grade='B';break;case 7:grade='C';break;case 6:grade='D';break;case 5: case 4: } case 3: case 2: case 1: case 0:grade='E';} printf(“成绩是%5.1f,相应的等级是%cn”,score,grade);return 0;6. 实验结果 7. 心得体会 赋值运算符=和关系运算符等号=搞混。在if语句为复合语句时,忘记写{}。if语句出现嵌套时,没正确配对。 实验4 循环结构程序设计 1.实验目的 (1)熟练掌握循环语句中的for语句、while语句和do while语句的使用方法,以及这三种循环语句之间的转换方法。 (2)掌握编写循环结构程序的方法。 2. 实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)通过键盘输入任意两个正整数,求其最大公约数和最小公倍数。(3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 3.实验重点和难点 (1)循环结构程序的设计方法。 (2)while和do while循环之间的转换方法。 (3)getch函数从键盘接收一个字符,该函数被调用后程序会暂停,等待按任意键,再继续执行后续的语句,以便我们观察中间结果。在VC++下需要包含conio.h头文件,在Linux下需要包含头文件curses.h。由于在Linux下getch函数还需要与其它函数配合使用才能达到上面所说的功能并且在编译时还要指定链接所使用的库文件,所以在Linux环境建议使用两次调用getchar函数来替换getch函数。 4. 常见错误 (1)循环体为复合语句时,没用{}括起来。 (2)在while()和for()后面添加分号,使得循环体为空语句。(3)for括号里的分号和逗号用错。 (4)循环嵌套时,内循环的初始条件和循环体没正确设计好。 5. 程序代码 #include printf(“最小公倍数:%dn”,p);return 0;} 6. 实验结果 7. 心得体会 循环体为复合语句时,没用{}括起来。在while()和for()后面添加分号,使得循环体为空语句。for括号里的分号和逗号用错。循环嵌套时,内循环的初始条件和循环体没正确设计好。 实验5 数组的应用 1.实验目的 (1)掌握一维数组和二维数组的定义和引用。(2)掌握字符数组和字符串函数的使用。(3)掌握与数组有关的算法(特别是排序算法)。 2. 实验要求 (1)认真阅读和掌握和本实验相关的教材内容。(2)用选择法对10个整数排序。(3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 3.实验重点和难点 (1)在循环中,数组元素的引用。 (2)起泡排序法、选择排序法和插入排序法。 4. 常见错误 (1)数组定义时,没规定数组长度或者长度为一变量。(2)循环中数组元素的下标没正确表示。 (3)起泡排序、选择排序和插入排序算法没理解透。 (4)起泡排序、选择排序和插入排序中,循环的初始条件和终止条件出现错误。(5)字符串的复制和比较直接使用赋值运算符和关系运算符。 5. 程序代码 #include for(j=i+1;j<10;j++) if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } printf(“选择排列:n”);for(i=0;i<10;i++) printf(“%5d”,a[i]);printf(“n”);return 0;} 6. 实验结果 7. 心得体会 数组定义时,没规定数组长度或者长度为一变量。循环中数组元素的下标没正确表示。起泡排序、选择排序和插入排序算法没理解透。起泡排序、选择排序和插入排序中,循环的初始条件和终止条件出现错误。字符串的复制和比较直接使用赋值运算符和关系运算符。 实验6 函数的应用 1.实验目的 (1)掌握函数的定义和调用方法。 (1)掌握函数实参与形参的对应关系,以及“值传递”的方式。(1)掌握函数的嵌套调用和递归调用的方法。 (1)掌握全局变量和局部变量,动态变量以及静态变量的概念和使用方法。 2. 实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)写一个函数,用“起泡法”对输入的10个字符按由小到大的顺序排列,主函数通过调用它实现题目要求。 (3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 3.实验重点和难点 (1)函数的定义和调用方法。 (2)函数的实参数为数组时,形参的形式以及实参和形参之间的数据传递方式。(3)函数的递归调用。 4. 常见错误 (1)函数没定义,就被调用。(2)函数定义了,又没被调用。(3)定义函数时,形参没规定类型。(4)函数调用时,实参前加类型。(5)被调函数没有声明 (6)嵌套调用和递归调用没理解透,使用错误。(7)全局变量和局部变量有效范围没能正确区分。 5. 程序代码 #include第二篇:c语言课后习题