哈工大(威海)C语言考前复习

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


20
以下对一维整型数组a的正确说明是 A) int a(10); B) int n=10,a[n]; C) int n; scanf(“%d”,&n); int a[n]; D) #define SIZE 10 int a[SIZE];


21
main() { int x[N], y1[N], y2[N]; int i, j, n1, n2, t, p;
28
f(x)的功能是计算分段函数:
y=
x2+2x+1 x<0 0 x=0 3 x>0
void main( ) { int k; float x; for(k=1; k<=10; k++){ scanf("%f", &x); printf("y=%f\n", f(x)); } }
#include <stdio.h> ⑴ { if (x<0) ⑵ ; else ⑶ ; else return 3; }
float.c
10
整数和浮点数的混合运算
下列程序的输出结果是16.00,请填空。 main() { int a=9, b=2; float x= , y=1.1, z; z=a/2+b*x/y+1/2; printf("%5.2f\n", z ); }

11
宏替换
#define f(a, b, x) a*x+b printf("%d, %d\n", f(3,2,1), f(6, 5, f(3, 2, 1)));
16
写Βιβλιοθήκη Baidu下列程序段的输出结果
int main() { printf("%d",f(3)) ; } f (int n) { return ((n>0) ? 2*f(n-1)+f(n-2) : -1); }
recursion_test.c
17
写出下列程序段的输出结果
#include "stdio.h" void main() { char c; for(c=getchar(); getchar()!='#'; c=getchar()) putchar(c);
}
getPut.c
18
不用中间变量,实现两个数的互换
main() { int a=1, b=2; a=a+b; b=a-b; a=a-b; printf("%d,%d\n", a, b ); }
19
一维数组的初始化
以下能对一维数组a进行正确初始化的语句是 A) int a[10]=(0,0,0,0,0); B) int a[10]={}; C) int a[]={0}; D) int a[10]={10*1};
14
循环终止前,表达式3也要执行一次
#include <stdio.h> main() { int i, sum=0; for(i=1; i<=3; i++, sum++) sum+=i; printf(“%d\n”, sum); }
15
函数的参数传递
void fun(int *x, int *y) { printf("%d %d\n", *x, *y); *x=3; *y=4; } main() { int x=1,y=2; fun(&y,&x); printf("%d %d\n",x, y); }
)+
));
1_6.C
}
若程序中出现书写格式错误 请按语法规则分析
32


若二维数组a有m列,则计算任一元素a[i][j]在数组 中位置的公式为 。 假设a[0][0]位于数组的第一个位置上。 i*m+j+1

假设a[0][0]位于数组的第0个位置上。 i*m+j
33
int xtoi(
char *s
26
静态变量问题:只生一次,只死一次
# include <stdio.h> int f(int m) { static int k=2; k++; return k+m; } void main( ) { int s; s=f(2); printf("%d, %d\n", s, f(s)); }
27
)
{ int k=0 , d=0; /* for(k=0; s[k] == „ ' || s[k] == '\t'; k++);
本行程序无用
*/
while(s[k] >= '0' && s[k] <= '9' || s[k] >= 'a' && s[k] <= 'f' )
{
if (s[k] >= '0' && s[k] <= '9') d = d * 16 + s[k] - '0'; if (s[k] >= 'a' && s[k] <= 'f') d = d * 16 + s[k] - 'a' + 10; k++;
12
分清if语句的三种形式
#include<stdio.h> main() { int a,b,c,d; a=c=0; b=1; d=20; if(a) d=d-10; else if(!b) d=0; if(!c) d=25; else d=15; printf(“d=%d\n”,d); }
13
}
} return d;
1_9.C 34
分清条件语句的结构
main(){ int x=2,y=-1,z=2; if(x<y) if(y<0) z=0; else z+=1; printf("%d\n",z); } void main() { int i; for(i=0;i<3;i++) switch(i) { case 0:printf("%d",i); case 2:printf("%d",i); default:printf("%d",i); } }


Casting converts one type to another 如:
int x = 1; (double) x; double d = 3.4; (int) d;
9
强制类型转化
float x1, x2; x1=3/2; x2=x1/2; printf("%d, %.1f", (int)x1, x2) ;
29
函数sort 使用冒泡法将一维整型数组中各 元素按值从大到小排序

