C语言1
C语言第1章C语言程序设计ppt课件

售市场份额高达60%以上
8
• 印度“硅谷”班加罗尔,可能就在一群横 七竖八躺在马路边的流浪者的正上方,赫 然悬挂着一幅巨大的某某.COM网络公司 的广告牌。
9
中印软硬件对比
2000年上半年 中国
印度
硬件与通信产品 86.12亿美元 出口额
55.9亿美元
20
四、 C语言的特点
1、C语言简洁、紧凑、方便、灵活 C语言一共只有32个关键字,9种控制语句,程序书写自由,
主要用小写字母表示。 #include "stdio.h" void main() {
int a,b, s; scanf("%d,%d",&a,&b); s=a*b; printf("s is %d\n",s);
的目标代码效率低10へ20%。
27
• 8、C语言适用范围大,可移植性好 C语言有一个突出的优点就是适合于多种操 作系统,如DOS、UNIX,也适用于多种机 型。
28
五、 简单的C语言程序介绍
用C语言编写的程序称为C语言源程序, 简称为C程序。
29
【例1.1】输出一行信息。
#include <stdio.h>育 从50年代起在全国陆续建起了6个“印度理工学院” (IIT)。 我国计算机方面的专门人才只有15万人,比印度要少 20万人。
• 语言 几乎人人懂英语是印度发展信息产业上的独有优势。
• 成本 印度编程人员的工资只有发达国家的1/8到1/5
12
1.4 我国软件的发展
• 巨大的内需 • 基础设施不错 • 社会的稳定
}
C语言(一)

C语言程序设计主讲教师:马驰Email:teacher_ma@本课程讲述如何使用C语言进行真正的编程。
C 语言是目前软件开发者们最主要的编程语言。
这也是它受到广泛传播并且成为标准的原因。
本课程将侧重学习一个具体问题的算法化的过程。
本课程还将学习在实际编程过程中应该掌握的基本技巧。
以及用C编程的风格和艺术。
要写出一个好的程序,不仅仅是敲一些代码,功能正确。
还应该简单易读。
在学习的示例中,我们强调的是简单、实用的原则。
本课程是如何组织的?第一部分基础第二部分简单程序设计第三部分高级程序设计算法概念、编程原理、编程风格、基本数据类型定义、算术运算符及表达式顺序结构、选择结构、循环结构、数组的定义及应用、程序设计过程函数、变量的存储类别、指针、结构体与共用体、文件·计算机与程序·计算机中的数据·程序设计由程序控制计算机完成人们想做的工作。
由0/1代码组成的二进制数,也可以表示为十六进制数和八进制数。
在20世纪80年代,结构化的程序设计是最主要、最通用的程序设计方法。
程序=数据结构+算法在编写一个程序中,需要对两个方面进行描述:(1)对数据的描述(数据流):指定数据的类型和数据的结构。
(不同的语言对数据的定义不同,我们将学习C语言的数据类型和数据结构)(2)对操作的描述(控制流):要指定操作的步骤,既算法。
(算法具有通用性,脱离于语言之外,是程序设计的灵魂)什么是算法(Algorithm)?就是为了解决一个特定的问题而采取的确定的、有限的、按照一定次序进行的、缺一不可的执行步骤。
在计算机能执行的算法就是计算机算法。
计算机算法可以分成两大类:数值运算算法和非数值运算算法。
注意:为了有效地利用计算机解决实际问题,在设计算法时不仅要保证计算机执行算法的正确性,还要考虑算法的质量,选择适合于具体问题的算法。
例1:猴子吃桃问题。
有一堆桃子不知数目,猴子第一天吃掉一半并多吃了一个,第二天照此方法,吃掉剩下桃子的一半加一个,天天如此,到第十天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个?算法写成:(1)a1=1{第10天的桃子数,A1的初始值};i=9{计数器的初值为9};(2)a0=2*(A1+1){计算当天的桃子数};(3)a1=a0;{将当天的桃子数作为下一次计算的初值};(4)i=i-1;(5)若i>=1,继续循环执行(2);(6)输出A0的值。
C语言第1章vc

