求素数
1. 判断m是否是素数
2. 编程求100~300之间的全部素数的和
求最大公约数
1.求两个整数m 和n 最大公约数。
穷举法
1. \百马百担\问题。有100匹马驮100担货,每匹大马每次驮3担,每匹中马每次驮2担,
2匹小马每次分驮1担。编写程序求大、中、小马的匹数(大、中、小马的匹数均不得为0)。
2. 一个素数加上1000以后是43的倍数,求满足这个条件的最小素数。
3. 有2个小于40的正整数a和b,a的平方与b的和是1053,b的平方与a的和是873,
请编程求满足条件的a和b的值。(提示:满足条件的a,b的值唯一)
4. 一个自然数除以2余1,除以3余2,除以4余3,除以5余4,除以7余5,求满足这
个条件的最小的自然数?
5. 求所有的\水仙花数\之和。所谓\水仙花数\是指一个三位数,其各位数字的立方和等于
该数本身。例如153是一个\水仙花数\,因为:153=1*1*1+5*5*5+3*3*3。
五、数组 一)数组语法
(1)数组的定义[ ]中必须是常量
(2)C语言规定只能逐个引用数组元素而不能一次引用整个数组 (3)引用一维数组每个元素的的方法: for(i=0;i<长度;i++) a[i];
(4)引用二维数组每个元素的的方法: for(i=0;i<第一维长度;i++)
for(j=0;j<第一维长度;j++) a[i][j];
(5)引用时,下标的值从0开始,不要超过数组的范围
(6)数组初始化时所给的数据不能超过[ ]中给定的长度,若所给的数据不足长度,其它的为0 例题:
1. 数组定义为int a[10][10];,则数组a有( )个数组元素。
A)100 B)81 C)20 D)121 2. 以下一维数组 a的正确定义是( )
A)int a(10); B)int n=10,a[n]; C) int n; D)#define N 10 Scanf(“%d”,&n); int a[N]; Int a[n];
3. 设有语句”int a[]={3,4,5,9,8,7};”则表达式a[1]-a[4]的值是( )
A)-6 B)6 C)-4 D)2
4. 以下不能正确定义二维数组的是( )
A) int a[2][2]={ {4}, {5}};B) int a[][2]={4,5,6,7};
C) int a[2][2]={ {4},5,6}; D) int a[2][]={{4,5},.{6,7}};
9/48
二)字符串
1)字符串和字符数组的区别 2)字符串函数的应用 例题:
1. 以下程序的输出结果是( )
#include
{ char st[20]=”2000\\0\\t\\\\”;
printf(“%d,%d\\n”,strlen(st),sizeof(st)); }
A)7,7 B)4,20 C)10,20 D)20,20
2. 要将字符串a连接到字符串b后面,使用下面( )语句
A)strcpy(a,b); B)strcat(a,b); C)strcpy(b,a); D)strcat(b,a)
三)算法
一维数组常见题型: 1.数组插入 2.数组删除 3.数组逆置
4.数组查找(顺序查找、折半查找) 5.冒泡排序、选择排序 二维数组常见题型:
在矩阵上的进行操作:矩阵转置、矩阵求和、求最大值等。
字符数组常见题型:各字符串函数的实现
例题:
1. 已知字符串char s[50]=”Iamstudent.”,请编写程序将字符a插入到student之前,结果
为“Iamastudent”。
2. 有一个3×4的矩阵,要求编程以求出其中值最大的那个元素,以及它所在的行号和列
号。 程序如下:
#include
int i,j,row,col,max;
static int a[3][4]={{3,5,1,8},{6,4,11,7},{9,3,10,2}}; max=a[0][0];
for(i=0;i<___;i++) /*$BLANK1$*/ for(j=0;j<4;j++)
if(___) /*$BLANK2$*/ {
max=___; /*$BLANK3$*/ row=i;
10/48
col=j; }
printf(\ }
六、函数 一)函数语法
(1)程序是由多个函数组成的,一个程序有且只有一个main函数,程序的运行是从main函数开始到时main函数结束
(2)函数不能嵌套定义,可以嵌套调用
(3)使用函数的三点:定义、调用、申明(见下图) (4)函数的参数:形参和实参
要求形参和参类型一致,个数相同 传递过程是将实参的值对应传给形参 (5)值传递和地址传递
值传递:简单类型,实参传给形参,形参发生变化不能传给实参。 地址传递:数组、指针,实参传给形参,形参发生变化也能传给实参
例题:
1. 在C程序中,若对函数类型未加说明,则函数的隐含类型为( )
A)int B)double C)void D)char 2. C语言中的函数( )
A)可以嵌套定义 B)不可以嵌套调用
C)可以嵌套定义,但不能递归调用 D)嵌套调用和递归调用都可以。 3. 有以下函数定义:
void fun( int n, double x) { ????}
11/48
下面函数调用正确的是( )
A) fun( x, n) B) k=fun(10,12.5)
C) fun(int x, double y) D) void fun(n, x) 4. 有以下程序
#define N 20
fun(int a[],int n,int m) { int i,j;
for(i=m;i>=n;i--) a[i+1]=a[i];
} main()
{ int i,a[N]={1,2,3,4,5,6,7,8,9,10}; fun(a,2,9);
for(i=0;i<5;i++) printf(\}
程序运行后的输出结果是( )
A)10234 B)12344 C)12334 D)12234 5. 有以下程序
void sum(int a[]) { a[0] = a[-1]+a[1]; } main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10}; sum(&a[2]);
printf(\ }
( )
A)6 B)7 C)5 D)8 6. 以下程序运行后的输出结果是:
void swap(int x,int y) { int t;
t=x;x=y;y=t;
printf(\ %d \}
void swap1(int *x,int *y) { int t;
t=*x;*x=*y;*y=*t;
printf(\ %d \} main()
{ int a=3,b=4; swap(a,b);
printf(\ %d\\n\
swap1(&a,&b);
printf(\ %d\\n\}
12/48

