}
int check1(int i, int n)//与前面的数不相同
{
int j;
for(j=1;j<=n-1;j++)
{
if(a[j]==i)
return 0;
}
return 1;
}
int check2(int n)//素数检查
{
int t=sqrt(n);
int j;
for(j=2;j<=t;j++)
{
if(n%j==0)
return 0;
}
return 1;
}
int check3(int i,int n) //检查相邻数字之和是否为素数
{
if(n<10)
return check2(i+a[n-1]);
else
{
int t=check2(i+a[n-1])+check2(i+a[1]);
if(t==2)
return 1;
else
return 0;
}
}
void find(int n)
{
int i;
for(i=2;i<=10;i++)
{
if(check1(i,n)==1&&check3(i,n)==1)
{
a[n]=i;
if(n==10)
output();
else
{
find(n+1);
a[n]=0;
}
}
}
}
int main()
{
int i;
for(i=1;i<=10;i++)
{
a[i]=0;
}
a[1]=1;
find(2);
return 0;
}
第三章:
一、简答题
1、以变量为例,阐述数据类型的意义。
答:1、不同类型数据,操作不同。如int x=1.5,操作的结果是x的值为1,
float x=1.5,操作结果是x的值1.5。2、不同类型数据决定了操作符。如果操作数的类型与运算符的要求不相符,则作用在操作数上的操作将可能被视为非法操作。类型对操作数的安全提供了保障。
2、什么是变量三要素?
名字、类型、值、地址
二、填空
1、C
3、B
9编辑并运行程序,学习每个运算符的语义同书本P68
第四章:
二、填空
1、D 3、D 4、A10、C 1
2、A2
3、D
三、分析题
1、分析下面程序的运行结果
#include
using namespace std;
void main()
{
for(int i=1;i<=9;i++)
{
for(int j=1;j<=10-i;j++)
cout<<" ";
for(int j=1;j<=i;j++)
cout<
cout<}
}
运行有问题
修改后
#include
using namespace std;
void main()
{
int i,j;
for(i=1;i<=9;i++) //1
{ //22
for(j=1;j<=10-i;j++) //333
cout<<" "; //4444
for(j=1;j<=i;j++) //55555
cout<
cout<} //88888888
} //输出结果为:999999999
四、编程题
1、求解二元一次方程ax^2+bx+c=0的根。注意,应考虑各种可能性及程序的健壮性。#include"iostream"
#include"math.h"
using namespace std;
void main()
{
int a=0,b=0,c=0;
cout<<"Please enter a=";
cin>>a;
cout<<"Please enter b=";
cin>>b;
cout<<"Please enter c=";
cin>>c;
if(a==0)
{
double x0;
x0=(-c)/b*1.0;有问题??
cout<<"此时为一元一次方程有唯一解"<return;
}
double temp=b*b-4.0*a*c;
if(temp<0)
{
cout<<"二元一次方程无解"<return;
}
else
{
double x1=0,x2=0;
temp=sqrt(temp);//求temp的平方的根,然后在赋值给temp
x1=-(b+temp)/(2.0*a);
x2=(-b+temp)/(2.0*a);
cout<<"二元一次方程的解为x1="<cout<<"二元一次方程的解为x2="<}
}
5、编写输出如图所示的图案
*
**
********
********
********
**
*
#include
using namespace std;
#define M 7
#define N 9
int main()
{
int a[M][N]={
{0,0,0,0,0,0,1,0,0},
{0,0,0,0,0,0,1,1,0},
{1,1,1,1,1,1,1,1,0},
{0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,0},
{0,0,0,0,0,0,1,1,0},
{0,0,0,0,0,0,1,0,0}
};
for (int i=0;i<7;i++)
{
for(int j=0;j<9;j++)
{
if( a[i][j]==0)
cout<<" ";
else
cout<<"*";
}
cout<}
return 0;
}
第五章:
一、问答题
1、什么是函数重载?如何进行函数重载?
答:函数重载指同一函数名可以对应多个函数的实现。eg:函数名add(),功能是求和即两个操作的和。其中,一个函数实现两个整型数的和,另一个函数实现两个浮点型数的和,再一个函数实现两个复数的和。每种函数实现对应一个函数体,函数名字相同,但函数的参数类型不同。这就是函数的重载。函数重载在类和对象的应用中尤为重要。
函数重载要求编译器能唯一确定调用一个函数时应执行哪个函数代码,即采取哪个函数实现。确定函数的实现时,要从函数参数的个数和类型上来区分。这就是说,进行函数重载时,要求同命名的函数的参数个数或参数类型不同;否则,无法实现重载。
举例:
#include
int add(int,int);
double add(double,double);
void main()
{
cout<cout<}
int add(int x,int y)
{
return x+y;
}
double add(double a, double b)
{
return a+b;
}
4、下列两个函数是否为重载?
void func(int a,int b);
int func(int a,int b);
答:不是重载。因为它们参数个数和类型都相同,只有返回值不同,返回值不足以区分两个函数。
7、什么是函数的类型和值?是否所有函数都有返回值?是否所有函数都有类型?
函数类型是指函数返回值的数据类型,函数的返回值可以是指针、值或者引用。并不是所有的函数都有返回值,有的函数可以没有返回值,函数无返回值,要根据函数实现的功能来决定。如:
函数add()
int add (int a ,int b)
{
return a+b;
}
用来实现两个整数的求和,那么就需要返回值来返回求和结果,而print()只向屏幕上输出一些信息,就不需返回值,所以返回类型为void。
void print(char *str)
{
cout<}
所有的函数都有返回类型,如果没有显示指出函数的返回值类型,默认返回类型为int型
二、选择题
2、B 8、B
三、分析题
4、#include
void swap_values(int a,int b)
{
int temp;
temp=a;a=b;b=temp;
}
void main(void)
{
int big=2002,small=0;
cout<<"values before function"<
swap_values(big,small);
cout<<"values after function"<
}
分析:输出结果:V alues before function 2002 and 0
V alues after function 2002 and 0
在函数调用中,可以通过值传递方式在函数间传递数据。但是,这种传递无法改变实参的值。只是因为在进入被调用函数时,变量进行了复制。被调用函数的任何更改和实参没有任何联系。所以,在主程序中打印它的局部变量时,变量值没有任何改变。
四、编程题
2、编写一个函数,在一个字符串数组中查找"Hello",如果找回返回指向“Hello”开始出的指针;否则抛出一个异常“Not Found”.
#include
#include
#include
char*findstring(char*a,char*dest)
{
int i,m,n;
m=strlen(dest);
n=strlen(a)-m;
try//用于抛出错误
{
for(i=0;i<=n;i++)
{
int k=i;//用于记录当前i的位置,便于追溯
for(int j=0;j<=m-1;j++)
{
if(a[k]==dest[j])
k++;//如果当前字符相等进行下一个字符比较
else
break;
if(j==m-1)
return &a[i];
}
}
throw "Not found!";
}
catch(char*str)
{cout<<"there is a exception is:"<}
void main(void)
{
char str1[]="This is a test char array.Hello is here.";
char dest[]="Hello";
char*result=NULL;
result=findstring(str1,dest);
cout<<"The string is:"<}
3、编写一个程序其中包括3个重载函数Display()用于显示数值。这些函数根据实参类型,将数值显示在屏幕上。第一个函数输出一个double值,前面用字符串“A double:”引导;第二个数值输出一个int值,前面用“A int:”引导;第三个函数输出一个char字符,前面用“A char:”引导。在主函数中,分别用double,float,int,char和short型变量去调用Display ()函数。
#include
void Display(int idata)
{printf("A int:%d\n",idata);}
void Display(double ddata)
{printf("A double:%16f\n",ddata);}
void Display(char cdata)
{printf("A char:%c\n",cdata);}
void main(void)
{
int a=3;
double b=3.33;
float c=1.2;
char d='a';
short e=34;
Display(a);
Display(b);
Display(c);
Display(d);
Display(e);
}
第六章:
一、简答题
1、什么是枚举类型?对枚举类型变量的值有何要求?
答:枚举类型是由用户枚举的常量值所构成的类型。enum-week{sun,mon,thus,thurs,fri,sat}。
2、字符数组和字符串之间有何不同?
答:单个字符用‘’表示,字符串用“”表示,字符数据类型不同。
4、什么是数据结构?与程序的关系如何?
答:数据结构是人们按照逻辑结构或在物理上存储的数据排列形式。
二、选择题
1、D
2、A4、A5、B
三、分析题
1、分析下列程序运行结果。
#include
using namespace std;
enum Docter{Barry,Brank,Catherine,Frank} doc[4];
void main()
{
doc[0]=Barry;
doc[1]=Brank;
doc[2]=Catherine;
doc[3]=Frank;
cout<<"doc[0]="<cout<<"doc[1]="<cout<<"doc[2]="<cout<<"doc[3]="<}
分析结果:
doc[0]=barry
doc[1]=brank
doc[2]=catherine
doc[3]=frank
2、分析下面程序运行结果。
#include
void main ()
{int b[][4]={{1,2,3},{4,6},{6}};
cout<
cout<
cout<
}
结果分析:
1 2 3 0
4 6 0 0
6 0 0 0
四、编程题
1、定义表示教师或学生的结构类型person,该类型的数据对象中储存一个人的姓名、年龄和地址数据外,对于学生还需要存储器总学分和所学专业,对于教师要储存其工资和职称。设计一个函数,用于输入某个人员的数据,同时设计另外一个函数用于输出这个人员的数据。使用这个类型和这两个函数设计一个管理学生和教师数据的程序,在程序中可以使用一个数组来存储这些数据。
示例程序:
#include
#include
#include
#include
#include
struct person{
char cName [10];
int iAge;
int bIsTeacher;
char cAddress[50];
float fScore;
char cProfession[50];
float fWage;
char cGrade[20];};
int InputData(person array[])
{
int i=0,persons=0;
while(1)
{
cout<<"Input name(type quit to exit input):";
cin>>array[i].cName;
if(strcmp(array[i].cName,"quit")==0)break;//退出条件
cout<<"Iput age:";
cin>>array[i].iAge;
cout<<"Iput address:";
cin>>array[i].cAddress;
cout<<"Is a teacher?(1 is Y es, 0 is No:)";
cin>>array[i].bIsTeacher;
if (array[i].bIsTeacher)//如果是老师,则输入工资和职称
{
cout<<"Input wage:";
cin>>array[i].fWage;
cout<<"Iput Grade:";
cin>>array[i].cGrade;}//如果是学生,输入学分和专业
else
{
cout<<"Input score:";
cin>>array[i].fScore;
cout<<"Input profession:";
cin>>array[i].cProfession;
}
i++;
persons++;
}
return persons;
}
void PrintData(person array[],int i)//打印第i个人的情况
{
cout<<"Name is:"<cout<<"Age is:"<cout<<"Address is:"<if(array[i].bIsTeacher)//如果是老师,则输出工资和职称
{
cout<<"Wage is:"<cout<<"Grade is:"<}
else //如果是学生,输出学分和专业
{
cout<<"Score is:"<cout<<"Profession is:"<}
}
void main(void)
{
person a[20];
int num;
num=InputData(a);//数组中实际记录数
for(int i=0;iPrintData(a,i);
}
3、下面程序段中将复数用结构Complex表示,并说明了复数求模、加法、减法、乘法及除法的运算函数,完成这些函数的定义。
#include
#include
struct complex
{
float real;
float image;
};
float modul(complex *c1);
complex add(complex *c1, complex *c2);
complex diff(complex *c1,complex *c2);
complex mul(complex *c1,complex *c2);
complex div(complex *c1,complex *c2);
void main()
{
complex a={3,2};
complex b={1,5};
complex t=diff(&a,&b);
....
}
示例程序:
float modul(complex *c1)
{
float temp;
temp=sqrt(c1->image * c1->image+c1->real *c1->real);
return temp;
}
complex add(complex *c1, complex *c2)
{
complex temp;
temp.image=c1->real+c2->real;
return temp;
}
complex diff(complex *c1,complex *c2)
{
complex temp;
temp.image=c1->image-c2->image;
temp.real=c1->real-c2->real;
return temp;
}
complex mul(complex *c1,complex *c2)
{
complex temp;
temp.image=c1->image *c2->real *c2->image;
temp.real=c1->real *c2->real-c1->image *c2->image;
return temp;
}
complex div(complex *c1,complex *c2)
{
complex temp;
temp.image=(c1->image *c2->real-c1->real *c2->image)/(c2->image *c2->image+c2->real*c2->real);
temp.real=(c1->real *c2->real+c1->image *c2->image)/(c2->image *c2->image+c2->real*c2->real);
return temp;
}
7、建立一个10个节点的单向链表,每个节点包括学号、姓名、性别、年龄。按学号从小到大排列,采用插入顺序对这个链表进行排序。
【示例程序】
#include
#include
#include
struct student
{
int iserial;
char cname[20];
int bismale;//男为1,女为0
int iage;
student *next;
};
void main(void)
{
int i;
student *head,*temp,*pa;
head=(student *)malloc(sizeof(student));//头结点不保存数据
head->next=NULL;
pa=head;
for(i=0;i<10;i++)
{
temp=(student *)malloc(sizeof(student));
printf("please input the person's serial:");
cin>>temp->iserial;
printf("please input the person's name:");
cin>>temp->cname;
printf("please input the person's sex(0 for male,1 forfemale):");
cin>>temp->bismale;
printf("please input the person's age:");
cin>>temp->iage;
pa->next=temp;
temp->next=NULL;
pa=temp;
}
student *p,*q,*s;
if ((head->next)&&(head->next->next))//当表中含有结点数大于1
{
p=head->next->next;//p指向第二个结点
head->next->next=NULL;
while(p)
{
q=head;//指向插入位置的前驱结点
//找到插入点
while((p)&&(q->next)&&(p->iserial>q->next->iserial))
q=q->next;
if(p)
{
s=p;
p=p->next;//将要插入节点摘下
s->next=q->next;//插入合适位置:q节点后
q->next=s;
}
}
}//打印出来结果
pa=head->next;
printf("After the deal,the linklist is:\n");
while(pa!=NULL)
{
printf("%d,",pa->iserial);
pa=pa->next;
}
}
第七章:
一、设计相应算法并加以编程实现
1.编写函数long unsigned atoi(const char*),该函数将由‘0’~‘9’组成的数字字符串转换为数字,例如atoi(“12345”)将返回12345.
【算法分析】
算法输入:输入字符串str。
算法输出:输出字符串转换后的数字。
数据结构:采用字符数组str存放字符串,转换后的值用无符号整型value存储,这里不考虑负整数。
问题分析:字符串中的值分别为整数的个位、十位、百位……。把字符串先逆转,让个位对应字符串的第1位,即个位为str[0]、十位为str[1]……。则有
value=str[0]+str[1]+str[2]+…+str[i]╳10^i。
【示例程序】
#include
#include//求a的i次方#include
unsigned long power(int a,int i)
{
int value=1;
while(i--)
{
value*=a;
}
return value;
}
long unsigned atoi(const char*str)
{
int tmp;
int value=0;//存放转换结果值
char tempStr[256];
strcpy(tempStr,str);
int n=strlen(tempStr);//逆转,让个位在前,十位靠后。。。
for (int k=0;k{
tmp=tempStr[k];
tempStr[k]=tempStr[n-k-1];
tempStr[n-k-1]=tmp;
}
cout<for(int i=0;i{
value+=(tempStr[i]-'0') * power(10,i);
}
return value;
}
void main()
{
char str[256]={0};
unsigned long value;
cout<<"please input a number:";
cin>>str;
value=atoi(str);
cout<<"Result is:"<}
5、编写一个程序将用户从cin输入的程序文本中的注释删掉,然后将剩下来的程序文本在cout上输出,输出的程序文本不含注释(不必考虑删除后程序行的排放是否合理以及程序中
由语法错误的情形)。
【问题分析】以C++语言为例,在C++中,有行注释"//"和段注释"/*……*/",这里只考虑行注释,当遇到符号"//"时,一直到本行结束,都为注释语句,将其删除。对于段注释,读者可以参考下面的示例程序来完成。
【示例程序】
#include
#include
void DelComment(char *text)
{
int len=strlen(text);
int count=0;
int temp=0;
bool flag=false;
for(int i=0;i{
//处理行注释
if(text[i]=='/' && text[i+1]=='/')
{
text[i]='\0';
break;
}
}
}
void main()
{
char text[256];
cin>>text;
DelComment(text);//删除注释、
cout<}
6、有40个数由大到小顺序存储在a数组中,编写程序,用二分法(折半法)查找一个数是否在该数组中,若存在则输出该数位置及数值。(要求:绘制流程图)
【算法分析】二分查找(折半查找)是查找一个已安排好序的表的最好办法。算法思想:将有序数列的中点设置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为有半部分。即用过一次比较,将查找区间缩小一半。
二分法查找是一种高效的查找方法。它可以明显减少比较次数,提高查找效率。但是,二分查找的先决条件是查找表中的数据元素必须有序。
算法步骤:
第一步首先确定整个查找区间的中间位置,mid=(low+high)/2。
第二步用待查关键字值与中间位置的关键字值进行比较:若相等,则查找成功;若大于,则在后半区域继续进行二分查找;若小于,则在前半区域继续进行二分查找。
第三步对确定的缩小区域再按二分公式,重复上述步骤。
第四步得到结果:要么,查找成功;要么,查找失败。
存储结构:用一维数组存放。
【示例程序】
#include
int BinSearch(int A[],int n,int key)
{
int low,mid,high;
low=0;
high=n-1; //置查找区间的上、下初值
while(low<=high) //当前查找区间非空
{
mid=(low+high)/2;
if(key==A[mid])
return mid; //查找成功返回
else if(keyhigh=mid-1; //缩小查找区间为左子表
else low=mid+1; //缩小查找区间的右子表
}
return -1; //查找失败
}
void main()
{
int A[40];
int pos=0;
int key=0; //数组初始化
for(int i=0;i<40;i++)
A[i]=i;
cout<<"please input the key."<while(cin>>key) //知道ctrl+z退出
{
pos=BinSearch(A,40,key);
if(pos!=-1)
cout<<"Find the key,its position is:"<else
cout<<"Fail to find the key in the Array.\n";
}
}
二、编程题
2、小球从100米高处落下,每次落地后又返回原高度的一半,再落下。编程求解该小球在第8次落地时,共经过多少米?第8次反弹多高?
#include
void main()
{
float high=100,total=0.0;
程序设计基础试题库
练习题一Visual FoxPro 基础 、选择题 1. 关系数据库管理系统应能实现的专门关系运算包括___c __________ A 显示、打印、制表B关联、更新、排序 C 选择、投影、连接D排序、索引、统计 2. 关系是指__b__。 A 属性的集合B元组的集合 C 实例的集合 D 字段的集合 3. 如果把学生看成实体,某个学生的姓名叫“杨波”,则“杨波”应看成是___b ______ 。 A)属性型B )属性值C )记录型D )记录值 4. 关系数据库系统中所使用的数据结构是 _______ d ___ 。 A)图B )树C )表格D )二维表 5. 对表进行水平方向的分割用的运算是 _______ b ___ 。 A)交B )选择C )投影D )连接 6. 下列数据库技术的术语与关系模型的术语的对应关系中_______ d _____ 是正确的。 A)实例与关系 B )字段与元组C )记录与属性 D )记录类型与关系模式 7. 下列关于数据库系统的叙述中,正确的是 _____ c _____ 。 A)数据库系统中数据的一致性是指数据类型一致 B)数据库系统只是比文件系统管理的数据更多 C)数据库系统减少了数据冗余 D数据库系统避免了数据冗余 8. 关系数据模型 ______ d ___ 。 A)只能表示实体间的1:1联系 B)只能表示实体间的1:n C只能表示实体间的m:n D 可以表示实体间的上述三种联系 9. 在一个关系中如果有这样一个属性存在,它的值能惟一地标识关系中的每一个元组,称
这个属性为 _____ a____ 。 A)关键字B )主属性C )数据项D )主属性值 10. 关系数据库管理系统中的元组是______ b ____ 。 A)关系中的垂直方向的列 B )关系中的水平方向的行 C属性或属性的组合 D )以上的答案均不正确 11. 从数据库的整体结构看,数据库系统采用的数据模型有_________ a __ 。 A)层次模型、网状模型和关系模型 B)层次模型、网状模型和环状模型 C)网状模型、链状模型和层次模型 D链状模型、关系模型和层次模型 12. 设有属性A B、C D以下表示中不是关系的是___________ d__。 A)R( A) B )R( A, B)C )R (A, B, C, D) D )R (A X B X C X D) 13. 若实体间联系是M N的,则将联系类型_________ a___ 。 A)也转换为关系模型 B)属性加入任一个关系模式中 C)属性加入N端实体类型相应的关系模式中 D)属性加入M端实体类型相应的关系模式中 14. 数据库系统的构成为数据库、计算机硬件系统、用户和________ a ____ 。 A 数据库管理系统 B 操作系统 C 数据集合 D 文件系统 15. 层次型、网状型和关系型数据库划分原则是________ c ___ 。 A 文件大小 B 记录长度 C 数据之间的联系 D 联系的复杂程度 16. 在数据库设计中用关系模型来表示实体和实体之间的联系,关系模型的结构是 _____ d ___ 。 A 封装结构 B 层次结构 C 网状结构 D 二维表结构 17. 在关系模型中,实现“关系中不允许出现相同的元组”的约束是通过__a ________ 。 A 主键 B 超键 C 外键 D 候选键 18. 层次模型不能直接表示 ______ b __ 关系。 A 1:1 B m:n C 1:m D 1:1 和1:m 19. DBAS旨的是_____ d____ 。
C++程序设计基础课后答案 第八章
8.1 阅读下列程序,写出执行结果 1.#include class Bclass { public: Bclass( int i, int j ) { x = i; y = j; } virtual int fun() { return 0 ; } protected: int x, y ; }; class Iclass:public Bclass { public : Iclass(int i, int j, int k):Bclass(i, j) { z = k; } int fun() { return ( x + y + z ) / 3; } private : int z ; }; void main() { Iclass obj( 2, 4, 10 ); Bclass p1 = obj; cout << p1.fun() << endl; Bclass & p2 = obj ; cout << p2.fun() << endl; cout << p2.Bclass :: fun() << endl; Bclass *p3 = &obj;
cout << p3 -> fun() << endl; } 2.#include class Base { public: virtual void getxy( int i,int j = 0 ) { x = i; y = j; } virtual void fun() = 0 ; protected: int x , y; }; class A: public Base { public: void fun() { cout<<"x = "<C++程序设计基础(第4版)(上)习题解答
《C++程序设计基础》(第4版)(上) 习题与解答 第1章基本数据与表达式 1.1 选择题 1.一个最简单的C++程序,可以只有一个(C )。 (A)库函数(B)自定义函数(C)main函数(D)空函数 2.用C++语言编写的源程序要成为目标程序必须要经过(D )。 (A)解释(B)汇编(C)编辑(D)编译3.C++程序中的简单语句必须以(B )结束。 (A)冒号(B)分号(C)空格(D)花括号4.假设有说明int a=0; double x=5.16;,则在以下语句中,(C )属于编译错误。 (A)x=a/x; (B)x=x/a; (C)a=a%x; (D)x=x*a; 5.执行C++程序时出现的“溢出”错误属于(C )错误。 (A)编译(B)连接(C)运行(D)逻辑 6.在下列选项中,全部都是C++关键字的选项为(C )。 (A)while IF Static (B)break char go (C)sizeof case extern (D)switch float integer 7.按C++标识符的语法规定,合法的标识符是(A )。 (A)_abc (B)new (C)π(D)"age" 8.在C++语句中,两个标识符之间(A )不能 ..作为C++的分隔符。 (A)数字(B); (C): (D)+ 9.下列正确的八进制整型常量表示是(B )。 (A)0a0 (B)015 (C)080 (D)0x10 10.下列错误的十六进制整型常量表示是(C )。 (A)0x11 (B)0xaf (C)0xg (D)0x1f 11.在下列选项中,全部都合法的浮点型数据的选项为(B )。 (A)-1e3.5 15. 2e-4 (B)12.34 -1e+5 0.1E-12 (C)0.2e-2 -12345. e-5 (D)5.0e(1+4)0.1 8e+2 12.在下列选项中,正确的字符常量为(D )。 (A)"a" (B)'name' (C)a (D)'\101' 13.在下列选项中,(D )不能 ..交换变量a和b的值。 (A)t=b; b=a; a=t; (B)a=a+b; b=a-b; a=a–b; (C)t=a; a=b; b=t; (D)a=b; b=a; 14.关于下列语句,叙述错误的是(A )。
程序设计基础试题一知识讲解
山东科技大学200 —200 学年第学期 《程序设计基础》考试试卷一 班级姓名学号____________ 一、选择题(20分) 1.算法具有五个特性,以下选项中不属于算法特性的是B (A)有穷性(B)简洁性(C)可行性(D)确定性 2.以下选项中可作为C语言合法常量的是A (A)-80. (B)-080 (C)-8e1.0 (D)-80.0e 3.以下叙述中正确的是C (A)用C语言实现的算法必须要有输入和输出操作 (B)用C语言实现的算法可以没有输出但必须要有输入 (C)用C程序实现的算法可以没有输入但必须要有输出 (D)用C程序实现的算法可以既没有输入也没有输出 4.以下不能定义为用户标识符是D (A)Main (B) _0 (C) _int (D) sizeof 5.以下选项中,不能作为合法常量的是B (A)1.234e04 (B)1.234e0.4 (C)1.234e+4 (D)1.234e0 6.数字字符0的ASCII值为48,若有以下程序 main() {char a='1',b='2'; printf("%c,",b++); printf("%d\n",b-a);} 程序运行后的输出结果是C (A)3,2 (B)50,2 (C)2,2 (D)2,50
7.有以下程序 main(){ int m=12,n=34; printf("%d%d",m++,++n); printf("%d%d\n",n++,++m);}程序运行后的输出结果是A (A)12353514 (B)12353513 (C)12343514 (D)12343513 8.有以下语句:int b;char c[10];,则正确的输入语句是B A)scanf("%d%s",&b,&c); B) scanf("%d%s",&b,c); (C)scanf("%d%s",b,c); D)scanf("%d%s",b,&c); 9.有以下程序 main(){ int m,n,p; scanf("m=%dn=%dp=%d",&m,&n,&p); printf("%d%d%d\n",m,n,p); } 若想从键盘上输入数据,使变量M中的值为123,N中的值为456,P中的值为789,则正确的输入是A A)m=123n=456p=789 B)m=123 n=456 p=789 C)m=123,n=456,p=789 D)123 456 789 10.有以下程序 main(){ int a,b,d=25; a=d/10%9;b=a&&(-1); printf("%d,%d\n",a,b); } 程序运行后的输出结果是B A)6,1 B)2,1 C)6,0 D)2,0 11.有以下程序 main(){ int i=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf("%d %d %d\n",i,j,k);}程序运行后的输出结果是D (A)1 2 3 (B)2 3 4 (C)2 2 3 (D)2 3 3