P3
main( ) { int a,b,x; double c,y,z; c=4.0; y=sqrt(c); a=10; b=20; x=mysum(a,b); z=x+y; printf("z=%lf\n",z); }
int mysum( int m, int n ) { int k; k=m+n; return k; } 程序的运行结果是: z=32.000000
文件math.h
main函数
…… c=4.0; y=sqrt(c); a=10; b=20; x=mysum(a,b); z=x+y; … …
①
② ④ ⑤ ⑥ ⑨ ⑧ ⑦
③
sqrt函数 …… 其它函数 ……
mysum函数
……
本课程的目标
掌握解决简单问题的步骤 用C语言能够实现如下程度的功能
第1章 C语言基础知识
1.1 C语言概述
1.2 简单C程序与上机步骤 1.3 数据类型 1.4 常量与变量 1.5 运算符和表达式
例题链接
例题链接
例1.1 例1.2 例1.3 例1.4
例1.5 例1.8
例1.6 例1.9
例1.7 例1.10
例1.11
例1.14
例1.12
例1.13
例1.17
例1.15
12.300000 12345.669922 12345.670000
…
1.4.4 字符型常量与变量 1.字符型常量
P13
常规字符 用单引号括起来的单个字符 转义字符 用\开头的字符序列
字符常量按其ASCII码值参加整数运算
【例1.11】将常规字符按不同格式输出。 #include <stdio.h> main( ) a-97 A-65 { printf("%c-%d,%c-%d\n",’a’,’a’ ,’A’, ’A’); printf("%d,%c\n",’a’+1,’A’+1); 98 B printf("%d\n",’a’-’A’); 32 }
C语言1-7章复习程序

