三、程序改錯題
42下列給定程序中函數(shù)proc的功能是:取出長整型變量s中偶數(shù)位上的數(shù),依次構成一個新數(shù)放在t中。例如,當s中的數(shù)為123456789時,t中的數(shù)為2468。請修改程序中的錯誤,使它能得出正確的結果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。
試題程序:
#include
#include
#include
//****found****
void proc(1ong s,long t)
{long s1=10;
s/=10:
*t=s;
//****found****
while(s<0)
{ s=s/100;
*t=s*s1+*t;
s1=s1*10:
}
void main()
{long S,t;
system(”CLs”);
printf(”\nPlease enter s:”);
scanf(”%ld”,&s);
proc(s,&t):
printf(”The result is:%ld\\n”,t);
}
參考解析:
(1)錯誤:voidproc(10ngS,longt)正確:voidproc(10ngS,lon9“t)(2)錯誤:while(s<0)
正確:while(s>O)
【解析】從主函數(shù)中實參可知,形參的第二個變量是長整型的指針變量。因此“voidproc(10ngS,longt)”應改為“voidproc(10ngS,long*t)”;要從低位開始取出長整型變量s中偶數(shù)位上的數(shù),每次變量S要除以100,然后判斷其是否大于0來決定是否要繼續(xù),因此“while(S<0)”應改為“while(s>0)”。第42題 筆記記錄我的筆記(0) | 精選筆記(3)選擇筆記標簽:試題內(nèi)容(3)答案解析(0)
四、程序設計題
43請編寫函數(shù)proc(),其功能是:將str所指字符串中除下標為偶數(shù),同時ASCII碼值為奇數(shù)的字符外,其余的字符都刪除,串中剩余字符所形成的一個新串放在t所指的數(shù)組中。例如,若str所指字符串中的內(nèi)容為ABCDEFGl2345,其中字符8的ASCII碼值為偶數(shù),所在元素的下標為奇數(shù),因此必須刪除;而字符A的ASCII碼值為奇數(shù),所在數(shù)組中的下標為偶數(shù),因此不應當刪除。依次類推,最后t所指的數(shù)組中的內(nèi)容應是ACEG。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所寫的若干語句。
試題程序:
#include
#include
#include
#include
void proc(char*str,char t[])
{
)
void main()
(
char str[100],t[100];
system(”CLS”);
printf(”\nPlease enter string str:");
scanf(”%s”,str);
proc(str,t);
printf(”\nThe result is:%s\n”,t):
)
參考解析:
voidproc(char*sir。chart[])1
inti,j=0;
for(i=0;slr[,i]!=’\0’;i++)//從數(shù)組的第一個元素開始,到其最后一個
{if(i%2==0&.&str[i]!=o)//下標為偶數(shù)、同時ASCIl碼值為奇數(shù)的字符
t[j++]=str[i];}//如果成立,則把它放到t數(shù)組中
t[j]=’\0’;//字符串結束標志為’\0’}
【解析】題目中要求將字符串sir中下標為偶數(shù),同時ASCIl碼值為奇數(shù)的字符放在數(shù)組t中。首先,需要檢查字符串str中下標為偶數(shù)的字符的ASCIl碼值是否為奇數(shù),將符合要求的字符放在數(shù)組t中。最后,為新的字符串數(shù)組添加結束符。
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |