2019年计算机软件水平考试初级程序员精选模拟试题1.假定a和b为int型变量,则执行下述语句组后,b的值为()。a=1;b=10;do{b-=a;a++;}while(b--20)break;}while(a=14);printf(a=%d\n,a);}答案:a=12y=12a=16y=28a=16提示:首先第一次的结果不用说了?需要的话,请先把C的书再读一遍先!a=12y=12接着大家要看仔细,if(y20)break;难点在此,意思是当上面的Y20时结束这个段,再去判断While的条件,所以这里会接着加,a=12+2=14y=14+12=26ok!2620,我们去判断while的条件吧,a=14,此时a就正好=14,再次循环·a=14+2=16y=12+16=28,然后2820跳出,a不等于14再次跳出,执行最后一句输出,a=16.#includemain(){staticinta[5][5]={{1,2,3,4,0},{2,3,4,0,6},{3,0,1,7,5},{0,0,2,4,1},{8,4,3,2,7}};inti,j;for(i=0;i5;i++){for(j=0;j5;j++){if(a[j]==0)break;printf(M,a[j]);}printf(\n);}答案:1234234384327个人解析下:首先我们从for(j=0;j5;j++)看起,往下是{if(a[j]==0)break;printf(M,a[j]);}提示:把a[5][5]二维数组中的每列中从左至右第一个为零的数之前的数输出!for(i=0;i5;i++)就是5行#include#includefun(char*w,intn){chart,*sl,*s2;s1=w;s2=w+n-1;while(s1{t=*s1++*s1=*s2--*s2=t;}}main(){char*p;p=1234567;fun(p,strlen(p));puts(p);}答案:1711717提示:主要是认清楚S1=?S2=?首先S1=W,这S1存的是字符串W的首地址,而S2=W+N-1=P+7-1OK,也就是W中最后一个字符的地址·阅读下列函数说明和C函数,将应填入__(n)__处的字句写在答题纸的对应栏内。[函数1.1说明]函数palindrome(chars[])的功能是:判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样时,称该字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。[函数1.1]intpalindrome(charS[]){char*pi,*pj;pi=S;pj=s+strlen(S)-1:while(pipi++;pj--;}if(__(2)__)return-1;elsereturn0;}[函数1.2说明]函数f(char*str,chardel)的功能是;将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。例如若str的值为“33123333435”,del的值为‘3’,调用此函数后,将输出三个子字符串,分别为“12”、“4”和“5”。[函数1.2]voidf(char*str,chardel){inti,j,len;len=strlen(str);i=0;while(iwhile(__(3)__)i++;/*忽略连续的标志字符*//*寻找从str开始直到标志字符出现的一个子字符串*/j=i+1;while(str[j]!=del&&str[j]!=’\0’)j++;__(4)__=\0;/*给找到的字符序列置字符串结束标志*/printf(%s\t,&str):’__(5)__;}}答案:(1)*pi==*pj(2)pi(3)str==del(4)str[j](5)i=j+1提示:首先看第一题条件:pi=S;pj=s+strlen(S)-1:pi就是首地址啦,pj就是末地址啦,我们需要把第一个和最后一个比较,第二和倒二比···....OK,那while(pi第二题,有注释哦·不懂就提出来·不过偶想大家都会滴·