1(实现简单的加法)#include <stdio.h> // 这是编译预处理命令int main( ) // 定义主函数{ // 函数开始int a,b,sum; // 本行是程序的声明部分,定义a、b、sum为整型变量a = 123; // 对变量a赋值b = 456; // 对变量b赋值sum = a + b; // 进行a+b 的运算,并把结果存放在变量sum 中printf("sum is %d\n",sum); // 输出结果return 0; // 使函数返回值为0} // 函数结束2(两个数比大小输出大值)#include <stdio.h>int main( ) // 定义主函数{ // 主函数体开始int max(int x,int y); // 对被调用函数max的声明int a,b,c; // 定义变量a,b,cscanf("%d,%d",&a,&b); // 输入变量a和b的值c = max(a,b); // 调用max函数,将得到的值赋给cprintf("max=%d\n",c); // 输出c的值return 0; // 返回函数值为0}int max(int x,int y) //定义max函数,函数值为整型, 形式参数x和y为整型{int z; // max函数中的声明部分,定义本函数中用到的变量z为整型if (x > y) z = x;else z = y;return(z); //将z的值返回,通过max带回到调用函数的位置}3(算1-1/2+1/3-1/4........+1/99-1/100)#include <stdio.h>int main( ){int sign=1;double deno=2.0,sum=1.0,term; // 定义deno,sum,term为双精度变量while (deno<=100){sign=-sign;term=sign/deno;sum=sum+term;deno=deno+1;}printf("%f\n",sum);return 0;}4#include <stdio.h>int main ( ){char c1,c2;c1='A'; // 将字符'A'的ASCII代码放到c1变量中c2=c1+32; // 得到字符'a'的ASCII代码,放在c2变量中printf("%c\n",c2); // 输出c2的值,是一个字符printf("%d\n",c2); // 输出c2的值,是字符'a'的ASCII代码return 0;}5(方程求根)#include <stdio.h>#include <math.h> // 程序中要调用求平方根函数sqrt int main ( ){double a,b,c,disc,x1,x2,p,q; // disc是判别式sqrt(b*b-4ac)scanf("%lf%lf%lf",&a,&b,&c); // 输入实型变量的值要用格式声明"%f" disc=b*b-4*a*c;if (disc<0) printf("This equation hav't real roots\n");else{ p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q; // 求出方程的两个根printf("x1=%7.2f\nx2=%7.2f\n",x1,x2); // 输出方程的两个根}return 0;}6(输出BOY)#include <stdio.h>int main ( ){char a='B',b='O',c='Y'; // 定义3个字符变量,并初始化putchar(a); // 向显示器输出字符Bputchar(b); // 向显示器输出字符Oputchar(c); // 向显示器输出字符Yputchar ('\n'); // 向显示器输出一个换行符return 0;}7#include <stdio.h>int main ( ){ char a,b,c; // 定义字符变量a,b,ca=getchar(); // 从键盘输入一个字符,送给字符变量ab=getchar(); // 从键盘输入一个字符,送给字符变量bc=getchar(); // 从键盘输入一个字符,送给字符变量cputchar(a); // 将变量a的值输出putchar(b); // 将变量a的值输出putchar(c); // 将变量a的值输出putchar('\n'); // 换行return 0;}8 (同5,不同写法)#include <stdio.h>#include <math.h> // 程序中要调用求平方根函数sqrtint main ( ){double a,b,c,disc,x1,x2,p,q; // disc是判别式sqrt(b*b-4ac)scanf("%lf%lf%lf",&a,&b,&c); // 输入双精度浮点型变量的值要用格式声明"%lf"disc=b*b-4*a*c;if (disc<0) printf("This equation hav't real roots\n");else{ p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q; // 求出方程的两个根printf("real roots:\nx1=%10.6f\nx2=%10.6f\n",x1,x2); // 输出方程的两个根}return 0;}9(实现三个数从小到大排列)#include <stdio.h>int main(){float a,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a>b){t=a;a=b;b=t;} // 实现a和b的互换if(a>c){t=a;a=c;c=t;} // 实现a和c的互换if(b>c){t=b;b=c;c=t;} // 实现b和c的互换printf("%5.2f,%5.2f,%5.2f\n",a,b,c);return 0;}10(swich 语句应用)#include <stdio.h>int main(){char grade;scanf("%c",&grade);printf("Your score:");switch(grade){ default: printf("data error!\n");break;case 'A': printf("85~100\n");break;case 'B': printf("70~84\n");break;case 'C': printf("60~69\n");break;case 'D': printf("<60\n");break;}return 0;}11(break swich复合语句)#include <stdio.h>int main(){void action1(int,int),action2(int,int);char ch;int a=15,b=23;ch=getchar();switch(ch){case 'a':case 'A': action1(a,b);break;case 'b':case 'B': action2(a,b);break;default: putchar('\a');}return 0;}void action1(int x,int y){printf("x+y=%d\n",x+y);}void action2(int x,int y){printf("x*y=%d\n",x*y);}12(判断闰年)#include <stdio.h>int main(){int year,leap;scanf("%d",&year);if (year%4==0){if(year%100==0){if(year%400==0)leap=1;elseleap=0;}elseleap=1;}elseleap=0;if (leap)printf("%d is ",year);elseprintf("%d is not ",year); printf("a leap year.\n");return 0;13(同上)#include <stdio.h>int main(){int year,leap;printf("enter year:");scanf("%d",&year);if((year%4==0 && year%100!=0) || (year%400==0)) leap=1;elseleap=0;if (leap)printf("%d is ",year);elseprintf("%d is not ",year);printf("a leap year.\n");return 0;}14(同上)#include <stdio.h>#include <stdbool.h>int main(){int year;bool leap;scanf("%d",&year);if (year%4==0){if(year%100==0){if(year%400==0)leap=true;elseleap=false;}elseleap=true;}elseleap=false;if (leap==true)printf("%d is ",year);elseprintf("%d is not ",year);printf("a leap year.\n");return 0;}15(求根,并且要先判断是否有根)#include <stdio.h>#include <math.h>int main(){double a,b,c,disc,x1,x2,realpart,imagpart;scanf("%lf,%lf,%lf",&a,&b,&c);printf("The equation ");if(fabs(a)<=1e-6)printf("is not a quadratic\n");else{disc=b*b-4*a*c;if(fabs(disc)<=1e-6)printf("has two equal roots:%8.4f\n",-b/(2*a));elseif(disc>1e-6){x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2);}else{realpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);printf(" has complex roots:\n");printf("%8.4f+%8.4fi\n",realpart,imagpart);printf("%8.4f-%8.4fi\n",realpart,imagpart);}}return 0;}16(折扣问题)#include <stdio.h>int main(){int c,s;float p,w,d,f;printf("please enter price,weight,discount:"); // 提示输入的数据scanf("%f,%f,%d",&p,&w,&s); // 输入单价、重量、距离if(s>=3000) c=12; // 3000km以上为同一折扣else c=s/250; // 3000km以下各段折扣不同,c的值不相同switch(c){case 0: d=0; break; // c=0,代表250km以下,折扣d=0 case 1: d=2; break; // c=1,代表250到500km以下,折扣d=2%case 2:case 3: d=5; break; // c=2和3,代表500到1000km 以下,折扣d=5%case 4:case 5:case 6:case 7: d=8; break; // c=4-7,代表1000到2000km以下,折扣d=8%case 8:case 9:case 10:case 11: d=10; break; // c=8-11,代表2000到3000km以下,折扣d=10%case 12: d=15; break; // c12,代表3000km以上,折扣d=15%}f = p * w * s * (1 - d / 100); // 计算总运费printf("freight=%10.2f\n",f); // 输出总运费,取两位小数return 0;}5——6章1(1,2两题注意直道型和当型的区别)#include <stdio.h>int main(){int i=1,sum=0; // 定义变量i的初值为1,sum的初值为0while (i<=100) // 当i>100,条件表达式i<=100的值为假,不执行循环体{ // 循环体开始sum=sum+i; // 第一次累加后,sum的值为1i++; // 加完后,i的值加1,为下次累加作准备} // 循环体结束printf("sum=%d\n",sum); // 输出1+2+3…+100的累加和return 0;}2#include <stdio.h>int main(){int i=1,sum=0;do{sum=sum+i;i++;}while(i<=100);printf("%d\n",sum);return 0;}3#include <stdio.h>#define SUM 100000int main(){float amount,aver,total;int i;for (i=1,total=0;i<=1000;i++){printf("please enter amount:");scanf("%f",&amount);total= total+amount;if (total>=SUM) break;}aver=total/i;printf("num=%d\naver=%10.2f\n",i,aver);return 0;}4(continue的用法输出100-200所有不被3整除的数)#include <stdio.h>int main(){int n;for (n=100;n<=200;n++){if (n%3==0)continue;printf("%d ",n);}printf("\n");return 0;}5#include <stdio.h>int main(){int i,j,n=0;for (i=1;i<=4;i++)for (j=1;j<=5;j++,n++){ if(n%5==0)printf("\n"); //控制在输出5个数据后换行if (i==3 && j==1) break; //遇到第3行第1列,终止内循环printf("%d\t",i*j);}printf("\n");return 0;}6(用π/4=1-1/3+1/5-1/7+.......+1/n²求π的近似值,直到发现某项的绝对值小于10的六次方)#include <stdio.h>#include<math.h>int main(){int sign=1; // sign用来表示数值的符号double pi=0.0,n=1.0,term=1.0; // pi代表π,n代表分母,term代表当前项的值while(fabs(term)>=1e-8) // 检查当前项term的绝对值是否大于或等于10的(-6)次方{pi=pi+term; // 把当前项term累加到pi中n=n+2; // n+2是下一项的分母sign=-sign; // sign代表符号,下一项的符号与上一项符号相反term=sign/n; // 求出下一项的值term}pi=pi*4; // 多项式的和pi乘以4,才是π的近似值printf("pi=%10.8f\n",pi); // 输出π的近似值}7#include <stdio.h>int main(){int f1=1,f2=1,f3;int i;printf("%12d\n%12d\n",f1,f2);for(i=1; i<=38; i++){f3=f1+f2;printf("%12d\n",f3);f1=f2;f2=f3;}}8(兔子问题)#include <stdio.h>int main(){int f1=1,f2=1;int i;for(i=1; i<=20; i++) // 每个循环中输出2个月的数据,故循环20次即可{printf("%12d %12d ",f1,f2); // 输出己知的两个月的兔子数if(i%2==0) printf("\n");f1=f1+f2; // 计算出下一个月的兔子数,并存放在f1中f2=f2+f1; // 计算出下两个月的兔子数,并存放在f2中}return 0;}9 注:9 10 两题为判断输入的数是否为素数#include <stdio.h>int main(){int n,i;printf("please enter a integer number,n=?");scanf("%d",&n);for (i=2;i<=n-1;i++)if(n%i==0) break;if(i<n) printf("%d is not a prime number.\n",n);else printf("%d is a prime number.\n",n);return 0;}10#include <stdio.h>#include <math.h>int main(){int n,i,k;printf("please enter a integer number:n=?");scanf("%d",&n);k=sqrt(n);for (i=2;i<=k;i++)if(n%i==0) break;if(i<=k) printf("%d is not a prime number.\n",n);else printf("%d is a prime number.\n",n);}11(此为输出100-200的所有素数)# include <stdio.h># include <math.h>int main(){int n,k,i,m=0;for(n=101;n<=200;n=n+2) // n从100变化到200,对每个n进行判定{ k=sqrt(n);for (i=2;i<=k;i++)if (n%i==0) break; // 如果n被i整除,终止内循环,此时i<k+1if (i>=k+1) // 若j>=k+1,表示n未被整除{printf("%d ",n); // 应确定n是素数m=m+1; // m用来控制换行,一行内输出10个录素数}if(m%10==0) printf("\n"); // m累计到10的倍数,换行}printf ("\n");return 0;}12#include <stdio.h>int main(){char c;c=getchar();while(c!='\n'){if((c>='a' && c<='z') || (c>='A' && c<='Z')){ if(c>='W' && c<='Z' || c>='w' && c<='z') c=c-22;else c=c+4;}printf("%c",c);c=getchar();}printf("\n");return 0;}13(将10个元素的数组依次赋值并且输出各元素的值)#include <stdio.h>int main(){int i,a[10];for (i=0; i<=9;i++)a[i]=i;for(i=9;i>=0; i--)printf("%d ",a[i]);printf("\n");return 0;}14(具有20个元素的数组,前两个元素为1 ,1 以后每个元素的大小为前两个元素大小之和,输出该数组)#include <stdio.h>int main(){int i;int f[20]={1,1};for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];for(i=0;i<20;i++){if(i%5==0) printf("\n");printf("%12d",f[i]);}printf("\n");return 0;}15.#include <stdio.h>int main(){int a[10];int i,j,t;printf("input 10 numbers :\n");for (i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");for(j=0;j<9;j++) // 进行9次循环,实现9趟比较for(i=0;i<9-j;i++) // 在每一趟中进行9-j次比较if (a[i]>a[i+1]) // 相邻两个数比较{t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("the sorted numbers :\n");for(i=0;i<10;i++)printf("%d ",a[i]);printf("\n");return 0;}16(保持数值不变,将2行3列的数组变成3行2列的数组)#include <stdio.h>int main(){int a[2][3]={{1,2,3},{4,5,6}};int b[3][2],i,j;printf("array a:\n");for (i=0;i<=1;i++){for (j=0;j<=2;j++){printf("%5d",a[i][j]);b[j][i]=a[i][j];}printf("\n");}printf("array b:\n");for (i=0;i<=2;i++){for(j=0;j<=1;j++)printf("%5d",b[i][j]);printf("\n");}return 0;}17(利用数组输出字符串)#include <stdio.h>int main(){char c[15]={'I',' ','a','m',' ','a',' ','s','t','u','d','e','n','t','.'};int i;for(i=0;i<15;i++)printf("%c",c[i]);printf("\n");return 0;}18#include<stdio.h>#include<string.h>int main ( ){char str[3][20]; // 定义二维字符数组char string[20]; // 定义一维字符数组,作为交换字符串时的临时字符数组int i;for (i=0;i<3;i++)gets (str[i]); // 读入3个字符串,分别给str[0],str[1],str[2]if (strcmp(str[0],str[1])>0) // 若str[0]大于str[1]strcpy(string,str[0]); // 把str[0]的字符串赋给字符数组stringelse // 若str[0]小于等于str[1]strcpy(string,str[1]); // 把str[1]的字符串赋给字符数组stringif (strcmp(str[2],string)>0) // 若str[2]大于stringstrcpy(string,str[2]); // 把str[2]的字符串赋给字符数组stringprintf("\nthe largest string is:\n%s\n",string); // 输出stringreturn 0;}第7章1 **************(输出How do you do!)**************#include <stdio.h>int main(){void printstar();void print_message();printstar();print_message();printstar();return 0;}void printstar(){printf("******************\n");}void print_message(){printf(" How do you do!\n");}2(输入两个数输出较大值)#include <stdio.h>int main(){ int max(int x,int y);int a,b,c;printf("please enter two integer numbers:");scanf("%d,%d",&a,&b);c=max(a,b);printf("max is %d\n",c);}int max(int x,int y) // 定义max函数{int z; // 定义临时变量z=x>y?x:y; // 把x和y中大者赋给zreturn(z); // 把z作为max函数的伦值带回main函数}3(3与4都为建立个函数可以比较四个数大小并且输出最大值)#include <stdio.h>int main(){ int max4(int a,int b,int c,int d); // 对max4的函数声明int a,b,c,d,max;printf("Please enter 4 interger numbers:"); // 提示输入4个数scanf("%d %d %d %d",&a,&b,&c,&d); // 输入4个数max=max4(a,b,c,d); // 调用max4函数,得到4个数中的最大者printf("max=%d \n",max); // 输出4个数中的最大者return 0;}int max4(int a,int b,int c,int d) // 定义max4函数{int max2(int a,int b); // 对max2的函数声明int m;m=max2(a,b); // 调用max2函数,得到a和b两个数中的大者,放在m中m=max2(m,c); // 调用max2函数,得到a,b,c三个数中的大者,放在m中m=max2(m,d); // 调用max2函数,得到a,b,c,d四个数中的大者,放在m中return(m); // 把m作为函数值带回main函数}int max2(int a,int b) // 定义max2函数{if(a>=b)return a; // 若a>=b,将a为函数返回值elsereturn b; // 若a<b,将b为函数返回值}4#include <stdio.h>void main(){ int max4(int a,int b,int c,int d);int a,b,c,d,max;printf("Please enter 4 interger numbers:");scanf("%d %d %d %d",&a,&b,&c,&d);max=max4(a,b,c,d);printf("max=%d \n",max);}int max4(int a,int b,int c,int d){int max2(int a,int b);int m;m=max2(max2(max2(a,b),c),d); /* 仔细分析此行*/return(m);}int max2(int a,int b){return(a>b?a:b);}5#include <stdio.h>int main(){ int age(int n);printf("NO.5,age:%d\n",age(5)); //输出第5人的年龄return 0;}int age(int n) //定义递归函数{int c;if(n==1) // 如果n等于1c=10; // 年龄为10else // 如果n不等于1c=age(n-1)+2; // 年龄是前一人的年龄加2(如第4人年龄是第3人年龄加2)return(c); // 返回年龄}6(建立个Fac函数使得输入任意数N 输出Y=n*(n-1)*..........*2*1)#include <stdio.h>int main(){ int fac(int n);int n;int y;printf("input an integer number:");scanf("%d",&n);y=fac(n);printf("%lld!=%d\n",n,y);return 0;}int fac(int n){int f;if(n<0)printf("n<0,data error!");else if(n==0||n==1)f=1;else f=fac(n-1)*n;return(f);}7(构造具有10个元素的数组,输出数组的平均值)#include <stdio.h>int main(){ float average(float array[10]); // 函数声明float score[10],aver;int i;printf("input 10 scores:\n");for(i=0;i<10;i++)scanf("%f",&score[i]);printf("\n");aver=average(score); // 调用average函数printf("average score is %5.2f\n",aver);return 0;}float average(float array[10]) // 定义average函数{int i;float aver,sum=array[0];for(i=1;i<10;i++)sum=sum+array[i]; // 累加学生成绩aver=sum/10;return(aver);}8#include <stdio.h>int main(){ int max_value(int array[][4]);int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};printf("Max value is %d\n",max_value(a));return 0;}int max_value(int array[][4]){int i,j,max;max=array[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++)if(array[i][j]>max)max=array[i][j];return (max);}9。
第1章C语言C语言概述

