❶ c语言高手过来帮帮忙
这个程序是谁写的啊,一点都不规范,而且还不完整,
把main函数里的switch语句后加个(c)就可以正常编译运行了。
程序的作用是选择要转换为阴历还是阳历,例如选择阴历好后输入一组年月日(格式例1981.11.30,在1980到2015年之间),之后程序将为你转换为阴历(1981.11.5)
帮你注释了两个函数,另外两个函数的思想相同,
总的来说这个程序的逻辑不是很好,不用心看的话很难理解作者的想法,我没时间,要不帮你重新写了,
如果还是看不懂你再留言。
#include<stdio.h>
#include<bios.h>
struct data
{
int year1;
int specialmonth;
int month1[13];
};
struct day
{
int year2;
int month2;
int day2;
};
int dis_day1(struct day *op,int *p) /*计算并返回当年距1980年的天数*/
{
int n=0,x;
n+=(op->year2-1980)*365;
for(x=1980;x<op->year2;x++) /*如果当年是闰年,天数加1*/
if((x%4==0&&x%100!=0)||(x%100==0&&x%400==0))
n+=1;
for(x=1;x<(op->month2);x++)
n+=*(p+x-1);
x=op->year2;
if(((x%4==0&&x%100!=0)||(x%100==0&&x%400==0))&&op->month2>2) /*闰年月份大于2月才多1天*/
n+=1;
n+=(op->day2-1); /*小于2月的话,就算当年是闰年,也要减1天*/
return n;
}
int dis_day2(struct day *op,struct data *p)
{
int n=0,maxmonth,i,x;
for(x=1980;x<op->year2;x++)
{
if((p+x-1979)->specialmonth==0)
maxmonth=12;
else maxmonth=13;
for(i=0;i<maxmonth;i++)
if((p+x-1979)->month1[i]==0)
n+=29;
else n+=30;
}
if((p+op->year2-1979)->specialmonth!=0)
if((p+op->year2-1979)->specialmonth<op->month2)
op->month2++;
for(i=1;i<op->month2;i++)
{
if((p+op->year2-1979)->month1[i-1]==0)
n+=29;
else n+=30;
}
n+=(op->day2-1);
n+=46;
return n;
}
/*阳转阴;这里比较复杂,作者的算法大概是:利用前面算出来的天数,直接在自己定义的阴历表里面*/
/*以1979.11.14为起点去代换,*/
void work_out2(struct day *re,struct data *p,int n)
{
int n1=0,maxday,maxmonth,month,day,judge=0;
re->year2=1979;re->month2=11;re->day2=14; /*这里的1979.11.14是1980.1.1的阴历*/
while(1)
{
if(judge==1)
break;
if(p->specialmonth==0)
maxmonth=12;
else
maxmonth=13; /*有闰月的年份多1个月*/
/*下面的if语句是判断当年还剩几个月(maxmonth-month),如果是79年的话,因为是从*/
/*11.14开始,因此只剩1个月(maxmonth-month=1)。 */
if(p->year1==1979)
month=12;
/*其他年份将有(maxmonth-month)12到13个月,至于能否全用到就要看前面算出来的天数n了*/
else
month=1;
for(;month<=maxmonth;month++)
{
if(p->month1[month-1]==0) /*判断当月是大月还是小月*/
maxday=29;
else maxday=30;
if((p->year1==1979)&&(maxday==30)) /*79年的11月是大月,当月日期计数从14号开始*/
day=14;
else day=1; /*其他年份的当月计数从1号开始*/
for(;day<=maxday;day++)
{
if(n1==n)
{
if(maxmonth==13&&month>p->specialmonth)
month-=1;
re->year2=p->year1;
re->month2=month;
re->day2=day;
judge=1;
break;
}
else n1+=1;
}
if(judge==1)break;
}
p++;
}
}
void work_out1(struct day *re,int n,int *p)
{
int year=1980,n1=0,month,day,maxday,judge=0;
re->year2=1980;re->month2=1;re->day2=1;
while(1)
{
*(p+1)=28;
if(judge==1)
break;
if((year%4==0&&year%100!=0)||(year%100==0&&year%400==0))
*(p+1)=29;
for(month=1;month<=12;month++)
{
maxday=*(p+month-1);
for(day=1;day<=maxday;day++)
{
if(n1==n)
{
re->year2=year;
re->month2=month;
re->day2=day;
judge=1;
break;
}
else n1++;
}
if(judge==1)
break;
}
year++;
}
}
main()
{
int n,c;
int sun[12]=;
int *p1=sun;
struct day ob,re;
struct data *p2;
/*下面是1979年到2015年的农历表,第1个数字代表年份;第2个数字代表当年的闰月是几月 */
struct data year[37]={
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
};
p2=year;
printf(" WARNING \n");
printf(" you should take care of it :\n");
printf(" the limted range:\n");
printf(" lunar calendar: 1980.1.1----2015.11.12\n"); /*阳历*/
printf(" soalr calendar: 1980.1.1-----2015.12.31\n"); /*阴历*/
while(1)
{
printf(" please choose one way a/b?\n");
printf(" a: soalr calendar---->lunar calendar\n");
printf(" b: lunar calendar---->soalr calendar\n");
do /*选择除a,b键之外的其他键无效*/
{
c=getchar();
}while(c!='a'&&c!='b');
do
{
printf("your must pay attention to the form\n");
printf("pleae input your date:\n");
scanf("%d.%d.%d",&ob.year2,&ob.month2,&ob.day2); /*输入年、月、日*/
}while(ob.year2<1980||ob.year2>=2016||ob.month2<1||ob.month2>12||ob.day2<1||ob.day2>31);
switch(c)
{
case 'a': /*阳转阴*/
n=dis_day1(&ob, p1);
printf("%d\n",n);
work_out2(&re,p2,n);
printf(" the result is %d.%d.%d\n",re.year2,re.month2,re.day2);
break;
case 'b': /*阴转阳*/
n=dis_day2(&ob,p2);
printf("%d\n",n);
work_out1(&re,n,p1);
printf(" the result is %d.%d.%d\n",re.year2,re.month2,re.day2);
if(ob.month2==(p2+ob.year2-1979)->specialmonth)
{
if((ob.day2!=30)||((p2+ob.year2-1979)->month1[ob.month2]==1))
{
n+=((p2+ob.year2-1979)->month1[ob.month2-1]+29);
work_out1(&re,n,p1);
printf("there is a other result\n:\t%d.%d.%d\n",re.year2,re.month2,re.day2);
}
}
break;
defluat: break;
}
printf("if you want to try again,y/n?\n");
do
{
c=bioskey(0);
}while(c!=0x316e&&c!=0x1579);
if(c==0x316e)
break;
}
}
❷ C语言 do-while语句
D
A
D
B
A
❸ C语言编程:判断是否满足条件的一对正整数
int isok(int a,int b)
{return a+b==316&&(a%13==0&&b%11==0||a%11==0&&b%13==0);
}
❹ c语言编程(不是c++哦)
我这边先写了第一题答案 以及第二题答案!你看,要是符合你要求的话,再继续!
/**
* @author 方涵萍
*right (C)[email protected] 2013-05-05
*
* 输出100以内个位数为6且能被3整除的所有数。
*/
#include <stdio.h>
#include <stdlib.h>
//输出100以内个位数为6且能被3整除的所有数。x为零时,结束输入
void divisible()
{
int x;
while(1)
{
scanf("%d",&x);
if(x==0)
exit(0);
else if(x%10==6 && x/3)
printf("输入的是:%d\n",x);
else
printf("你输入的值个位数不为6且能被3整除的所有数\n");
}
}
int main(int argc,char **argv)
{
printf("请输入一个100以内的整数!若退出,请输入“0”\n");
divisible();
return 0;
}
/**
* @author 方涵萍
*right (C)[email protected] 2013-05-05
*
* 键盘输入6 位学生的5门课成绩,分别统计出每个学生的平均成绩。
*/
#include <stdio.h>
#include <stdlib.h>
struct student
{
float chinese;//语文成绩
float english;//英语
float math;//数学
float c;//c语言
float java;//java
}stu[6];
//分别统计每个学生的平均分
void average(int i)
{
float total=0;
total+=stu[i].chinese;
total+=stu[i].english;
total+=stu[i].math;
total+=stu[i].c;
total+=stu[i].java;
printf("第%d个学生的平均分为%f\n",i+1,total/5);
}
int main(int argc,char **argv)
{
int i;
printf("请分别输入输入6 位学生的5门课成绩!\n");
for(i=0;i<1;i++)
{
printf("第%d个学生的成绩\n",i+1);
printf("\t语文成绩:");
scanf("%f",&stu[i].chinese);
printf("\t英语成绩:");
scanf("%f",&stu[i].english);
printf("\t数学成绩:");
scanf("%f",&stu[i].math);
printf("\tc语言成绩:");
scanf("%f",&stu[i].c);
printf("\tjava成绩:");
scanf("%f",&stu[i].java);
}
//计算平均分
for(i=0;i<1;i++)
{
printf("\n计算每个学生的平均分\n");
average(i);
}
return 0;
}
❺ 把316这个数表示为两个数之和,是其中一个能被13整除,而另一个能被11整除。编写程序输出这两个数
楼上的做法太浪费资源了,看我的
#include "stdio.h"
void main()
{
int i = 0;
for(i=0;i<316;i++)
{
if( (i % 11 == 0) && ((316-i) % 13 == 0)) printf("%3d",i);
}
}
❻ C语言高手请进来11223
你妈,这是考试题呀,,,,干嘛要人帮你做啊,,上课又不好好听!!!
❼ 华师在线09面向对象程序设计作业答案
--------------------------------------------------------------------------------
作业名称:面向对象程序设计
作业总分:100
学员姓名:mj07b201 学员成绩:95
标准题总分:100 标准题得分:95
详细信息:
题号:1 题型:单选题 本题分数:1
内容:
一个类的友元函数能够访问该类的( )
选项:
A、A)私有成员
B、B)保护成员
C、C)公有成员
D、D)所有成员
学员答案:
D
题号:2 题型:单选题 本题分数:1
内容:
下面关于类和对象的描述中,错误的是( )
选项:
A、A)类就是C语言中的结构体类型,对象就是C语言中的结构体变量
B、B)类和对象之间的关系是抽象和具体的关系
C、 C)对象是类的实例,一个对象必须属于一个已知的类
D、 D)类是具有共同行为的若干对象的统一描述体
学员答案:
A
题号:3 题型:单选题 本题分数:1
内容:
以下各选项组中,均是C++语言关键字的组是( )
选项:
A、A) public operator this
B、 B)shod string static
C、 C)it while>=
D、 D)private cout printf
学员答案:
A
题号:4 题型:单选题 本题分数:2
内容:
设int a=10,b=11,c=12;,表达式(a+b) 的值为( )
选项:
A、A)2
B、 B)0
C、 C)-2
D、 D)1
学员答案:
B
题号:5 题型:单选题 本题分数:1
内容:
下列描述正确的是( )
选项:
A、A)表示m>n为true或mn&&m
B、 B)switch语句结构中必须有default语句
C、 C)if语句结构中必须有else语句
D、 D)如果至少有一个操作数为true,则包含“‖”运算符的表达式为true
学员答案:
D
题号:6 题型:单选题 本题分数:1
内容:
下面关于数组的描述错误的是( )
选项:
A、A)在C++语言中数组的名字就是指向该数组第一个元素的指针
B、 B)长度为n的数组,下标的范围是0-n-1
C、 C)数组的大小必须在编译时确定
D、 D)数组只能通过值参数和引用参数两种方式传递给函数
学员答案:
D
题号:7 题型:单选题 本题分数:2
内容:
下面程序错误的语句是( )①#include ②void main() ③{ ④int*p=new int[1]; ⑤p=9; ⑥cout <<*p< ⑦delete[]p ⑧}
选项:
A、A)④
B、B)⑤
C、C)⑥
D、D)⑦
学员答案:
B
题号:8 题型:单选题 本题分数:2
内容:
下面的哪个选项不能作为函数的返回类型?( )
选项:
A、A)void
B、B)int
C、C)new
D、D)long
学员答案:
C
题号:9 题型:单选题 本题分数:1
内容:
不能作为重载函数的调用的依据是( )
选项:
A、A)参数个数
B、 B)参数类型
C、 C)函数类型
D、 D)函数名称
学员答案:
B
题号:10 题型:单选题 本题分数:2
内容:
下列程序的输出结果为( ),以下是引用片段: #include< iostream. h> int func(int n) { if〔n<1)return 1; else return n+func(n-1): return 0; } void main() { cout< 选项:
A、A) 0
B、B)10
C、C)15
D、D)16
学员答案:
D
题号:11 题型:单选题 本题分数:1
内容:
在C++语言中,数据封装要解决的问题是( )
选项:
A、A)数据的规范化
B、 B)便于数据转换
C、 C)避免数据丢失
D、 D)防止不同模块之间数据的非法访问
学员答案:
D
题号:12 题型:单选题 本题分数:2
内容:
以下程序中,错误的行是 ①#include ②class A ③{ ④ public: ⑤ int n=2: ⑥ A( int val){cout< 选项:
A、A)⑤
B、B)⑥
C、C)⑦
D、D)⑩
学员答案:
A
题号:13 题型:单选题 本题分数:1
内容:
下面有关重载函数的说法中正确的是()
选项:
A、A)重载函数必须具有不同的返回值类型
B、 B)重载函数形参个数必须不同
C、C)重载函数必须有不同的形参列表
D、D)重载函数名可以不同
学员答案:
C
题号:14 题型:单选题 本题分数:1
内容:
下列关于构造函数的描述中,错误的是()
选项:
A、A)构造函数可以设置默认参数
B、B)构造函数在定义类对象时自动执行
C、C)构造函数可以是内联函数
D、D)构造函数不可以重载
学员答案:
D
题号:15 题型:单选题 本题分数:1
内容:
下面描述中,表达错误的是()
选项:
A、A)公有继承时基类中的public成员在派生类中仍是public的
B、 B)公有继承是基类中的private成员在派生类中仍是private的
C、C)公有继承时基类中的protected成员在派生类中仍是protected的
D、 D)私有继承时基类中的public成员在派生类中是private的
学员答案:
B
题号:16 题型:单选题 本题分数:2
内容:
在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是()
选项:
A、A)fail
B、B)eof
C、 C)bad
D、D)good
学员答案:
B
题号:17 题型:单选题 本题分数:1
内容:
下列关于C++语言类的描述中错误的是( )
选项:
A、A)类用于描述事物的属性和对事物的操作
B、 B)类与类之间通过封装而具有明确的独立性
C、C)类与类之间必须是平等的关系,而不能组成层次结构
D、 D)类与类之间可以通过一些方法进行通信和联络
学员答案:
C
题号:18 题型:单选题 本题分数:1
内容:
以下叙述中正确的是( )
选项:
A、A)构成C++语言程序的基本单位是类
B、 B)可以在一个函数中定义另一个函数
C、 C) main()函数必须放在其他函数之前
D、 D)所有被调用的函数一定要在调用之前进行定义
学员答案:
A
题号:19 题型:单选题 本题分数:2
内容:
己知有定义 以下是引用片段: const int D=5; int i=1; double f=0.32: char c=15; 则下列选项错误的是( )
选项:
A、A)++i
B、 B)D--
C、 C)C++
D、 D)--f
学员答案:
B
题号:20 题型:单选题 本题分数:2
内容:
下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,在划线处应填入的选项是( ),以下是引用片段: void main() { int i=0,j,k; do{i++;k=316-13*i;}while( ); j=k/11; cout<<”316=13*”< }
选项:
A、A)k/11
B、B)k% 11
C、 C)k/11==0
D、D)k%11==0
学员答案:
B
题号:21 题型:单选题 本题分数:2
内容:
设有数组定义:char array[]=”China";,则数组array所占的空间为( )
选项:
A、A)4个字节
B、B)5个字节
C、C) 6个字节
D、D)7个字节
学员答案:
C
题号:22 题型:单选题 本题分数:2
内容:
若已定义: int a[]={0,1,2,3,4,5,6,7,8,9},*P=a,i; 其中O≤i≤9,则对a数组元素不正确的引用是( )
选项:
A、A)a[p-a]
B、 B)*(&a[i])
C、C)p[i]
D、D)a[10]
学员答案:
D
题号:23 题型:单选题 本题分数:2
内容:
函数fun的返回值是( ) 以下是引用片段: fun(char*a,char*b) { int num=0,n=0; while(*(a+num)!=‘\0’)num++; while(b[n]){*(a+num)=b[n];num++;n++;} return num; }
选项:
A、A)字符串a的长度
B、B)字符串b的长度
C、C)字符串a和b的长度之差
D、D)字符串a和b的长度之和
学员答案:
D
题号:24 题型:单选题 本题分数:2
内容:
下面程序的结果为( ),以下是引用片段: void main() { int i; int a[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) cout< 选项:
A、A)1 5 9
B、B)7 5 3
C、C)3 5 7
D、D) 5 9 1
学员答案:
B
题号:25 题型:单选题 本题分数:1
内容:
下列描述中哪个是正确的( )。
选项:
A、A)私有派生的子类无法访问父类的成员
B、 B)类A的私有派生子类的派生类,C无法初始化其祖先类A对象的属性,因为类A的成员对类C是不可访问的
C、 C)私有派生类不能作为基类派生子类
D、 D)私有派生类的所有子孙类将无法继续继承该类的成员
学员答案:
B
题号:26 题型:单选题 本题分数:1
内容:
下列关于构造函数说法不正确的是( )
选项:
A、A)构造函数必须与类同名
B、 B)构造函数可以省略不写
C、 C)构造函数必须有返回值
D、 D)在构造函数中可以对类中的成员进行初始化
学员答案:
C
题号:27 题型:单选题 本题分数:1
内容:
如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是( )
选项:
A、A)一元运算符
B、B)二元运算符
C、 C)选项A)和选项B)都可能
D、D)重载错误
学员答案:
D
题号:28 题型:单选题 本题分数:1
内容:
在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是( )
选项:
A、A)一元成员运算符
B、B)二元成员运算符
C、C)一元友元运算符
D、D)选项B)和选项C)都可能
学员答案:
D
题号:29 题型:单选题 本题分数:2
内容:
建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数)这3种构造函数的调用顺序为( )
选项:
A、A)abc
B、 B)acb
C、 C)cab
D、 D)cba
学员答案:
A
题号:30 题型:单选题 本题分数:2
内容:
下面关于虚函数的描述,错误的是( )
选项:
A、A)在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数
B、 B)基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数
C、 C)虚函数可以是另一个类的友元函数,但不能是静态成员函数
D、 D)基类中说明的纯虚函数在其任何派生类中都必须实现
学员答案:
B
题号:31 题型:单选题 本题分数:2
内容:
下面关于模板的描述,错误的是( )
选项:
A、A)函数模板和类模板的参数可以是任意的数据类型
B、 B)类模板不能直接使用,必须先实例化为相应的模板类.然后定义了模板类的对象后才能使用
C、 C)函数模板不能直接使用,需要实例化为模板函数后才能使用
D、 D)类模板的成员函数都是模板函数
学员答案:
A
题号:32 题型:单选题 本题分数:2
内容:
语句ofstream f(”SALARY. DAT",ios::app iios::binary);的功能是建立流对象f,试图打开文件SAL:aRY. D AT并与之连接,并且( )
选项:
A、A)若文件存在,将文件写指针定位于文件尾
B、若文件不存在,建立一个新文件
C、 B)若文件存在,将其置为空文件
D、若文件不存在,打开失败
E、 C)若文件存在,将文件写指针定位于文件首
F、若文件不存在,建立一个新文件
G、 D)若文件存在,打开失败
H、若文件不存在,建立一个新文件
学员答案:
A
题号:33 题型:单选题 本题分数:2
内容:
下面程序的运行结果是( ) 以下是引用片段:#include void main(){ int num=1; int &ref=num; ref=ref+2; cout< 选项:
A、A)13
B、B)16
C、C)36
D、D)33
学员答案:
C
题号:34 题型:单选题 本题分数:2
内容:
设有定义int x; float v;,则10+x+v值的数据类型是( )
选项:
A、A)int
B、B)double
C、C)float
D、D)不确定
学员答案:
C
题号:35 题型:单选题 本题分数:2
内容:
下列程序的执行结果为( ) 以下是引用片段:#include void main() { int a=3,b=0; int*p=&a; b=+a++; cout<<*p<<","< 选项:
A、A)3,4
B、B)4,3
C、C)3,4
D、D)4,4
学员答案:
B
题号:36 题型:单选题 本题分数:2
内容:
下面程序的运行结果为( ) 以下是引用片段:#include void main() { for(int a=0,x=0;!x&&a<=10;a++) { a++; }; cout< 选项:
A、A)10
B、B)11
C、C)12
D、D) 0
学员答案:
C
题号:37 题型:单选题 本题分数:2
内容:
下列程序的输出结果为( ) 以下是引用片段:#include void main() { char *a[]={"hello","the","world"}; char**pa=a; pa++; cout<<*pa; }
选项:
A、A)hello
B、 B)the
C、 C)world
D、 D)hellotheworld
学员答案:
B
题号:38 题型:单选题 本题分数:1
内容:
决定C++语言中函数的返回值类型的是( )
选项:
A、A) return语句中的表达式类型
B、 B)调用该函数时系统随机产生的类型
C、 C)调用该函数时的主调用函数类型
D、 D)在定义该函数时所指定的数据类型
学员答案:
D
题号:39 题型:单选题 本题分数:2
内容:
下列程序的运行结果为( )以下是引用片段: #includevoid print(double a){cout<<++a;} void print(int a,int b) { cout< A、A)1.2 34
B、 B)2.2 34
C、 C)1.2 43
D、 D)2.2 43
学员答案:
D
题号:40 题型:单选题 本题分数:1
内容:
对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( )
选项:
A、A)公有类型
B、 B)私有类型
C、 C)保护类型
D、 D)友元类型
学员答案:
D
题号:41 题型:单选题 本题分数:2
内容:
下面程序的运行结果为( ) 以下是引用片段: #include class A { public: A(){cout<<"1";} ~A(){cout<<"2";} }; class B:public A { public: B(){cout<<"3";} ~B(){cout<<"4";} }; void main() { B b; }
选项:
A、A)1234
B、 B)1324
C、 C)1342
D、 D)3142
学员答案:
C
题号:42 题型:单选题 本题分数:2
内容:
下列关于多态性的描述,错误的是( )
选项:
A、A)C++语言的多态性分为编译时的多态性和运行时的多态性
B、 B)编译时的多态性可通过函数重载实现
C、 C)运行时的多态性可通过模板和虚函数实现
D、 D)实现运行时多态性的机制称为动态绑定
学员答案:
C
题号:43 题型:单选题 本题分数:2
内容:
当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )
选项:
A、A)ios::in
B、 B)ios::out
C、 C)ios::in|ios::out
D、 D)以上都不对
学员答案:
D
题号:44 题型:单选题 本题分数:2
内容:
下列程序的运行结果是( ) 以下是引用片段: #include class A { int a; public: A(){a=0;} A(int as) { a=as; cout< 选项:
A、A 23
B、B 12
C、 C 35
D、D 25
学员答案:
B
题号:45 题型:单选题 本题分数:2
内容:
下面程序的输出结果是( ) 以下是引用片段: #include class example { int a; public: example(int b){a=b++;} void print(){a=a+1;cout< A、A)2 2
B、B)4 3
C、C)4 2
D、D)3 2
学员答案:
C
题号:46 题型:单选题 本题分数:2
内容:
在派生类中重新定义虚函数时必须在( )方面与基类保持一致。
选项:
A、A 、 参数个数
B、B 、 参数名字
C、C 、 操作内容
D、D 、 赋值
学员答案:
A
题号:47 题型:单选题 本题分数:2
内容:
C++ 类体系中,不能被派生类继承的有( )。
选项:
A、A 、 转换函数
B、B 、 构造函数
C、C 、 虚函数
D、D 、 静态成员函数
学员答案:
B
题号:48 题型:单选题 本题分数:2
内容:
下列虚基类的声明中正确的是( )
选项:
A、A 、 class virtual B: public A
B、B 、 class B: virtual public A
C、C 、 class B: public A virtual
D、D 、 virtual class B: public A
学员答案:
B
题号:49 题型:单选题 本题分数:1
内容:
C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是( )
选项:
A、A)面向过程
B、B)面向对象
C、C)安全性
D、D)复用性
学员答案:
B
题号:50 题型:单选题 本题分数:1
内容:
C++语言的跳转语句中,对于break和continue说法正确的是()
选项:
A、A)break语句只应用与循环体中
B、B)continue语句只应用与循环体中
C、C)break是无条件跳转语句,continue不是
D、D)break和continue的跳转范围不够明确,容易产生问题
学员答案:
B
题号:51 题型:单选题 本题分数:2
内容:
下列关于模板的说法正确的是( )
选项:
A、A)模板的实参在任何时候都可以省略
B、B)类模板与模板类所指的是同一概念
C、 C)类模板的参数必须是虚拟类型的
D、D)类模板中的成员函数全部都是模板函数
学员答案:
D
题号:52 题型:单选题 本题分数:2
内容:
表示在输出时显示小数位,和在文件输入时判断文件尾的函数分别是( )
选项:
A、A) showbase()和eof()
B、B)showpoint()和eof()
C、 C)showpoint()和bad()
D、D)showpoint()和good()
学员答案:
B
题号:53 题型:单选题 本题分数:2
内容:
若定义int k=7,x=12;,则值为3的表达式是( )
选项:
A、A)x%=(k%=5)
B、B)x%=(k-k%5)
C、 C)x%=k-k%5
D、D)(x%=k)-(k%=5)
学员答案:
D
题号:54 题型:单选题 本题分数:2
内容:
在位运算中,操作数每右移一位,其结果相当于( )
选项:
A、A)操作数乘以2
B、B)操作数除以2
C、C)操作数乘以4
D、D)操作数除以4
学员答案:
B
题号:55 题型:单选题 本题分数:2
内容:
有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把节点b连接到节点a 之后的语句是( ), 以下是引用片段: struct node { char data; struct node*next; }a,b,*p=&a,*q=&b;
选项:
A、A)a. next=q
B、 B)p. next=&b
C、 C)p->next=&b
D、 D)(*p).next=q
学员答案:
B
题号:56 题型:单选题 本题分数:2
内容:
下面程序的运行结果为( ) 以下是引用片段: #include class A { int num; public: A(int i){num=i;} A(A &a){num=a. num++;} void print(){cout< 选项:
A、A)11
B、 B)12
C、 C)21
D、 D)22
学员答案:
C
题号:57 题型:单选题 本题分数:2
内容:
如果类A被说明成类B的友元,则( )
选项:
A、A)类A的成员即类B的成员
B、 B)类B的成员即类A的成员
C、 C)类A的成员函数不得访问类B的成员
D、 D)类B不一定是类A的友元
学员答案:
D
题号:58 题型:单选题 本题分数:2
内容:
可以用p.a的形式访问派生类对象P的基类成员a,其中a是( )
选项:
A、A)私有继承的公有成员
B、 B)公有继承的私有成员
C、 C)公有继承的保护成员
D、 D)公有继承的公有成员
学员答案:
D
题号:59 题型:单选题 本题分数:2
内容:
for(int x=0,y=0;!x& &y<=5;y++)语句执行循环的次数是()
选项:
A、A)0
B、 B)5
C、 C)6
D、 D)无次数
学员答案:
C
题号:60 题型:单选题 本题分数:2
内容:
考虑函数原型void test(int a,int b=7,char="*"),下面的函数调用中,属于不合法调用的是()
选项:
A、A)test(5)
B、 B)test(5,8)
C、 C)test(6,"#")
D、 D)test(0,0."*")
学员答案:
C
记得给我分啊
❽ C语言为两个加数和
定义两个变量 i,k ;并且 i*13+k=316 ;
-> k=316-13*i ;
首先程序设定i为0 (应该是以1开始的,我觉得设计题目应该错了)
然后判断316-i*13的差 是否被11整除 也就是k是否被11整除,
整除的公式叫求模 即判断 (k%11==0) ?
如果不等于0,i自加 再求k是否能被11整除。
直到能被整除则停止循环。
PS,虽然这题我一看就懂了,但是我发现要告诉别人理解还真难,可见当老师也不容易
❾ 遇到一个C语言问题,主要是题目看不懂。不知道是什么意思
填上 k%11;
中文解释一下这题的逻辑:
定义啥的就不说了,do开始
循环体:先执行,这时候i是一个整数。i作为13的倍数。
13*i出来的数,肯定就是能被13整除的。两个数加起来要凑316.那剩下的就由11的倍数来凑,也就是K。
所以括号内应该填上K是否为11的倍数。如果不是11的倍数,那就循环,寻找下一个匹配的数。如果是11的倍数了。那就符合答案了。
while(k%11)的解释:当k不能被整除时,执行循环。
你自己理一下思路
❿ 求四川省历年C语言二级真题或者模拟题
四川省普通高等学校计算机应用知识和能力
第二十八次等级考试
二级(C与C++语言) 笔 试 试 卷
时间: 2008年4月 19 日
上午 9:00—11:00
第一部分
软件技术基础
(共15分)
一、是非判断题(每小题1分,共10分)
( 判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B )
1. 在程序设计中,常用一维数组来表示线性表的顺序存储空间。 ( 1 )
2. 数据在计算机内存中的表示是指数据的存储结构。 ( 2 )
3. Windows是多用户多任务操作系统。 ( 3 )
4. 能影响中断响应次序的技术是中断优先级和中断屏蔽。 ( 4 )
5. 链表可以随机访问任意一个结点,而顺序表则不能。 ( 5 )
6. 作业与进程的主要区别是前者是由用户提交,后者是由系统自动生成。 ( 6 )
7. 数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储结构无关,是独立于计算机的。 ( 7 )
8. 中断控制方式适用于外存同CPU之间进行大量数据交换。 ( 8 )
9. 提供没有错误的程序是提高软件的可维护性的基本措施。 ( 9 )
10.软件结构是以指令为基础而组成的一种控制层次结构。 ( 10 )
二、选择题(每小题1分,共5分)
1. 数据流图是用于描述结构化方法中( 11 ) 工作阶段的工具。
11 (A) 可行性分析 (B) 程序编码
(C) 详细设计 (D) 需要分析
2. 若进栈序列为1,2,3,4,且进栈过程中可以出栈,则不可能的出栈序列是( 12 )。
12 (A) 1,4,3,2 (B) 3,1,4,2
(C) 2,3,4,1 (D) 3,4,2,1
3. 任何两个并发进程之间( 13 )。
13 (A) 可能存在同步或互斥关系 (B) 一定存在同步关系
(C) 一定彼此独立无关 (D) 一定存在互斥关系
4. 以下的哪个特征不是分时操作系统的主要特征( 14 )。
14 (A) 分时性 (B) 独占性
(C) 交互性 (D) 多路性
5. 需求分析中开发人员主要从用户那里了解 ( 15 )。
15 (A) 软件的维护 (B) 软件的结构
(C) 软件做什么 (D) 软件的测试
第二部分
C与C++语言程序设计
(共85分)
一、单项选择题 ( 每小题1分,共10分 )
1. C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是( D) 。
16 (A) 增加了一些新的运算符 (B) 允许函数设置缺省参数
(C) 规定函数说明符必须用原型 (D) 引进了类和对象的概念
2. 决定C++语言中函数的返回值类型的是( B )。
17 (A) return语句中的表达式类型
(B) 在定义该函数时所指定的数据类型
(C) 调用该函数时的主调函数类型
(D) 调用该函数时系统随机产生的类型
3. C语言中运算对象必须是整型的运算符是 ( A )。
18 (A) % (B) / (C) = (D) 《=
4. 若fp是指向某文件的指针,且已读到文件末尾,则函数feof(fp)的返回值是( C )。
19 (A) EOF (B) -1 (C) 1 (D) NULL
5. 已知:int a=15,b=16; 则表达式(a&b)&&br的结果是( A )。
20 (A) 1 (B) 0 (C) 16 (D) 31
6. 已知:int arr[10]; 则对arr数组元素的正确引用是( D )。
21 (A) arr[10] (B) arr[3.5] (C) arr(5) (D) arr[10-10]
7. 下列程序中,循环结束后b的值是( C )。
vpod main()
{
int a=1,b=10;
do
{
b-=a;
a++;
}while(b-->10);
}
22 (A) -1 (B) -2 (C) 8 (D) 9
8. 以下程序的输出结果是 ( 23 )。
# define M(x,y,z) x*y+z
main()
{
int a=1,b=2,c=3;
printf("%d\n",M(a+b,b+c,c+a));
}
23 (A) 12 (B) 15 (C) 17 (D) 19
9. 下面程序把数组元素中的最大值放入a[0]中,则在if语句下划线的条件表达式应填入的是 ( 24 )。
main()
{
int a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i;
for(i=0;i<10;i++,p++)
if ( ) *a=*p;
printf("%d",*a);
}
24 (A) p>a (B) *p>a[0] (C) *p>*a[0] (D) *p[0]>a[0]
10. 若在下面程序段中使指针变量p指向一个存储整型数据的动态存储单元,则在下划线处应填入 ( 25 ) 。
int *p;
p= malloc(sizeof(int));
25 (A) int (B) int * (C) (* int) (D) (int *)
二、读程序回答问题 ( 每个选择3分,共45分 )
1. 读程序写出程序运行结果。
# include <stdio.h>
void fun(char *s,char t)
{
while(*s)
{ if(*s==t) *s=t-'a'+'A';
s++;
}
}
void main()
{
char s[100]="abcddfefdbd",c='d';
fun(s,c);
printf("%s\n",s);
}
程序运行后的输出结果是( B )。
26 (A) ABCDDFEFDBD (B) abcDDfefDbD (C) abcAAfefAbA (D) Abcddfefdbd
2. 读程序并回答问题。
# include <stdio.h>
void fun(int a[],int n)
{
int i,t;
for(i=0;i<n/2;i++)
{
t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;
}
}
void main()
{
int b[10]={1,2,3,4,5,6,7,8,9,10};
int i,s=0;
fun(b,8);
for(i=6;i<10;i++) s+=b[i];
printf("%d\n",s);
}
(1)函数fun的功能是( A )。
27 (A) 将数组a的前n个元素逆置 (B) 对数组元素进行升序排列
(C) 交换数组第一个元素和最后一个元素 (D) 对数组元素进行降序排列
(2)程序的运行结果是( A )
28 (A) 34 (B) 30 (C) 22 (D) 10
3. 读程序,回答问题
# include <iostream.h>
void main()
{
int a=0,x=0;
for(;!x&&a<10;a++)
{ a++;
x++;
}
cout<<a<<endl;
}
程序的运行结果为:( D )。
29 (A) 10 (B) 4 (C) 3 (D) 2
4. 读程序回答问题。
# include <stdio.h>
void fun(char *str)
{
int i,j=0;
for(i=0;str[i]!='\0';i++)
if(str[i]!=' ') str[j++]=str[i];
s[j]='\0';
}
void main()
{
char str[80];
int n;
printf("Input a string:");
gets(str);
fun(str);
printf("%s\n",str);
}
程序运行时输入字符串asd_ab_123(注:用“_”表示空格),则程序的运行结果为( A 30 )
30 (A) asdab123 (B) asd_ab123 (C) asdab_123 (D) asd
5. 读程序,回答问题。
# include <stdio.h>
# include <conio.h>
struct mod
{int a,b,c;};
void main()
{ struct mod st[3]={{1,2,3},{4,5,6},{7,8,9}};
int total;
total=st[0].a+st[1].b;
printf("total=%d\n",total);
getch();
}
程序运行输出total=( B )。
31 (A)5 (B) 6 (C) 7 (D) 8
6. 有下列程序:
# include <stdio.h>
void main()
{
int x=10,y=5;
switch(x)
{ case 1: x++;
default: x+=y;
case 2: y--;
case 3: x--;
}
printf("x=%d,y=%d",x,y);
}
程序输出结果为( A )。
(A) x=14,y=4 (B) x=15,y=4
(C) x=10,y=5 (D) x=15,y=5
7. 读程序,回答问题。
# include <stdio.h>
int f(int m)
{
static int n=1;
m/=2;
m=m*2;
if(m)
{ n*=m;
return(f(m-2));
}
else return(n);
}
void main()
{
int a,i,j;
for(i=0;i<2;i++)
{
a=f(4+i);
printf("%d\n",a);
}
}
(1)程序第一次的输出结果是( A )。
33 (A) 8 (B) 0 (C) 64 (D) 4
(2)程序第二次的输出结果是( C )。
34 (A) 8 (B) 0 (C) 64 (D) 4
8. 有下列程序,若程序编译连接后生成可执行文件CAD.EXE,则输入以下命令行:
cad FILE1 FILE2<CR> (<CR>表示回车)
程序的运行结果是( D )。
# include <stdio.h>
void main(int argc,char *argv[])
{
int i;
printf("%d\n",argc);
for(i=0;i<=argc-1;i++)
printf("%s",argv[i]);
printf("\n");
}
35 (A) 2 (B) 3
Cadfile1file2 file1file2
(C) 2 (D)3
CAD.EXE FILE1 FILE2 CAD.EXEFILE1FILE2
9. 下面程序的功能是把316表示为两个数的和,且这两具加数分别能被13和11整除。程序while语句下划线处应填入( D )。
# include <stdio.h>
void main()
{ int i=0,j,k;
do{
i++;
k=316-13*i;
}while ( );
j=k/11;
printf("316=13*%d+11*%d",i,j);
}
36 (A) k/11 (B)k%11 (C) k (D) k%11==0
10. 读程序并回答问题。
# include <stdio.h>
void main()
{
int a=1,b=3,c=5,d=4,x;
if(a<b)
if(c<d) x=1;
else
if(a<c)
if(b<d) x=2;
else x=3;
else x=6;
else x=7;
printf("%d",x);
}
(1)程序执行完后x的值是( B )。
37 (A)1 (B) 2 (C) 3 (D) 6
(1)当d的值改为2时,程序执行完后x的值是( C )。
38 (A)1 (B) 2 (C) 3 (D) 6
11. 以下程序的运行结果为( C )。
# include <stdio.h>
void sub(int x,int y,int *z)
{ *z=y-x; }
void main()
{
int a=1,b=2,c=3;
sub(a,b,&a);
sub(b,a,&b);
sub(a,b,&c);
printf("%d,%d,%d\n",a,b,c);
}
39 (A) 1,1,0 (B) 1,2,3 (C) 1,-1,-2 (D) 1,2,1
12. 下面程序的输出结果是( D )。
# include <stdio.h>
# include <string.h>
void main()
{ char *p1="abc",*p2="ABC",str[50]="xyz";
strcpy(str+3,p2);
strcat(str+2,p1);
printf("%s\n",str);
}
40 (A) xyzabcABC (B) xyzABabc (C) yzabcABC (D) xyzABCabc
注意:① 请把下面“程序填空”中各小题答案写在主观题答题纸上
② 每一个空只填一个语句或一个语句所缺的部分内容
三、程序填空 ( 每空2分,共30分 )
1. 函数fun的功能是:求出s所指字符串中指定字符的个数,并返回个数。例如,在main函数中,若输入字符串abcdabacaa ,输入指定字符a,则输出结果为5,即字符串abcdabacaa中有5个字符a。请填空。
# include <stdio.h>
# define M 81
int fun(char *s,char c)
{
int i,cnt=0;
for(i=0;① ;i++)
if(*(s+i)==c)
cnt++;
②
}
void main()
{
char str[M],ch;
printf("\nPlease enter a string:");
gets(str);
printf("\nPlease enter a char:");
ch=getchar();
printf("\nThe number of the char is : %d\n", ③ );
}
2. 函数fun的功能是根据公式 计算级数前n项的和s,计算结果通过形参指针s传回;n值大于等于0。请填空。
# include <stdio.h>
void fun(float *s,int n)
{
float t=0.0;
int i,k=-1;
for(i=0;i<=n;i++)
{
k=① *k;
t=t+k*1.0/② ;
}
③
}
void main()
{
int n;
float s;
printf("Input n:");
scanf("%d",&n);
fun(&s,n);
printf("s=%f\n",s);
}
3. 下列程序的功能是:求一个M*N二维数组每行元素的和,并将和依次放入一个一维数组中传回主函数。例如,若有以下二维数组:
6 10 2 10 15
17 14 15 8 6
4 18 10 19 12
0 12 1 2 7
则输出为:43 60 63 22。请填空。
# define M 4
# define N 5
# include <stdio.h>
fsum(int a[][N]),int b[])
{ int i,j;
for(i=0;i<M,i++)
① ;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
② =a[i][j];
}
void main()
{
int x[M][N],y[M],i,j;
printf("The %d x %d Array :\n",M,N);
for(i=0;i<M;i++)
{ for(j=0;j<N;j++)
{ ③ =rand()%20;
printf("%6d",x[i][j]);
}
printf("\n");
}
fsum(x,y);
printf("The sum of each line:\n");
for(i=0;i<M;i++)
printf("%6d",y[i]);
printf("\n");
}
4. 下面的程序求ab.c文件中最长的行的字符数len及其行号line。请填空。
# include <stdio.h>
void main()
{
int line,i,j=0,len=0;
char c;
FILE *fp;
fp=fopen("ab.c","r");
rewind(fp);
while(fgetc(fp)!EOF)
{ i=1;
while(fgetc(fp)!='\n') ① ;
j++;
if(i>len) { len=i; ② ; }
}
printf("\n%d\t%d\n",len,line);
③ ;
}
5. 下面fun函数的功能是将形参x的值转换成二进制数,所得二进制数按位放在一维数组中返回,二进制数的最低位放在下标为0的元素中,其他依此类推。请填空。
# include <stdio.h>
int fun(int x,int b[])
{ int k=0,r;
do
{ r=x%2;
b[ ① ]=r;
x/= ② ;
}while(x);
return ③ ;
}
void main()
{
int k,n,a[20];
printf("\nEnter n:");
scanf("%d",&n);
k=fun(n,a);
while(k>=0)
printf("%d",a[k--]);
}