c语言return的用法NUM函数一个RETURN这个用DO

c语言 函数
(帮我用中文详细分析下面的语句)_百度知道
c语言 函数
(帮我用中文详细分析下面的语句)
,不太会unsigned fun713(unsigned num){
unsigned int k=1;%d&#92。;}main(){ unsigned int n=26;
k*=num%10;=10;num/}为什么输出的结果为程序运行的结果呢;
while(num),fun713(n));n& printf(&quotc语言 函数
(帮我用中文详细分析下面的语句)本人刚学函数
返回K值因为n的值等于26;跳出循环;k=k*(num除以10的余数)然后num除以10当num不等于0时
其他类似问题
为您推荐:
c语言的相关知识
其他2条回答
此时k=8*6*4*5=960;=10后,返回此值。就拿35468来说,是k=k*(*8=8。n=26的情况更简单一些该函数的实质是求一个正整数的去掉最高位的其他各位数的积,num为0,循环结束,直到num为3时,例如n=35468时,执行赋值语句num&#47,继续下一次循环,num为3546重复上面讲的过程,首先num为35468,进行第一次循环k*==3546(num为unsigned而非float型)此时num非0;10=35468&#47,然后num/=10即num=num&#47,函数返回的值为5*4*6*8=960
unsigned fun713(unsigned num)
unsigned int k=1;
//定义变量K
//do while 循环
k*=num%10;num/=10;
//%取整 /求余
while(num);
//返回K}main(){ unsigned int n=26; printf(&%d\n&,fun713(n));
//递归调用这个函数,直到满足要求}
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁约瑟夫问题_百度百科
约瑟夫问题
问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.)
约瑟夫问题问题来历
据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。这个过程沿着圆圈一直进行,直到最终只剩下一个人留下,这个人就可以继续活着。问题是,给定了和,一开始要站在什么地方才能避免被处决?Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。[1]
17世纪的法国数学家加斯帕在《数目的游戏问题》中讲了这样一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。问怎样排法,才能使每次投入大海的都是非教徒。
*问题分析与算法设计
约瑟夫问题并不难,但求解的方法很多;题目的变化形式也很多。这里给出一种实现方法。
题目中30个人围成一圈,因而启发我们用一个循环的链来表示,可以使用结构来构成一个循环链。结构中有两个成员,其一为指向下一个人的指针,以构成环形的链;其二为该人是否被扔下海的标记,为1表示还在船上。从第一个人开始对还未扔下海的人进行计数,每数到9时,将结构中的标记改为0,表示该人已被扔下海了。这样循环计数直到有15个人被扔下海为止。
约瑟夫问题一般形式
约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。
(1)由于对于每个人只有死和活两种状态,因此可以用布朗型数组标记每个人的状态,可用true表示死,false表示活。
(2)开始时每个人都是活的,所以数组初值全部赋为false。
(3)模拟杀人过程,直到所有人都被杀死为止。
约瑟夫问题pascal代码1
&&a:array&[1..20]&of&
&&n,m,i,j,k,n1,m1:
readln(m,n);
for&i:=1&to&m&do
&&a[i]:=i;
while&m1&0&do
&&j:=(n+n1-1-1)&mod&m1&+1;
&&m1:=m1-1;
&&writeln(a[j]);
&&for&k:=j&to&m1&do
&&&&a[k]:=a[k+1];
约瑟夫问题C++代码:
#include&iostream&
using&namespace&
&&&&bool&a[101]={0};
&&&&intn,m,i,f=0,t=0,s=0;
&&&&cin&&n&&m;
&&&&&&&&++t;//逐个枚举圈中的所有位置
&&&&&&&&if(t&n)
&&&&&&&&&&&&t=1;//数组模拟环状,最后一个与第一个相连
&&&&&&&&if(!a[t])
&&&&&&&&&&&&s++;//第t个位置上有人则报数
&&&&&&&&if(s==m)//当前报的数是m
&&&&&&&&&&&&s=0;//计数器清零
&&&&&&&&&&&&cout&&t&&'';//输出被杀人编号
&&&&&&&&&&&&a[t]=1;//此处人已死,设置为空
&&&&&&&&&&&&f++;//死亡人数+1
&&&&}while(f!=n);//直到所有人都被杀死为止
}无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来比较烦,而且时间复杂度高达O(nm),当n,m非常大(例如上百万,上千万)的时候,几乎是没有办法在短时间内出结果的。我们注意到原问题仅仅是要求出最后的胜利者的序号,而不是要读者模拟整个过程。因此如果要追求效率,就要打破常规,实施一点数学策略。
为了讨论方便,先把问题稍微改变一下,并不影响原意:
问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。
我们知道第一个人(编号一定是(m-1)) 出列之后,剩下的n-1个人组成了一个新的(以编号为k=m mod n的人开始):
k k+1 k+2 ... n-2,n-1,0,1,2,... k-2
并且从k开始报0。
我们把他们的编号做一下转换:
k-2 --& n-2
变换后就完完全全成为了(n-1)个人报数的子问题,假如我们知道这个子问题的解:例如x是最终的胜利者,那么根据上面这个表把这个x变回去不刚好就是n个人情况的解吗?!!变回去的公式很简单,相信大家都可以推出来:x'=(x+k) mod n
如何知道(n-1)个人报数的问题的解?对,只要知道(n-2)个人的解就行了。(n-2)个人的解呢?当然是先求(n-3)的情况 ---- 这显然就是一个倒推问题!好了,思路出来了,下面写:
令f表示i个人玩游戏报m退出最后胜利者的编号,最后的结果自然是f[n]
f=(f+m) (i&1)
有了这个公式,我们要做的就是从1-n顺序算出f的数值,最后结果是f[n]。因为实际生活中编号总是从1开始,我们输出f[n]+1
由于是逐级递推,不需要保存每个f,程序也是异常简单:
约瑟夫问题pascal代码2
&&n,m,i,s,p:
&&a:array[1..10000]&of&
&&read(n,m);//这步不用说了吧?
&&for&i:=1&to&n&do
&&&&a[i]:=1;//先全部赋值1
&&p:=0;s:=0;//统计人数和报数字用的
&&&&for&i:=1&to&n&do
&&&&if&a[i]=0
&&&&then&&&&//用于等会排除出圈者&&&&&
&&&&s:=s+a[i];//不断累加(报数字)&
&&&&if&s=m&then//出圈者&
&&&&&&write(i,'&');打印出圈者;
&&&&&&a[i]:=0;//明白刚才continue的意思了吧
&&&&&&p:=p+1;//人数减少一个;
&&&&&&s:=0;//重头报起.
&&&&&&&&&&&&&&&&&&&&&&
&&until&p=n;//直到人数到了
约瑟夫问题pascal代码3
&&a:array[1..100]&of&
&&n,m,i,j,p:
&&write('Input&n,m:');
&&readln(n,m);
&&for&i:=1&to&n&do
&&&&a[i]:=i;
&&p:=1;&&&&&&&&&&&&&&&&&&&&&{p用于记录报数的位置}
&&for&i:=1&to&n&do
&&&&&&j:=0;&&&&&&&&&&&&&&&&&&{j用于记录报到的人数}
&&&&&&while&j&m&do
&&&&&&&&begin
&&&&&&&&&&if&a[p]&&0&then&j:=j+1;
&&&&&&&&&&if&p=n&then&p:=1&else&p:=p+1;&&{处理边界情况}
&&&&&&if&p&&1
&&&&&&&&&&&then&begin&write(a[p-1],'&');a[p-1]:=0;end&&&&&&&{处理边界情况}
&&&&&&&&&&&else&begin&write(a[n],'&');a[n]:=0;
约瑟夫问题pascal代码4
&&a:array[1..100]&of&
&&n,m,p,i,j:
&&readln(n,m);
&&for&i:=1&to&n-1&do
&&&a[i]:=i+1;
&&a[n]:=1;
&&for&i:=1&to&n&do
&&&&&&for&j:=1&to&m-1&do
&&&&&&&&&p:=a[p];
&&&&&&write(a[p],'&');
&&&&&&a[p]:=a[a[p]];
约瑟夫问题c++
#include&&iostream&
using&namespace&
const&int&m&=&3;
int&main()
&&&&int&n,&f&=&0;
&&&&cin&&&&n;
&&&&for&(int&i&=&1;&i&&=&n;&i++)&f&=&(f&+&m)&%&i;
&&&&cout&&&&f&+&1&&&&
约瑟夫问题pascal代码5
var&n,m,i,s:
write('N&M&=');
read(n,m);
for&i:=2&to&n&do
s:=(s+m)&mod&i;
writeln('The&winner&is&',s+1);
这个算法的时间复杂度为O(n),相对于模拟算法已经有了很大的提高。算n,m等于一百万,一千万的情况不是问题了。可见,适当地运用数学策略,不仅可以让编程变得简单,而且往往会成倍地提高算法执行效率。
约瑟夫问题约瑟夫问题10e100版(from vijios)
描述 Description
n个人排成一圈。从某个人开始,按依次编号。从编号为1的人开始顺时针“一二一”报数,报到2的人退出圈子。这样不断循环下去,圈子里的人将不断减少。由于人的个数是有限的,因此最终会剩下一个人。试问最后剩下的人最开始的编号。
输入格式 Input Format
一个正整数n,表示人的个数。输入数据保证数字n不超过100位。
输出格式 Output Format
一个正整数。它表示经过“一二一”报数后最后剩下的人的编号。
样例输入 Sample Input
样例输出 Sample Output
时间限制 Time Limitation
各个测试点1s
当n=9时,退出圈子的人的编号依次为:
2 4 6 8 1 5 9 7
最后剩下的人编号为3
初见这道题,可能会想到模拟。可是数据实在太大啦!!
我们先拿手来算,可知n分别为1,2,3,4,5,6,7,8...时的结果是1,1,3,1,3,5,7,1...
有如下规律:从1到下一个1为一组,每一组中都是从1开始递增的奇数,且每组元素的个数分别为1,2,4...
这样就好弄了!!
大体思路如下:
②b:=1,c:=1{b为某一组的元素个数,c为累计所加到的数}
③while c&a do (b:=b*2,c:=b+c){超过目标时停止加数}
⑥c:=c-b{退到前一组}
⑦x:=a-c{算出目标为所在组的第几个元素}
⑧ans:=x*2-1{求出该元素}
⑨write(ans)
有了思路,再加上高精度就可以了。我写的代码比较猥琐,因为是先把上面的思路敲进去,再写过程,又把一些简单的过程合到主程序中了,所以有点乱,也有点猥琐。起提供思路的作用还是完全可以的吧~~~
&&a,b,c:array[1..105]of&
&&la,lb,lc,i:
procedure&
&&for&i:=1&to&105&do
&&&&c:=c+b;
&&for&i:=1&to&104&do
&&&&if&c&9&then
&&&&&&&&&&&&&begin
&&&&&&&&&&&&&&&c:=c+cdiv10;
&&&&&&&&&&&&&&&c:=c&mod&10;
&&&&&&&&&&&&&
functioncxiaoa:
fori:=105downto1do
ifc&athenbegincxiaoa:=end
fori:=1to105dob:=b*2;
fori:=1to104doifb&9then
b:=b+bdiv10;
b:=bmod10;
fori:=1to104do
ifc&=bthenc:=c-belse
whilec[j]=0doinc(j);
whilej&ido
c[j]:=c[j]-1;
c[j-1]:=c[j-1]+10;
fori:=1to104do
ifa&cthena:=a-celse
fori:=1to105doa:=a*2;
fori:=1to104doifa&9then
a:=a+adiv10;
a:=amod10;
ifa[1]&0thena[1]:=a[1]-1else
whilea[j]=0doinc(j);
whilej&1do
a[j]:=a[j]-1;
a[j-1]:=a[j-1]+10;
a[1]:=a[1]-1;
fori:=105downto1doifa&0thenbeginj:=i;
fori:=jdownto1dowrite(a);
readln(s);
la:=length(s);
fori:=ladownto1doa:=ord(s[la+1-i])-ord('0');
whilecxiaoado
约瑟夫问题猴子选王
约瑟夫问题问题表述
一. 问题描述:
一堆猴子都有编号,编号是1,2,3 ...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
&密码问题&
问题描述:编号为1、2、3、...、N的N个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。从指定
编号为1的人开始,按顺时针方向自1开始顺序报数,报到指定数M时停止报数,报M的人出列,并将
他的密码作为新的M值,从他在顺时针方向的下一个人开始,重新从1报数,依此类推,直至所有的
人全部出列为止。请设计一个程序求出出列的顺序,其中N≤30,M及密码值从键盘输入。
二. 基本要求:
(1) 输入数据:输入m,n m,n 为整数,n&m
(2)中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号 ,建立一个函数来实现此功能
约瑟夫问题编程解决
#include&&stdio.h&
#include&&malloc.h&
#defineLENsizeof(structmonkey)//定义structmonkey这个类型的长度
struct&monkey
struct&monkey&*
struct&monkey&*create(int&m)
struct&monkey&*head,*p1,*p2;
p1=p2=(struct&monkey*)malloc(LEN);
head-&num=1;
for(i=1,p1-&num=1;i&m;i++)
p1=(struct&monkey*)malloc(LEN);
p1-&num=i+1;
p2-&next=p1;
struct&monkey&*findout(struct&monkey&*start,int&n)
struct&monkey&*p;
for(i=1;i&n-1;i++)
struct&monkey&*letout(struct&monkey&*last)
struct&monkey&*out,*
out=last-&
last-&next=out-&
next=out-&
free(out);
int&main()
int&m,n,i,
struct&monkey&*p1,*p2;
printf(&请输入猴子的个数m:\n&);
scanf(&%d&,&m);
printf(&每次数猴子的个数n:\n&);
scanf(&%d&,&n);
p1=p2=create(m);
for(i=1;i&m;i++)
p2=findout(p1,n);
p2=letout(p1);
free(p2);
printf(&猴王的编号是:%d\n&,king);
C语言程序2
//猴子选大王问题(约瑟夫环问题)
 #include&stdio.h&
 #include&string.h&
 #include&stdlib.h&
 intfre(charmok[],intk)
 printf(&\n猴子编号:\n&);
 for(i=0;mok[i]!='\0';i++)
 printf(&%d\t&,mok[i]);//输出为踢出之前的编号,测试用
 for(i=k;mok[i]!='\0';i++)
 mok[i]=mok[i+1];
 }//一个循环,将k以后的元素前移
 putchar('\n');
 for(i=0;mok[i]!='\0';i++)
 printf(&%d\t&,mok[i]);//输出踢出之后的编号,测试用
 printf(&\n按回车继续下一轮:\n&);
 getch();//暂停,测试用
 return0;
 int&main()
 char&mok[50];
 int&n,s,b;//n表示猴子总数;s表示步进;b表示元素个数及大王编号
 int&j,k;//j,k都是计数器
 mok[0]=1;//初始化mok[0],让后面编号更简单的进行
 printf(&请输入猴子的总数:\n&);
 scanf(&%d&,&n);//输入猴子的总数
 for(i=1;i&n;i++)
 mok[i]=i+1;
 }//对猴子进行编号
 mok[n]='\0';//用0来表示数组的结尾
 printf(&请输入循环单位:\n&);
 scanf(&%d&,&s);//单位长度
 b=n;//统计猴子的个数
 for(j=1,k=0;;j++,k++)
 if(b==1)
 b=mok[0];
 }//如果元素只剩下一个,那么退出循环
 if(j==s)
 printf(&\n它出列了:%d\n&,mok[k]);
 fre(mok,k);//用于元素前移的函数
 }//将猴子从数组中踢出,并重置计数器J。
 if(mok[k+1]=='\0')
 k=-1;//重置计数器k,因为后面有k++所以k要在重置基础上-1.
 }//判断是否为数组最后元素,重置计数器k。
 printf(&\n最终大王是他:%d\n&,b);
 return0;