C
语
言 程
Ritchie和Thompson在开发UNIX
序
设
计
第 一 章
C 语 言 概 述
C
语 言
和Unix的设计者Ken Thompson
程 序
接受美国国家技术勋章
设
计
第 一 章
C 语 言 概 述
C 语
C语言发展史
言
程 序
ALGOL 60语言
设
计 将CPL语 言煮干, 提炼出它 的精华
ADD AX, 1
C
语
程序设计语言的故事
言
程
序 设
BASIC语言编写的1+1程序
计
PRINT 1+1
第 C语言编写的1+1程序
一
章
C
#include <stdio.h>
语
main()
言
{
概 述
printf("%d\n", 1+1);
}
C
语
言
程
序
设 计
•
应用编程语言
– 机器语言
– 汇编语言
– Basic
语 前提到的例题.最后我认为你可以自己来写C语言标准函数,比
言 概
如strcpy(); strlen();strcat();最好不要过分依赖库函数.
述
C
语 言
学习C语言的参考书
程
C 序
设 1、轻松学习 程序设计
计 ————揭开计算机与程序设计的奥秘
何勤著
中国电力出版社 2008.8
2、C语言大学实用教程(第2版)
C语言第一章绪论详解

程序书写风格
同一层次大 括号对齐
分层缩进并对齐
24
int a, b, c; printf(“Please input a and b:\n”); scanf(“%d%d”, &a, &b);
c = a; a = b; b = c;
printf(“a = %d b = %d”, a, b) return 0; }
/*输入变量a和b的值*/ /*交换a和b*/ /*输出a和b的值*/
#include<stdio.h>
int add(int x, int y)
/*定义add()函数,求两个数之和*/
{
int z;
z = x + y;
return z;
}
int main(void)
/*定义主函数*/
{
int a,b,c;
printf(“Please input a and b:\n”);
第一章 绪 论
1
程序与程序设计语言
程序(Program)是为实现特定目标或解决特 定问题而用计算机语言编写的命令序列的集合, 是为实现预期目的而进行操作的一系列语句和指 令。用于编写计算机可执行程序的语言称为程序 设计语言,程序设计语言可分为:
机器语言 汇编语言 高级语言
完成两数相加的操作: 机器语言:10110011 …… 汇编语言:add ax, bx 高级语言:C=A+B
⑤ …… }
④
}
13
C语言程序的组成及书写规则
C程序是由一个或多个函数组成的,其中必须要有一个 且只能有一个main( )函数。无论这个函数的位置在哪里 ,程序总是从它开始执行。main( )函数可以调用其它函 数,但是其它函数不能调用main( )函数。
C语言1_7章课后作业答案

