else
printf(\}
2. 双胞胎数
10分
题目描述
除1和它本身外,不能被其它整数整除的正整数称为素数(注:1不是素数,2是素数)。若两素数之差为2 ,则称两素数为双胞胎数,给定一段连续的正整
数,请判断其中有多少对双胞胎数。要求将判断某数是否素数写成函数。
输入描述
输入数据包含2个正整数A和B(0
输出描述
请判断并输出[A,B]范围内一共有多少对双胞胎数。
样例输入
31 601
样例输出
22 【参考答案】
#include
if(x<2) return 0; k=sqrt(x);
for(i=2;i<=k;i++)
if (x%i==0) return 0; return 1; }
void main()
{ int i,n=0,a,b;
scanf(\ for(i=a;i<=b-2;i++)
if (prime(i)&&prime(i+2)) n++;
printf(\}
C语言2作业4
一、选择题 (20分)
1.下列能正确定义一维数组a的语句是____。
A.int a(10); B.int n=10,a[n];
C.int n;scanf(\,&n);int a[n]; D.#define n 10 int a[n];
[D]
A. A B. B C. C D. D
2分
2.若有定义语句“int a[10];”则下列对a中数组元素正确引用的是______。
[A]
A. a[10/2–5] B. a[10] C. a[4.5] D. a(1)
2分
3.设有程序: main()
{ int i,a[11];
printf(\给数组赋值:\\n\; for (i=0;i<=10;i++)
scanf(\,( )); ... ...
printf(\输出数组:\\n\; for(i=0;i<=10;i++)
printf(\; }
则在程序中的两个园括号中分别应填入:______
[C]
2分
A. &a[i]和&a[i] B. a[i]和&a[i] C. &a[i]和a[i] D. a[i]和a[i]
4.阅读程序:
#include
{ int a[2]={0},i,j,k=2; for(i=0;i 以上程序的输出结果是____。 [D] 2分 A. 1 B. 2 C. 3 D. 不确定的值 5.若定义数组int a[10] ,其最后一个数组元素为______。 [C] A. a[0] B. a[1] C. a[9] D. a[10] 2分 6.若定义数组并初始化int a[10]={ 1,2,3,4},以下哪一个不成立______。 [B] 2分 A. a[8] 的值为0 B. a[1] 的值为1 C. a[3] 的值为4 D. a[9] 的值为0 7.在定义一个一维数组时,不能用来表示数组长度的是______。 [D] 2分 A. 常量 B. 符号常量 C. 常量表达式 D. 已被赋值的变量 8.若float型变量占用4个字节,有定义float a[20]={1.1,2.1,3.1};则数组a在内存中所占的字节数是______。 [D] A. 12 B. 20 C. 40 D. 80 2分 9.以下程序的输出结果是______。 #include { int i, k, a[10], p[3]; k=5; for (i=0;i<10;i++) a[i ]=i; for (i=0;i<3;i++) p[i ]=a[i *(i+1)]; for (i=0;i<3;i++) k+=p[i] *2; printf(\} [B] A. 20 B. 21 C. 22 D. 23 2分 10.有以下程序 main() { int p[7]={11,13,14,15,16,17,18}, i=0,k=0; while(i<7 && p[i]%2) { k =k+ p[i]; i++; } printf(\} 执行后输出结果是_______。 [D] A. 58 B. 56 C. 45 D. 24 2分 二、程序设计题 (20分) 1. 与平均值最接近的数 10分 题目描述 输入n(n≤20)和n个实数,输出平均值及与平均值相差最小的数(若有多个,只需输出第一个)。 输入描述 输入n和n个实数,各数之间用空格分隔 输出描述 第一行输出平均值,第二行输出与平均值相差最小的数。输出结果均保留两位小数。 样例输入 6 2.3 4 -5 8.5 -9 15 样例输出 2.63 2.30 【参考答案1】 【参考答案2】 #include { double x[N],v,d; int i,n; scanf(\ for(i=0,v=0;i for(i=1;i if(fabs(d-v)>fabs(x[i]-v)) d=x[i]; printf(\} #include 10分 题目描述 输入n(n≤20)和n个整数放在一维数组中,找出其中最大的数,将它与数组最前面的元素交换后输出这些数。 输入描述 【参考答案2】 #include { int a[20],max,k,i,n; 输出数据占一行,数据间用一个空格分开。 scanf(\样例输入 for(i=0;i scanf(\样例输出 max=a[0]; 112 99 34 78 67 k=0; // 用来记录最大元素下标 【参考答案1】 for(i=1;i if(a[i]>max) #define N 20 { max=a[i]; // max放最大元素值 void main() k=i; } // 还要记录最大元素下标 { int a[N],n; a[k]=a[0];a[0]=max; //原元素值在max中 int i,k=0,t; for(i=0;i printf(\ for(i=0;i } scanf(\ // 思考:若交换时用语句t=a[0];a[0]=max; for(i=1;i // max=t; 有何问题? if(a[k] t=a[k];a[k]=a[0]; a[0]=t; for(i=0;i printf(\ printf(\ } C语言2作业5 一、判断题 (12分) 1. 如果想使一个数组中全部元素的值为1,可以写成 int a[10]={1*10}; 2分 2. C允许对数组的大小作动态定义,即可用变量定义数组的大小。 2分 3. 数组定义 int a[10]; 也可以写成 int a(10); 。 2分 4. 在对全部数组元素赋初值时,可以不指定数组长度。 2分 5. 数组定义 int a[10]; 表示数组名为a,此数组有10个元素。 2分 6. 数组定义 int a[10]; 表示数组名为a,此数组有10个元素,第10个元素为a[10]。 2 分 二、选择题 (8分) 1.下面的程序中哪一行有错误____。 #include { float array[5]={0.0}; //第A行 int i; for(i=0;i<5;i++) scanf(\ for(i=1;i<5;i++) array[0]=array[0]+array[i];//第B行 printf(\第C行 } [D] 2分 A. 第A行 B. 第B行 C. 第C行 D. 没有 2.int a[4]={5,3,8,9};其中 a[3]的值为______。 [D] A. 5 B. 3 C. 8 D. 9 2分