void sort( int a[ ], int n) { int k, j, t; for(k=1; k<n; k++) for( ⑷ ; j < n-k; j++) if( ⑸ ) ⑹ }
30
类型转化
void main( ) { int *p; p=( )malloc(sizeof( strcpy(p, "student"); printf(" %s\n", p); free(p) }
n1=n2=0; for(i=0;i<N;i++){ scanf(“%d”, &x[i]); if(x[i] % 2==0) y1[n1++]=x[i]; else y2[n2++]=x[i]; } for(i=1; i<n1; i++) for(j=0; j<n1-1; j++) if(y1[j]>y1[j+1]){ t=y1[j]; y1[j]=y1[j+1]; y1[j+1]=t; }
7
Operators
Assignment: = Increment (++) and decrement (--) 给整型变量加 1 的四种方法: i = i + 1; i += 1; i++; There are many such compound operators ++i
8

强制类型转化
for(i=0; i<n2-1; i++){ p=i; for(j=i+1; j<n2; j++) if(y2[p]<y2[j]) p=j; if(p!=i){ t=y2[i]; y2[i]=y2[p]; y2[p]=t; }
}
for(i=0; i<n1; i++) printf("%d, ", y1[i]); for(i=0; i<n2; i++) printf("%d, ", y2[i]); }
void main(){ int x=1, y=5, z=9; p(&x, y); printf("%d, %d, %d#", x, y, z); }
test_10.c
24
#include <stdio.h> void main() { int m=0, sum=0; char c, oldc='+'; do { c=getchar(); if(c<='9'&&c>='0') m=10*m+c - '0'; else { if(oldc=='+') sum += m; else sum -= m; m=0; oldc=c; printf("%d, ", sum); } } while( c!= '='); }
Review for exam
转义字符

为了打印特殊字符而提供
\b \n \t \r \\ \" \„

backspace newline tab carriage return backslash double quote single quote
2
基本类型

6 (or so) primitive types:
sort_test.c
22
参数传递
#include <stdio.h> void p(int *x,int y) { ++ *x; y --; } void main() { int x=0, y=3; p(&x, y); printf("%d, %d",x, y); }
23
#include <stdio.h> int z; void p(int *x, int y){ ++*x; y--; z=*x+y+z; printf("%d, %d, %d#", *x, y, z); }
test_9.c
25
void melon (int g, int * h); int main (void) { int a = 1, b = 2; melon ( a, &b ); printf ( "a = %d, b = %d", a, b ); } void melon (int b, int * c) { b++; *c = *c + b; }


float double char
short int long
实数
a single character

整数
3
真假判断
在while(x)语句中的x与下面条件表达式等价的 是 。 A) x==0 B) x==1 C) x!=1 D) x!=0

4
溢出Overflow

例如:
byte b = 100; b = b * 100;

一个 byte 能存放的最大值 +127 This is called overflow


编译器不做任何提醒!

向下溢出: b -= b*100;
5
条件表达式


表示条件:a<x<b或x<c的C语言表达式是 (a<x)&&(x<b)||(x<c)

6
短路
int a=1,b=1,c; c=a||--b; printf(“%d,%d”,c,b) 上述程序的打印结果为
1_3.C
31
));
二维数组中变量的访问及其地址的计算
main( ) {
int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
int i, j; for(i=0; i<3; i++) { for(j=0; j<4; j++) printf("%d, ", *(*( printf("\n"); }
输入1个长整数,求各位数字的平方和。 例如:输入-123,输出14。
#include <stdio.h> void main( ) { int digit; long in,s; scanf("%ld", &in); ⑺ ; ⑻ ; while(in>0){ ⑼ ; s=s+digit*digit; ⑽ ; } printf("sum=%ld\n", s); }
default的位置即使在最前面, 也不会先执行
int n='c'; switch(n++) { default: printf("error");break; case 'a': case 'A': case 'b': case 'B':printf("good");break; case 'c':case 'C':printf("pass"); case 'd':case 'D':printf("warn"); }
相关文档
最新文档