{ n=n+m; m=n-m; if(i%3==0) putchar('\\n'); printf(\ }
return 0; }
9. 以下程序运行时,输出到屏幕的结果是_____(12)____。100
#include
if(b<1) c=0; else if(b==1) c=a*a; else c=fun(a,b-1)+a*a; return c; }
int main()
{ int a=5,b=4;
printf(\ return 0; } 10. 以下程序运行时,输出到屏幕的结果是_____(13)____。eryood
#include
for(i=j=0;str[i];i++)
if(str[i]>='a'&&str[i]<='z') str[j++]=str[i]; str[j]='\\0'; }
int main()
{ char ss[80]=\ fun(ss); printf(\ return 0; } 11.以下程序运行时,输出到屏幕的结果中第一行是__(14)_。47
#include
{ int c[4]={2,1,3,4},p,q,t,i; p=c[3],q=1;
for(i=2;i>=0;i--) { t=c[i]*p+q; q=p;
第 6 页 共 10 页
p=t; }
printf(\ return 0; }
11. 以下程序运行时,输出到屏幕的结果中第三行是__(15)___,第四行是__(16)___。 1 2 1
1 3 3 1
#include
void setdata(int s[][N], int n); int main()
{ int i,j,y[N][N],n=5; setdata(y,n); for(i=0;i { for(j=0;j<=i;j++) printf(\ printf(\ } return 0; } void setdata(int s[][N], int n) { int i,j; for(i=0;i { s[i][i]=1; s[i][0]=1; } for(i=2;i 13、以下程序运行时,输出到屏幕的结果中第一行是__(17)___,第二行是__(18)___。 Orange Banana #include { char *s[]={\ int i,j,n; for(n=0;s[n];n++); j=n-1; for(i=0;i p=s[i],s[i]=s[j],s[j]=p; for(i=0;i 第 7 页 共 10 页 return 0; } ? 完善程序(12分) 14. 以下程序输出3-3000000范围内的全部梅森素数,并统计输出梅森素数的个数。 p 梅森数是指值为2-1的正整数(记为Mp),其中指数p是素数。若Mp是素数,则称Mp为梅森素数。 3 例如,7=2-1,3和7均是素数,因此7是梅森素数。 #include int prime(long n) /*判断n是否是素数*/ { long i; for(__(19)___;i int isMersenneprime(long n) { long m=n,k=0; while(m) { if(m%2==0) return 0; __(20)___;m/=2 k++; } if(__(21)___&&prime(n)) return 1; prime(k) else return 0; } int main() { long n,k=0,M=3000000; for(n=3;n { if(isMersenneprime(n)) { printf(\ __(22)___;k++ } } printf(\ return 0; } 15. 以下程序的功能是统计并输出在一个字符串中某个字符子串的出现次数,记录并输出子串在该字符串中每一次出现的起始下标。 #include int count(char *str, char *substr, int c[]) { int i,j,k,num=0; for(i=0;str[i]!='\\0';i++) { j=i; k=0; while(substr[k]!='\\0'&& __(23)___) substr[k]==str[j] /*判断str指向的字符串中是否 第 8 页 共 10 页 出现str1指向的子串*/ k++,j++; if(substr[k]=='\\0') { c[num++]=__(24)___;i /*记录子串在字符串中出现的起始下标*/ i=i+strlen(substr)-1; } } return __(25)___;num } int main() { char str[80],substr[80]; int i,num=0,c[80]; gets(str); gets(substr); num=count(__(26)___);str,substr,c if(num) { printf(\ for(i=0;i printf(\ } else printf(\ return 0; } 16、约瑟夫问题:n个人围成一圈,从第一个人开始顺序报数,从1报到m,报到m的人出列;从出列的下一个人开始重新报数,报到m 的人又出列;如此重复直到所有人出列为止。最后出列的人是谁? struct node *create(int n)函数创建具有n个结点的单向循环链表,并将1~n(代表n个人的编号)顺序保存到每个结点的num成员中,函数返回新建链表首结点的地址。单向循环链表是指尾结点指向首结点的单向链表。 void Del(struct node *head, int n, int m)函数模拟约瑟夫问题报数的过程,输出依次出列的所有人的编号,其中形参n表示有n个人参加报数,形参m表示报数的终值。例如,当n=10、m=3时表示有10个人参加报数,报到3的人出列,因此应输出“3 6 9 2 7 1 8 5 10 4” #include #include struct node { int num; struct node *next; }; struct node *create(int n) { int i; struct node *p, *head=NULL, *rear; for(i=0;i { p=(struct node *)malloc(sizeof(struct node)); p->num=i+1; if(head==NULL) { head=__(27)___; p rear=p; } else { __(28)___=p;rear->next rear=p; 第 9 页 共 10 页 } } rear->next=head; /*使尾结点指向首结点*/ return head; } void Del(struct node *head, int n,int m) { int i,j; struct node *p,*q=head, *front=head; while(q->next!=head) q=q->next; for(j=0;j front=__(29)___;q->next } printf(\指向的结点出列*/ p=front; __(30)___=front->next; q->next /*从head链表中删除front指向的结点*/ front=front->next; free(p); } } int main() { int m,n; struct node *head; printf(\输入报数人数\ printf(\输入报数终值\ head=create(n); if(n>0&&m>0) {Del(head,n,m); head=0; } return 0; } 第 10 页 共 10 页
江苏省计算机二级考试真题C2013春
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)