C语言程序3: 用数组模拟链表
#include&stdio.h&
#include&malloc.h&
int&main()
int&*person,i,node,n,m;
scanf(&%d%d&,&n,&m);
person=(int*)malloc(sizeof(int)*(n+1));
for(i=1;i&=n;i++)//初始化圈
person[i]=i+1;//i表示编号为i的人,person[i]的值表示编号为i的人的下一个人的编号
person[n]=1;//编号为n的下一个人的编号是1
while(node!=person[node])//如果某个人的下一个人不是自己,意味着人数超过1人
for(i=1;i&m-1;i++)//这个循环终止于被杀的人的前一个人
node=person[node];//下一个人的编号为node,node的值来自于前一个人的person[node]
printf(&%d&,person[node]);//输出被杀的人编号
person[node]=person[person[node]];//修改被杀的人的前一个人的person[node]为被杀的人的后一个人的编号
node=person[node];//这句话中的node是被杀的人后一个人
printf(&%d&,node);//输出最后幸存者的编号
pascal程序:
a:array[1..10000]
read(m,n);
fori:=1tomdoa[i]:=1;
fori:=1tomdo
whiles&ndo
ifj&mtheninc(j)
s:=s+a[j];
#include&iostream&
#include&conio.h&
using&namespace&
&&&&int&n,m,i,s=0;
&&&&cout&&&N:&;cin&&n;&&&
&&&&cout&&&M:&;cin&&m;
&&&&for(i=2;i&=n;i++)
&&&&s=(s+m)%i;
&&&&cout&&&新的大王是:&&&s+1;
&&&&getch();&&
约瑟夫数学算法
#include&stdio.h&
#include&conio.h&
intmain(void)
intn,i=0,m,p;
scanf(&%d%d&,&n,&m);//n总人数,m步长
while(++i&=n)
while(p&n)
p=p-n+(p-n-1)/(m-1);
printf(&%d\n&,p);
约瑟夫递推算法
#include&iostream&
intking(intM,intN)
for(inti=2;i&=M;i++)
k=(k+N)%i;
return++k;}i
while(scanf(&%d%d&,&n,&m)&&n&&m)
cout&&king(n,m)&&
2、PHP模拟算法
php有非常完善的数据结构模拟方案,可以非常简洁的解决这样的问题!
functionking($n,$m){
$monkey=range(1,$n);//模拟建立一个连续数组
while(count($monkey)&1){
$i+=1;//开始查数
$head=array_shift($monkey);//直接一个一个出列最前面的猴子
if($i%$m!=0){
array_push($monkey,$head);//如果没数到m或m的倍数,则把该猴放回尾部去.
}//否则就抛弃掉了
return$monkey[0];
echo'剩余',king(3,4),'号猴子';
约瑟夫问题笔算解决
笔算解决约瑟夫问题
在M比较小的时候 ,可以用笔算的方法求解,
即N个人围成一圈,1,2,1,2的报数,报到2就去死,直到只剩下一个人为止。
当N=2^k的时候,第一个报数的人就是最后一个死的,
对于任意的自然数N 都可以表示为N=2^k+t,其中t&n/2
于是当有t个人去死的时候,就只剩下2^k个人 ,这2^k个人中第一个报数的就是最后去死的。这2^k个人中第一个报数的人就是2t+1
于是就求出了当M=2时约瑟夫问题的解:
求出不大于N的最大的2的整数次幂,记为2^k,最后一个去死的人是2(N-2^k)+1
即N个人围成一圈,1,2,3,1,2,3的报数,报到3就去死,直到只剩下一个人为止。
此时要比M=2时要复杂的多
我们以N=2009为例计算
N=2009,M=3时最后被杀死的人记为F(2009,3),或者可以简单的记为F(2009)
假设这种情况下还剩下n个人,则下一轮将杀死[n/3]个人,[]表示取整,还剩下n-[n/3]个人
设这n个人为a1,a2,...,a(n-1),an
从a1开始报数,一圈之后,剩下的人为a1,a2,a4,a5,...a(n-n mod 3-1),a(n-n mod 3+1),..,an
于是可得:
1、这一轮中最后一个死的是a(n-n mod 3),下一轮第一个报数的是a(n-n mod 3+1)
2、若3|n,则最后死的人为新一轮的第F(n-[n/3])个人
若n mod 3≠0 且f(n-[n/3])&=n mod 3则最后死的人为新一轮的第n-[n/3]+F(n-[n/3])-(n mod 3)人
若n mod 3≠0 且f(n-[n/3])&n mod 3则最后死的人为新一轮的第F(n-[n/3])-(n mod 3)人
3、新一轮第k个人对应原来的第 3*[(k-1)/2]+(k-1)mod 2+1个人
综合1,2,3可得:
F(1)=1,F(2)=2,F(3)=2,F(4)=1,F(5)=4,F(6)=1,
当f(n-[n/3])&=n mod 3时 k=n-[n/3]+F(n-[n/3])-(n mod 3),F(n)=3*[(k-1)/2]+(k-1)mod 2+1
当f(n-[n/3])&n mod 3时 k=F(n-[n/3])-(n mod 3) ,F(n)=3*[(k-1)/2]+(k-1)mod 2+1
这种算法需要计算 [log(3/2)2009]次 这个数不大于22,可以用笔算了
第一圈,将杀死669个人,这一圈最后一个被杀死的人是2007,还剩下1340个人,
第二圈,杀死446人,还剩下894人
第三圈,杀死298人,还剩下596人
第四圈,杀死198人,还剩下398人
第五圈,杀死132人,还剩下266人
第六圈,杀死88人,还剩下178人
第七圈,杀死59人,还剩下119人
第八圈,杀死39人,还剩下80人
第九圈,杀死26人,还剩下54人
第十圈,杀死18人,还剩36人
十一圈,杀死12人,还剩24人
十二圈,杀死8人,还剩16人
十三圈,杀死5人,还剩11人
十四圈,杀死3人,还剩8人
十五圈,杀死2人,还剩6人
F(1)=1,F(2)=2,F(3)=2,F(4)=1,F(5)=4,F(6)=1,
然后逆推回去
F(8)=7 F(11)=7 F(16)=8 f(24)=11 f(36)=16 f(54)=23 f(80)=31 f(119)=43 f(178)=62 f(266)=89 f(398)=130
F(596)=191 F(894)=286 F(1340)=425 F(2009)=634
Ronald L.Graham,Donald E.Knuth,Oren Patashnik .具体数学计算机基础(第2版) :人民邮电出版社,2013:7
企业信用信息C语言函数读程序题目求解!_百度知道
C语言函数读程序题目求解!
h&}以上程序输出的结果是多少;num&#47,能不能详细告诉怎么读;pringt(&do{k*=num%10;}}main(){unsigned n=26;=10;#include&%d\n&unsigned fun6(unsigned num){unsigned k=1?关键是不知道这一题怎么读,fun6(n))
printf是我打错了,另外没有错误,按照题目打的
提问者采纳
n&quot.h&}void main(){ unsigned n=26; }while(num);
num/:#include&lt。我估计是这样的,fun6(n));unsigned fun6(unsigned num){ unsigned k=1;}程序的结果是 12 ; do {
k*=num%10; printf(&=10;%d&#92程序有点问题;stdio
其他类似问题
为您推荐:
c语言函数的相关知识
其他3条回答
另请高明吧哦,缺少while,VS2010报错
函数fun6(n)用于计算十进制数N的各位之积!所以,以上程序输出的结果为12
#include&stdio.h&unsigned fun6(unsigned num){ unsigned k=1;
do(k*=num%10);
while(num/=10);}void main(){ unsigned n=26;printf(&%d\n&,fun6(n));}完整的,应该是缺少while了!
do 不可能单独使用吧!是2L 作者说的那样,是十进制N的各位之积!
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言《同步训练》
②黑盒测试:主要诊断功能不对或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止条件错,用于软件确认。主要方法有等价类划分法、边界值分析法、错误推测法、因果图等。
软件测试过程一般按4个步骤进行:单元测试、集成测试、验收测试(确认测试)和系统测试。
程序的调试
程序调试的任务是诊断和改正程序中的错误,主要在开发阶段进行。
程序调试的基本步骤:1、错误定位;2、修改设计和代码,以排除错误;3、进行回归测试,防止引进新的错误。
软件调试可分表静态调试和动态调试。静态调试主要是指通过人的思维来分析源程序代码和排错,是主要的设计手段,而动态调试是辅助静态调试。主要调试方法有:1、强行排错法;2、回溯法;3、原因排除法。
4. 数据库设计基础
数据库系统的基本概念
数据:实际上就是描述事物的符号记录。
数据的特点:有一定的结构,有型与值之分,如整型、实型、字符型等。而数据的值给出了符合定型的值,如整型值15。
数据库:是数据的集合,具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序共享。
数据库存放数据是按数据所提供的数据模式存放的,具有集成与共享的特点。
数据库管理系统:一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,是数据库的核心。
数据库管理系统功能:
(1)数据模式定义:即为数据库构建其数据框架;
(2)数据存取的物理构建:为数据模式的物理存取与构建提供有效的存取方法与手段;
(3)数据操纵:为用户使用数据库的数据提供方便,如查询、插入、修改、删除等以及简单的算术运算及统计;
(4)数据的完整性、安生性定义与检查;
(5)数据库的并发控制与故障恢复;
(6)数据的服务:如拷贝、转存、重组、性能监测、分析等。
为完成以上六个功能,数据库管理系统提供以下的数据语言:
(1)数据定义语言:负责数据的模式定义与数据的物理存取构建;
(2)数据操纵语言:负责数据的操纵,如查询与增、删、改等;
(3)数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等。
数据语言按其使用方式具有两种结构形式:交互式命令(又称自含型或自主型语言)宿主型语言(一般可嵌入某些宿主语言中)。
数据库管理员:对数据库进行规划、设计、维护、监视等的专业管理人员。
数据库系统:由数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、硬件平台(硬件)、软件平台(软件)五个部分构成的运行实体。
数据库应用系统:由数据库系统、应用软件及应用界面三者组成。
文件系统阶段:提供了简单的数据共享与数据管理能力,但是它无法提供完整的、统一的、管理和数据共享的能力。
层次数据库与网状数据库系统阶段 :为统一与共享数据提供了有力支撑。
关系数据库系统阶段
数据库系统的基本特点:数据的集成性 、数据的高共享性与低冗余性 、数据独立性(物理独立性与逻辑独立性)、数据统一管理与控制。
数据库系统的三级模式:
(1)概念模式:数据库系统中全局数据逻辑结构的描述,全体用户公共数据视图;
(2)外模式:也称子模式与用户模式。是用户的数据视图,也就是用户所见到的数据模式;
(3)内模式:又称物理模式,它给出了数据库物理存储结构与物理存取方法。
数据库系统的两级映射:
(1)概念模式到内模式的映射;
(2)外模式到概念模式的映射。
数据模型的概念:是数据特征的抽象,从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表与操作提供一个抽象的框架。描述了数据结构、数据操作及数据约束。
E-R模型的基本概念
(1)实体:现实世界中的事物;
(2)属性:事物的特性;
(3)联系:现实世界中事物间的关系。实体集的关系有一对一、一对多、多对多的联系。
E-R模型三个基本概念之间的联接关系:实体是概念世界中的基本单位,属性有属性域,每个实体可取属性域内的值。一个实体的所有属性值叫元组。
E-R模型的图示法:1、实体集表示法;2、属性表法;3、联系表示法。
层次模型的基本结构是树形结构,具有以下特点:
(1)每棵树有且仅有一个无双亲结点,称为根;
(2)树中除根外所有结点有且仅有一个双亲。
从图论上看,网状模型是一个不加任何条件限制的无向图。
关系模型采用二维表来表示,简称表,由表框架及表的元组组成。一个二维表就是一个关系。
在二维表中凡能唯一标识元组的最小属性称为键或码。从所有侯选健中选取一个作为用户使用的键称主键。表A中的某属性是某表B的键,则称该属性集为A的外键或外码。
关系中的数据约束:
(1)实体完整性约束:约束关系的主键中属性值不能为空值;
(2)参照完全性约束:是关系之间的基本约束;
(3)用户定义的完整性约束:它反映了具体应用中数据的语义要求。
4.3关系代数
关系数据库系统的特点之一是它建立在数据理论的基础之上,有很多数据理论可以表示关系模型的数据操作,其中最为著名的是关系代数与关系演算。
关系模型的基本运算:1、插入;2、删除;3、修改;4、查询(包括投影、选择、笛卡尔积运算)
数据库设计与管理
数据库设计是数据应用的核心。
数据库设计的两种方法:
(1)面向数据:以信息需求为主,兼顾处理需求;
(2)面向过程:以处理需求为主,兼顾信息需求。
数据库的生命周期:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。
需求分析常用结构析方法和面向对象的方法。结构化分析(简称SA)方法用自顶向下、逐层分解的方式分析系统。用数据流图表达数据和处理过程的关系。对数据库设计来讲,数据字典是进行详细的数据收集和数据分析所获得的主要结果。
数据字典是各类数据描述的集合,包括5个部分:数据项、数据结构、数据流(可以是数据项,也可以是数据结构)、数据存储、处理过程。
数据库概念设计的目的是分析数据内在语义关系。设计的方法有两种
(1)集中式模式设计法(适用于小型或并不复杂的单位或部门);
(2)视图集成设计法。
设计方法:E-R模型与视图集成。
视图设计一般有三种设计次序:自顶向下、由底向上、由内向外。
视图集成的几种冲突:命名冲突、概念冲突、域冲突、约束冲突。
关系视图设计:关系视图的设计又称外模式设计。
关系视图的主要作用:
(1)提供数据逻辑独立性;
(2)能适应用户对数据的不同需求;
(3)有一定数据保密功能。
数据库的物理设计主要目标是对数据内部物理结构作调整并选择合理的存取路径,以提高数据库访问速度有效利用存储空间。一般RDBMS中留给用户参与物理设计的内容大致有索引设计、集成簇设计和分区设计。
数据库管理的内容:
(1)数据库的建立;
(2)数据库的调整;
(3)数据库的重组;
(4)数据库安全性与完整性控制;
(5)数据库的故障恢复;
(6)数据库监控。
附4. 全国计算机等级考试二级公共基础复习题
一、选择题(在下列各题的A)、B)、C)、D)四个选项中,其中加粗且有下划线的选项是正确的。)
(一)、基本数据结构与算法
1.1 数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及
A)数据的存储结构&&&&& & B)计算方法&&&&&& C)数据映象&&&&&&&& & D)逻辑存储
1.2 数据处理的最小单位是
A)数据&&&&&&&&&&&& &&&&& B)数据元素&&&&&& C)数据项&&&&&&&&& & D)数据结构
1.3 根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分成
A)动态结构和静态结构&&&&&&&&&&&&&&&&&& &&& B)紧凑结构和非紧凑结构
C)线性结构和非线性结构&&&&&&&&&&&&&&&&&& &&& D)内部结构和外部结构
1.4 数据结构中,与所使用的计算机无关的是数据的
A)存储结构&&&&&&&& & B)物理结构&&&&&& &&& C)逻辑结构&&&&&&&&&&& & D)物理和存储结构
1.5 在计算机中,算法是指
A)加工方法&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&& B)解题方案的准确而完整的描述
C)排序方法&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&& D)查询方法
1.6 算法分析的目的是
A)找出数据结构的合理性&&&&&&&&&&&&&&&& &&& B)找出算法中输入和输出之间的关系
C)分析算法的易懂性和可靠性&&&&&&&&&&&& && &D)分析算法的效率以求改进
1.7 算法的时间复杂度是指
A)执行算法程序所需要的时间&&&&&&&&&&&& &&& B)算法程序的长度
C)算法执行过程中所需要的基本运算次数 &&& D)算法程序中的指令条数
1.8 算法的空间复杂度是指
A)算法程序的长度&&&&&&&&&&&&&&&&&&&&&& &&& B)算法程序中的指令条数
C)算法程序所占的存储空间&&&&&&&&&&&&&& &&& D)执行过程中所需要的存储空间
1.9 链表不具有的特点是
A)不必事先估计存储空间&&&&&&&&&&&&&&&& &&& B)可随机访问任一元素
C)插入删除不需要移动元素&&&&&&&&&&&&&& &&& D)所需空间与线性表长度成正比
1.10 用链表表示线性表的优点是
A)便于随机存取&&&&&&&&&&&&&&&&&&&&&&&& &&& B)花费的存储空间较顺序存储少
C)便于插入和删除操作&&&&&&&&&&&&&&&& &&& D)数据元素的物理顺序与逻辑顺序相同
1.11 下列叙述中正确的是
A)线性表是线性结构&&&&&&&&&&&&&&&&&&&&&&& &&& B)栈与队列是非线性结构
C)线性链表是非线性结构&&&&&&&&&&&&&&&& &&& D)二叉树是线性结构
1.12 线性表的顺序存储结构和线性表的链式存储结构分别是
A)顺序存取的存储结构、顺序存取的存储结构
B)随机存取的存储结构、顺序存取的存储结构
C)随机存取的存储结构、随机存取的存储结构
D)任意存取的存储结构、任意存取的存储结构
1.13 线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是
A)每个元素都有一个直接前件和直接后件
B)线性表中至少要有一个元素
C)表中诸元素的排列顺序必须是由小到大或由大到小
D)除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
1.14 在单链表中,增加头结点的目的是
A)方便运算的实现&&&&&&&&&&&&&&&&&&&&& &&& B)使单链表至少有一个结点
C)标识表结点中首结点的位置 &&&&&&&&&&& &&&&D)说明单链表是线性表的链式存储实现
1.15 非空的循环单链表head的尾结点(由p所指向),满足
A)p-&next==NULL&&& & B)p==NULL&&&&&&&&&&& C)p-&next=head&& &&& & D)p=head
1.16 循环链表的主要优点是
A)不再需要头指针了
B)从表中任一结点出发都能访问到整个链表
C)在进行插入、删除运算时,能更好的保证链表不断开
D)已知某个结点的位置后,能够容易的找到它的直接前件
1.17 下列数据结构中,按先进后出原则组织数据的是
A)线性链表&&&& &&&&& B)栈&&&&&&&&&&&&&&&&
C)循环链表&&&& &&&&& D)顺序表
1.18 栈和队列的共同特点是
A)都是先进先出&&&&&&&&&&&&&&&&&&&&&&&& &&& B)都是先进后出
C)只允许在端点处插入和删除元素&&&&&&&&&& &&& D)没有共同点
1.19 如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是
A)e3,e1,e4,e2&&&&&
B)e2,e4,e3,e1&&&&&&&&
C)e3,e4,e1,e2&&&&&&& & D)任意顺序
1.20 栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是
A)ABCED&&&&&&&&&&&
B)DCBEA &&&&&&&&&&&&&&C)DBCEA&&&&&&&&&& & D)CDABE
1.21 栈通常采用的两种存储结构是
A)线性存储结构和链表存储结构&&&&&&&& &&& B)散列方式和索引方式
C)链表存储结构和数组&&&&&&&&&&&&&&&&&& &&& D)线性存储结构和非线性存储结构
1.22 串的长度是
A)串中不同字符的个数&&&&&&&&&&&&&&&&&& &&& B)串中不同字母的个数
C)串中所含字符的个数且字符个数大于零&& &&&
D)串中所含字符的个数
1.23 树是结点的集合,它的根结点数目是
A)有且只有1&&&&&& & B)1或多于1&&&&& &&& C)0或1&&&&&&&&&&&&&&& & D)至少2
1.24 设有下列二叉树:对此二叉树前序遍历的结果为
A)ZBTYCPXA&&&&&&&&
B)ATBZXCYP&&&&&&&&&&& C)ZBTACYXP&&&&&&&&&&& & D)ATBZXCPY
1.25 已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为
A)GEDHFBCA&&&&&&&&
&B)DGEBHFCA&&&&& &&& C)ABCDEFGH&&&&&&&& & D)ACBFEDHG
1.26 已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是
A)acbed&&&&&&&&&&& & B)decab&&&&&&&&& &&& C)deabc&&&&&&&&&&&
1.27 具有3个结点的二叉树有
A)2种形态&&&&&&&&& & B)4种形态&&&&&&& &&& C)7种形态&&&&&&&&&
&D)5种形态
1.28 在深度为5的满二叉树中,叶子结点的个数为
A)32&&&&&&&&&&&&&& & B)31 &&&&&&&&&&& &&& C)16&&&&&&&&&&&&&& & D)15
1.29 设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为
A)12&&&&&&&&&&
&& &&B)13&&&&&&&&&&& &&& C)14&&&&&&&&&&&&&& & D)15
1.30 n个顶点的强连通图的边数至少有
A)n-1&&&&&&&&&&&&& & B)n(n-1)&&&&&& && &C)n&&&&&&&&&&&&&&& & D)n+1
1.31 假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为
A)log2n&&&&&&&&&&& & B)n2&&&&&&&&&&&& &&& C)O(n1.5)&&&&&&& & D)n(n-1)/2
1.32 已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是
A)堆排序&&&&&&&&&&
&B)直接插入排序
&&&&C)快速排序&&&&&&&& & D)直接选择排序
1.33 最简单的交换排序方法是
A)快速排序&&&&&&&& & B)选择排序&&&&&& &&& C)堆排序&&&&&&&&&&
&D)冒泡排序
1.34 在下列几种排序方法中,要求内存量最大的是
A)插入排序&&&&&&&& & B)选择排序&&&&&& &&& C)快速排序&&&&&&&&
&D)归并排序
(二)、程序设计基础
1.35 程序设计语言的基本成分是数据成分、运算成分、控制成分和
A)对象成分&&&&&&&& & B)变量成分&&&&&& &&& C)语句成分&&&&&&&&
&D)传输成分
1.36 结构化程序设计的3种结构是
A)顺序结构、选择结构、转移结构&&&&&&&& &&& B)分支结构、等价结构、循环结构
C)多分支结构、赋值结构、等价结构&&&&&& &&& D)顺序结构、选择结构、循环结构
1.37 在设计程序时,应采纳的原则之一是
A)不限制goto语句的使用&&&&&&&&&&&&&&& &&& B)减少或取消注解行
C)程序越短越好&&&&&&&&&&&&&&&&&&&&&&&& &&& D)程序结构应有助于读者理解
1.38 对建立良好的程序设计风格,下面描述正确的是
A)程序应简单、清晰、可读性好&&&&&&&& &&& B)符号名的命名只要符合语法
C)充分考虑程序的执行效率&&&&&&&&&&&&&& &&& D)程序的注释可有可无
1.39 下列叙述中,不属于结构化程序设计方法的主要原则的是
A)自顶向下&&&&&&&&
&B)由底向上&&&&& &&& C)模块化&&&&&&&&&& & D)限制使用goto语句
1.40 结构化程序设计主要强调的是
A)程序的规模&&&&&& & B)程序的效率&&&& &&& C)程序设计语言的先进性 D)程序易读性
1.41 在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,现在,与程序的效率相比,人们更重视程序的
A)安全性&&&&&&&&&& & B)一致性&&&&&&&& &&& C)可理解性&&&&&&&&&&& & D)合理性
1.42 一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。而实现递归
调用中的存储分配通常用
A)栈&&&&&&&&&&&&&& & B)堆&&&&&&&&&&&& &&& C)数组&&&&&&&&&&&& & D)链表
1.43 以下不属于对象的基本特点的是
A)分类性&&&&&&&&&& & B)多态性&&&&&&&& && &C)继承性&&&&&&&&& & D)封装性
(三)、软件工程基础
1.44 下列不属于软件工程的3个要素的是
A)工具&&&&&&&&&&&& & B)过程&&&&&&&&&& &&& C)方法 &&&&&&&&&&&
1.45 开发大型软件时,产生困难的根本原因是
A)大系统的复杂性& & B)人员知识不足&&&&&& C)客观世界千变万化 & D)时间紧、任务重
1.46 下面不属于软件设计原则的是
A)抽象 &&&&&&&&&&& & B)模块化&&&&&&&& && &C)自底向上&&&&&&&&&&& & D)信息隐蔽
1.47 软件工程的理论和技术性研究的内容主要包括软件开发技术和
A)消除软件危机 &&&
&B)软件工程管理&&&&& C)程序设计自动化&& & D)实现软件可重用
1.48 开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作
A)软件投机&&&&&&&& & B)软件危机&&&&& &&& C)软件工程&&&&&&&& & D)软件产生
1.49 软件工程的出现是由于
A)程序设计方法学的影响&&&&&&&&&&&&&&&& &&& B)软件产业化的需要
C)软件危机的出现&&&&&&&&&&&&&&&&&&&&& &&& D)计算机的发展
1.50 下列不属于结构化分析的常用工具的是
A)数据流图&&&&&&&&&&& & B)数据字典&&&&&& &&& C)判定树&&&&&&&&&& & D)PAD图
1.51 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是
A)控制流&&&&&&&&& & B)加工&&&&&&&&&& &&& C)数据存储&&&&&&&& & D)源和潭
1.52 在数据流图(DFD)中,带有名字的箭头表示
A)模块之间的调用关系 B)程序的组成成分&&&& C)控制程序的执行顺序 D)数据的流向
1.53 在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示
A)模块之间的调用关系
B)程序的组成成分&&&& C)控制程序的执行顺序 D)数据的流向
1.54 为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为
A)PAD图&&&&&&&&&&&
&B)N-S图 &&&&&&& &&& C)结构图&&&&&&&&&& & D)数据流图
1.55 模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的
A)抽象和信息隐蔽&&&& B)局部化和封装化&&& &C)内聚性和耦合性& & D)激活机制和控制方法
1.56 下列选项中,不属于模块间耦合的是
A)数据耦合 &&& &&& & B)同构耦合&&&&&& &&& C)异构耦合&&&&&&& &&& & D)公用耦合
1.57 软件开发的结构化生命周期方法将软件生命周期划分成
A)定义、开发、运行维护&&&&&&&&&&&&&&&&&& &&& B)设计阶段、编程阶段、测试阶段
C)总体设计、详细设计、编程调试&&&&&&&& &&& D)需求分析、功能定义、系统设计
1.58 需求分析阶段的任务是确定
A)软件开发方法&&&& & B)软件开发工具&& &&&
C)软件开发费用&&&& & D)软件系统功能
1.59 需求分析中开发人员要从用户那里了解
A)软件做什么&&&&& & B)用户使用界面&& &&&
C)输入的信息&&&&&& & D)软件的规模
1.60 下列叙述中,不属于软件需求规格说明书的作用的是
A)便于用户、开发人员进行理解和交流
B)反映出用户问题的结构,可以作为软件开发工作的基础和依据
C)作为确认测试和验收的依据
D)便于开发人员进行需求分析
1.61 在软件生产过程中,需求信息的给出是
A)程序员&&&&&&&&&& & B)项目管理者&&&& &&& C)软件分析设计人员&&&&
&D)软件用户
1.62 软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指
A)模块间的关系&&&&&&&&&&&&&&&&&&&&&&&& && &B)系统结构部件转换成软件的过程描述
C)软件层次结构&&&&&&&&&&&&&&&&&&&&&&&& &&& D)软件开发过程
1.63 开发软件时对提高开发人员工作效率至关重要的是
A)操作系统的资源管理功能&&&&&&&&&&&&&& &&& B)先进的软件开发工具和环境
C)程序人员的数量&&&&&&&&&&&&&&&&&&&&&& &&& D)计算机的并行处理能力
1.64 在软件测试设计中,软件测试的主要目的是
A)实验性运行软件&&&&&&&&&&&&&&&&&&&&&& &&& B)证明软件正确
C)找出软件中全部错误&&&&&&&&&&&&&&&&&& && &D)发现软件错误而执行程序
1.65 下列叙述中,不属于测试的特征的是
A)测试的挑剔性&& &&&B)完全测试的不可能性&
C)测试的可靠性&&& &&& & D)测试的经济性
1.66 为了提高测试的效率,应该
A)随机选取测试数据&&&&&&&&&&&&&&&&&&&& &&& B)取一切可能的输入数据作为测试数据
C)在完成编码以后制定软件的测试计划&&&& && &D)集中对付那些错误群集的程序
1.67 软件开发离不开系统环境资源的支持,其中必要的测试数据属于
A)硬件资源&&&&&&&& & B)通信资源&&&&&& &&& C)支持软件&&&&&&&& & D)辅助资源
1.68 完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是
A)黑箱测试法&&&&& & B)白箱测试法&&&& &&& C)错误推测法&&&&&& & D)安装测试法
1.69 在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看做是
A)路径的集合&&&&& & B)循环的集合&&&& &&& C)目标的集合&&&&&& & D)地址的集合
1.70 下列不属于软件调试技术的是
A)强行排错法&&&&&&
&B)集成测试法&&& &&& &&& C)回溯法&&&&&&&&&& & D)原因排除法
1.71 检查软件产品是否符合需求定义的过程称为
A)确认测试&&&&&&&&&&& & B)集成测试&&&&&& &&& C)验证测试&&&&&&&& & D)验收测试
1.72 软件生命周期中所花费用最多的阶段是
A)详细设计&&&&&&&& & B)软件编码&&&&&& &&& C)软件测试&&&&&&&&
&D)软件维护
1.73 软件复杂性度量的参数包括
A)效率&&&&&&&&&&&& & B)规模&&&&&&&&& &&& C)完整性&&&&&&&&&& & D)容错性
(四)、数据库设计基础
1.74 在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是
A)数据库系统&&&&& & B)文件系统&&&&&& &&& C)人工管理&&&&&&&& & D)数据项管理
1.75 在数据管理技术发展过程中,文件系统与数据库系统的主要区别是数据库系统具有
A)特定的数据模型& & B)数据无冗余&&&&&&&& C)数据可共享&& &&& & D)专门的数据管理软件
1.76 相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和
A)可重用性差&&&&&& & B)安全性差&&&&&&&&&& C)非持久性 &&&&&&&
&D)冗余性
1.77 下列说法中,不属于数据模型所描述的内容的是
A)数据结构&&&&&&&& & B)数据操作& &&&& &&&&C)数据查询&&&&&&&&&&& & D)数据约束
1.78 下列有关数据库的描述,正确的是
A)数据库是一个DBF文件 &&&&&&&&&&&&&&& &&& B)数据库是一个关系
C)数据库是一个结构化的数据集合& &&&&&&& &&& D)数据库是一组文件
1.79 下列有关数据库的描述,正确的是
A)数据处理是将信息转化为数据的过程
B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变
C)关系中的每一列称为元组,一个元组就是一个字段
D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字
1.80 应用数据库的主要目的是
A)解决数据保密问题 && B)解决数据完整性问题 C)解决数据共享问题& D)解决数据量大的问题
1.81 数据库设计包括两个方面的设计内容,它们是
A)概念设计和逻辑设计&&&&&&&&&&&&&&&& &&& B)模式设计和内模式设计
C)内模式设计和物理设计&&&&&&&&&&&&&&&& &&& D)结构特性设计和行为特性设计
1.82 下述关于数据库系统的叙述中正确的是
A)数据库系统减少了数据冗余&&&&&&&&&&&
B)数据库系统避免了一切冗余
C)数据库系统中数据的一致性是指数据类型一致
D)数据库系统比文件系统能管理更多的数据
1.83 数据库系统的核心是
A)数据库&&&&&& &&&& &B)数据库管理系统&&& &&&& C)模拟模型&&&&&&& & D)软件工程
1.84 为用户与数据库系统提供接口的语言是
A)高级语言&&& &&&& &&B)数据描述语言(DDL) C)数据操纵语言(DML)&& D)汇编语言
1.85 数据库、数据库系统和数据库管理系统之间的关系是
A)数据库包括数据库系统和数据库管理系统
B)数据库系统包括数据库和数据库管理系统
C)数据库管理系统包括数据库和数据库系统
D)3者没有明显的包含关系
1.86 分布式数据库系统不具有的特点是
A)数据分布性和逻辑整体性&&&&&&&&&&&&&& &&& B)位置透明性和复制透明性
C)分布性&&&&&& &&&&&&&&&&&&&&&&&&&&&&& &&& D)数据冗余
1.87 数据库管理系统DBMS中用来定义模式、内模式和外模式的语言为
A)C&&&&&&&&&&&&&&& & B)Basic&&&&&&&&& &&& C)DDL&&&&&&&&&&&& & D)DML
1.88 单个用户使用的数据视图的描述称为
A)外模式&&&&&&&&& & B)概念模式&&&&&& &&& C)内模式&&&&&&&&&& & D)存储模式
1.89 索引属于
A)模式&&&&&&&&&&&& & B)内模式&&&&&&& &&& C)外模式&&&&&&&&&& & D)概念模式
1.90 在数据库设计中,将E-R图转换成关系数据模型的过程属于
A)需求分析阶段&&&& & B)逻辑设计阶段& &&& C)概念设计阶段 &&& & D)物理设计阶段
1.91 实体是信息世界中广泛使用的一个术语,它用于表示
A)有生命的事物 &&& & B)无生命的事物&&&&& &C)实际存在的事物& &
D)一切事物
1.92 将E-R图转换到关系模式时,实体与联系都可以表示成
A)属性&&&&&&&&&&&&
&B)关系& &&&&&&& &&& C)键&&&&&&&&&&&&&& & D)域
1.93 下列叙述中,正确的是
A)用E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系
B)用E-R图只能表示实体集之间一对一的联系
C)用E-R图只能表示实体集之间一对多的联系
D)用E-R图表示的概念数据模型只能转换为关系数据模型
1.94 一个关系中属性个数为1时,称此关系为
A)对应关系&&&&&&&& & B)单一关系&&&&&& &&& C)一元关系&&&&&&&&&&& & D)二元关系
1.95 下列关系模型中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是
A)选择&&&&&&&&&&&&
&B)连接&&&&&&&&& &&& C)投影&&&&&&&&&&&& & D)并
1.96 下列数据模型中,具有坚实理论基础的是
A)层次模型&&&&&&&& & B)网状模型&&&&&& &&& C)关系模型&&&&&&&&&&& & D)以上3个都是
1.97 关系模型允许定义3类数据约束,下列不属于数据约束的是
A)实体完整性约束&& & B)参照完整性约束&&& &C)域完整性约束&&& D)用户自定义的完整性约束
1.98 “年龄在18~25之间”这种约束是属于数据库当中的
A)原子性措施&&&&&& & B)一致性措施&&&& && &C)完整性措施&&&&& & D)安全性措施
1.99 关系表中的每一横行称为一个
A)元组 &&&&&&&&&&& & B)字段&&&&&&&&&& &&& C)属性&&&&&&&&&&&& & D)码
1.100 SQL语言又称为
A)结构化定义语言&& & B)结构化控制语言&&& &C)结构化查询语言& & D)结构化操纵语言
1.101 下列SQL语句中,用于修改表结构的是
A)ALTER&& &&&&&&& & B)CREATE&&&&&&&& &&& C)UPDATE&&&&&&&&&& & D)INSERT
1.102 NULL是指
A)0&&&&&&&&&&& &&& & &B)空格 &&&&&&&& &&&&C)未知的值或无任何值& D)空字符串
1.103 数据库的故障恢复一般是由
A)数据流图完成的&& & B)数据字典完成的&&& &C)DBA完成的& &&& & D)PAD图完成的
(一)、基本数据结构与算法
1.104 算法的基本特征是可行性、确定性、 【有穷性】 和拥有足够的情报。
1.105 数据结构分为逻辑结构与存储结构,线性链表属于 【存储结构】 。
1.106 数据的逻辑结构有线性结构和 【非线性结构】 两大类。
1.107 在算法正确的前提下,评价一个算法的两个标准是 【时间复杂度和空间复杂度】 。
1.108 算法的工作量大小和实现算法所需的存储单元多少分别称为算法的 【时间复杂度和空间复杂度】 。
1.109 顺序存储方法是把逻辑上相邻的结点存储在物理位置 【相邻】 的存储单元中。
1.110 长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为
【n/2】 。
1.111 栈和队列通常采用的存储结构是 【链式存储和顺序存储】 。
1.112 当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为
【上溢】 。
1.113 若串s=&MathTypes&,则其子串的数目是 【46】 。
1.114 在树形结构中,树根结点没有 【前件】 。
1.115 在长度为n的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为 【log2n 】 。
1.116 排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、 【交换排序】 和选择排序等。
1.117 冒泡排序算法在最好的情况下的元素交换次数为 【0】 。
1.118 在最坏情况下,堆排序需要比较的次数为 【O(nlog2n)】 。
(二)、程序设计基础
1.119 Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向 【数据结构】
的设计方法。
1.120 面向对象的模型中,最基本的概念是对象和 【类】 。
1.121 类是一个支持集成的抽象数据类型,而对象是类的 【实例】 。
1.122 在面向对象的程序设计中,类描述的是具有相似性质的一组 【对象】 。
1.123 可以把具有相同属性的一些不同对象归类,称为 【对象类】 。
1.124 在面向对象方法中,类之间共享属性和操作的机制称为 【继承】 。
1.125 一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的 【可重用性】
1.126 在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为【消息】 。
【封装】 是一种信息隐蔽技术,目的在于将对象的使用者和对象的设计者分开。
1.128 将代数式 Z=x2+y2a+b 转换成程序设计中的表达式为 【SQR(x^2+y^2)/(a+b)】
(三)、软件工程基础
1.129 在程序设计阶段应该采取 【自顶而下】 和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。
1.130 软件危机出现于60年代末,为了解决软件危机,人们提出了 【软件工程学】 的原理来设计软件,这就是软件工程诞生的基础。
1.131 软件工程包括3个要素,分别为方法、工具和 【过程】 。
1.132 软件工程研究的内容主要包括: 【软件开发】 技术和软件工程管理。
1.133 软件开发环境是全面支持软件开发全过程的 【软件工具】 集合。
1.134 通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为 【软件生命周期】 。
1.135 软件结构是以 【模块】 为基础而组成的一种控制层次结构。
1.136 软件设计模块化的目的是 【降低复杂性】 。
1.137 耦合和内聚是评价模块独立性的两个主要标准,其中 【内聚】 反映了模块内各成分之间的联系。
1.138 数据模型按不同应用层次分成3种类型,它们是概念数据模型、 【逻辑数据模型】 和物理数据模型。
1.139 数据流图的类型有 【变换型】 和事务型。
1.140 为了便于对照检查,测试用例应由输入数据和预期的 【输出结果】 两部分组成。
1.141 常用的黑箱测试有等价分类法、 【边值分析法】 、因果图法和错误推测法4种。
1.142 测试的目的是暴露错误,评价程序的可靠性;而 【调试】 的目的是发现错误的位置并改正错误。
1.143 软件维护活动包括以下几类:改正性维护、适应性维护、 【完善性】 维护和预防性维护。
(四)、数据库设计基础
1.144 数据库管理系统常见的数据模型有层次模型、网状模型和 【关系模型】 3种。
1.145 用树型结构表示实体类型及实体间联系的数据模型称为 【层次模型】 。
1.146 在关系模型中,把数据看成一个二维表,每一个二维表称为一个 【关系】 。
1.147 关系操作的特点是 【集合】 操作。
1.148 【关系运算】 是从二维表列的方向进行的运算。
1.149 一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体&项目主管&与实体&项目&的联系属于
【一对多 或 1:N 】 的联系。
1.150 数据库设计分为以下6个设计阶段:需求分析阶段、 【数据库概念设计阶段】 、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。
1.151 【数据模型】 是数据库设计的核心。
1.152 数据库系统阶段的数据具有较高独立性,数据独立性包括物理独立性和 【逻辑独立性】 两个含义。
1.153 当数据的物理结构(存储结构、存取方式等)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的
【物理独立性】 。
1.154 关系数据库的关系演算语言是以 【谓词演算】 为基础的DML语言。
1.155 关键字ASC和DESC分别表示 【升序排列和降序排列】 的含义。
1.156 数据库保护分为:安全性控制、 【完整性控制】 、并发性控制和数据的恢复。
1.157 由关系数据库系统支持的完整性约束是指 【实体完整性】 和参照完整性。

我要回帖

更多关于 c语言 num2str 的文章

 

随机推荐