红色表示提示或者注意,蓝色表示为需要掌握的知识,绿色为蓝色的补充,鲜绿表示没有明白的或者尚未实践的。
简单的排序(利用if)
#include<>
void main()
int a,b,c,t;
printf("input n:");
scanf("%d%d%d",&a,&b,&c);
if(a>b)
if(a>c)
if(b>c)
printf("%d %d %d",a,b,c);
do…while与while在一般情况下,若二者的循环部分一样,其结果也一样,但如果当循环条件一开始就为假,结果将不一样。
85页7题。
#include<>
#include<>
#include<>
void main()
float a,b,c,m;
scanf("%f%f%f",&a,&b,&c);
m=b*b-4*a*c;
if(m==0)
printf("单根为:%f",-b/2);
else if(m<0)
printf("复述根为:%f+i%f,%f-i%f",-b/2,sqrt(-m)/2,-b/2,sqrt(-m)/2);
else printf("实根为:%f+%f,%f-%f",-b/2,sqrt(m)/2,-b/2,sqrt(m)/2);
待解决。#include<>
void main()
char c;
for(;c=getchar()!n';)
printf("%c",c);
这是什么意思。
asd__press any key to continue
而当直接按enter时,则一个也不出现。
88页程序改写。
#include<>
#include<>
void main()
char ch;
int len1,len2;
len1=0;len2=0;
puts("type in a sentence,then press");
while((ch=getch())r')
printf("句子中有效字符个数为:%d,非有效字符个数为:%d",len1,len2);
continue的妙用,也是较典型的程序。
#include<>
void main()
int m;
for(m=100;m<=200;m++)
printf("");
96页程序改写。
#include<>
void main()
int i,j,n;
for(i=1;i<10;i++)
printf("%4d",i);
printf("n");
for(i=1;i<10;i++)
for(j=1;j<10;j++)
if(j>=i) printf((j==9)?"4d":"4d",i*j);
elsefor(n=1;n<=4;n++)
printf("
99页解方程抄写。
#include<>
#include<>
void main()
float x,x0,f,f1;
printf("input the first number:");
scanf("%f",&x);
dowhile(fabs(x-x0)>=1e-5);
printf("the root of equation is:%10.7f",x);
要掌握牛顿渐进法,此为求方程的解得一种办法。此外,还有用迭代法求平方根,用二分法求方程根的算法,均应掌握!(具体参见谭浩强130页)
自编程序输出一个数的倒序数。
#include<>
#include<>
void main()
int a,b=0;
printf("input a number:");
scanf("%d",&a);
dowhile(fabs(a)>=10);
printf("所输入数的倒序数为:%d",b*10+a);
102页程序改写(打印数列)
#include<>
void main()
long int f1,f2;
int i=1;
f1=1;f2=1;
while(i<=20)
103页10题。
#include
#include<>
int main()
int x,y,z;
for(x=1;x<=40./3;x++)
for(y=x;y<=40./3*2;y++)
for(z=y;z<=40;z++)
if(x+y+z==40&&x*x+y*y+z*z==600)
printf("根为:x=%d,y=%d,z=%d",x,y,z);
system("pause");
return 1;
此题的关键是确定了x、y、z的范围,而且在这之中又涉及到类型转换的问题。
102页5题(电脑不能执行之问题分析)
#include<>
void main()
int a,b;
a=1;b=0;
while(b<2)
b=b+1/a++;
printf("最大数为:%d其和为:%d",a-1,b);
还有下面的这个程序,也不能运行:
#include
#include<>
int main()
float sum=0;
int n=1;
dowhile(sum<2);
printf("最大数为:%d其和为:%f",n-1,sum);
system("pause");
return 1;
这两个程序问题相同,均出在式子:sum=sum+1/n;中,其中1为int型,其除以任何一个大于1的数将为零,也就是当n=2时开始,sum将永远小于2,程序进入死循环!其解决办法为将1改为.
或者在其前加上强制符(float)。
另外还有个问题:就是此程序的运行结果与题意不符,例如,修改后的程序及其结果如下:
#include
#include<>
int main()
float sum=0;
int n=1;
dowhile(sum<2);
printf("最大数为:%d其和为:%f",n-1,sum);
system("pause");
return 1;
其结果为:最大数为:4
其和为:2.083333
为此,应加入一个中间变量,将运行的结果暂时存放,则修改后的程序为:
#include
#include<>
int main()
float sum,a=0;
int n=1,t;
don++;
while(a<2);
printf("最大数为:%d其和为:%f",t,sum);
system("pause");
return 1;
其结果为:最大数为:3
其和为:1.833333
103页102题:甲乙两队乒乓球比赛,甲队 a、b、c,乙队x、y、z,已知a不和x比,c不和x、z比。编程找出对阵名单。
#include<>
void main()
char i,j,k;
for(i='x';i<='z';i++)
for(j='x';j<='z';j++)
结果为:the order is:
a---zb---x
c---y此题实际上是穷举法,其有两个判断的标准:不同的人不能有相同的对手,还有题目中的三个已知条件。其思路的突破点为定义了三个变量,分别表示甲组三个人的对手,不易想出,实际上为一种算法,应掌握!
谭浩强版129页3题:
#include<>
#include<>
void main()
int a,sum,i,t;
sum=0;a=2;
for(i=1,t=0;i<=5;i++)
//注意此处的循环及中间变量t的设置。
printf("sum为:%d,t为:%d",sum,t);
4题:求1!+2!+…20!
C语言笔记
第一课时。c语言标准格式。include vidomain 以 开头的语句称为预处理指令。include语句不是必须的,但是如果一旦有该语句就必须把它放在文件开始处是standared input output header的缩写standared 标准input 输入output 输出header...
C语言笔记
c语言算法和数据类型。整型。基本类型 字符型注释 基本类型的特点是其不可实型 单精度型以再分解为其他类型双精度型数组型。数据结构 构造型 结构体型共用体型指针型空类型。一 常量。define 语句不以分号结尾,它可以放在源 的任何位置。不过在定义常量时,只有在它定义后的源 中才有效。是一个修饰符,在...
c语言笔记
1.if中别忘了 而不是 2.写完程序别忘了检查前后大括号 小括号是否完全照应。3.遇到几分之几的分数可以方程两边同时乘以一个数来消去分母。4.写指针题时看准指针对应的是行还是列。例 int a 4 3 int p a 0 列指针。int ptr 3 a 行指针。5.考虑好哪些量会随着循环不断改变。...