版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《计算概论》期终复习2010年12月28日知识点
总结预编译声明(宏定义、头文件包含)自定义函数的声明intmain(){……return0;}自定义函数的定义C程序的基本结构主函数的定义考试时
可以复用
的
一个程序框架 #include<stdio.h> #include<math.h> #include<string.h> intmain(){
return0; }在此处插入你的代码数据类型
的
输入输出
修饰符
%d int类型
%f float类型
%lf double类型
%c
字符类型
%s
字符串标准输入输出函数
的
使用标准输出函数:printf(…)标准输入函数:scanf(…)inta,b,c;scanf(“%d
%d”,&a,&b);c=a+b;printf(“%d
+%d=%d”,a,b,c);分支结构分支结构根据
分支判断表达式
的
值(真或假),决定程序的后继执行路线单分支结构
if(表达式){…//分支1
}任何类型为int,double或float的表达式如果
表达式
的
值
为
真,
则执行
分支1
中的语句;否则,
跳过
分支1
中的语句。#include<stdio.h>intmain(){ inta; scanf(“%d”,&a); if(a<0){
a=-a; }
printf("%d\n",a);
return0;}接收用户输入的一个整数,输出这个整数的绝对值。双分支结构
if(表达式){…//分支1
}else{…//分支2
}如果
表达式
的
值
为
真,
则执行
分支1
中的语句;否则,
执行
分支2
中的语句。多分支结构
if(表达式1){…//分支1
}elseif(表达式2){…//分支2
}……{ ……}elseif(表达式n){…//分支n}如果
表达式1
的
值
为
真,
则执行
分支1
中的语句;否则如果
表达式2
的
值
为
真,
则执行
分支2
中的语句;……否则如果表达式n
的
值
为
真,
则执行
分支n
中的语句。#include<stdio.h>intmain(){
inta; scanf(“%d”,&a);
if(a<0){
a=-a; }elseif(a>0){
a=a/2; }
printf("%d\n",a);
return0;}#include<stdio.h>intmain(){
inta; scanf(“%d”,&a);
if(a<0){
a=-a; } if(a>0){
a=a/2; }
printf("%d\n",a); return0;}for循环语句
for(表达式1;表达式2
;表达式3){
循环体语句;}for语句
的
一般形式表达式1;表达式2循环体语句;表达式3;真假入口出口
#include<stdio.h> intmain(){
intsum,i;
for(i=1;i<=100;i++){ sum+=i; } printf(“%d”,sum);
return0; }for语句
示例数据输入
的
一个模式数据输入
的
一个模式关于输入:
输入的第一行
是一个整数n(n<100),
表示将要输入的整数个数;
其后n行,每行输入一个整数。
#include<stdio.h> #defineN100 intmain(){
intn,data[N],i;
scanf(“%d”,&n);
for(i=0;i<n;i++){
scanf(“%d”,&(data[i])); ……
}
……
return0; }由两个
整型操作数
构成的
算术运算表达式+ - * / %由两个
整型操作数
构成的算术运算表达式假设a,b为两个类型为int的表达式a+ba-ba*ba/b类型均为int11/33由两个
整型操作数
构成的算术运算表达式:
取余运算符号
%假设a,b为两个类型为int的表达式a
%
b11%32括号的作用3+2*4(3+2)*4
在
不知道运算符号优先级别
时,
请
使用括号
明确指定运算的顺序。a&&b||
ca&&
(b||
c)字符串
的
比较
和
赋值字符串
的
比较
不能使用
==str1
==
str2✗“字符串比较”函数
intstrcmp(字符串A,字符串B);
当
字符串A
和
字符串B相等时,
该函数
返回0对于
字符串A
和
字符串B,
当且仅当
两者的长度相等,且
结尾字符‘\0’前的对应字符均相等
时称:这两个字符串相等,字符串
的
赋值不能使用
=str1
=
str2;✗“字符串复制”函数
strcpy(目标字符串,源字符串);功能:把
源字符串
赋值给
目标字符串intmain(){ charzfc_src[50],zfc_tgt[50]; gets(zfc_src); strcpy(zfc_tgt,zfc_src); printf(“%s\n”,zfc_tgt); return0;}关于
字符
的
一些问题如何
判断:
一个字符变量的值
是否为空格字符?#include<stdio.h>intmain(){ charzf;
scanf(“%c”,&zf); if(zf==‘’){ printf(“thisisaspace\n”); }else{ printf(“thisisn’taspace\n”); }
return0;}如何
判断:
一个字符变量的值
是否为小写字母?小写字母
包括:a,
b,
c,d,…,x,y,z#include<stdio.h>intmain(){ charzf;
scanf(“%c”,&zf); if(zf==‘a’||zf==‘b’||zf==‘c’||zf==‘d’||zf==‘e’
||zf==‘f’||zf==‘g’||zf==‘h’||zf==‘i’||zf==‘j’
||zf==‘k’||zf==‘l’||zf==‘m’||zf==‘n’||zf==‘o’
||zf==‘p’||zf==‘q’||zf==‘r’||zf==‘s’||zf==‘t’
||zf==‘u’||zf==‘v’||zf==‘w’||zf==‘x’||zf==‘y’
||zf==‘z’){ printf(“thisisalowerchar\n”); }else{ printf(“thisisn’talowerchar\n”); }
return0;}有没有更好的方法?ASCII
编码表字符a,b,…,z的
编码值
顺序递增#include<stdio.h>intmain(){ charzf;
scanf(“%c”,&zf); if(zf==‘a’||zf==‘b’||zf==‘c’||zf==‘d’||zf==‘e’
||zf==‘f’||zf==‘g’||zf==‘h’||zf==‘i’||zf==‘j’
||zf==‘k’||zf==‘l’||zf==‘m’||zf==‘n’||zf==‘o’
||zf==‘p’||zf==‘q’||zf==‘r’||zf==‘s’||zf==‘t’
||zf==‘u’||zf==‘v’||zf==‘w’||zf==‘x’||zf==‘y’
||zf==‘z’){ printf(“thisisalowerchar\n”); }else{ printf(“thisisn’talowerchar\n”); }
return0;}if((zf>=‘a’)&&(zf<=‘z’)){#include<stdio.h>intmain(){ charzf;
scanf(“%c”,&zf); if((zf>=‘0’)&&(zf<=‘9’)){ printf(“thisisadigitalchar\n”); }else{ printf(“thisisn’tadigitalchar\n”); }
return0;}效果是什么?判断一个字符变量的值
是不是
数字字符#include<stdio.h>intmain(){ charzf;
scanf(“%c”,&zf); if((zf>=‘0’)&&(zf<=‘9’)){ printf(“%d\n”,
); }else{ printf(“notadigitalchar\n”); }
return0;}完形填空,实现如下功能:当用户输入一个数字字符后,输出这个数字字符对应的数字一个稍微复杂一点的题目题目描述:接收用户输入的一个字符串(不含空格,长度<10)如果这个字符串是一串数字字符,则输出这一串字符对应的整数的值的一半;否则,输出false示例输入
示例输出124 62123 611?3 false解题思路第1步:接收用户输入的一个字符串第2步:判断是不是一个数字字符串第3步:如果是一个数字字符串,
则将其转换为相应的整数,并除以2后输出;
否则,
输出false第1步:接收用户输入的一个字符串charstr[10];scanf(“%s”,str);第2步:判断是不是一个数字字符串inti,len;intflag;//标志位:0表示是数字字符串,否则不是flag=0;len=strlen(str);for(i=0;i<len;i++){ if(str[i]<‘0’||str[i]>‘9’){ flag=1; break;
}}第3步:如果是一个数字字符串,
则将其转换为相应的整数,并除以2后输出;
否则,
输出falseintresult;if(flag==0){ ……printf(“%d”,result/2);}else{ printf(“false”);}在这里继续插入代码第3步:如果是一个数字字符串,
则将其转换为相应的整数,并除以2后输出;
否则,
输出falseintresult;if(flag==0){ ……printf(“%d”,result/2);}else{ printf(“false”);}在这里继续插入代码for(i=0;i<len;i++){ result+=(str[len-1-i]–‘0’)*pow(10,i);}这个程序有错误:result没有赋初值。解题思路第1步:接收用户输入的一个包含空格的字符串第2步:将单词从字符串中提取出来
并放到一个字符串数组中第3步:按照单词的长度对字符串排序第4步:输出最长和最短单词第1步:接收用户输入的一个包含空格的字符串charsentence[1000];gets(“%s”,sentence);第2步:将单词从字符串中提取出来
并放到一个字符串数组中chardanci[50][100];inti,k,n,len;k=0;n=0;len=strlen(sentence);for(i=0;i<len;i++){ if(str[i]!=‘’){ danci[n][k]=str[i]; k++; }else{
danci[n][k]=‘\0’; n++; k=0; }}danci[n][k]=‘\0’;danci里面有几个单词?n?n+1第3步:按照单词的长度对字符串排序第4步:输出最长和最短单词请同学们课后自己动手!解题思路第1步:接收用户输入的一个包含空格的字符串第2步:将单词从字符串中提取出来
并放到一个字符串数组中第3步:按照要求对特定的单词进行替换第4步:按照顺序输出字符串数组中的单词,
单词之间以空格作为间隔。关于数列问题的程序示例问题1:
如何求一个数的平方根如何求一个数的平方根?doublesqrt(double);这个函数是如何实现的呢?如何求一个数的平方根?对于一个正数a,其平方根可以采用如下的迭代公式进行计算:
x1=1
xn+1=(xn+a/xn)/2误差要求:
当|xn+1-xn|<0.00001时,停止计算#defineJINGDU0.00001#include<stdio.h>intmain(){ doublea,x2,x1; scanf(“%lf”,&a); x1=1; x2=(x1+a/x1)/2;
while(x2-x1>JINGDU||x1-x2>JINGDU){
x1=x2; x2=(x1+a/x1)/2; } printf(“%d%d\n”,x,y); return0;}x1=1xn+1=(xn+a/xn)/2问题2:
求
裴波那契数列的第n个数intmain(){ intn,F0,F1,F2; scanf(“%d”,&n);
F0=0; F1=1;
if(n==0){ printf(“
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论