查看匯總:2014下半年軟考程序員考前最后沖刺題及答案解析匯總
1.struct stu
{ int num;char name[10];int age};
void py(struct stu *p)
{ printf("%s\n",(*p).name);}
main()
{ struct stu student[3]={{1001,"Sun",25},
{1002,"Ling",23},
{1003,"Shen",22};
py(student+2);
}
【解析】本程序是由3段組成的。第1段是結構型stn的定義;第2段是函數(shù)py()的定義;第3段是主函數(shù)。
我們先分析主函數(shù)。首先定義了結構型stu的數(shù)組student[3],并且給3個元素的所有成員都賦了初值。接著調(diào)用了函數(shù)py,對應的實參是結構型數(shù)組元素student[2]的地址。注意,“數(shù)組名+k”是數(shù)組元素“數(shù)組名[k]”的地址。
再來分析函數(shù)調(diào)用"py(student+2);"。調(diào)用時,首先把實參傳遞給形參,即把結構型stu的數(shù)組元素student[2」的地址"student+2"傳遞給形式參數(shù)“結構型stu的指針變量p”。
然后執(zhí)行函數(shù)體,輸出表達式是"(*p).name",這是結構型stu的指針變量p指向的結構型stu數(shù)據(jù)(即結構型stu的數(shù)組元素student[2〕)的成員name,其值是字符串"Shen"。這就是本題的答案。
【參考答案】Shen
2.# include"stdio.h"
main()
{ char c;
while((c=getchar())!=’\n’)
switch(c)
{case ’0’:
case’1’: putchar(c);
case’2’:putchar(c);break;
case’3’:putchar(c);
default:putchar(c+1);break;
。
printf("\n");
}
假定本程序執(zhí)行時輸入:1357/(其中的/代表回車換行符)。
【解析】本題也可以采用記錄的方法。
執(zhí)行 while循環(huán)。
輸入第1個字符'1',不是'\n',執(zhí)行switch語句的"case'1'"后的輸出語句,輸出字符'1';由于其后沒有“break”語句,則繼續(xù)執(zhí)行"case'2'"后的語句,輸出字符'1'。輸入第2個字符'3',不是'\n',執(zhí)行switch語句的"case'3'"后的輸出語句,輸出字符'3';由于其后沒有“break”語句,則繼續(xù)執(zhí)行"default"后的語句,輸出字符'4'。
繼續(xù)while循環(huán)。
輸入第3個字符'5',不是'\n',執(zhí)行switch語句的"default"后的語句,輸出字符'6'。
繼續(xù)while循環(huán)。
輸入第4個字符呼'7',不是'\n',執(zhí)行switch語句的"default"后的語句,輸出字符'8'。
繼續(xù)While循環(huán)。
輸入第 5個字符'\n',是'\n',退出while循環(huán),輸出“回車換行符”。
注意switch語句的執(zhí)行過程是:在每個“case”分支之后,可以有多個語句,程序將依次執(zhí)行這些語句,直到遇見“break”語句或者switch語句的右花括號“}”。如果某個“case”分支的后面沒有“break”語句,它在執(zhí)行完本分支后的所有語句之后,將繼續(xù)執(zhí)行下一個分支中的語句,直到出現(xiàn)“break”語句或者switch語句的右花括號“}”后才中止本分支的執(zhí)行。
【參考答案】113468
程序設計題
3.編函數(shù)計算并返回m行6列整型數(shù)組a周邊元素之和(即第1行、第m行、第1列、第6列上元素之和,但是重復元素只參加1次求和)。數(shù)組名a和m、n作為函數(shù)參數(shù)。
【解析】先用單重循環(huán)求第1行和第m行上元素之和,控制循環(huán)的變量i對應列下標,依次等于0、1、…、5,參與求和的數(shù)組元素是a[0][i]和a[m-1][i]。
再用單重循環(huán)求第1列和第6列上元素之和(注意排除第1行和第m行),控制循環(huán)的變量1對應行下標,依次等于1、…、m-2,參與求和的數(shù)組元素是a[i][0]和a[i][5]。
【參考答案】int fun(a,m)
int a[][6];
{ int i,s=0;
for(i=0;i<6;i++)
s+=a[0][i]+a[m一1][i];
for(i=1;i
s+=a[i][0]+a[i][5];
return(S);
}
4.編程序從鍵盤上輸入一個字符串(長度小于或等于80),分別統(tǒng)計其中的字母、數(shù)字和其他字符的數(shù)目。本題要求用指向數(shù)組首地址的指針變量來處理字符率中的字符。
【解析】定義字符型數(shù)組和指向數(shù)組首地址的指針變量。利用系統(tǒng)函數(shù)輸入一個字符串,存入字符型數(shù)組。利用單重循環(huán)依次處理字符串中的單個字符,直到當前字符是字符率結束標記符為止。在循環(huán)體中利用if-else組成的嵌套雙分支結構處理3個分支:是字母的,則在對應計數(shù)變量c1且中加1;是數(shù)字的,則在對應計數(shù)變量c2中加1;其他情況,則在對應計數(shù)變量c3中加1。注意,這3個計數(shù)變量在循環(huán)前必須清0。
【參考答案】main()
{ char s[81],*p=s;
int c1,c2,c3;
c1=c2=c3=0;
scanf("%s",s);
while(*p!='\0')
{ if((*p>='a')&&(*p<='z'))
c1++;
else if((*p>='A')&&(*p<='Z'))
c1++;
else if((*p>+'0')&&(*p<='9'))
c2++;
else
c3++;
p++;
}
printf("c1=%d c2=%d c3=%d\n", c1,c2,c3);
}
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |