c语言笔记

发布 2021-05-12 00:53:28 阅读 6476

红色表示提示或者注意,蓝色表示为需要掌握的知识,绿色为蓝色的补充,鲜绿表示没有明白的或者尚未实践的。

简单的排序(利用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.考虑好哪些量会随着循环不断改变。...