C语言1-7章课后作业答案第一章 C语言概述【习题1-1】简述C语言的特点。
答:C语言的特点:C语言简洁、紧凑、使用灵活、方便;运算符丰富;数据结构丰富;C是结构式语言;C语法限制不太严格,程序设计自由度大;C语言允许直接访问物理地址;C语言程序生成代码质量高;C语言适用范围大,可移植性好。
【习题1-2】请从以下的4个选项中选择一个正确答案。
(1)A (2)C (3)B (4)D(5)A (6)C【习题1-3】填空。
(1)英文字母、下划线、数字(2)函数(3) 函数头、函数体(4)独立(5);、#、/*…*/、{、}、 main、main【习题1-4】请指出以下哪些是合法的标识符?哪些又是合法的用户标识符。
101 int 3ip x_1 x+1 count 1234Xy x%y if while a.bc x&y _ _1_112 Abc name x break for x=y合法的标识符有:x_1、int、count、Xy、if、while、Abc、name、x、break、for合法的用户标识符有:x_1、count、Xy、Abc、name、x【习题1-5】简述上机调试运行C程序的操作步骤。
答:上机运行C语言程序的操作步骤为:启动Visual C++ 6.0→建立工程→创建源程序文件→输入(编辑)源程序内容→保存源程序文件→编译源程序文件→连接目标程序→执行程序→开始另一个程序。
【习题1-6】上机运行本章的3个例题。
略【习题1-7】参照本章例题,编写一个C语言源程序,输出以下信息:**************Nice to meet you!**************编写程序如下:#include<stdio.h>void main(){printf("**************\n");printf("Nice to meet you!\n");printf("**************\n");}第二章基本数据类型和运算符【习题2.1】上机编辑并调试本章所有例题。
c语言第1章练习题答案

