数组程序设计作业-1
- 格式:doc
- 大小:96.00 KB
- 文档页数:15
C语言程序设计课题作业(一)一、简答题1、C++单词包含哪些种类?2、一个标识符中的首字符必须是什么字符?其余位置上的字符必须是什么字符?3、数值常量、字符常量、字符串常量和标识符在表示上各有什么区别?4、C语句分为哪几种类型?5、#include命令的格式和功能各是什么?使用尖括号和双引号在含义上有什么区别?二、选择题1、程序中的预处理命令是指以( )字符开头的命令。
A.@ B.# C.$ D.%2、一条简单语句是以( )字符作为结束符的。
A. ,B. :C. ;D. <空格>3、空白符是( )符的统称。
A.空格、制表、回车B.空格、制表、逗号C.空格、回车、分号D.冒号、制表、回车4、#imclude命令中不可以包含( )。
A.头文件B.程序文件C.用户头文件D.目标文件5、一个函数定义由( )两部分组成。
A.函数头和函数体B.函数头和函数尾C.函数原形和函数体D.函数名和参数表6、一个程序中必须有并且只有一个命名为( )的函数。
A.MainB.mainC.cppD.c7、C程序文件的扩展名为( )。
A.objB.exeC.voidD.intmain8、在VC环境下,为运行一个程序而建立的工作区文件的扩展名为( )。
A.objB.exeC.dswD.dsp9、数据类型int,char,float,double的类型长度之和为( )。
A.10B.12C.16D.1710、常数120和-4.205的类型为( )。
A.整形和双精度型B.短整型和单精度型C.长整型和双精度型D.整型和单精度型C语言程序设计课题作业(二)一、选择题1、流程控制类语句包括( )3类语句。
A.选择、循环、跳转B.选择、循环、输入C.选择、输入、输出D.循环、选择、函数2、在switch语句中,每个语句标号中的关键字case后面的表达式必须是( )。
A.变量B.常量C.一般表达式D.函数调用3、作为语句标号使用的C保留字case和default只能用于( )语句中。
C语言数组编程题及解答【程序1】用筛选法求100之内的素数筛选法又称筛法,是求不超过自然数N(N>1)的所有质数的一种方法。
据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。
具体做法是:先把N个自然数按次序排列起来。
1不是质数,也不是合数,要划去。
第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。
2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。
3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。
这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。
因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。
#include <stdio.h>#include <math.h>void main(){int i,j;int a[100];for(i=0;i<100;i++)a[i]=i+1;for(i=1;i<100;i++){if(a[i]==0)continue;for(j=i+1;j<100;j++)if(a[j]%a[i]==0)a[j]=0;}for(j=1;j<100;j++) //j从1开始,去除a[0](其值为1),因为1既不是质数,也不是合数if(a[j]!=0)printf("%d,",a[j]);printf("\n");}【程序2】题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如6=1+2+3.编程找出1000以内的所有完数。
程序源代码:#include <stdio.h>int main(){int k[10];int i,j,n,s;for(j=2;j<1000;j++){n=-1;s=j;for(i=1;i<j;i++){if ((j%i)==0){n++;s=s-i;k[n]=i;}}if(s==0) //说明是完数{printf("%d is a wanshu:",j);for(i=0;i<=n;i++)printf("%d ",k[i]);printf("\n");}}return 1;}【程序3】题目:用选择法对10个数进行从大到小排序1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。
一、单项选择题(在每小题列出的四个备选项中只有一个是符合题目要求的。
) 1.若有定义 int a[4] = {l, 2, 3, 4};则 a[a[0]+2 * a[2]-a[3]]等于A. 1B. 2C. 3D. 42 .设有数组定义:char array [ ]=〃China 〃;则数组array 所占的空间为A. 4个字节B. 5个字节C. 6个字节D. 7个字节3 .设有定义 char a 口=“xyz”, b □二{'x',' y',' z'};,则语句 cout«sizeof (a)«* ,,«sizeof (b) «endl;的输出结果为 A. 3 3B. 3 4C. 4 3D. 4 44 .设 int b[ ][5]={1,2,3,4,5,6,7};,则元素 b[l] [2]的值是A. 0B. 2C. 6D. 75 .数组定义为int a L2J [3j={1, 2, 3, 4, 5, 6},值为1的数组元素是A. a [0] [0] B, a [1] [1] C. a [1] [2] D. a [2] [3]6 . C++中,若有说明:int a[3] [4];则对a 数组元素的正确引用是9 .设 char x[][10] = {〃Windows 〃,〃dos 〃,〃unix 〃};,执行 cout«x[l][2];后输出的结果是A. nB. iC. oD. s10 .以下叙述中错误的是A.对于double 类型数组,不可以直接用数组名对数组进行整体输入或输出B.数组名代表的是数组所占存储区的首地址,其值不可改变C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界” 的出错信息D.可以通过赋初值的方式确定数组元素的个数11 .设#pragma pack(l),则结构体类型变量占用内存的字节数是A.各成员占用内存字节数之和B.第一个成员占用的内存字节数C.占用内存最大成员所需的字节数D.最后一个成员占用的内存字节数12 .下面程序运行后,输出结果是#include <iostream> using namespace std;数组与结构体A. a[2][4] B, a[l + l][0] 7 .定义二维数组并初始化,正确的是A.mta[][]={l,2,3,4,5,6}; C.inta[][3]={ 1、2,3,4,5,6}; 8 .以下数组定义中,不正确的是A. inta[2][3];C. int c[100][100]={0};C. a(2)(l)D. a[l,3] B.int a[2][]={ 1,2,3,4,5,6};D.inta[2,3]={ 1,2,34,5,6};B. mt b[][3]={0,l,2,3);D. mt d[3][]={]l,2},{l,2,3},{l,2,3,4}};21int/mtp[8]={l,2,3,4,5,6,7,8}J=0,j=0;while(i++<7)if(p[i]%2) j+=p[i];cout<<j«endl;return 0;}A. 15B. 16C. 20D. 3613.下面程序运行后,输出结果是#include <iostream>using namespace std;int main()int a[3][3]={{l,2},{3,4},{5,6}},ij,s=0;fbr(i=l;i<3;i++)砧i(J=0jv=i;j++)s+=a[i][j];cout«s«endl;retuin 0;}A. 18B. 19C. 20D. 2114.下面程序运行后,输出结果是#mclude<iostieam>using namespace std;int main(){ mt a[3][3]={l,2,3,4,5,6,7,8,9},n,sum=0;fdi(n=0;n<3;n++)sum=sum+a [n] [n];cout«sum«endl;return 0:}A. 6B. 12C. 15D. 4515.下面程序运行后,输出结果是#include <iostream>using namespace std;stmct abc{ mt a, b, c; };int main。
数组1:输入10个整数,分别输出这10个数,再计算并输出它们的和。
2:输入10个不同的整数,将它们存入数组a中,再输入1个数x,然后在数组中查找x。
如果找到,则输出相应的下标,否则输出“not found”.3:输入1个正整数n(1<n<=10),再输入n个整数,将它们存入数组a中:(1)输出最小值与它所对应的下标(2)将最小值与第一个数交换,输出交换后的n个数4:编一函数,把一个字符串中从第i个字符开始的n个字符保存在另一个字符数组中,并输出。
5:编写程序:由键盘任意输入一串字符,判断是否为回文。
回文是首位对称相等的字符串,如:abcdcba是回文。
6:编写程序:验证下列矩阵是否为魔方阵。
魔方阵是每一行、每一列、每一对角线上的元素之和都是相等的矩阵。
17 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 97:编写程序:由键盘任意输入一串字符,再输入一个字符,统计这个字符在这串字符串中出现的次数。
8:编写程序:由键盘任意输入一串字符,在输入一个字符和一个位置,将此字符插入在这个字符串的这个位置上。
如:原来串为abcdef,输入字符k,位置是3,新串为abkcdef。
9:有3 ×4矩阵,其中数字为整型常数(如下图),求出其中最大元素和最小元素,并输出。
10:由键盘任意输入两个字符串,不用库函数strcat,将两个字符串连接。
11:由键盘任意输入一串字符,对其进行加密,加密原则为:如果为字母,将其循环右移两个字母,其他字符不变。
如:原串为ab12CDxyz,新串为cd12EFzab。
12:输入一个5*5的数组,分别求其主对角线和辅对角线上元素的和。
13:由键盘任意输入10个数,将最大数调到最前面,最小数调到最后面。
14:由键盘任意输入10个学生的姓名(以拼音形式),将它们按ASCII码的顺序从小到大排序,并输出。
上机作业61.输入10个学生的一门课成绩,用一维数组存放其成绩,请输出最高分。
#include <stdio.h>void main(){int x[10],i,max;for(i=0;i<10;i++)scanf("%d",&x[i]);for(i=1;i<10;i++){if(x[i]>max){max=x[i];}}printf("the max is:%d\n",max);}2.定义一个有10个元素的数组,用其代表10个学生的考试成绩,从键盘输入10个成绩,统计平均成绩。
#include <stdio.h>void main(){int x[10],i;double j,s=0;for(i=0;i<10;i++)scanf("%d",&x[i]);for(i=0;i<10;i++){s=s+x[i];}j=s/10;printf("平均值是%lf\n",j);}3.输入10个学生的一门课成绩,用一维数组存放其成绩,统计并输出不及格人数及其百分比。
#include <stdio.h>void main(){int x[10],i;double j=0,p;for(i=0;i<10;i++)scanf("%d",&x[i]);for(i=0;i<10;i++){if(x[i]<60)j++;}printf("不及格人数有%.0lf\n",j);p=j/10*100;printf("不及格人数是总数的:%.0lf%%\n",p);}4.定义一个有10个元素的数组,用其代表10个学生的考试成绩,从键盘输入10个成绩,分别统计优、良、中、及格、不及格的人数。
C程序设计(数组)习题与答案C程序设计(数组)习题与答案数组是C语言中常用的数据结构之一,它可以存储多个相同类型的元素。
掌握数组的使用对于C程序设计至关重要,下面将为大家介绍一些关于C数组的习题及其答案。
1. 习题一:计算数组元素的和题目描述:编写一个程序,计算给定数组中所有元素的和,并输出结果。
解题思路:```c#include <stdio.h>int main() {int arr[5] = {1, 2, 3, 4, 5}; // 定义一个包含5个元素的整型数组int sum = 0; // 用于存储和的变量// 遍历数组,累加每个元素的值for (int i = 0; i < 5; i++) {sum += arr[i];}printf("数组元素的和为:%d\n", sum);return 0;}```2. 习题二:查找数组中的最大值题目描述:编写一个程序,找出给定整型数组中的最大值,并输出结果。
解题思路:```c#include <stdio.h>int main() {int arr[7] = {4, 7, 2, 9, 1, 5, 8}; // 定义一个包含7个元素的整型数组int max = arr[0]; // 假设第一个元素为最大值// 遍历数组,比较每个元素的值与当前最大值的关系for (int i = 1; i < 7; i++) {if (arr[i] > max) {max = arr[i];}}printf("数组中的最大值为:%d\n", max);return 0;}```3. 习题三:查找数组中的特定元素题目描述:编写一个程序,在给定整型数组中查找是否存在指定元素,并输出结果。
解题思路:```c#include <stdio.h>int main() {int arr[6] = {3, 6, 9, 2, 5, 8}; // 定义一个包含6个元素的整型数组 int target = 2; // 指定要查找的元素int found = 0; // 用于标记是否找到目标元素的变量// 遍历数组,比较每个元素的值与目标值的关系for (int i = 0; i < 6; i++) {if (arr[i] == target) {found = 1;break;}}if (found) {printf("数组中存在目标元素:%d\n", target);} else {printf("数组中不存在目标元素:%d\n", target);}return 0;}```4. 习题四:数组元素逆序排列题目描述:编写一个程序,将给定整型数组的元素逆序排列,并输出结果。
c程序设计数组班级学号姓名成绩一、单选题1.下面对一维数组a的说明正确的是。
A. int a(10)B. int n=10,a[n]C. int n;cin>>n;int a[n];D. #define SIZE 10int a[SIZE];2.若要对一维数组a的所有元素值初始化为1的语句正确的是。
A.int a[5]=(1,1,1,1,1);B.int a[ ]={ 5*1}C int a[ ]={1,1,1,1,1};D.int a[5]={1}3.若已定义数组:float a[8];则下列对数组元素引用正确的是。
A a[0] =1;B. a[8] = a[0];C. a=1;D. a[3.5]=1;4.下面对二维数组a的说明正确的是。
A. int a[3][ ];B. float a(3,4);C. double a[1][4];D. long a[3,4];5.不能对二维数组a进行正确初始化的语句是B。
A. int a[2][3]={0}B. int a[2][3]={{1,2},{3,4},{5,6}};C. int a[ ][3]={{1,2},{0}};D. int a[ ][3]={1,2,3,4,5,6}6.若有说明:int a[3][4]={0};则以下说法正确的是C 。
A. 只有元素a[0][0]可得到初值0B. 数组a中各元素都可得到初值,但其值不一定为0C. 数组a中每个元素均可得到初值0D. 此说明语句不正确7.下面对字符数组s的初始化不正确的是D。
A. char s[5]={“abc”};B. char s[5]={‘a’,’b’,’c’};C. char s[5]=“”;D. char s[5]=“abcdef”;8.有程序段如下:运行该程序的结果是 A。
char a[3],b[ ]=”China”;a=b;cout<<a<<endl;A. 编译出错B. 运行结果为ChinaC. 运行结果为ChD. 运行结果为空串9.下述对字符数组的描述中错误的是D。
cin»a[i];数组(一)习题cout«a[i]«n”;}一、找出下面程序或程序段中的错误,并改正。
1.#include <iostream>using namespace std;int main()( int m,a[m];a[O]=l;cout«a[0];return 0;)正确程序:#include <iostream>using namespace std;int main()( const int m=10;int a[m];a[0]=l;cout«a[0];return 0;}2.#include <iostream>using namespace std;int main(){ int a[5];cin»a;cout«a[5];return 0;}正确程序:(仅是无语法错误)#include <iostream>using namespace std;int main(){ int a[5];cin»a[4];cout«a[4];return 0;)完善程序:(完整输入输出)#include <iostream>using namespace std;int main()( int a[5],i;for (i=0;i<5;i++)freturn 0;}3.#include <iostream>using namespace std;int main()( char c[10]="I am a student";cout«c;return 0;}正确程序:#include <iostream>using namespace std;int main()( char c[ ]=n I am a student";//定义为字符串数组,[] 里可以不写具体数字,但最好写上,字符串在存储时会自动在末尾加上'\0',所以长度会加一cout«c;return 0;}二、读程序,写运行结果。
程序设计(1)实验习题实验一(1)运行以下程序,并解释运行结果。
# include <stdio.h>int main(void){ int x = –1;unsigned u = ;printf ( “x = %u = %d\n”, x, x);printf ( “u = %u = %d\n”, u, u);return 0;}(2)运行以下程序,解释运行结果,并修改程序以使结果正确。
# include <stdio.h>int main(void){ int x = ;printf ( “x + 1 = %d\n”, x + 1);return 0;}(3)运行以下程序,解释运行结果。
程序1:#include <stdio.h>int main(void){ float a;double b;a = 123456.789e4;b = 123456.789e4;printf(“%f\n%f\n”,a,b);return 0;}程序2:# include <stdio.h>int main(){ float a,b;a=123456.789e5;b=a+20;printf("%f\n",a);printf("%f\n",b);return 0;}(4)求平方根:输入1 个实数x,计算并输出其平方根(保留1 位小数)。
(5)华氏温度转换为摄氏温度:输入华氏温度f,计算并输出相应的摄氏温度c(保留2 位小数)。
c = 5/9(f-32).(6)三天打鱼两天晒网:中国有句俗语叫“三天打鱼两天晒网”。
假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第n天中是“打鱼”还是“晒网”?编写相应程序(第一天就是当天)。
例如:输入:103输出:Fishing in day 103输入:35输出:Drying in day 35(7)按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50%,就要吊销驾驶证。
上机作业6
1.输入10个学生的一门课成绩,用一维数组存放其成绩,请输出最高分。
#include <stdio.h>
void main()
{
int x[10],i,max;
for(i=0;i<10;i++)
scanf("%d",&x[i]);
for(i=1;i<10;i++)
{
if(x[i]>max)
{
max=x[i];
}
}
printf("the max is:%d\n",max);
页脚内容1
}
2.定义一个有10个元素的数组,用其代表10个学生的考试成绩,从键盘输入10个成绩,统计平均成绩。
#include <stdio.h>
void main()
{
int x[10],i;
double j,s=0;
for(i=0;i<10;i++)
scanf("%d",&x[i]);
for(i=0;i<10;i++)
{
页脚内容2
s=s+x[i];
}
j=s/10;
printf("平均值是%lf\n",j);
}
3.输入10个学生的一门课成绩,用一维数组存放其成绩,统计并输出不及格人数及其百分比。
#include <stdio.h>
void main()
{
int x[10],i;
double j=0,p;
页脚内容3
for(i=0;i<10;i++)
scanf("%d",&x[i]);
for(i=0;i<10;i++)
{
if(x[i]<60)
j++;
}
printf("不及格人数有%.0lf\n",j);
p=j/10*100;
printf("不及格人数是总数的:%.0lf%%\n",p);
}
4.定义一个有10个元素的数组,用其代表10个学生的考试成绩,从键盘输入10个成绩,
页脚内容4
分别统计优、良、中、及格、不及格的人数。
#include <stdio.h>
void main()
{
int x[10],i,y=0,l=0,z=0,j=0,b=0;
for(i=0;i<10;i++)
scanf("%d",&x[i]);
for(i=0;i<10;i++)
{
if(x[i]>=90)
{
y++;
}
else if(x[i]<90&&x[i]>=80)
{
l++;
}
页脚内容5
else if(x[i]<80&&x[i]>=70)
{
z++;
}
else if(x[i]<70&&x[i]>=60)
{
j++;
}
else
{
b++;
}
}
printf("成绩为优的人数为%d\n",y);
printf("成绩为良的人数为%d\n",l);
printf("成绩为中的人数为%d\n",z);
printf("成绩为及格的人数为%d\n",j);
页脚内容6
printf("成绩不及格的人数为%d\n",b);
}
5.由键盘任意输入10个整形数据,将其按由小到大的顺序排序后输出。
#include<stdio.h>
void main()
{
int a[10],i,j,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
页脚内容7
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
printf("从小到大为\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
}
页脚内容8
6.由键盘任意输入10个数据,将它们倒序后输出。
#include<stdio.h>
void main()
{
int a[10],i,j,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<5;i++)
{
j=9-i;
t=a[j];
a[j]=a[i];
a[i]=t;
}
printf("\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
页脚内容9
printf("\n");
}
7.建立一个5*5的矩阵,将其转置,并将其按矩阵形式输出。
#include<stdio.h>
void main()
{
int a[5][5],b[5][5];
int i,j;
printf("输入25个数\n");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
页脚内容10
printf("\n");
printf(" 矩阵为:\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf(" %d",a[i][j]);
}
printf("\n");
}
printf("\n");
printf(" 转置后的矩阵为:\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
b[i][j]=a[j][i];
页脚内容11
printf(" %d",b[i][j]);
}
printf("\n");
}
}
8.编程打印杨辉三角形的前6行6列的值。
即输出:1
11
1 2 1
1 3 3 1
1 4 6 4 1
页脚内容12
1 5 10 10 5 1
#include<stdio.h>
void main()
{
int a[6][6];
int i,j;
for(i=0;i<=5;i++)
{
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<=5;i++)
{
for(j=1;j<i;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
for(i=0;i<=5;i++)
{
for(j=0;j<=i;j++)
页脚内容13
printf("%d ",a[i][j]);
printf("\n");
}
}
9.求n个整数中素数的个数。
(选做题)
#include<stdio.h>
void main()
{
int n,x,i,j,m=0;
printf("输入n值:\n");
scanf("%d\n",&n);
for(i=1;i<n;i++)
{
scanf("%d\n",&x);
页脚内容14
{
for(j=2;j<x;j=j++)
{
if(x%j==0)
break;
}
}
m=m+1;
}
printf("这些数中素数个数为:%d\n",n-m);
}
页脚内容15。