第一章 C语言概述练习题一、选择题1.C语言是一种( )。
A) 机器语言B) 汇编语言C) 高级语言 D) 低级语言2.以下各项中,不是C语言的特点是( )。
A) 语言简洁、紧凑,使用方便B) 数据类型丰富,可移植性好C) 能实现汇编语言的大局部功能D) 有较强的网络操作功能3.以下表达正确的选项是( )。
A) C语言源程序可以直接在DOS环境中运行B) 编译C语言源程序得到的目标程序可以直接在DOS环境中运行C) C语言源程序经过编译、连接得到的可执行程序可以直接在DOS环境中运行D) Turbo C系统不提供编译和连接C程序的功能4.以下表达错误的选项是〔〕。
A) C程序中的每条语句都用一个分号作为完毕符B) C程序中的每条命令都用一个分号作为完毕符C) C程序中的变量必须先定义,后使用D) C语言以小写字母作为根本书写形式,并且C语言要区分字母的大小写5.一个C程序的执行是从〔〕。
A) 本程序的main函数开场,到main函数完毕B) 本程序文件的第一个函数开场,到本程序文件的最后一个函数完毕C) 本程序文件的第一个函数开场,到本程序main函数完毕D) 本程序的main函数开场,到本程序文件的最后一个函数完毕6.以下表达不正确的选项是〔〕。
A) 一个C源程序必须包含一个main函数B) 一个C源程序可由一个或多个函数组成C) C程序的根本组成单位是函数D) 在C程序中,注释说明只能位于一条语句的后面7.C语言规定:在一个源程序中,main函数的位置( )。
A)必须在程序的开头B)必须在系统调用的库函数的后面C)可以在程序的任意位置D)必须在程序的最后8.一个C语言程序是由( )。
A)一个主程序和假设干个子程序组成B) 函数组成C) 假设干过程组成D) 假设干子程序组成9.以下有4组用户标识符,其中合法的一组是〔〕。
A) For B) 4d C) f2_G3 D) WORD-sub DO IF voidCase Size abc define10. 一个算法应该具有“确定性〞等5个特性,下面对另外4个特性的描述中错误的选项是〔〕。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Output
将这 N 个数按从小到大的顺序重新输出
Sample Input
10 -4 5 12 88 23 -9 2 0 8 10 5 12 3 4 9 -2
Sample Output
-9 -4 0 2 5 8 10 12 23 88 -2 3 4 9 12
#include<stdio.h> int main() { int i,n,temp,k,index; int a[100]; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) { scanf("%d",&a[i]); } for(k=0;k<n-1;k++) { index=k;
Input
多组测试数据,每组输入一个整数 m
Output
输出插入 m 后的数列
mple Output
0 10 20 30 35 40 50 60 70 80 -5 0 10 20 30 40 50 60 70 80 0 10 20 30 40 50 60 70 80 90
for(i=k+1;i<n;i++) if(a[i]<a[index]) index=i; temp=a[index]; a[index]=a[k]; a[k]=temp; } for(i=0;i<n;i++) printf("%d ",a[i]); printf("\n"); } return 0; }
#include<stdio.h> int main() { int i,n,temp,k,index; int a[10]; while(scanf("%d",&n)!=EOF) { for(i=0;i<9;i++) { a[i]=i*10 ; } a[9]=n; k=9; for(i=8;i>=0;i--) { index=k; if(a[i]>a[k]) k=i; temp=a[index]; a[index]=a[k]; a[k]=temp; } for(i=0;i<10;i++) printf("%d ",a[i]); } printf("\n"); return 0; }
Problem C:插入一个数到数列中
Time Limit:1000MS Memory Limit:65536K Total Submit:865 Accepted:487
Description
已有一个排序好的数列:0 10 20 30 40 50 60 70 80,输入一个任意整数 m,按序 插入到正确位置,输出插入 m 后的数列。
Problem A:N 个数从小到大排序
Time Limit:1000MS Memory Limit:65536K Total Submit:1186 Accepted:654
Description
输入一个正整数 N 和 N 个整数,将它们按从小到大的顺序进行排序后输出。
Input
多组测试数据,每组输入一个正整数 N(1≤N≤100)和 N 个整数,用空格分隔。